Settlement
How a position's payoff is determined at maturity - the oracle, the recorded price, and getting paid.
At maturity, an Olive position settles against a single recorded price. The product payoff is applied to that price: a Long Call pays the market's underlying token, a Long Put pays canonical USDC.
European by design
Only the settlement price at maturity matters. The market can move through your strike during the life of the position and then move back; what counts is the recorded maturity price. Olive does not mark, margin, or liquidate the position before then.
The settlement price
Each expiry is bound on-chain to one market, one maturity, one oracle feed, one confidence limit, and one settlement policy. Settlement is recorded into an immutable Settlement account for that expiry.
- Deterministic. The price comes from the unique Pyth Benchmarks update that spans the maturity instant — the one published at or after maturity whose previous publish time falls before it. There is no discretion about which print is used.
- Verified. The signed update is posted through the configured Pyth receiver program at full verification before Olive's program will read it.
- Bounded. An update with too wide a confidence interval, the wrong feed, or a publish gap outside the expiry's policy is rejected rather than recorded.
- Immutable. Once recorded for a maturity, the settlement price cannot be changed or re-recorded.
Developers can read the full mechanism in Oracle & keeper.
Settlement is recorded automatically by a keeper shortly after maturity. If the Pyth path stayed unavailable past a configured delay — currently 48 hours — a governed fallback can record a value so positions never become permanently unredeemable. That is a liveness backstop, not an alternative price source.
Real-world underlyings
Gold and S&P 500 markets track assets that do not trade 24/7, so their maturities are chosen to land on sensible session anchors when the expiry calendar is configured. The protocol supports constraining maturities that way; what any given deployment offers is whatever expiries are actually configured on-chain, and the app only ever shows those.
Getting paid
Two conditions must both hold before a position becomes redeemable:
- the settlement price is recorded on-chain for that expiry; and
- the position's maturity bucket is fully funded.
Then the program releases the payoff from the isolated bucket to the recorded holder. Redemption is permissionless and normally automated by a keeper, so no action is required from you. A position that settles with zero intrinsic value is closed as expired and pays nothing.
Long Call payouts arrive as the market's underlying token in your wallet. Converting them to USDC is an ordinary swap you make yourself.
Next: Early exit ->