A high-performance order execution and management system to trade on Deribit Test.
This Project implement and justify optimization techniques for memory management, network communication, data structure selection, thread management and CPU optimization. It covers all supported symbols and instrument coverage include support for Spot, Future, and Options.
- Cpp
- Boost
- Websocketpp
Table of Contents
The project aims to develop a high-performance order execution and management system for trading on the Deribit Test platform. It leverages C++ to achieve low-latency performance while ensuring robust functionality and scalability.
Key features of the system include:
- Order Management: Seamless order placement, cancellation, and modification for a variety of trading instruments, including Spot, Futures, and Options.
- Real-Time Market Data Streaming: Implements a WebSocket server to provide continuous and efficient updates of market data, supporting multiple client subscriptions.
- Market Coverage: Comprehensive support for all symbols available on the Deribit platform.
- Performance Optimization: Incorporates techniques for memory management, efficient data structure usage, and network communication to minimize latency.
- Error Handling and Logging: Ensures reliability and traceability through robust error management and detailed logging.
This system is designed to meet the demands of algorithmic trading by focusing on speed, accuracy, and scalability, making it a suitable solution for real-world financial markets.
Two Implementaion of the sockets are currently supported. Boost beast implementation and Websocket++ implementation. These implementations in turn can make both sync and async calls to remote api.
Trader supporting various functionalities.
To get a local copy up and running follow these simple steps.
- Basic understanding of CPP
- Boost and Websocket++ library
- GitHub Account (Sign Up)
-
Clone the repo
git clone https://github.com/Talkative-Banana/Trading-System.git
Make sure you have both Boost Beast and Websocket++ libraries then you can call make by going into directories having Makefile
cd src/ make ./algo.exe
Make cahnges in the Api.cpp to switch implementations of socket and make changes in tes_latency.cpp to switch between sync or async
cd test/test_latency/ make ./test_latency.exe
cd test/test_throughput/ make ./test_throughput.exe
- Clone the repo and open it in suitable IDE for complete project source code. You can also fix the issues and hence contribute.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch
- Commit your Changes
- Push to the Branch
- Open a Pull Request
Email ID - [email protected]
Lakshay Bansal [email protected]