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
Last synced: 10 months ago · JSON representation

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
Created over 2 years ago · Last pushed about 2 years ago
Metadata Files
Readme Citation

README.md

COMP5530M - Simulation of the Dynamic Evolution of Limit Order Books using Generative Models

Video

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

img.png 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

Hello there! I'm a computer science student at the University of Leeds with a passion for all things in tech.

GitHub Events

Total
Last Year