At Cuemacro, we’ve been developing a FX TCA (transaction cost analysis) Python library over the past year. We are hoping to open source parts of the library, provided we can find sponsorship for the TCA library. By open sourcing the basic framework of the library, we hope we can unlock the benefits of crowdsourcing from community to improve the library and to come up with new ideas of how to look at TCA. It also gives a lot of transparency to the whole TCA process, if a large part of the code is available to view.
Sponsors will also have access to additional proprietary elements of the library, including an interactive GUI, additional metrics and more specialised modules which enable much faster TCA calculations. Sponsors will also get commercial support for our library. If you are interested in sponsoring our FX TCA library, drop us a message! Throughout the time that we’ve been developing the library, we’ve learnt a lot about TCA. We’ve also talked to a large array of different market participants about what they want from FX TCA. Below I’ve tried to summarise the takeaways from this past year of TCA work, combined with some general observations about FX built up over the years about TCA.
Everyone wants something different from TCA
This shouldn’t be surprising. After all, we first of all have a split between buy side and sell side, and how they would seek to calculate TCA. TCA can encompass many calculations ranging from calculation of slippage to much more complicated metrics. There’s also a split in terms of frequency of trading. For quant funds, in particular those trading at a very high frequency, have different requirements compared to asset managers, who are trading a much smaller number of trades.
Hence, having a solution which is fully customisable could be ideal, since it will be able to satisfy very different requirements. This can be done by building a totally in house TCA solution, but the downside is that this requires a lot of costly development expertise. For some traders, it can be simpler to use an external service, even if there is less opportunity for customisation. It also enables you to compare your trading costs against your peers (providing you are willing to share your trade history externally). It might be the case that traders might seek to use a mix of external and internal TCA methods.
In a sense, our library can fit between these two solutions of internal vs. external TCA. It will obviously still require a certain level of development expertise to deploy the library internally and modify (compared to using an external TCA service), but it should be a lot cheaper, quicker and easier than starting to develop such a library from scratch.
But there are still common elements of TCA!
Whilst everyone wants something slightly different from TCA, there are some things which are similar. Ultimately, it involves combining market data with trade data, and applying various calculations. This requires a lot of “plumbing” to collect together all this data. A large proportion of the time when developing a TCA library is spent on the “plumbing” (something which isn’t unique to TCA calculations) loading up market and trade data, getting it into the right format etc. This differs from very specific proprietary metrics which you would likely want to keep private to you and could differ significantly. We developed our library to have all the “plumbing” included. Development time can be used to create additional proprietary metrics, rather than rewriting all the “plumbing” of our library. At the same time, if you want to change bits of the underlying library you can do, because the code can be modified.
It’s all about data!
Every buy side has different trade data, which is unique to them, which I admit is an obvious point. It is also likely to be in different formats across different firms. Market price streams flowing from brokers to the buy side, will also be different. As a result, each buy side client literally has a different view of the FX market. If you’re a buy side firm, whether or not you are collecting your own market data streams from brokers, it’s also likely you’d want to get a totally independent benchmark of the FX market, such as New Change FX, for calculation of metrics. It is useful to have a TCA library which can use whatever market data you want, whether it is an external benchmark or your unique pricing streams. Our TCA library can be modified to use different market data sources.
Conclusion
This is hardly meant to be a full detailed summary of what TCA is. I think the key point is that very often what different people consider as important in TCA varies, and indeed that’s one of the reasons why having an open source solution for TCA could be fruitful.