Skip to main content

An SDK to interact with the Perennial derivatives protocol.

Project description

Perennial Python SDK

Overview

This tool is designed to communicate with the Perennial exchange from Python and read/write the following data:

Read account and market information:

  1. Open positions (Iterates through available markets -> checks for open positions -> prints them in the end)
  2. Open orders (Prints a list of open orders and their details, incl. nonces)
  3. Collaterals
  4. Maintenance margin requirements
  5. Pair prices
  6. Funding rate

Execute market orders:

  1. Closing positions
  2. Placing market orders
  3. Placing limit orders
  4. Placing trigger orders
  5. Canceling orders
  • When closing positions - Doesnt automatically withdraw the collateral, you should use the last step in the example to do so.
  • When placing market/limit order - Approves collateral (62.5$ min), commits price to MultiInvoker, places order.
  • When placing trigger orders -
    • Placing collateral is optional,
    • Commits price and places order.
    • If you are holding a Long position you should choose side 1 - Buy; Even though you need it to short. Same for short position.
    • The delta is with how much you want to reduce the position size , so it should be negative.
    • For full close delta = 0.
  • To cancel orders, you will need the nonce fo the order (from MultiInvoker side). You can get this by using fetch_open_orders.py.

Features

  • Connects to an Arbitrum node using a provided RPC URL
  • Retrieves oracle information for specified markets
  • Fetches VAAs from the Pyth Network
  • Creates market snapshots using a Lens contract
  • Supports multiple markets and optional account specification
  • Reads all needed information from the snapshot

Prerequisites

  • RPC URL (in .env)
  • Wallet private key (in .env)
  • Python 3.7+
  • Required Libraries:
  • web3 library
  • python-dotenv library
  • requests library
  • eth-account library
  • eht_abi library

Installation

Using pip

You can install the SDK using pip:

pip install perennial_sdk==0.1.0

Using Poetry

If you prefer using Poetry for dependency management, you can add the SDK to your project with:

poetry add perennial_sdk@0.1.0

Development

If you are using Poetry, you can set up your environment with:

  1. Install Poetry if you haven't already:

    curl -sSL https://install.python-poetry.org | python3 -
    
  2. Install dependencies:

    poetry install
    
  3. Activate the virtual environment:

    poetry run python <command here>
    

Example usage can be found in the examples directory:

Private key and RPC url will need to be added first to .env.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perennial_sdk-0.1.1.tar.gz (50.6 kB view details)

Uploaded Source

Built Distribution

perennial_sdk-0.1.1-py3-none-any.whl (60.3 kB view details)

Uploaded Python 3

File details

Details for the file perennial_sdk-0.1.1.tar.gz.

File metadata

  • Download URL: perennial_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 50.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/23.5.0

File hashes

Hashes for perennial_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5fc5bf7e0e470c732fb7159b6f4032e7e6294fea8356637d424d06d01ceaf6b2
MD5 e7be048feb5dc8deba76033c57436fb4
BLAKE2b-256 13538e590ebd14227597745e5b76427024897e349939d83abf0e96a667ae740f

See more details on using hashes here.

File details

Details for the file perennial_sdk-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: perennial_sdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 60.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/23.5.0

File hashes

Hashes for perennial_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 82bd0f25788405c5c19062a2db0f1d3e84ba45803d7826ddfbff6e61f698d318
MD5 f77eeb58dc79d83637fb519c8e8a9e41
BLAKE2b-256 a3824516686cb2e576cd4aaf1269a8288f131cf0b8990f33e5a324939da0f0cd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page