Measuring best execution in FX and customising it

20180922 Best execution

I’m a bit hopeless at cooking. I can do a bit of baking, in particular chocolate chip cookies, with a secret recipe which I’ve developed over time to make the cookies chewy and particularly sweet, to suit my tastes. Recently, I made Turkish orange cookies (above) for the first time. Whilst they tasted good, I still think they can be improved. Most likely it’ll will take a bit more time to work out how to tweak the recipe to get it just right. It’s all about getting those details right and customising the recipe.


What does this have to do with markets? Very often we might think we have a simple recipe to make money or do analysis of markets, but it requires significant customisation to get it right! Take the idea of best execution which seems very simple. Basically we want to show that we got the best price for our execution. We can use transaction cost analysis to do this. However, in practice TCA can become very complex, once we delve into it. Let’s say we want to measure the slippage on an individual trade. We simply measure the difference between our executed price and a market benchmark of a mid. What precisely could be a benchmark for the market can be difficult, as the FX market is fragmented. The price you get quoted can often vary, for a number of reasons, related to your credit line, whether last look is enabled on the venue etc.


In practice, we want to be able to create an aggregated price from many the streams collected from a number of different venues, at a high frequency. Trying to manage this process, will involve aggregating a large amount of tick data. There are vendors such as New Change FX, who generate a benchmark through aggregation process, reducing the amount of work required. Even if we manage to show that slippage is low on a trade, that’s probably not the end of the story. After all, if slippage is very tight, but the market impact of every trade is very large (ie. the price moves against us significantly every time we execute) and we are executing over a long period of time, then on aggregate our price could be very poor. What is the proportion of our trades which are actually filled?


This illustrates that in practice, we need to choose a mix of different metrics for assessing what best execution is. It can also differ significantly between different market participants and between trading strategies we are using. I’ve done a lot of work on intraday trading strategies for FX. These alpha signals might have a relatively varying decay periods. If we are doing a trend following strategy, typically we are executing as the price is going away from us. The type of execution is very different compared to a short gamma like strategy, where we are likely going against price action.


Hence, when doing transaction cost analysis, our requirements need to take into account a number of issues and we might want to do it by strategy, as well as on an aggregate of our executions. For passive flows, which have to be done (and are not related to any specific alpha signal), maybe this is less relevant. If we do a lot of execution of NDFs, typically the liquidity is going to be more difficult to come by, so trying to judge that against the way we look at EUR/USD is likely to be more difficult from a TCA point of view. Also what a broker might want from TCA can obviously differ to what the buy side might want!


All this points to the fact that having a way to customize your FX TCA is likely to be beneficial so that it fits our requirements. For some external TCA services are great tools, but, not everyone might like their cookies chewy! We could customise our TCA in many ways. We might also want the ability to switch between different market data sources, between market data we collect and benchmark prices. Also we might argue that having some proprietary elements in the way you do TCA can be useful, something we can do if we have access to the TCA source code. This enables us to create our own proprietary metrics for TCA. After all, purely targeting a single well known metric might not help us get best execution (as illustrated above). If we return to our food example, the best way to make a cookie sweet is to put a lot more sugar in it. However, you will get to a point, where you can’t taste anything but the sugar, and it no longer becomes a cookie!


Over the past year I’ve been working on a Python based FX TCA library. I’m hoping to open source some the basic framework of the TCA library, if I can find sponsorship for it to make it a truly sustainable project. Opening up the library will make TCA a lot more transparent and customizable to the end user. It also means that funds don’t need to reinvent the wheel when it comes to developing their own TCA solutions. Instead they can utilise our Cuemacro framework and build their own customisations on top, saving massive amounts of time. Sponsors will get additional proprietary features, such as a web GUI, caching and parallelisation features (and all the proprietary source code) as well as commercial support from Cuemacro.


If you want to make FX TCA transparent and customisable for traders drop me a message! Also contact me, if you’d like my secret chocolate chip cookie recipe!!