University project about building a functioning stock exchange.
The system design is inspired by this Jane Street video.
Planned exchange features:
- Limit orders (BUY, SELL, CANCEL)
- Limit Order Book
- Matching Engine
Planned communication features:
- Simple fix protocol implementation
- Multicast with order executions, rejects, etc.
- Market data snapshots
- Client Port Processes
- Retransmitter for multicast
Other features:
- Client GUI (Swing)
- MongoDB for logging
For the Limit Order Book, I want to try the following data structures:
- Java TreeMap (Red-Black Tree)
- ART (Adaptive Radix Tree)
- Treap
- Splay tree
Module structure of the project:
- exchange - Limit order book and matching engine
- client - Classes related to client processes
- common - Common classes -> fix protocol, symbols
