Skip to content
Snippets Groups Projects

G4 Netcap

Introduction

This application aims to simulate a real world trading environment where packets which follow the FIX protocol are being sent between traders and exchanges, which then can be used to analyse the specific latency distribution and averages to monitor network performance.

Prerequisites

This project has been designed to deploy through vagrant. Make sure to have vagrant installed before hand, along with virtual box to run this project.

Custom Configurations

If you want to customize how the different VMs are initially brought up, you can do so by modifying the .env file located within the src folder. By default, these are the values set:

MEM_FRONTEND=2048
MEM_BACKEND=2048
MEM_EXCHANGE=512
MEM_TRADER=256

CPU_FRONTEND=2
CPU_BACKEND=2
CPU_EXCHANGE=2
CPU_TRADER=2

NUM_TRADERS=2
NUM_EXCHANGES=2

# These two must be the same
BACKEND_IP=192.168.56.101
REACT_APP_BACKEND_IP=192.168.56.101

# Distributed Exchange Internals
OME_IP=127.0.0.2
TICKER_IP=127.0.0.3
DROPCOPY_IP=127.0.0.4
UDP_BROADCAST_PORT=3200

FRONTEND_IP=192.168.56.100
TRADER_BASE_IP=192.168.56.
EXCHANGE_BASE_IP=192.168.56.
EXCHANGE_START_OCTET=30
EXCHANGE_PORT=3125
TRADER_START_OCTET=10

PROVISION_PATH=./src/provision_scripts

Getting Started

To get started, clone down this repository:

git clone https://gitlab.engr.illinois.edu/ie421_high_frequency_trading_spring_2023/ie421_hft_spring_2023_group_04/group_04_project.git

Then in the directory where the project is, run

vagrant up

1. Starting the web application

To start the web application, run the following within the root directory of the project:

./start_app.sh

Note: This will take a while, since be default, it will attempt to bring up 6 VMs, one for the web frontend, backend, 2 simulated exchanges, and another 2 simulated traders.

2. Starting the simulated exchanges

For each exchange dictated by the NUM_EXCHANGES field within the .env file, you will have to SSH into that VM and start the exchange. The VM are named starting from zero, eg: fix_exchange_0 or fix_exchange_1 for the second, and so on. Run the following commands to SSH and start each simulated exchange:

vagrant ssh fix_exchange_#

Where # is the exchange you are aiming to start. After which you will run the following to start the exchange.

~/vagrant/start_exchange.sh

Then you may proceed to exit the VM:

exit

3. Starting the simulated traders

For each trader dictated by the NUM_TRADERS field within the .env file, you will have to SSH into that VM and start the trader. The VM are named starting from zero, eg: fix_trader_0 or fix_trader_1 for the second, and so on. Run the following commands to SSH and start each simulated trader:

vagrant ssh fix_trader_#

Where # is the trader you are aiming to start. After which you will run the following to start the trader.

~/vagrant/start_trader.sh

Then you may proceed to exit the VM:

exit

Accessing the website

Once everything has been booted up, head over to 192.168.56.100:3000 or whatever the IP has been set for the frontend to access the site.

Stopping the simulation

Stopping the trading simulation is much more straight-forward. Simply run the following command on your host machine within the root directory of this project:

./stop_sim.sh

Contributors

Project Lead: Adrian Cheng

acheng27@illinois.edu

Batuhan Usluel

busluel2@illinois.edu

Zijing Wei

zijingw4@illinois.edu

Yunfan Hu

yunfanh2@illinois.edu