To run the market maker you will need:
- A Solana account with some SOL deposited to cover transaction fees
- A Mango Account with some collateral deposited and a name (tip: use the UI)
- Your wallet keypair saved as a JSON file
node
andyarn
mkdir blockworks-foundation
cd blockworks-foundation
git clone https://github.com/blockworks-foundation/market-maker-ts.git
cd market-maker-ts
yarn install
## Open .env file and set env vars like this example ##
export KEYPAIR=~/.config/solana/id.json
export ENDPOINT_URL="https://mango.rpcpool.com/946ef7337da3f5b8d3e4a34e7f88"
export PARAMS=default.json
## Set mangoAccountName in params file to reflect the name of your MangoAccount
. run.sh
If you're running the market maker on a server, you might want to run it via systemd to have auto restarts
chmod 755 run.sh
cd /etc/systemd/system
sudo nano mm.service
## Set the systemd service file like this and replace the *** lines with your own
***ExecStart=/home/dd/blockworks-foundation/market-maker-ts/run.sh
***WorkingDirectory=/home/dd/blockworks-foundation/market-maker-ts/
Restart=always
RuntimeMaxSec=1800
RestartSec=5s
LimitNOFILE=4096
IgnoreSIGPIPE=false
KillMode=control-group
***User=dd
sudo systemctl daemon-reload
sudo systemctl start mm.service
You can watch the log output with:
journalctl -f -u mm.service
And stop the mm:
sudo systemctl stop mm.service
Variable | Default | Description |
---|---|---|
ENDPOINT_URL |
https://mango.rpcpool.com |
Your RPC node endpoint |
KEYPAIR |
${HOME}/.config/solana/id.json |
The location of your wallet keypair |
PARAMS |
default.json |
params file |
Variable | Default | Description |
---|---|---|
group |
mainnet.1 |
Name of the group in ids.json |
interval |
10000 |
Milliseconds to wait before updating quotes |
mangoAccountName |
N/A | The MangoAccount name you input when initializing the MangoAccount via UI |
mangoAccountPubkey |
N/A | If no MangoAccount name, just pass in the pubkey |
assets |
N/A | Mapping of symbols to trade and their specific params |
sizePerc |
0.1 |
The size of each order as a percentage of equity |
charge |
0.0010 |
How much to increase quote width from centralized exchange |
leanCoeff |
0.0005 |
How much to move the quotes per unit size of inventory |
bias |
0 |
Fixed amount to bias. Negative values bias downward. e.g. -0.0005 biases down 5bps |
requoteThresh |
0 |
How much new bid/ask price must change to requote; e.g. 0.0002 implies 2bps |
ftxSize |
100000 |
How much to look up spread on centralized exchange |
tif |
N/A | Time in force in seconds for maker orders |
processes |
[] | List of lists of assets specifying MD streams to put in separate processes (e.g. in params/devnet_multiproc.json) |