WARNING: The author of this software will not be responsible for your losses on the market, use at your own discretion.
Gamma Ray is a high frequnecy market maker trading bot for crypto currency markets written in C++. It is able to consistantly update maker orders under 100 micro seconds.
This program is aimes to be a starting point for developing your own market maker algorithms, and it comes with 3 existing strategies for you to get started:
- Top, which tries to post 1 tick better than the existing best bid and ask prices in the orderbook, given a minimum spread contraint.
- Mid, which post bid/ask orders with a fixed spread.
- Avellaneda Stoikov, which is a high frequency market maker framework with a proper model, for more information you may read the paper here. A jupyter notebook
doc/AS model calibration.ipynb
is provided giving a sample method to calibrate model parameters.
As of now this program only supports one exchange: Bitmex, more exchanges may be added in the future depend on user request.
This program is tested on Ubuntu 18, other Linux distributions may differ from this instruction.
# install dependent packages
sudo apt-get update
sudo apt-get -y install build-essential doxygen graphviz ninja-build libboost-all-dev libssl-dev libcpprest-dev
# install cmake 3.18
wget https://github.com/Kitware/CMake/releases/download/v3.18.0-rc1/cmake-3.18.0-rc1.tar.gz && tar -xzvf cmake-3.18.0-rc1.tar.gz && cd cmake-3.18.0-rc1
./bootstrap && make
sudo make install
cd .. && rm -rf cmake-3.18.0-rc1
source
# install poco
git clone -b master https://github.com/pocoproject/poco.git
cd poco
mkdir cmake-build && cd cmake-build
cmake ..
sudo cmake --build . --target install
cd ../.. && rm -rf poco
git clone --recurse-submodules https://github.com/hello2all/gamma-ray
cd gamma-ray
mkdir release
cd release
cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
ninja
A sample configuration sample-config.json
is provided, after editing according to your parameters this config file is required to be renamed to gamma-ray.json
and copied into the same directory as the executable.
cp ./sample-config.json ./release/gamma-ray.json
A brief explaination of configurable parameteres:
- websocketUrl: Websocket API end point
- httpUrl: REST API end point
- apiKey: API key
- apiSecret: API secret
- contract: trading pair, currently supports only perpetual contracts such as
BTCUSD
,ETHUSD
etc. - quotingMode: quoting strategy, you can choose from
Mid
,Top
andAvellanedaStoikov
. - size: order size/quantity
- quotingModeParam: quoting strategy specific parameters
- pairs: how many price levels of bid ask pairs will be posted
- priceInterval: price difference between price levels
- sizeIncrement: size difference between price levels
- skewFactor: for each executed order size, mid price will move one tick against the executed side
- tradesPerMinute: safety feature, maximum orders can be executed before stop quoting, not yet implemented
With gamma-ray.json
config file in the same directory with the executable
./release/main
For the best latency, this bot should be deployed on AWS eu-west-1c
.