I have been aggregating some tick data from Oanda's streaming API to try and get an idea of the relative cost and best time to trade different currency pairs. The idea was to plot the spread of the different pairs as a very rough guide to answering the above questions, however some of my results are very unintuitive. For EUR_USD, the plot looks like I would expect, there are some spikes throughout the day (possibly caused by news events) and the spread widens periodically at around 19:00 EDT.


However if I plot multiple pairs I am getting very unintuitive results. Below the spread for USD_SGD is consistently above the USD_MXN and USD_NOK spreads however I was under the impression SGD was quite liquid (Ignore the first blank patch as this was due to a power outage while aggregating data).


I was thinking this could be the case for several reasons:

  1. While the spread is higher the liquidity and therefore price impact and overall cost of trading SGD could still be less
  2. Oanda specifically has high spreads for this pair since they are not competitive as a broker for this pair for whatever reason

If I look at another set of pairs such as USD_CHF and USD_INR, this seems to reinforce the idea that the spread is not very indicative of the cost associated with trading the pair, or at least below a certain volume of ticks per minute, as I find it hard to believe that the USD_INR can have a spread that much lower that USD_CHF.

enter image description here

To summarize my question I was wondering if any of the above reasons seems reasonable for why these unintuitive results are appearing and if looking at the spread as a very rough proxy is even worthwhile or if the approximation is far too crude to be useful.


3 Answers 3


You've got your calculation of the spread wrong, for what you're trying to do.

Looking at the spot prices: SGD = USD 0.8, MXN = USD 0.077, NOK = USD 0.16. So in descending order they are SGD, NOK, MXN. The order of levels on your chart is SGD, NOK, MXN. INR vs CHF is the same: CHF = USD 1.1, INR = USD 0.017, so you get a larger spread for CHF in dollar terms.

You don't want to know what the dollar cost is of buying 1 unit of some currency and selling it again. You do want to know how many dollars you are left with if you start with $1m and go to the currency and back.

An example: right now, I'm seeing EUR at 1.35962-70, and AUD at 0.9364-5.

  • Via EUR: USD 1m -> EUR 735,456 -> USD 999,941, so I'm down \$59, or 0.0059%.
  • Via AUD: USD 1m -> AUD 1,067,806 -> USD 999,893, so I'm down \$107 or 0.0107%.

Make sure you're taking into account whether the currency is traded X per USD or USD per X (weak/strong).

  • $\begingroup$ Ahh yes this was my mistake. I was flipping the currencies to all be Domestic = XX USD, but then I see that this is the spread in USD of 1 unit of foreign currency which is not really indicative of what I am looking for $\endgroup$
    – mgilbert
    Commented Jul 7, 2014 at 11:40

The cost of forex trading is reflected through the bid-ask spread you pay as a retail client to a broker. period. There spread IS indicative of the cost of trading the pair, AT that specific point in time (and OANDA does not reject your trades or recall trades on any rates they offer at a specific time, up to a specific trade size). So what you are doing makes sense, but you can't think about an "average spread" for a pair over an entire trading day. The spreads for all pairs will vary through out the day. Let me explain...

Spreads will be wider ANY time there is major market activity on forex; this isn't OANDA just widening spreads for the sake of it; they run automated pricing algorithms. Sure, spreads can be manually widened in anticipation of a major news event (like NFP @ 8.30 am first friday of each month, or an anticipated fed reserve release (or any major central reserve bank release for smaller pairs). A nice reference for known news events that will likely affect spreads is http://www.forexfactory.com/.

The best time to trade though depends on your trading strategy, or your goals in general. If you want to trade break volatility models, you're best to trade at times when you know prices tend to be more volatility. If you must trade on tight spreads, with a mean reversion model in which you don't care about momentum, then trade at off-peak market hours (after lunch time EST is a relatively quiet period for a few hours).

OANDA produces FX rates using dynamic spreads. What these means is that at any given time the prices OANDA quotes to its customers are a function of the rates being offered by its liquidity providers (the providers are proprietary, but they do include many major banks internationally), who OANDA will hedge its exposures with. OANDA does not take positions against its customers, rather it hedges any position build ups. This is public knowledge, albeit not well known. If you go to any other major forex broker (that does NOT charge commissions to help protect against market slippage for the broker), you'll see wider spreads around the same times that OANDAs spreads widen. The fact that OANDA doesn't charge commissions is an advantage. A disadvantage is that you are subject to sometimes wider spreads during volatility periods because of the dynamic spreads, compared to other brokers offering FX trading (e.g. Interactive Brokers may have tighter spreads, but you'll get hit with a commission on each trade too).

The spikes you see through the day may sometimes be due to anticipated news events, but often the spikes are simply because the wider 'forex market' is experiencing widening spreads, for various reasons, but typically unexpected news/fundamentally related, or high volume trades for certain pairs going on for a couple of major liquidity providers which leads them to widen their spreads (with others following suit). The wider forex market consists of the major banks, hedge funds, etc who do massive forex flows each day.

The spreads will in fact widen on EURUSD several times a day, when major markets open (London, New York, Hong Kong/Tokyo). During these times, FX prices tend to be much more volatility, just like between 9.30am and 10am EST on the NASDAQ and NYSE (and hence spreads by FX liquidity providers around the world will also be wider, as the major sources of profit (and protection against losses) in providing liquidity is the spread). Take a look also around 8am EST. The spike you see at 19 EDT/EST reflects volatility in the forex market from the Asian markets opening (you'll see major spikes on USDJPY around this time for obvious reasons). A nice introduction to modelling forex volatility through the day is provided in the old book An Introduction to High Frequency Finance (Picton, Olsen, et al)

The spread for USDSGD being wider than USDCHF is a function of the spreads being offered by other liquidity providers. I don't really follow your point that these are "very unintuitive results"? Spreads on different pairs are a function of a variety of factors. OANDAs spreads on USDSGD will be dependent, in part, on what the spreads are for the liquidity providers that they choose to hedge with. It could be the case that other FX brokers can offer tighter spreads, if they can find liquidity providers who will offer then tighter spreads in turn, or if those brokers are prepared to internalize the flow they get on those pairs and either accept the risk (although it cannot be verified, it is said that some market makers hold (unhedged) exposures in some currencies in excess of 10s of millions) or maybe they do something with that flow of a proprietary trading nature.

From my experience, the most actively traded pairs are EURUSD, USDJPY, EURJPY, GBPUSD, AUDUSD and related crosses. I would consider pairs related to CHF to be more liquid than SGD in general, so the spreads by liquidity providers for brokers will, in general, be tighter for these more liquid pairs.

  • $\begingroup$ Great response. I think you misunderstood which pairs I was comparing to be unintuitive though. If you see my last graph I was showing it was odd that USDINR has a tighter spread then USDCHF or the graph before was comparing SGD to MXN and NOK $\endgroup$
    – mgilbert
    Commented Jul 6, 2014 at 15:06

The reason SGD spreads are higher than MXN is onshore / offshore regulation. The Government of Singapore doesn't like their currency to cross their border outside of specified hours and this controls the liquidity in the pair. There is another currency pair - SGO, or Singapore offshore.

Otherwise, IMHO, FXQuantTrader has pretty much answered your questions about spreads. In FX pricing, everybody kinda follows everybody else. But, spreads depend on client relationships as well as the market.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.