Options: exercise and settlement

Cash settlement maths, capped payouts, American-style manual exercise, its freshness gates, and the ledger.

Options are cash-settled in USDC. Nothing is delivered, and nothing needs to be claimed: at expiry the exchange settles every open position automatically. Manual exercise exists for the American-style window before expiry.

Payout

For a long position, the settlement payout per unit is:

payout_per_unit = min( intrinsic_value , maxPayoutPerUnit )

  call:  intrinsic = max(0, settlementPrice − strike)
  put:   intrinsic = max(0, strike − settlementPrice)

multiplied by quantity, floored at zero, then reduced by the settlement fee (settlementFeeRateE6, capped at settlementFeeCapBps of the payout).

Writers receive no payout — settlement releases whatever remains of their locked collateral after the longs are paid. That asymmetry is the whole structure: the writer's maxPayoutPerUnit × qty collateral is exactly what funds the long's capped payout.

If a market is cancelled rather than settled, nobody is paid and every writer gets their full collateral refunded.

Manual exercise

POST /api/v1/options/exercise

{ "market": "BTC-20260925-81000-C", "qtyE6": 1000000, "clientExerciseId": "ex-1" }

clientExerciseId is a required idempotency key, ≤ 64 chars.

Exercise is available before expiry, on contracts whose status is active or paused. After expiry there is nothing to exercise — automatic settlement has already run, and a late exercise attempt is refused rather than silently converted.

Exercise is also gated on price freshness, with a second gate for equity underlyings:

  • every underlying: the price used must be fresh (written within the last 60 s),
  • sessionBound underlyings: additionally, the session must not be degraded.

The second gate exists because a closed equity feed keeps rewriting the last close every second — which looks perfectly "fresh" while being Friday's price on a Sunday. Freshness alone is not a safe exercise gate for equities, so both must pass.

When neither passes, the call fails rather than exercising at a stale price. Retry when the session reopens, or hold to expiry and let automatic settlement handle it.

Ledger

GET /api/v1/options/exercises

Returns the exercise and settlement history for the account: what was exercised or settled, at what settlement price, for what payout, and what fee was charged. This is the record to reconcile against — it is the only place where the payout the venue intended and the cash that actually moved appear side by side.

Positions after settlement

Settled positions leave the default GET /api/v1/options/positions view. Pass ?includeClosed=true to see them, and use the exercises ledger for the cash detail.

One gap worth knowing when you build PnL reporting: expired options do not flow into the perp realized-PnL endpoints. Options settlement is its own ledger. If your books are built on GET /api/v1/perp/history/pnl alone, expired options will simply be missing — join the exercises ledger in.


Did this page help you?