Running
(requires Java 8; does not require gradle installation - uses gradle wrapper)
Standalone JAR
(the following steps are for Linux, tested on Ubuntu 15.10)
- Execute
./gradlew shadowJar
from the main project directory (qdx-market-maker
). - Jar will be created in
qdx-market-maker/build/libs/
namedqdx-market-maker-<version>-all.jar
. - Copy the jar to a convenient location, place your
quedex-config.properties
andmarket-maker.properties
(examples may be found inqdx-market-maker/src/main/resources
) next to it. - Run the jar with
java -jar qdx-market-maker-<version>-all.jar quedex-config.properties market-maker.properties
. To exit hit CTRL + C.
From an IDE
- Clone the repository.
- Import the gradle project to your favourite IDE (tested with IntelliJ).
- Fetch the dependencies (should happen automatically).
- Rename the file
quedex-config.properties.example
inqdx-market-maker/src/main/resources
toquedex-config.properties
and fill in your details. - Rename the file
market-maker.properties.example
inqdx-market-maker/src/main/resources
tomarket-maker.properties
and change the configuration according to your liking. - Run the
Main
class.
Features
The market making bot:
- places orders with configurable quantities on configurable number of levels
- has configurable spread
- follows a predefined Fair Price for futures (currently last price or mid - change the implementation in the
MarketMaker
class betweenLastFairPriceProvider
andMidFairPriceProvider
) - places option orders with volatility smile adjustments based on the SABR model with time-dependent volatility of volatility
- has configurable risk management - stops quoting one side of the order book when delta or vega limit exceeded
- enables risk monitoring based on greeks (delta, vega, gamma, theta), per position and in total
- cancels all orders when going down or on error
- is easily extensible
TODO:
- sensitivity to Fair Price changes
- logging configuration
- documentation
- websockets API