Writing a trading algorithm is the interesting part. Running ten of them reliably, day after day, is the hard part. Most of the problems that trading teams face with algorithms are not about the strategies themselves but about the infrastructure they share.
The problem with sharing
When several strategies run in the same process or on the same unmanaged infrastructure, they affect each other. One strategy that consumes too many resources, crashes or floods the system with messages can slow or stop the rest. Diagnosing which strategy caused a problem becomes difficult.
One container per strategy
EXO, the OTS algorithmic trading platform, runs each strategy in its own container. A container isolates the strategy, so a problem in one does not spread to the others, and each can be started, stopped and monitored independently.
Dedicated channels
Isolation is only useful if each strategy still gets the information it needs. In EXO, message channels carry market data, order requests and trade data, with a separate queue for each algorithm. Every strategy sees its own stream and is not competing with the others for the same messages.
Online and historical data together
Strategies often need both what is happening now and what happened before. EXO backs each strategy with online and historical market-data stores, with data arriving through REST and socket feeds.
A clear core
At the centre, the EXO core handles market-data management, order management through REST and the management of real-time socket connections. Inside the container runtime, routers deliver market data and trades to the right place, and status management keeps track of every strategy.
Writing an algorithm is the interesting part. Running ten of them reliably is the hard part.
Questions to ask of any algorithmic platform
- What happens to other strategies when one fails?
- Does each strategy get its own market-data and trade channels?
- Can strategies use historical as well as live data?
- How are orders submitted, and how are they routed?
- Can each strategy be monitored and controlled on its own?
