-
Adrian Cheng authoredAdrian Cheng authored
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