comp5530m
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.1%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: Massssssi
- Language: C++
- Default Branch: main
- Size: 345 MB
Statistics
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
COMP5530M - Simulation of the Dynamic Evolution of Limit Order Books using Generative Models
This project was a collaborative effort in which we created models to create synthetic Limit Order Books (LOB), using Generative Adversarial Networks and Agent-Based Models.
A monolithic software application was created using C++ and Qt allowing users to backtest their strategies on synthetic market data which attempts to simulate a Level 2 LOB. The application supports Immediate or Cancel (IOC) and Fill or Kill (FOK) orders
Prerequisites
Ensure that you have the necessary software/libraries installed to run the project. Most of the application development was on macOS and UNIX: + CMake 3.18 + sqlite3 + Qt + pytorch/libtorch + httplib + nlohmann
Running the Application
From the project root:
bash
~ cd "cpp codebase"
~ mkdir build && cd build
~ cmake ../.
~ cmake --build .
Data Collection
- The python files in the CloudDataRetriever directory contains the files used to retrieve orderbook data from Coinbase for training the GANs.
GAN training
- The python notebooks for GAN training can be found in the GAN directory. Once we finished training models after a suitable number of epochs elapsed, we created .pt files and exported this to C++ to be used to load the model weights.
Models
- The C++ implementation of the models to generate synthetic LOB data can be found in the GAN and ABM directories.
Application Workflow
There are various workflows in the application:
* A Server thread which listens for API requests, processing them and updating the
stored orderbook
* An Orderbook mutex ensuring that only one thread may modify the Orderbook at any one time, preventing race-conditions
and ensure consistency
* GAN thread which infinitely generates LOB data when a signal is triggered from the
Qt application
* Agent-Based thread which infinitely generates LOB data when a signal is triggered
from the Qt application
* Signals and Slots which updates the user's total position &
quantity when they submit orders to the API server.
Other resources
Owner
- Name: Massi
- Login: Massssssi
- Kind: user
- Location: Leeds
- Company: University Of Leeds
- Repositories: 1
- Profile: https://github.com/Massssssi
Hello there! I'm a computer science student at the University of Leeds with a passion for all things in tech.