Exercise & settlement
Options are European: they settle at expiry and not before. After the maturity timestamp passes, each holder exercises their own leg against the contract and is paid in USDC.
The settlement price
Every option on a given feed and maturity settles against one price, recorded once.
The first exercise after a maturity expires triggers the recording: the contract reads the underlying's Chainlink feed and writes that answer as the settlement price for that (feed, maturity) pair. Every subsequent exercise of that maturity — whether a minute later or a year later — uses the same stored number.
This has a few implications worth understanding:
- Settlement is a snapshot, not an average. The price is whatever the feed reported when the maturity was first settled, not a TWAP over the expiry window.
- It cannot be revised. Once written, the number is permanent.
- It is shared. Two holders of the same option always settle at identical prices, regardless of when they claim.
The feed answer is validated before it is accepted: it must be positive, must come from a completed round, must not be from a stale round, and must be no older than 24 hours. The staleness window is an administrator-settable parameter, bounded between 10 minutes and 7 days. If a feed is too stale to satisfy the check, recording reverts and settlement for that maturity waits until the feed recovers.
Exercising a leg
exercise(
exerciser_address, // whose position is being settled
id, // the leg's tokenId
value // units to exercise, multiple of 1e4
)
The caller must either be exerciser_address or be an approved ERC-1155 operator for it. A third party cannot force-settle your position — even though the payout would go to you, the choice of when to settle and when to pay the fee is yours.
The transaction burns the units being exercised and transfers your share of the collateral in USDC, less the protocol fee.

Both legs are exercised independently. Your counterparty's decision has no bearing on yours: the contract is the counterparty to every position, and it holds the collateral for both sides. You do not need to find anyone, wait for anyone, or coordinate with anyone.
What you receive
Your payout is your leg's share of the collateral, determined by where the settlement price landed relative to the strike. For a call, the long leg receives
$$\varphi_{call} = \frac{\max(S_T - K, 0) + \delta K}{\max(S_T - K, 0) + K}$$
and the short leg receives the remainder, with \(\delta = 0.1\) the zero shift. The full set of formulas, including puts, is on Payoff & pricing.
In plain terms, per unit of collateral:
| Settlement vs strike (call) | Long leg gets | Short leg gets |
|---|---|---|
| Far below strike (deep OTM) | 10% | 90% |
| At the strike | 10% | 90% |
| Spot = 2× strike | 55% | 45% |
| Spot = 4× strike | 77.5% | 22.5% |
| Far above strike | → 100% | → 0% |
The floor is the point most worth internalising: an option that expires worthless still pays 10% of collateral to its long leg. You are never left with a zero.
The fee
A 0.5% protocol fee is charged on each payout, taken out of the amount you receive — so a leg entitled to 55 USDC is paid 54.725 USDC, and 0.275 USDC goes to the protocol's fee collector.
The fee applies per leg, to that leg's own payout, and is only charged when a leg is actually exercised. It is administrator-adjustable within a hard-coded band of 0.1% to 1%; it cannot be raised beyond 1% or removed. See Fees.
There is no claim deadline
An expired option does not decay, expire again, or get swept. The collateral stays in the contract until the holder exercises, however long that takes.
No need to rush, but don't forget either
Since everyone settles at the same recorded price, being first confers no advantage. Equally, nothing prompts you — an unexercised expired position is USDC you own and haven't collected. Check /options_balance after each Friday.
Next
- Payoff & pricing — the formulas and where they come from
- Fees — the 0.5% in context
- Withdrawing & rolling — settling option tokens recovered from a pool