avantis_trader_sdk package
Subpackages
- avantis_trader_sdk.rpc package
- Submodules
- avantis_trader_sdk.rpc.asset_parameters module
AssetParametersRPC
AssetParametersRPC.get_asset_skew()
AssetParametersRPC.get_oi()
AssetParametersRPC.get_oi_limits()
AssetParametersRPC.get_one_percent_depth()
AssetParametersRPC.get_opening_price_impact_spread()
AssetParametersRPC.get_price_impact_spread()
AssetParametersRPC.get_skew_impact_spread()
AssetParametersRPC.get_utilization()
- avantis_trader_sdk.rpc.blended module
- avantis_trader_sdk.rpc.category_parameters module
- avantis_trader_sdk.rpc.fee_parameters module
- avantis_trader_sdk.rpc.pairs_cache module
- avantis_trader_sdk.rpc.rpc_helpers module
- Module contents
Submodules
avantis_trader_sdk.client module
- class avantis_trader_sdk.client.TraderClient(provider_url, l1_provider_url='https://eth.llamarpc.com', signer=None, feed_client=None)[source]
Bases:
object
This class provides methods to interact with the Avantis smart contracts.
- Parameters:
signer (BaseSigner)
feed_client (FeedClient)
- async approve_usdc_for_trading(amount=100000)[source]
Approves the USDC amount for the Trading Storage contract.
- Parameters:
amount (optional) – The amount to approve. Defaults to $100,000.
- Returns:
The transaction hash.
- async get_balance(address=None)[source]
Gets the balance.
- Parameters:
address (optional) – The address.
- Returns:
The balance.
- async get_gas_estimate(transaction)[source]
Gets the gas estimate.
- Parameters:
transaction – The transaction object.
- Returns:
The gas estimate.
- async get_transaction_count(address=None)[source]
Gets the transaction count.
- Parameters:
address (optional) – The address.
- Returns:
The transaction count.
- async get_transaction_hex(transaction)[source]
Gets the transaction hex.
- Parameters:
transaction – The transaction object.
- Returns:
The transaction hex.
- async get_usdc_allowance_for_trading(address=None)[source]
Gets the USDC allowance for the Trading Storage contract.
- Parameters:
address (optional) – The address.
- Returns:
The USDC allowance.
- async get_usdc_balance(address=None)[source]
Gets the USDC balance.
- Parameters:
address (optional) – The address.
- Returns:
The USDC balance.
- load_contract(name)[source]
Loads the contract ABI and address from the local filesystem.
- Parameters:
name – The name of the contract.
- Returns:
A Contract object.
- load_contracts()[source]
Loads all the contracts mentioned in the config from the local filesystem.
- Returns:
A dictionary containing the contract names as keys and the Contract objects as values.
- async read_contract(contract_name, function_name, *args, decode=True)[source]
Calls a read-only function of a contract.
- Parameters:
contract_name – The name of the contract.
function_name – The name of the function.
args – The arguments to the function.
- Returns:
The result of the function call.
- async send_and_get_transaction_hash(signed_txn)[source]
Gets the transaction hash.
- Parameters:
signed_txn – The signed transaction object.
- Returns:
The transaction hash.
- set_signer(signer)[source]
Sets the signer.
- Parameters:
signer (BaseSigner)
- async sign_and_get_receipt(transaction)[source]
Signs a transaction and waits for it to be mined.
- Parameters:
transaction – The transaction object.
- Returns:
The transaction receipt.
- async sign_transaction(transaction)[source]
Signs a transaction.
- Parameters:
transaction – The transaction object.
- Returns:
The signed transaction object.
- async wait_for_transaction_receipt(tx_hash)[source]
Waits for the transaction to be mined.
- Parameters:
tx_hash – The transaction hash.
- Returns:
The transaction receipt.
- async write_contract(contract_name, function_name, *args, **kwargs)[source]
Calls a write function of a contract.
- Parameters:
contract_name – The name of the contract.
function_name – The name of the function.
args – The arguments to the function.
- Returns:
The transaction hash or the transaction object if signer is None.
avantis_trader_sdk.config module
avantis_trader_sdk.exceptions module
avantis_trader_sdk.types module
- class avantis_trader_sdk.types.Depth(**data)[source]
Bases:
BaseModel
- Parameters:
above (Dict[str, float] | None)
below (Dict[str, float] | None)
-
above:
Optional
[Dict
[str
,float
]]
-
below:
Optional
[Dict
[str
,float
]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.DepthSingle(**data)[source]
Bases:
BaseModel
- Parameters:
above (float)
below (float)
-
above:
float
-
below:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.Fee(**data)[source]
Bases:
BaseModel
- Parameters:
long (Dict[str, float] | None)
short (Dict[str, float] | None)
-
long:
Optional
[Dict
[str
,float
]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
short:
Optional
[Dict
[str
,float
]]
- class avantis_trader_sdk.types.LossProtectionInfo(**data)[source]
Bases:
BaseModel
- Parameters:
percentage (float)
amount (float)
-
amount:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
percentage:
float
- class avantis_trader_sdk.types.MarginFee(**data)[source]
Bases:
BaseModel
- Parameters:
hourly_base_fee_parameter (Dict[str, float])
hourly_margin_fee_long_bps (Dict[str, float])
hourly_margin_fee_short_bps (Dict[str, float])
-
hourly_base_fee_parameter:
Dict
[str
,float
]
-
hourly_margin_fee_long_bps:
Dict
[str
,float
]
-
hourly_margin_fee_short_bps:
Dict
[str
,float
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.MarginFeeSingle(**data)[source]
Bases:
BaseModel
- Parameters:
hourly_base_fee_parameter (float)
hourly_margin_fee_long_bps (float)
hourly_margin_fee_short_bps (float)
-
hourly_base_fee_parameter:
float
-
hourly_margin_fee_long_bps:
float
-
hourly_margin_fee_short_bps:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.MarginUpdateType(value)[source]
Bases:
Enum
An enumeration.
- DEPOSIT = 0
- WITHDRAW = 1
- class avantis_trader_sdk.types.OpenInterest(**data)[source]
Bases:
BaseModel
- Parameters:
long (Dict[str, float])
short (Dict[str, float])
-
long:
Dict
[str
,float
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
short:
Dict
[str
,float
]
- class avantis_trader_sdk.types.OpenInterestLimits(**data)[source]
Bases:
BaseModel
- Parameters:
limits (Dict[str, float])
-
limits:
Dict
[str
,float
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.PairData(**data)[source]
Bases:
BaseModel
- Parameters:
from_ (str)
to (str)
numTiers (int)
tierThresholds (Dict[str, float])
timer (Dict[str, float])
-
from_:
str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
num_tiers:
int
-
tier_thresholds:
Dict
[str
,float
]
-
tier_timers:
Dict
[str
,float
]
-
to:
str
- class avantis_trader_sdk.types.PairInfo(**data)[source]
Bases:
BaseModel
- Parameters:
feed (PairInfoFeed)
backupFeed (PairInfoBackupFeed)
spreadP (float)
pnlSpreadP (float)
leverages (PairInfoLeverages)
priceImpactMultiplier (float)
skewImpactMultiplier (float)
groupIndex (int)
feeIndex (int)
values (PairInfoValues)
-
backup_feed:
PairInfoBackupFeed
-
constant_pnl_spread_bps:
float
-
constant_spread_bps:
float
-
fee_index:
int
-
feed:
PairInfoFeed
-
group_index:
int
-
leverages:
PairInfoLeverages
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
price_impact_parameter:
float
-
skew_impact_parameter:
float
-
values:
PairInfoValues
- class avantis_trader_sdk.types.PairInfoBackupFeed(**data)[source]
Bases:
BaseModel
- Parameters:
maxDeviationP (float)
feedId (str)
-
feed_id:
str
-
max_deviation_percentage:
float
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.PairInfoExtended(**data)[source]
Bases:
PairInfoWithData
- Parameters:
from_ (str)
to (str)
numTiers (int)
tierThresholds (Dict[str, float])
timer (Dict[str, float])
feed (PairInfoFeed)
backupFeed (PairInfoBackupFeed)
spreadP (float)
pnlSpreadP (float)
leverages (PairInfoLeverages)
priceImpactMultiplier (float)
skewImpactMultiplier (float)
groupIndex (int)
feeIndex (int)
values (PairInfoValues)
asset_open_interest_limit (float)
asset_open_interest (Dict[str, float])
asset_utilization (float)
asset_skew (float)
blended_utilization (float)
blended_skew (float)
margin_fee (MarginFeeSingle)
one_percent_depth (DepthSingle)
new_1k_long_opening_fee_bps (float)
new_1k_short_opening_fee_bps (float)
new_1k_long_opening_spread_bps (float)
new_1k_short_opening_spread_bps (float)
price_impact_spread_long_bps (float)
price_impact_spread_short_bps (float)
skew_impact_spread_long_bps (float)
skew_impact_spread_short_bps (float)
-
asset_open_interest:
Dict
[str
,float
]
-
asset_open_interest_limit:
float
-
asset_skew:
float
-
asset_utilization:
float
- backup_feed: PairInfoBackupFeed
-
blended_skew:
float
-
blended_utilization:
float
- constant_pnl_spread_bps: float
- constant_spread_bps: float
- fee_index: int
- feed: PairInfoFeed
- from_: str
- group_index: int
- leverages: PairInfoLeverages
-
margin_fee:
MarginFeeSingle
- model_config: ClassVar[ConfigDict] = {'from_attributes': True, 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
new_1k_long_opening_fee_bps:
float
-
new_1k_long_opening_spread_bps:
float
-
new_1k_short_opening_fee_bps:
float
-
new_1k_short_opening_spread_bps:
float
- num_tiers: int
-
one_percent_depth:
DepthSingle
- price_impact_parameter: float
-
price_impact_spread_long_bps:
float
-
price_impact_spread_short_bps:
float
- skew_impact_parameter: float
-
skew_impact_spread_long_bps:
float
-
skew_impact_spread_short_bps:
float
- tier_thresholds: Dict[str, float]
- tier_timers: Dict[str, float]
- to: str
- values: PairInfoValues
- class avantis_trader_sdk.types.PairInfoFeed(**data)[source]
Bases:
BaseModel
- Parameters:
from_ (str)
to (str)
feed (PairInfoFeed)
backupFeed (PairInfoBackupFeed)
-
backup_feed:
PairInfoBackupFeed
-
feed:
PairInfoFeed
- feed_id: str
-
from_:
str
- max_close_deviation_percentage: float
- max_open_deviation_percentage: float
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
to:
str
- class avantis_trader_sdk.types.PairInfoLeverages(**data)[source]
Bases:
BaseModel
- Parameters:
minLeverage (float)
maxLeverage (float)
pnlMinLeverage (float)
pnlMaxLeverage (float)
-
max_leverage:
float
-
min_leverage:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
pnl_max_leverage:
float
-
pnl_min_leverage:
float
- class avantis_trader_sdk.types.PairInfoValues(**data)[source]
Bases:
BaseModel
- Parameters:
maxGainP (float)
maxSlP (float)
maxLongOiP (float)
maxShortOiP (float)
groupOpenInterestPecentage (float)
maxWalletOI (float)
isUSDCAligned (bool)
-
group_open_interest_percentage:
float
-
is_usdc_aligned:
bool
-
max_gain_percentage:
float
-
max_long_oi_percentage:
float
-
max_short_oi_percentage:
float
-
max_sl_percentage:
float
-
max_wallet_oi_percentage:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.PairInfoWithData(**data)[source]
-
- Parameters:
from_ (str)
to (str)
numTiers (int)
tierThresholds (Dict[str, float])
timer (Dict[str, float])
feed (PairInfoFeed)
backupFeed (PairInfoBackupFeed)
spreadP (float)
pnlSpreadP (float)
leverages (PairInfoLeverages)
priceImpactMultiplier (float)
skewImpactMultiplier (float)
groupIndex (int)
feeIndex (int)
values (PairInfoValues)
- backup_feed: PairInfoBackupFeed
- constant_pnl_spread_bps: float
- constant_spread_bps: float
- fee_index: int
- feed: PairInfoFeed
- from_: str
- group_index: int
- leverages: PairInfoLeverages
- model_config: ClassVar[ConfigDict] = {'from_attributes': True, 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- num_tiers: int
- price_impact_parameter: float
- skew_impact_parameter: float
- tier_thresholds: Dict[str, float]
- tier_timers: Dict[str, float]
- to: str
- values: PairInfoValues
- class avantis_trader_sdk.types.PairSpread(**data)[source]
Bases:
BaseModel
- Parameters:
spread (Dict[str, float])
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
spread:
Dict
[str
,float
]
- class avantis_trader_sdk.types.PendingLimitOrderExtendedResponse(**data)[source]
Bases:
PendingLimitOrderResponse
- Parameters:
trader (str)
pairIndex (int)
index (int)
positionSize (float)
buy (bool)
leverage (int)
tp (float)
sl (float)
price (float)
slippageP (float)
block (int)
liquidation_price (float)
- block: int
- buy: bool
- leverage: int
-
liquidation_price:
float
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- open_collateral: float
- pair_index: int
- price: float
- sl: float
- slippage_percentage: float
- tp: float
- trade_index: int
- trader: str
- class avantis_trader_sdk.types.PendingLimitOrderResponse(**data)[source]
Bases:
BaseModel
- Parameters:
trader (str)
pairIndex (int)
index (int)
positionSize (float)
buy (bool)
leverage (int)
tp (float)
sl (float)
price (float)
slippageP (float)
block (int)
-
block:
int
-
buy:
bool
-
leverage:
int
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
open_collateral:
float
-
pair_index:
int
-
price:
float
-
sl:
float
-
slippage_percentage:
float
-
tp:
float
-
trade_index:
int
-
trader:
str
- class avantis_trader_sdk.types.PriceFeedResponse(**data)[source]
Bases:
BaseModel
- Parameters:
id (str)
price (Dict[str, str] | Dict[str, float] | None)
ema_price (Dict[str, str] | Dict[str, float] | None)
pair (str | None)
metadata (Dict[str, str] | Dict[str, float] | None)
converted_price (float)
converted_ema_price (float)
-
converted_ema_price:
float
-
converted_price:
float
-
ema_price:
Union
[Dict
[str
,str
],Dict
[str
,float
],None
]
-
id:
str
-
metadata:
Union
[Dict
[str
,str
],Dict
[str
,float
],None
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
pair:
Optional
[str
]
-
price:
Union
[Dict
[str
,str
],Dict
[str
,float
],None
]
- class avantis_trader_sdk.types.PriceFeedUpdatesResponse(**data)[source]
Bases:
BaseModel
- Parameters:
binary (PriceFeesUpdateBinary)
parsed (List[PriceFeedResponse])
-
binary:
PriceFeesUpdateBinary
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
parsed:
List
[PriceFeedResponse
]
- class avantis_trader_sdk.types.PriceFeesUpdateBinary(**data)[source]
Bases:
BaseModel
- Parameters:
encoding (str)
data (List[str])
-
data:
List
[str
]
-
encoding:
str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.Skew(**data)[source]
Bases:
BaseModel
- Parameters:
skew (Dict[str, float])
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
skew:
Dict
[str
,float
]
- class avantis_trader_sdk.types.Snapshot(**data)[source]
Bases:
BaseModel
- Parameters:
groups (Dict[Annotated[int, None, Interval(gt=None, ge=0, lt=None, le=None), None], SnapshotGroup])
-
groups:
Dict
[int
[int
],SnapshotGroup
]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class avantis_trader_sdk.types.SnapshotGroup(**data)[source]
Bases:
BaseModel
- Parameters:
group_open_interest_limit (float)
group_open_interest (SnapshotOpenInterest)
group_utilization (float)
group_skew (float)
pairs (Dict[str, PairInfoExtended])
-
group_open_interest:
SnapshotOpenInterest
-
group_open_interest_limit:
float
-
group_skew:
float
-
group_utilization:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
pairs:
Dict
[str
,PairInfoExtended
]
- class avantis_trader_sdk.types.SnapshotOpenInterest(**data)[source]
Bases:
BaseModel
- Parameters:
long (float)
short (float)
-
long:
float
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
short:
float
- class avantis_trader_sdk.types.Spread(**data)[source]
Bases:
BaseModel
- Parameters:
long (Dict[str, float] | None)
short (Dict[str, float] | None)
-
long:
Optional
[Dict
[str
,float
]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
short:
Optional
[Dict
[str
,float
]]
- class avantis_trader_sdk.types.TradeExtendedResponse(**data)[source]
Bases:
BaseModel
- Parameters:
trade (TradeResponse)
additional_info (TradeInfo)
margin_fee (float)
liquidation_price (float)
-
liquidation_price:
float
-
margin_fee:
float
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
trade:
TradeResponse
- class avantis_trader_sdk.types.TradeInfo(**data)[source]
Bases:
BaseModel
- Parameters:
openInterestUSDC (float)
tpLastUpdated (float)
slLastUpdated (float)
beingMarketClosed (bool)
lossProtectionPercentage (float)
-
being_market_closed:
bool
-
loss_protection_percentage:
float
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
open_interest_usdc:
float
-
sl_last_updated:
float
-
tp_last_updated:
float
- class avantis_trader_sdk.types.TradeInput(**data)[source]
Bases:
BaseModel
- Parameters:
trader (str)
pair_index (int)
trade_index (int)
open_collateral (int | None)
collateral_in_trade (int | None)
open_price (int)
is_long (bool)
leverage (int)
tp (int | None)
sl (int | None)
timestamp (int | None)
-
buy:
bool
-
index:
int
-
initialPosToken:
Optional
[int
]
-
leverage:
int
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
openPrice:
int
-
pairIndex:
int
-
positionSizeUSDC:
Optional
[int
]
-
sl:
Optional
[int
]
-
timestamp:
Optional
[int
]
-
tp:
Optional
[int
]
-
trader:
str
- class avantis_trader_sdk.types.TradeInputOrderType(value)[source]
Bases:
Enum
An enumeration.
- LIMIT = 2
- MARKET = 0
- MARKET_ZERO_FEE = 3
- STOP_LIMIT = 1
- class avantis_trader_sdk.types.TradeResponse(**data)[source]
Bases:
BaseModel
- Parameters:
trader (str)
pairIndex (int)
index (int)
initialPosToken (float)
positionSizeUSDC (float)
openPrice (float)
buy (bool)
leverage (float)
tp (float)
sl (float)
timestamp (int)
-
collateral_in_trade:
float
-
is_long:
bool
-
leverage:
float
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
open_collateral:
float
-
open_price:
float
-
pair_index:
int
-
sl:
float
-
timestamp:
int
-
tp:
float
-
trade_index:
int
-
trader:
str