quantpylib.wrappers.paradex
quantpylib.wrappers.paradex
module is our official Paradex wrapper SDK implementing the endpoints for perpetuals trading. The library supports a fully asynchronous endpoint for efficiency and lightweight
concurrency. The websocket manager handles reconnections and resubsriptions under network errors and upgrades.
We will demonstrate usage of the library. On top of the endpoints exposed by the exchange, we have added a variety of utility functions.
Examples
We would demonstrate some endpoints. Refer to full documentation for details.
import os
import pytz
import asyncio
from pprint import pprint
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
from quantpylib.wrappers.paradex import Paradex
async def print_handler(msg):
print(msg)
async def main():
'''using the SDK'''
pdx = Paradex(
key=os.getenv("ETH_KEY"),
l2_secret=os.getenv("PARADEX_SECRET"),
)
'''quantpylib.gateway endpoints'''
await pdx.init_client()
print(pdx.get_price_precision("BTC-USD-PERP"))
print(pdx.get_lot_precision("BTC-USD-PERP"))
'''ACCOUNT ENDPOINTS'''
pprint(await pdx.account_balance())
await pdx.account_fill_subscribe(handler=print_handler)
'''EXCHANGE ENDPOINTS'''
pprint(await pdx.contract_specifications())
pprint(await pdx.get_funding_info())
'''EXECUTOR ENDPOINTS'''
cloid = pdx.rand_cloid()
print(cloid)
pprint(await pdx.get_all_mids())
pprint(await pdx.get_all_marks())
pprint(await pdx.limit_order(ticker="SOL-USD-PERP",amount=1,price=99.99,cloid=cloid))
pprint(await pdx.cancel_open_orders()) #or use ticker="SOL-USD-PERP"
pprint(await pdx.cancel_order(ticker="SOL-USD-PERP",cloid=cloid)) #or use oid
pprint(await pdx.market_order(ticker="SOL-USD-PERP",amount=-0.5))
pprint(await pdx.l2_book_get(ticker="BTC-USD-PERP"))
await pdx.l2_book_mirror(ticker="BTC-USD-PERP",on_update=print_handler)
await pdx.l2_book_subscribe(ticker="BTC-USD-PERP",handler=print_handler)
await pdx.trades_subscribe(ticker="BTC-USD-PERP",handler=print_handler)
await pdx.all_mids_subscribe(handler=print_handler)
await pdx.oracle_subscribe(handler=print_handler) #get USDC/USD oracle
'''ORDERS ENDPOINTS'''
pprint(await pdx.order_query(ticker='SOL-USD-PERP',cloid='1234'))
pprint(await pdx.orders_get())
await pdx.orders_mirror(on_update=print_handler)
await pdx.order_updates_subscribe(handler=print_handler)
'''POSITIONS ENDPOINTS'''
pprint(await pdx.positions_get())
await pdx.positions_mirror(on_update=print_handler)
'''DATAPOLLER ENDPOINTS'''
# pprint(await pdx.get_trade_bars(
# ticker='BTC-USD-PERP',
# start=datetime(2021,1,1, tzinfo=pytz.utc),
# end=datetime.now(pytz.utc),
# granularity=Period.HOURLY,
# granularity_multiplier=1,
# ))
'''raw exchange endpoints API - refer to docs for the other method implementations'''
pprint(await pdx.get_account())
pprint(await pdx.get_profile())
pprint(await pdx.get_balances())
pprint(await pdx.get_fills())
pprint(await pdx.get_tradebusts())
#>... many more
await asyncio.sleep(1e9)
if __name__ == "__main__":
asyncio.run(main())
Paradex
__init__(key=None, secret=None, l2_secret=None)
Instantiates the Paradex wrapper class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
key
|
str
|
Ethereum L1 public address. |
None
|
secret
|
str
|
Ethereum L1 private key. |
None
|
l2_secret
|
str
|
Starknet L2 private key. |
None
|
account_balance(**kwargs)
async
Retrieve balance details of the user, such as equity, margin (total, maintenance) and pnl.
Returns:
Type | Description |
---|---|
dict
|
Balance details. |
account_fill_subscribe(handler, **kwargs)
async
Subscribe to account fill updates.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
handler
|
coroutine
|
Coroutine handler receiving the account fill messages. |
required |
account_fill_unsubscribe(**kwargs)
async
Unsubscribe to account fill updates.
all_mids_subscribe(handler, **kwargs)
async
Subscribe to mid-price updates for all tickers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
handler
|
coroutine
|
A coroutine handler for the message received. |
required |
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
all_mids_unsubscribe(**kwargs)
async
Unsubscribe from mid-price updates for all tickers.
cancel_all_orders(market=None)
async
Cancel all orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. Defaults to None (cancel all open orders). |
None
|
cancel_open_orders(ticker=None, **kwargs)
async
Cancel open orders on the exchange.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
The coin symbol. Defaults to None, which means cancel all open orders. |
None
|
**kwargs
|
Additional keyword arguments for further customization. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
Any |
The result of the cancellation request. Returns None if no open orders are found or no orders are canceled. |
cancel_order(oid=None, cloid=None, **kwargs)
async
Cancel an order.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
oid
|
int
|
Order ID to cancel. |
None
|
cloid
|
str
|
Client Order ID to cancel. |
None
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
cancel_order_by_cloid(client_id)
async
Cancel order by client ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
client_id
|
str
|
The client ID for the order. |
required |
cancel_order_by_oid(order_id)
async
Cancel order by order ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order_id
|
str
|
The order ID. |
required |
contract_specifications(**kwargs)
async
Retrieve the contract's trading rules from the exchange.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
dict |
A dictionary containing contract specifications for each asset with key-values: - SYMBOL_PRICE_PRECISION. - SYMBOL_QUANTITY_PRECISION. - SYMBOL_MIN_NOTIONAL - SYMBOL_BASE_ASSET - SYMBOL_QUOTE_ASSET |
get_account()
async
Get account details.
get_all_marks(**kwargs)
async
Retrieve the mark-price for all available tickers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
dict |
A dictionary with contract symbols as keys and their corresponding mark-prices (Decimal) as values. |
get_all_mids(**kwargs)
async
Retrieve the mid-price for all available tickers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
dict |
A dictionary with contract symbols as keys and their corresponding mid-prices (Decimal) as values
if |
get_balances()
async
Get account balances.
get_bbo(market)
async
Get the best bid and offer for a specific market.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. |
required |
get_fills(**kwargs)
async
Get account fills.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional params. |
{}
|
get_funding_data(market, **kwargs)
async
Get funding data for a specific market.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. |
required |
get_funding_info(**kwargs)
async
Retrieve funding information from the exchange.
Returns:
Name | Type | Description |
---|---|---|
dict |
A dictionary containing information for each asset with key-values: - FUNDING_RATE. - NEXT_FUNDING. - MARK_PRICE. - FUNDING_INTERVAL. |
get_funding_payments(**kwargs)
async
Get account funding payments.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional params. |
{}
|
get_insurance()
async
Get insurance details.
get_jwt_token()
Get the current JWT token for the exchange private methods.
get_liquidations(**kwargs)
async
Get liquidations.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
get_lot_precision(ticker)
Retrieves the lot size precision for a specified ticker.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
The ticker symbol. |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
The number of decimal places for lot size precision. |
get_markets()
async
Get all available markets.
get_markets_summary(market='ALL', **kwargs)
async
Get the summary of all markets.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. Defaults to 'ALL'. |
'ALL'
|
**kwargs
|
Additional keyword arguments. |
{}
|
get_ohlcv(end_at, resolution, start_at, symbol)
async
Get OHLCV data for a specific market.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
end_at
|
str
|
The end time. |
required |
resolution
|
str
|
The resolution of the candle. |
required |
start_at
|
str
|
The start time. |
required |
symbol
|
str
|
The market symbol. |
required |
get_open_orders(**kwargs)
async
Get open orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
get_open_positions()
async
Get open positions.
get_order_by_cloid(client_id)
async
Get order by client ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
client_id
|
str
|
The client ID for the order. |
required |
get_order_by_oid(order_id)
async
Get order by order ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
order_id
|
str
|
The order ID. |
required |
get_orderbook(market, **kwargs)
async
Get the orderbook for a specific market.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. |
required |
get_orders_history(**kwargs)
async
Get list of orders history.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword |
{}
|
get_points(market, program)
async
Get points data for a specific market and program.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. |
required |
program
|
str
|
The program. |
required |
get_price_precision(ticker)
Retrieves the price precision for a specified ticker.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
The ticker symbol. |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
The number of decimal places for price precision. |
get_profile()
async
Get profile details.
get_referral_config()
async
Get referral config.
get_referral_summary()
async
Get user referral summary.
get_system_config()
async
Get exchange system config.
get_system_state()
async
Get exchange system state.
get_system_time()
async
Get exchange system time.
get_tradebusts()
async
Get tradebusts.
get_trades(market, **kwargs)
async
Get trades for a specific market.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. |
required |
**kwargs
|
Additional keyword arguments. |
{}
|
get_transactions(**kwargs)
async
Get transactions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional params. |
{}
|
get_transfers(**kwargs)
async
Get transfers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
get_vault_account_summary(**kwargs)
async
Get user's vault account summary.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
get_vault_config()
async
Get vault config.
get_vault_history(address, type, resolution)
async
Get vault history.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
address
|
str
|
The address of the vault. |
required |
type
|
str
|
The type. |
required |
resolution
|
str
|
The resolution of history. |
required |
get_vault_positions(address)
async
Get vault positions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
address
|
str
|
The address of the vault. |
required |
get_vault_summary(**kwargs)
async
Get exchange vault summary.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
get_vaults(**kwargs)
async
Get vault details.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional keyword arguments. |
{}
|
init_client()
async
Initializes the exchange client.
l2_book_get(ticker, depth=100, standardize_schema=True, **kwargs)
async
Retrieve the L2 Order Book for a specific ticker.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
depth
|
int
|
Depth of the order book. Defaults to 100. |
100
|
standardize_schema
|
bool
|
If True, returns the order book in a standardized schema. Defaults to True. |
True
|
**kwargs
|
Additional keyword arguments specific to the exchange wrapper. |
{}
|
l2_book_mirror(ticker, depth=15, buffer_size=100, as_dict=True, on_update=None, speed_ms=100, **kwargs)
async
Keep a live, internal L2 Order Book representation using a l2-book subscription.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
depth
|
int
|
Depth of the order-book representation. |
15
|
buffer_size
|
int
|
Size of the order-book buffer, if |
100
|
as_dict
|
(bool, True)
|
If |
True
|
on_update
|
coroutine
|
A coroutine handler when order book state is updated. |
None
|
speed_ms
|
(int, 100)
|
Speed of the order book updates in milliseconds. |
100
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
l2_book_peek(ticker, as_dict=True, **kwargs)
Retrieve the mirrored, local internal L2 Order Book representation.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
as_dict
|
(bool, True)
|
If |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
l2_book_subscribe(ticker, handler, depth=15, speed_ms=100, standardize_schema=True, **kwargs)
async
Subscribe to L2 Order Book stream.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
handler
|
coroutine
|
A coroutine handler for the message received. |
required |
depth
|
int
|
Depth of the l2 stream updates. Defaults to 15 (snapshot). Other depths are delta updates. |
15
|
speed_ms
|
int
|
Speed of the order book updates in milliseconds. Defaults to 100. |
100
|
standardize_schema
|
(bool, True)
|
Processes the incoming message to |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
l2_book_subscriptions(**kwargs)
Retrieve the list of open l2 book subscriptions.
l2_book_unsubscribe(ticker, depth=15, speed_ms=100, **kwargs)
async
Unsubscribe from L2 Order Book.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
depth
|
int
|
Depth of the l2 stream update subscribed. Defaults to 15. |
15
|
speed_ms
|
int
|
Speed of the order book updates in milliseconds. Defaults to 100. |
100
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
limit_order(ticker, amount, price, tif='GTC', reduce_only=False, cloid=None, round_price=False, round_size=False, **kwargs)
async
Submit a limit order.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
The coin symbol. |
required |
amount
|
float or Decimal
|
The signed quantity of contracts to long or short. |
required |
price
|
float
|
The price at which to execute the order. |
required |
tif
|
str
|
The time in force for the order. Defaults to "Gtc". Allowed values are: - "GTC" (Good 'til canceled) - "POST_ONLY" (Add liquidity only) - "IOC" (Immediate or cancel) |
'GTC'
|
reduce_only
|
bool
|
Whether the order should only reduce an existing position. Defaults to False. |
False
|
cloid
|
str
|
Client order ID for order tracking. Defaults to None. |
None
|
round_price
|
bool
|
Whether to round the price to a valid order specification. Defaults to False. |
False
|
round_size
|
bool
|
Whether to round the price to a valid order specification. Defaults to False. |
False
|
**kwargs
|
Additional keyword arguments for order customization. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
Any |
The result of the order placement. |
market_order(ticker, amount, tif='GTC', reduce_only=False, cloid=None, round_size=False, **kwargs)
async
Submit a market order.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
The ticker symbol for the asset. |
required |
amount
|
float or Decimal
|
The signed quantity of contracts to long or short. |
required |
tif
|
str
|
Time in force. Defaults to |
'GTC'
|
reduce_only
|
bool
|
Whether the order should only reduce an existing position. Defaults to False. |
False
|
cloid
|
str
|
Client order ID for custom tracking. Defaults to None. |
None
|
round_size
|
bool
|
Whether to round the price to a valid order specification. Defaults to False. |
False
|
**kwargs
|
Additional keyword arguments specific to the exchange wrapper. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
Any |
The result of the order placement. This typically includes a confirmation of the placed order, or an error message if the order could not be placed. |
oracle_subscribe(handler, ticker='USDC', **kwargs)
async
Subscribe to the USD/USDC price updates.
order_query(ticker, oid=None, cloid=None, as_dict=True, **kwargs)
async
Get order details using client order ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
oid
|
str
|
Order ID in exchange (not used for actual query, echoed back as result). |
None
|
cloid
|
str
|
Client Order ID (used for actual query). |
None
|
as_dict
|
bool
|
If |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
order_updates_subscribe(handler, **kwargs)
async
Subscribe to creation, updation and deletion of account's orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
handler
|
coroutine
|
A coroutine handler for the message received. |
required |
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
order_updates_unsubscribe(**kwargs)
async
Unsubscribe from order events.
orders_get(**kwargs)
async
Get all open orders.
Returns:
Name | Type | Description |
---|---|---|
dict |
A dictionary containing order details. |
orders_mirror(on_update=None, as_list=True, **kwargs)
async
Keeps a local mirror copy of the account open orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
on_update
|
coroutine
|
A coroutine handler for orders dictionary on order event. |
None
|
as_list
|
bool
|
If |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
orders_peek(as_dict=True, **kwargs)
Retrieves the local mirror copy of the account open orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
as_dict
|
bool
|
If |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
positions_get()
async
Get all open position details.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Exchange wrapper specific keyword arguments. |
required |
positions_mirror(on_update=None, as_dict=True, **kwargs)
async
Keeps a local mirror copy of the account open orders.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
on_update
|
coroutine
|
A coroutine handler for positions dictionary on fill. |
None
|
as_dict
|
bool
|
If True, the method returns positions as a dictionary, otherwise as a |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
positions_peek(as_dict=True, **kwargs)
Retrieves the local mirror copy of the account open positions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
as_dict
|
bool
|
If True, the method returns positions as a dictionary, otherwise as a |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
post_auth()
async
Post on auth request for a valid JWT token.
post_onboarding()
async
Post on onboarding request.
post_order(market, instruction, side, size, type, price=Decimal('0'), client_id=None, reduce_only=False, recv_window=None, stp=None, trigger_price=None, **kwargs)
async
Submit an order to the exchange.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
market
|
str
|
The market symbol. |
required |
instruction
|
str
|
The instruction for the order. |
required |
side
|
str
|
The side of the order. |
required |
size
|
float or Decimal
|
The size of the order. |
required |
type
|
str
|
The type of the order. |
required |
price
|
float or Decimal
|
The price of the order. Defaults to Decimal('0') for market order. |
Decimal('0')
|
client_id
|
str
|
The client ID for the order. Defaults to None. |
None
|
reduce_only
|
bool
|
Whether the order is reduce only. Defaults to False. |
False
|
recv_window
|
int
|
The receive window for the order. Defaults to None. |
None
|
stp
|
str
|
The stop price for the order. Defaults to None. |
None
|
trigger_price
|
float or Decimal
|
The trigger price for the order. Defaults to None. |
None
|
**kwargs
|
Additional keyword arguments. |
{}
|
rand_cloid(start='', end='', **kwargs)
Generate a random string (cloid) consisting of hexadecimal characters.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
start
|
str
|
A string to prepend to the generated random string. Defaults to ''. |
''
|
end
|
str
|
A string to append to the generated random string. Defaults to ''. |
''
|
**kwargs
|
Additional keyword arguments. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
str |
A random hexadecimal string with a total length of 36 characters, including the optional 'start' and 'end' strings. |
trades_subscribe(ticker, handler, standardize_schema=True, **kwargs)
async
Subscribe to trade updates.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
handler
|
coroutine
|
A coroutine handler for the message received. |
required |
standardize_schema
|
(bool, True)
|
Processes the incoming message to |
True
|
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|
trades_unsubscribe(ticker, **kwargs)
async
Unsubscribe from trade updates.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticker
|
str
|
Ticker symbol. |
required |
**kwargs
|
Exchange wrapper specific keyword arguments. |
{}
|