Skip to main content
Liquidation closes underwater positions before they cause insurance fund losses, while preventing orderbook collapse.

Detection

Trigger

MarginRatio = Equity / MaintenanceMargin
Liquidation when Equity < MM (MarginRatio < 1.0)

Cadence

  • Mark-to-market: 200ms–1s
  • Execution loop: 1 Hz

Execution Steps

Step 1: Cancel Risk-Increasing Orders

Cancel orders that would increase exposure:
  • Long position → cancel buy orders
  • Short position → cancel sell orders

Step 2: Compute Target Reduction

RequiredReduction = (IM - Equity) / MarkPrice
Target: restore Equity ≥ IM (or MM + buffer for less aggressive)

Step 3: Orderbook Liquidation

Place IOC orders at: Long liquidation: Mark * (1 - LiquidationSpread) Short liquidation: Mark * (1 + LiquidationSpread)
SessionLiquidation Spread
Reference Open0.5–1.0%
Weekday Overnight1.0–2.0%
Weekend2.0–5.0%
Disrupted5.0%+

Step 4: Throttle

SessionMax per Second
Reference Open$100k
Weekday Overnight$50k
Weekend$10k
If throttle exceeded, continue over multiple cycles.

Step 5: Backstop (DLP/RFQ)

If not filled on-book after 60s, route to designated liquidity providers.

Step 6: ADL (Last Resort)

If backstops fail, trigger Auto-Deleveraging. See ADL.

Prioritization

PriorityScore = (MM - Equity) / MM
Most distressed accounts liquidated first.

Fees

RecipientFee
Liquidator (taker)0.3–0.5%
Insurance fund0.2–0.3%
Protocol0.1–0.2%
Total0.6–1.0%

Partial vs Full

Partial (preferred): Liquidate only enough to restore Equity ≥ IM + buffer Full: Close all positions if severely underwater or partial attempts fail

Escalation Path

LevelMechanismTimeout
1Orderbook60s
2DLP / RFQUntil filled
3ADLLast resort

Circuit Breakers

ThresholdAction
>10 liquidations / 10sPause 30s
>$1M liquidated / 1minAlert risk team
>20% OI liquidated / 1hGovernance review

API Event

{
  "event": "liquidation_started",
  "instrument": "NVDA-PERP",
  "position_size": 1000,
  "mark_price": 190.50,
  "equity": 8500,
  "mm_required": 9000,
  "margin_ratio": 0.94
}