Transaction cost analysis (TCA) as the name suggests is way to understand your trading costs and hence how it impacts your overall returns. It can involve asking questions like:
- What is my slippage, the difference between a benchmark price and we were executed?
- What is the market impact of my order, in other words how has the price moved since execution?
- What is my implementation shortfall, the difference between the average execution price of an order and the price at arrival?
- And much more!
The advent of MiFID II, means that traders need to demonstrate best execution, making TCA even more important. In order to do TCA, we need to have a lot of data, namely:
- Market data – use as a benchmark for our trades
- Trade/order data – our own fills
Each asset class has its own specific nuances when it comes to TCA. For FX TCA, we can collect FX market data streamed from our brokers, various venues etc., and aggregate that into a benchmark price. Alternatively, we can use a vendor such as New Change FX, which aggregates the market data into an independently sourced benchmark mid. Trade/order data is sourced from our own trading desk.
Should we use internal or external TCA?
The next question is how do we do TCA? One approach is create a fully internal TCA tool. This has the benefits of being fully customisable. We can modify and create our own metrics. Whilst, many metrics are very standard like slippage, it might be useful to create our own proprietary metrics and also adjust the parameters of existing ones. It might prove to be advantageous if brokers are not fully aware of how we are ranking their performance. Furthermore, you can choose whichever market data source you want to use. This allows us to compare results from prices streamed to us versus an independent benchmark. The drawback of creating a fully internal TCA tool, is that it will be very costly to develop and requires significant development expertise. Furthermore, once those developers move on to fresh pastures, it is another system for us to maintain.
External TCA services are another alternative. It doesn’t require a massive amount of development expertise too. The idea is that we send all our trading data externally to them. They then send us TCA analytics based on our trade data. This is very convenient and can also enable us to compare our performance versus our peers. However, we might prefer to keep all our trading information internally, rather than divulge them to an external party. We can also argue that if a bank is doing TCA there could be some element of a conflict of interest if they are using internally developed libraries (this is somewhat alleviated if we are using an independent TCA vendor though). Another drawback is that we do not have full control of the process. We cannot customise the code to create our own metrics (furthermore, we are not even likely to have any access to the source code). It is also very unlikely that we can upload our own market data, to be able to see how that impact the results.
Is there another way, which is fully transparent and customisable, but doesn’t require a massive amount of development time?
There’s a third way, Cuemacro’s Python based FX TCA library! Transparent and customisable!
Is there a solution, which is fully customisable and 100% transparent, but requires less development time for doing FX TCA? Yes, Cuemacro’s Python based FX TCA solution! Over the past year, we have been developing a Python based FX library, specifically designed for FX markets. We are planning to open source the basic framework of the library on GitHub, if we can get sufficient sponsorship to fund it. By making the basic framework available online, we will be able to crowdsource new ideas for TCA metrics and also improve the codebase. Furthermore, it will make TCA truly transparent. It allows developers to focus on building TCA customization, rather than spending time reinventing the wheel on the generic parts. All the complexity of handling the market and trade/order data has already been done for you. The library comes ready with various pre-coded metrics and benchmarks as well. It also has many FX specific features, such as converting trades into a standard quotations (eg. USD/GBP to GBP/USD etc.). It can be called programmatically as well. It comes with an adapter for getting data from a specific market data vendor and also for accessing trade/order data from SQL databases, as well as storage of market data in a time series database. Every dependency used is open source. If you want to use different data sources, however, it is of course customisable.
Sponsors of our Python based FX TCA library will also get massive benefits. They will have access to additional proprietary features, including a web based GUI and much faster computation (including the ability to distribute computation and cache data). They get access to 100% of the source code of both the open source framework and also every line of code of the proprietary features. They will also get full commercial support from Cuemacro. Plus, they will great marketing benefit of being associated with an open source library. Cuemacro can also be commissioned to write additional modifications to the library for clients. We summarise the benefits of using our TCA solution below, depending on the user:
- For buy side, it enables you to keep all your trade/order data internal and you have full control over your TCA
- For data vendors, we can also build in adapters to make it easy to download their FX data into the library which will encourage clients to subscribe to their data
- For sell side, it gives you an independently created TCA solution, which can more easily be integrated into your systems, as opposed to an external service, where there is an external dependency
If you’re interested in sponsoring Cuemacro’s Python based FX TCA library, let me know! We can show a full demo of the software at your office. Below, we give a small snapshot of some of the analytics available on the web GUI. It also has many additional displays (which can be customised), including filtering for anomalous trades, calculating markouts, comparing between brokers etc.
Plotting orders in proportion to their size on a timeline
Average slippage of trades per day by currency pair