The architecture of AlgoTrader is composed of the following components.
The AlgoTrader Server provides the infrastructure for all strategies running on top of it. The AlgoTrader Server holds the main Esper Complex Event Processing (CEP) engine. It is responsible for all domain model objects and their persistence in the database. Different market data adapters are available to process live and historical market data. On the other end adapters for different execution brokers and exchanges are available, which are responsible for placing orders and receiving executions.
The AlgoTrader Server also provides business components for back testing, parameter optimization, analysis, execution management, risk management, reporting, reconciliation and hedging.
On top of the AlgoTrader Server any number of strategies can be deployed. Strategies can either be coded purely in Java or Python or in a combination with Esper code. Esper based strategies make use of a dedicated Esper CEP engine. A strategy can deploy any number of SQL-like Esper statements for time-based market data analysis and signals generation. Esper statements can invoke any number of procedural actions, such as placing an order or closing a position, which are coded in Java or Python. The combination of Esper statements and Java/Python Code provides a best-of-both-worlds approach.
For management and monitoring of the system different GUI clients exist. The AlgoTrader HTML5 Frontend provides trading related functionality like charting, orders, positions & market data. IntelliJ IDE’s are used for strategy development. The EsperHQ client manages the Esper CEP engine.
AlgoTrader also provides a comprehensive REST and Web Socket API as well as a standard FIX interface to connect external systems and have full access to all built-in features of the platform.
For productive installations and deployment AlgoTrader uses Docker.