Pool mechanics
Everything an LP or dealer sees about a pool's capacity, utilisation, and return derives from a handful of shared building blocks.
Utilisation
utilisation = deployedNotional / (L_max × totalAssets)
deployed notionalleverage cap L_maxpool-summary.ts:31
Bookable capacity
capacity = L_max × U_max × totalAssets bookable = max(0, capacity − 1 − deployedNotional)
one unit below the on-chain revert poledealer/capacity.ts:33
Pool APY
Instantaneous annualised carry as a return on deposited capital.
APY = Σ notional_i × (fixed_i − floating_now) / capital
dealer/apy.ts:20
LP book stats
earned = max(0, totalValue − deposited)carryApyPct = carryPerYear / deposited × 100returnToDatePct = earned / deposited × 100leverage = deployed / depositedwamYears = notional-weighted remaining tenorcapacityUsedPct = utilisationPct / uMaxPct × 100dv01PctOfCapital = dv01 / deposited × 100dealer/data.ts:266, 334, 338
Withdrawable & capacity gates
What an LP can actually redeem right now — tighter than the raw ERC-4626 maxRedeem, which ignores the utilisation cap and would revert.
withdrawable = min(heldAssets, maxRedeemableAssets) blocked = heldAssets − withdrawable
not the same as ERC-4626 maxRedeemdealer/data.ts:115
Keeper health signals
The "Settlement" status shown on positions screens — flags when the automated keeper is behind schedule, not a pricing calculation.
Settlement stale: > 6h since last settlementSnapshot overdue: > 24h10m since last daily snapshotlib/chain/keeper-activity.ts:98, 129