Skip to content

MM0819/vega-protocol-market-maker-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vega Protocol - Python Market Maker Example

Example Python setup code running a simple market maker on a Vega Protocol network.

The Market-Maker has several components:

  • Websocket connections to Binance and a Vega Protocol data node
  • Local stores for each of the websocket connections to cache received updates
  • A wallet class to handle conversion of generated orders into signed bundles
  • A market maker themselves

The logic of the market maker is contained within market_maker/strategy/simple_market_maker.py and consists simply of listening to a Binance websocket stream for a reference price, then updating a number of quotes on either side of this price at a configurable frequency.

Setup

Configuration for running this example is as follows:

  • With a Python 3.10 environment manager of choice, configure an environment based on requirements.txt. (If you're currently lacking a manager, poetry is a good choice for a full-featured manager or venv for light virtual environments.)
  • Follow the instructions at create-wallet to download a CLI wallet for your system, import networks (fairground for the testnet) and ensure you are able to generate wallets
  • The Vega Wallet v2 API requires a token to be generated which the bot will later attach to transaction requests, so this must be set up next.
    • Make a copy of .env.sample to a file called .env
    • To do so, follow the instructions at get-started, specifically those under the 'connect with bots' section.
      • Make a note of the token you are given, and update WALLET_TOKEN in your .env file to the value.
      • Update PARTY_ID in .env to be the public key for your generated wallet
  • Once completed, run the wallet service with vegawallet service run --load-tokens --network fairground --automatic-consent. This connects the wallet to the fairground network and --automatic-consent means that the wallet will skip requesting manual approval when it receives a transaction and instead always propagates it.
  • Now that the wallet service is up and running, we can start the market maker itself.
    • Open the console and select a market of interest. Find the ID for the market either in the URL once that market is selected or the Key Details tab on the market page image
    • Set MARKET_ID in .env to this ID
    • Set BINANCE_MARKET in .env to the name of a market from which to draw reference prices. This should be a Binance Spot symbol
    • Enter your Python environment and run python -m main to start up the market maker. You should now be able to log in to the Fairground console and see the orders being placed.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages