How to reduce transaction costs when trading FX

20181216 Copper

Winter’s coming. Temperature’s dropping. It’s time to swap light jackets with thick coats. Let’s imagine it’s Black Friday tomorrow and you’re in the market for a new coat. You’d probably wait a day just in case it was discounted. Furthermore, you might check the price in a couple of shops. After all, everyone loves a bargain, and no one likes to pay too much unnecessarily. This all seems to make sense. Let’s say instead, you don’t bother waiting, and you immediately buy a coat a day before Black Friday in the first shop you enter. It probably doesn’t take much a leap of imagination to suggest that you’re likely paying a bit more for your coat, given you haven’t checked the competition and you haven’t waited for potential discounts.


We can draw a pretty similar analogy to the market. Let’s say you’re a corporate institution and you need to buy USD. It’s not some speculative trade, it has to be done to hedge your FX risk. The major question is how do you execute it? The easy way, is to immediately execute on the first price you see and as soon as possible. This is kind of like buying the coat before the Black Friday sale without checking the price elsewhere. Or it’s like cooking something (maybe with the pots and pans above) without looking at the recipe. Sure, you might guess the right combination of ingredients, but equally, you might miss something crucial.


Whether or not you are a speculator, trying to understand whether you’ve paid the “best” price is not really as simple as our coat case! We need to do transaction cost analysis to ascertain this. Furthermore, simply comparing quotes from various brokers is only part of the story. Sure, this will give us an indication of the spread (the difference between the mid market price and where we execute). However, when we are executing large orders, such as those which are worked over a period of time, the spread is not our only cost. We are also faced with the market impact, namely, how much the market moves during our order.


We could have the situation where we appear to have very tight spreads on every execution we do, but have a considerable amount of market impact. Say for example we have a large buy order we need to execute, and the market impact means it will end up being quite costly. Simply splitting up our trade amongst many brokers, won’t necessarily always help us, given that liquidity is not always additive (ie. just because we see that there is 100mm of liquidity to trade EURUSD at a couple of brokers, doesn’t necessarily mean that we can easily trade a couple of hundred million without have a lot of market impact). Hence, if you do transaction cost analysis, we need to be careful to view multiple metrics, rather than simply examining the bid/ask spreads in isolation. We also need to be able to our analysis on a large number of our trading activity, across all our different brokers to make a proper assessment about transaction costs, rather than judging costs on one or two orders, which could easily be outliers.


Transaction cost analysis isn’t only about saving money to reduce transaction costs. Following MiFID II, many firms now need to show that they doing best execution, and transaction cost analysis can be used to do that. The easiest way to accomplish TCA is to use an external service to calculate standard metrics. However, if you want to have an understanding about it, it’s important to have a system which can be fully customised. That’s where Cuemacro comes in! We have been working on a Python based FX TCA library over the past 18 months. An enterprise version of our library is now available for clients to buy. It can be installed locally on a client’s hardware or on the cloud. Clients get all the source code so the transaction cost analysis can be customised fully.


At the same time, we’ve implemented all the plumbing, the parallelisation, saving clients time on the framework – don’t reinvent the wheel! We are also planning to open source a simplified version of the library, if we can secure sponsorship for that, which excludes a lot of the enterprise features. If you’d like to learn more about our Python based FX TCA library drop me a message!