Skip to main content
The position calculation utilities provide comprehensive functions for calculating position values, profit and loss, funding payments, and other position-related metrics.

Position Value Functions

calculateBaseAssetValue

Calculates the market value of closing an entire position using AMM reserves.
PerpMarketAccount
required
The perpetual market account
PerpPosition
required
The user’s position
MMOraclePriceData
required
The oracle price data
boolean
default:"true"
Whether to include spread in calculation
boolean
default:"false"
Whether to skip AMM updates
BN
The latest slot for calculations
BN
Base asset value in QUOTE_PRECISION

Usage Example

PnL Calculation Functions

calculatePositionPNL

Calculates position PnL as: BaseAssetAmount * (Avg Exit Price - Avg Entry Price).
PerpMarketAccount
required
The perpetual market account
PerpPosition
required
The perpetual position
boolean
default:"false"
Whether to include unrealized funding payment PnL
Pick<OraclePriceData, 'price'>
required
Oracle price data
BN
Position PnL in QUOTE_PRECISION

Usage Example

calculateClaimablePnl

Calculates the claimable (realizable) PnL for a position, accounting for pool limits.
PerpMarketAccount
required
The perpetual market account
SpotMarketAccount
required
The spot market account
PerpPosition
required
The perpetual position
Pick<OraclePriceData, 'price'>
required
Oracle price data
BN
Claimable PnL in QUOTE_PRECISION

Funding Calculation Functions

calculateUnsettledFundingPnl

Returns unsettled funding PnL for a position.
PerpMarketAccount
required
The perpetual market account
PerpPosition
required
The perpetual position
BN
Unsettled funding PnL in QUOTE_PRECISION

Usage Example

calculateFeesAndFundingPnl

Returns total fees and funding PnL for a position.
PerpMarketAccount
required
The perpetual market account
PerpPosition
required
The perpetual position
boolean
default:"true"
Whether to include unsettled funding
BN
Total fees and funding PnL in QUOTE_PRECISION

Price Calculation Functions

calculateBreakEvenPrice

Calculates the break-even price for a position.
PerpPosition
required
The user’s position
BN
Break-even price in PRICE_PRECISION (10^6)

Usage Example

calculateEntryPrice

Calculates the entry price for a position.
PerpPosition
required
The user’s position
BN
Entry price in PRICE_PRECISION (10^6)

calculateCostBasis

Calculates the cost basis for a position.
PerpPosition
required
The user’s position
boolean
default:"false"
Whether to include settled PnL in calculation
BN
Cost basis in PRICE_PRECISION (10^10)

Position Status Functions

positionIsAvailable

Checks if a position slot is available (empty and not being liquidated).
PerpPosition
required
The position to check
boolean
True if position is available

positionIsBeingLiquidated

Checks if a position is currently being liquidated.
PerpPosition
required
The position to check
boolean
True if position is being liquidated or bankrupt

isEmptyPosition

Checks if a position is empty (no base amount and no open orders).
PerpPosition
required
The position to check
boolean
True if position is empty

hasOpenOrders

Checks if a position has open orders.
PerpPosition
required
The position to check
boolean
True if position has open orders, bids, or asks

Direction Helper Functions

findDirectionToClose

Determines the direction needed to close a position.
PerpPosition
required
The position to check
PositionDirection
SHORT if position is long, LONG if position is short

positionCurrentDirection

Returns the current direction of a position.
PerpPosition
required
The position to check
PositionDirection
LONG if baseAssetAmount >= 0, SHORT otherwise

Usage Example