Margin Weight Functions
calculateSizePremiumLiabilityWeight
Calculates the size-adjusted liability weight for a position.BN
required
Position size in AMM_RESERVE_PRECISION
BN
required
Initial margin fraction factor
BN
required
Base liability weight
BN
required
Precision to use for calculations
boolean
default:"true"
Whether to bound the result to the base liability weight
BN
Size-adjusted liability weight
Usage Example
calculateSizeDiscountAssetWeight
Calculates the size-adjusted asset weight for a position.BN
required
Position size in AMM_RESERVE_PRECISION
BN
required
Initial margin fraction factor
BN
required
Base asset weight
BN
Size-adjusted asset weight (minimum of base weight and calculated discount weight)
Oracle Price Functions
calculateOraclePriceForPerpMargin
Calculates the oracle price adjusted for margin calculations with spread and confidence intervals.PerpPosition
required
The perpetual position
PerpMarketAccount
required
The perpetual market account
OraclePriceData
required
Oracle price data including confidence interval
BN
Adjusted oracle price for margin calculations
Usage Example
Base Asset Value Functions
calculateBaseAssetValueWithOracle
Calculates the base asset value using oracle price. For prediction markets, this differs from liability value.PerpMarketAccount
required
The perpetual market account
PerpPosition
required
The perpetual position
Pick<OraclePriceData, 'price'>
required
Oracle price data
boolean
default:"false"
Whether to include open orders in calculation
BN
Base asset value in quote precision
Usage Example
calculateWorstCaseBaseAssetAmount
Calculates the worst-case base asset amount including open orders.PerpPosition
required
The perpetual position
PerpMarketAccount
required
The perpetual market account
BN
required
Oracle price
BN
Worst-case base asset amount
calculateWorstCasePerpLiabilityValue
Calculates the worst-case liability value for a position.PerpPosition
required
The perpetual position
PerpMarketAccount
required
The perpetual market account
BN
required
Oracle price
boolean
default:"true"
Whether to include open orders
{ worstCaseBaseAssetAmount: BN; worstCaseLiabilityValue: BN }
Object containing worst-case base asset amount and liability value
calculatePerpLiabilityValue
Calculates the liability value for a given base asset amount.BN
required
Base asset amount
BN
required
Oracle price
boolean
required
Whether this is a prediction market
BN
Liability value. For prediction markets, shorts use (1 - price) * base
Margin Requirement Functions
calculateMarginUSDCRequiredForTrade
Calculates the margin required to open a trade in USDC.DriftClient
required
The Drift client instance
number
required
Market index for the trade
BN
required
Size of the trade
number
User’s maximum margin ratio
boolean
Whether user is in high leverage mode
BN
Expected entry price (uses oracle price if not provided)
BN
Margin required in USDC
Usage Example
calculateCollateralDepositRequiredForTrade
Calculates the collateral deposit required for a trade in a specific collateral asset.DriftClient
required
The Drift client instance
number
required
Market index for the trade
BN
required
Size of the trade
number
required
Spot market index for the collateral asset
number
User’s maximum margin ratio
boolean
Whether user is in high leverage mode
BN
Estimated entry price
BN
Collateral required in the precision of the target collateral market
calculateCollateralValueOfDeposit
Calculates the collateral value of a deposit.DriftClient
required
The Drift client instance
number
required
Spot market index for the collateral
BN
required
Amount to deposit in base units
BN
Collateral value in QUOTE_PRECISION
Liquidation Price Functions
calculateLiquidationPrice
Calculates the liquidation price for a position.BN
required
Current free collateral
BN
required
Change in free collateral per price change
BN
required
Current oracle price
BN
Liquidation price. Returns -1 if calculated price is negative
Usage Example
User Position Functions
calculateUserMaxPerpOrderSize
Calculates the maximum order size a user can place.DriftClient
required
The Drift client instance
PublicKey
required
User account public key
UserAccount
required
User account data
number
required
Market index for the trade
PositionDirection
required
Direction of the trade (LONG or SHORT)
{ tradeSize: BN; oppositeSideTradeSize: BN }
Object containing max trade size for requested side and opposite side
calcHighLeverageModeInitialMarginRatioFromSize
Calculates the initial margin ratio for high leverage mode based on position size.BN
required
Margin ratio before size adjustment
BN
required
Size-adjusted margin ratio
BN
required
Default margin ratio for the market
BN
Calculated initial margin ratio for high leverage mode