Algo Testing Practices
Trading technologies is providing visibility into our testing practices for the development of algorithmic trading tools. We are organizing this information as a series of testing suites that correspond to algo testing recommendations made by the FIX trading community.
For each testing suite, we define the market condition(s) replicated in our simulated test environment followed by a description of the testing method. We then cite both the specific recommendation of the FIX Trading Community's proposal on algo testing as well as the MiFID II RTS text the test suite aims to satisfy.
Interpreting the Regulation
The MiFID II regulation has been created to ensure automated tools neither contribute to nor exacerbate disorderly or stressed market conditions. Though MiFID II gives some guidance regarding the testing of algorithmic trading tools, it leaves significant room for interpretation.
Fortunately, the FIX Trading Community has drafted a series of recommendations that attempt to turn the vague regulation language into a set of specific tests that firms could execute in pursuit of compliance. The FIX Trading Community’s recommendations reference a version of the MiFID II Regulatory Technical Standards (RTS) as rationale. After reviewing the regulation text and consulting with our customers and partners, Trading Technologies has decided to endorse the FIX Trading Community’s recommendations for testing automated trading systems.
Defining Test Suites
Using the FIX Trading community’s recommendations as a guide, Trading Technologies is providing high-level descriptions of the five test suites we will use to verify the compliance of our algorithmic trading tools. Each testing suite includes similar tests recommended by the FIX Trading Community:
- Test Suite One - Exchange Latency
- Test Suite Two - Disconnection Tests
- Test Suite Three - Erroneous Orders and Transactions
- Test Suite Four - Price Volatility Stress
- Test Suite Five - Message Rate Stress Test
Test Suite One - Exchange Latency
Test Suite One covers scenarios where there is latency either between the trading firm and exchange, or at the exchange itself.
Our tests revolve around executing a battery of functional tests of our automated tools while introducing different levels of latency at different stages of an order life cycle, specifically: Order Acknowledgements, Order Cancels, Fills and Market Data. For cross-exchange strategies, it also includes testing latency on just one venue as well as multiple venues simultaneously.
Test Suite Two - Disconnection Tests
Test Suite Two covers scenarios where there are complete disconnections from the trading venue.
Our tests revolve around executing a battery of functional tests of our automated tools while experiencing intermittent or sustained disconnections. For cross exchange strategies, it also includes testing disconnects on just one venue as well as multiple venues simultaneously.
Test Suite Three - Erroneous Orders and Transactions
Test Suite Three covers orders and trades that are not meant to be executed, or executed in error.
These tests involve trade busts and the rapid entry and removal of orders from the market in which an automated tool is operating to verify proper order management and cancellation.
Test Suite Four - Price Volatility Stress
Test Suite Four is intended to test algos against stressed market conditions that involve volatile price activity.
One of the key aspects of any automated trading system is to respond appropriately when other market participants or automated systems act in a disorderly or stressful manner. Also, algos should be explicitly tested to ensure they don’t exacerbate price shocks and extremely volatile market conditions. In these cases Automated trading systems need to respond safely and appropriately to help maintain and restore markets to stable conditions. In these tests we will simulate extremely volatile market conditions while executing a battery of functional tests.
Test Suite Five - Message Rate Stress Tests
Test Suite Five targets testing for specifically high message load being generated by the trading firm’s own activity.
We test automated trading systems in an environment where the trading firm itself is generating much higher message and trade load than they have experienced over the past six months. The message load used in these simulations beyond the FIX Trading Community’s recommendations to explicitly generate high load situations originating from the trading firm.