Skip to Content

PnL & Risk

These helpers are commonly used for risk checks, dashboards, and liquidation logic.

User health

const user = driftClient.getUser(); const health = user.getHealth(); console.log(health.toString());
Method User.getHealthReference ↗
Parameters:
NameTypeDefault
perpMarketIndexnumber
Returns:
number

Collateral, margin requirement, leverage

const total = driftClient.getUser().getTotalCollateral(); console.log(total.toString());
Method User.getTotalCollateralReference ↗
Parameters:
NameTypeDefault
marginCategoryMarginCategory
strictboolean
includeOpenOrdersboolean
liquidationBufferany
perpMarketIndexnumber
Returns:
BN
const req = driftClient.getUser().getMarginRequirement(); console.log(req.toString());
Method User.getMarginRequirementReference ↗
Parameters:
NameTypeDefault
marginCategoryMarginCategory
liquidationBufferany
strictboolean
includeOpenOrdersboolean
enteringHighLeverageboolean
Returns:
BN
const free = driftClient.getUser().getFreeCollateral(); console.log(free.toString());
Method User.getFreeCollateralReference ↗
Parameters:
NameTypeDefault
marginCategoryMarginCategory
enterHighLeverageModeboolean
perpMarketIndexnumber
Returns:
BN
const lev = driftClient.getUser().getLeverage(); console.log(lev.toString());
Method User.getLeverageReference ↗
Parameters:
NameTypeDefault
includeOpenOrdersboolean
perpMarketIndexnumber
Returns:
BN

Unrealized PnL

const pnl = driftClient.getUser().getUnrealizedPNL(); console.log(pnl.toString());
Method User.getUnrealizedPNLReference ↗
Parameters:
NameTypeDefault
withFundingboolean
marketIndexnumber
withWeightMarginCategoryMarginCategory
strictboolean
liquidationBufferany
Returns:
BN
const pnl = driftClient.getUser().getUnrealizedFundingPNL(); console.log(pnl.toString());
Method User.getUnrealizedFundingPNLReference ↗
Parameters:
NameTypeDefault
marketIndexnumber
Returns:
BN

Entry price helper

import { calculateEntryPrice } from "@drift-labs/sdk"; const position = driftClient.getUser().getPerpPosition(0); if (position) { const entryPrice = calculateEntryPrice(position); console.log(entryPrice.toString()); }
Function calculateEntryPriceReference ↗
Parameters:
NameTypeDefault
userPositionPerpPosition
Returns:
BN

Precision: PRICE_PRECISION (10^6)

Settle perp PnL

const user = driftClient.getUser(); await driftClient.settlePNL(user.userAccountPublicKey, user.getUserAccount(), 0);
Method DriftClient.settlePNLReference ↗
Parameters:
NameTypeDefault
settleeUserAccountPublicKeyPublicKey
settleeUserAccountUserAccount
marketIndexnumber
txParamsTxParams
optionalIxsTransactionInstruction[]
revenueShareEscrowMapRevenueShareEscrowMap
Returns:
Promise<string>
Last updated on