Go to file
Riordan Panayides ee33ff2a90 Upgrade mango-client to use Pyth oracle 2022-08-02 13:06:13 +01:00
src Upgrade mango-client to use Pyth oracle 2022-08-02 13:06:13 +01:00
.gitignore added dotenv to automate reading .env file, updated readme 2021-07-22 18:01:20 +02:00
LICENSE Initial commit 2021-03-09 08:20:27 -05:00
README.md added dotenv to automate reading .env file, updated readme 2021-07-22 18:01:20 +02:00
crank.sh crank.sh logs now to a logfile 2021-04-28 17:09:03 +00:00
package-lock.json add 1% bias to liquidator, to allow third parties to step in first, also improve discord logs 2021-03-16 12:35:07 +01:00
package.json Upgrade mango-client to use Pyth oracle 2022-08-02 13:06:13 +01:00
tsconfig.json separated liquidator from mango repo 2021-03-09 08:32:07 -05:00
yarn.lock Upgrade mango-client to use Pyth oracle 2022-08-02 13:06:13 +01:00

README.md

Mango Liquidator

Setup Partial Liquidator

Prerequisites

To run the liquidator you will need:

  • A Solana account with some SOL deposited to cover transaction fees
  • Token accounts for each currency in the Mango Group (e.g. BTC, ETH, SOL, SRM, USDT)
  • Roughly equal deposits for each token. You will need base currencies to liquidate shorts, and quote currency to liquidate longs.
  • Serum Dex OpenOrders accounts associated with your account. This is required for balance wallets functionality.
    • The easiest way to set these up is by placing an order on Serum Dex for each currency pair then immediately cancelling it.

Setup

Make sure to edit the .env file to look something like this:

CLUSTER="mainnet-beta"
CLUSTER_URL="https://solana-api.projectserum.com"
KEYPAIR=${HOME}/.config/solana/id.json
NODE_ENV=production
TARGETS="0.1 2.0 100.0 500.0"
GROUP_NAME="BTC_ETH_SOL_SRM_USDC"
CHECK_INTERVAL="1000.0"
FILTER_ACCOUNTS=true

Replace ${HOME} with your actual path to home. For example,

KEYPAIR=/Users/john/.config/solana/id.json

TARGETS represents the amounts of each token the partial liquidator should try to maintain in the liquidator's wallet. Any excess of that amount in the wallet will be market sold on Serum DEX.

CHECK_INTERVAL is the amount of milliseconds to wait between querying all margin accounts

FILTER_ACCOUNTS uses a more efficient method of querying marginAccounts by only returning accounts with open borrows. This is only supported on Mango Groups released after 'BTC_ETH_SOL_SRM_USDT'. Disabled by default.

Run

yarn install
source .env
yarn partialLiquidate

Run

yarn install
source .env
yarn liquidate