one of the factors that a trading system engineer has to take into account when developing a trading system is the cost of trading for the market he is going to apply the trading system to. I guess we all have been through the trading systems that would make piles of cash if it were not for the trading costs.
Here I'd like to focus on one of the most important elements of the trading cost: the spread between the bid and ask. This value depends on various factors like:
- market - obviously, every market has a different set of spread characteristics (EUR/USD will be different than CAD/JPY)
- market access - you're generally going to get a higher average spread at a broker that charges fixed spreads than at an ECN, for instance. The "tiny" spread markups at crooky brokers are often marking the waterline for your trading system
- time - here we are talking about time of day. During the day, there are distinct peaks and troughs of spread present as you'll see below in the graphs. Possibly, we can look at day of week as well, but the relative range of the day of week-based spread values is virtually non existent compared to the time of day-based range
- trade size - the bigger your position size, the higher (worse) is also the spread (that's why the mammoths can't trade )
- fundamental effects - apart from the regular news announcements, there is no way to predict that the heavy truck of fundamental news is coming at you to widen your spread temporarily. However, in the statistics that I'm going to present here, these fundamental effects are all factored in and averaged out
- bid size
- ask size
The statistics I'm presenting to you was done on all data from EFX ranging from Sun Dec/02/2008 (start of Forex session) to Fri Feb/08/2008 (end of Forex session). I removed pairs that had too few quotes or were not traded round the clock. A total of 96,593,341 new quotes were used for the calculations:
Here you can see that certain pairs demonstrate higher tendency towards generating new quotes than others.
I was thinking about restricting the spread statistics only to quotes with some basic, minimum liquidity (like 100000 units). EFX is an ECN type of broker, so anyone bidding or offering just 1000 units inside the interbank spread might potentially skew the spread results to the downside. But I've done a quick comparison and the difference is almost non-existent. Furthermore, if I restrict the statistics based on the minimum liquidity requirement, the average spread actually gets slightly lower. The difference is in the realm of a statistical error, though.
- The spread graphs:
every spread graph shows the statistics of an average spread for the particular pair in pips based on the trading hour in US Eastern Time (New York). For every hour, all quotes that happened during and including that hour were used for calculating the average (e.g., for hour 15: all quotes from 15:00.000 to 15.59.999). The values for the multipliers (like 10000 for EUR/USD, 100 for USD/JPY) that were used to get the results in pips (like 6.47 pips or 5.12 pips) rather than in the actual true decimal numbers (like 0.000647 or 0.0512) were chosen based on common trading consensus (I hope). However, there is no official rule anywhere in the world that says what the decimal values of a pip are for the particular currency pairs. In case of doubt, attached to this post you will find the source data for all the graphs - these files include the spread information in the true decimal values as well, so you can check that out.
- The new quotes volume graphs:
every new quotes volume graph shows the normalized statistics of the percentage quotient of the number of new quotes that happened during the particular hour in relation to the total number of all quotes that happened for the particular pair. The time partitioning is the same as explained above. Thus, for instance the value of 7% at 14 hours on the new quotes volume graph is telling you that between (and including) 14:00.000 and 14:59.999, there happened 7% of all new quotes for that particular pair.
The average spread in ppm (parts per million) list shows all forex pairs included in this study, sorted by their relative spread. Ppm is a measure that I'm commonly using in my trading system design to arrive at comparable results across a wide range of forex pairs and/or even across the same forex pair's longer range data time span. The relative spread in ppm is simply calculated as:
- 1000000 * (ask - bid) / bid
Aveage spread in ppm by hour (EST) and symbol graph is unveiling the distribution of the relative spread in ppm for all forex pairs, included in this study, based on trading hours in EST. This graph is logarithmically scaled because the dispersion of the ppm spread values over all forex pairs and trading hours is rather wide:
New quotes volume by hour (EST) and symbol graph shows us the comparative liquidity for all pairs based on the trading hours:
And the piece de resistance of the study is the graph that is showing us the overall average spread in ppm for all fx pairs in this study, overlaid over an overall liquidity (new quotes volume) for all fx pairs, all based on the trading hours (a proof that London rulez ):
I hope this study will help you in your trading systems development. Attached you'll find the source data.