Eden is an algorithmic trading platform, whose core is a trading engine and limit orderbook, implemented in C# and built on .netstandard2.1.
All the code under src/
is being built upon in real-time on my Algo Trading Platform Series.
The following features are currently supported.
- New Order
- Modify Order
- Cancel Order
- New Order Acknowledgement
- Modify Order Acknowledgement
- Cancel Order Acknowledgement
- Fill
- First-In-First-Out (FIFO)
- Last-In-First-Out (LIFO)
- Pro-Rata
- Trade Summary
- Market-By-Order Incremental Orderbook Update
The following features are on the roadmap.
Private gRPC stream-based communication for order entry between trading clients and the algorithmic trading platform.
Seperate market data dissemination platform.
- Session Statistics
- Daily Statistics
The following steps will allow you to build and run Eden.
- Download Visual Studio 2019.
- Download this repository.
- Open
TradingEngine.sln
undersrc/TradingEngine
- Hit F5 to build and run the solution.
The following is a diagram representing the architecture of EDEN and EXODUS. EXODUS is the market data dissemination platform that will be built alongside EDEN.
Note: Currently, EDEN is being worked on. Work on EXODUS has not started. The Instrument Flat File detailed above does not yet exist.
EDEN and all trading clients reference a flat file detailing which instruments are supported for trading. Orders submitted from trading clients for instruments not contained in the flat file will be rejected by EDEN.
- Trading client connects to EDEN via TCP, leveraging gRPC. The trading client now has a private communication channel open between itself and EDEN.
- Trading client can submit New Order, Cancel Order, and Modify Order requests, receving a corresponding acknowledgement for each via the gRPC bi-directional stream.
- Upon receipt of a New Order, Cancel Order, or Modify Order, EDEN persists the order's information to Cassandra.
- If a trading client's order matches against a resting order, they receive a Fill via the gRPC bi-directional stream.
- Given a match, a Trade Summary, Incremental Orderbook Update and Trade Statistic message is generated and sent to EXODUS.
- EXODUS persists this information in a seperate instance of Cassandra dedicated to storing market data. Whether it persists it to a seperate instance of Cassandra or the same instance that EDEN uses is still up for discussion.
- Said market data is sent to all listening clients. Listening applications include: i) Applications with order entry capabilities listening to market data. ii) Applications without order entry capabilities listening to market data. In other words, one does not need to connect to EDEN to connect to EXODUS.