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 where we 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 internal 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! Since mid 2017, we have been developing a Python based FX library, specifically designed for FX markets. Full code will available for enterprise clients helping to 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 quotation form (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.
Clients who have the enterprise edition of our Python based FX TCA library will get massive benefits. They will have access to additional proprietary features, including additional metrics, 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. They will also get full commercial support from Cuemacro. 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 your FX data into the library which will encourage clients to subscribe to your 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
We are also planning to open source a basic version of the FX TCA library on GitHub, if we can get sufficient sponsorship to fund it. It will be a great marketing opportunity for sponsors to help support the open source framework. We hope that partially opening up our codebase, will help to crowdsource new ideas for TCA metrics.
If you’re interested in Cuemacro’s Python based FX TCA library, in particular if you’d be interested in getting an enterprise licence or sponsoring the partially open source version, 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 from the enterprise version. 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