Options
In one paragraph: A Trion option is a capped, cash-settled, fully collateralized contract on the CMPT index. Options V3 lists a fixed chain of strikes and expiries and lets any trader write (sell) or buy them at a price of their own choosing through an order book. Every short contract is backed on chain by its full maximum payout, so there are no margin calls, no liquidations and no counterparty risk for buyers. Trion's own market maker quotes on the same book as everyone else and has no privileges. Buyers can lose the premium and fees; writers can lose the full width of every contract they are short. Collateral, contract, oracle and governance risks remain, and the contracts are not independently audited.
Where things stand: the status page is the single list of what is live. The V3 exchange address and its listed series are recorded in the verified manifest
overdrive/deployments/v3/4663.options-v3.jsonand shown on the desk's Transparency page; do not use an address from anywhere else. The earlier V2 pool options remain live until their 2026-10-30 expiry (below). Collateral is USDG (six decimals) on Robinhood Chain (4663).
The contract
One contract (1 CT) is one capped spread on the CMPT index with width W = $0.50. At expiry it pays, per contract:
- Call with strike K:
min(max(X − K, 0), 0.50), so it stops growing at the cap K + 0.50. - Put with strike K:
min(max(K − X, 0), 0.50), so it stops growing at the floor K − 0.50.
X is the settlement fixing described under Life of a series. Payouts are paid in USDG, rounded down to the atom. Whole contracts only; the payout arithmetic is OptionMathV2.calculatePayoff, the same as V2.
| Term | Meaning |
|---|---|
| Series | One market, kind, strike, cap and expiry. Its id is keccak256(abi.encode(chainId, exchange, marketId, kind, strike, cap, expiry)) |
| Strike K | Price where the payout starts |
| Cap (call) / floor (put) | Price where the payout stops growing: K ± 0.50 |
| Width W | The maximum payout per contract, $0.50, and the collateral locked per short contract |
| Tick | Prices are quoted in USDG per contract in steps of $0.001; 0 < price ≤ 0.50 |
| Expiry | 08:00 UTC; the end of the 24 h averaging window that determines X |
| Trading end | Expiry − 24 h. No fill can settle at or after it |
The listed chain
Governance lists series; nobody else can, and traders choose among the listed ones. The reviewed launch chain (overdrive/deployments/v3/reviewed/4663.chain.json, whose keccak256 is recorded in the manifest as reviewedChainHash) is:
- Strikes: $2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.55 (nine, step $0.05).
- Expiries, all 08:00 UTC: weekly 2026-10-02, 10-09, 10-16, 10-23; monthly 2026-10-30, 11-27, 12-25.
- A call and a put at every strike and expiry: 7 × 9 × 2 = 126 series.
Each series freezes the CMPT methodology hash from the market registry and the fixing recipe from the price verifier at listing, and can only settle against a fixing produced under that recipe.
Prices come from the book, not from a model
There is no issuer and no engine price. Every price on the screen is a resting order that some trader signed. The desk also shows a Fair column and Greeks: these are the Black-76 value of the capped spread computed from the verifier's current index mark and the volatility published by OptionPricerV2 (floored at that contract's sigmaFloor, 24% for CMPT). Fair and the Greeks are model values, not tradable prices; nothing is ever executed at them, and a bid or ask far from Fair is simply what someone is willing to pay or accept.
Fills happen at the resting (maker) order's price, in price-time priority per series, when an incoming order crosses it. Trion's market maker (overdrive/exchange/options-book/src/mm) rests two-sided quotes around Fair; it uses only the public API and has the same rights as any other account.
Buying, writing and closing
Each account has one signed position per series: positive when long, negative when short. Orders are simply buys and sells; the contract nets them:
- Buying while flat or long increases a long.
- Selling while flat or beyond your long opens (or increases) a short. This is writing: you receive the premium and lock $0.50 per contract until the series settles.
- Buying while short closes the short first and releases $0.50 per contract closed. Only quantity beyond the short opens a long.
- Selling while long closes the long first; only quantity beyond the long opens a short.
So closing a position is just an order on the other side, at any price the book will give you, at any time before trading ends. A REDUCE_ONLY flag on an order guarantees it can only close: a reduce-only buy is skipped unless you are short at least that quantity, a reduce-only sell unless you are long at least that quantity. Positions are ledger entries in the exchange, not tokens; they cannot be transferred.
On the desk
The Options page (Order book venue; a Pool (V2) link switches to the older series) shows one Expiry at a time as an option chain: CALLS on the left, the Strike column in the middle, PUTS on the right, each side with Bid, Ask, Last, OI, Fair/Model, Delta, Gamma, Theta/day and Vega/vol-pt; in-the-money cells are shaded. Clicking a Bid cell prepares a Sell / Write at that price, an Ask cell a Buy; the Order book panel beside the chain (price, CT, cumulative) and Recent trades do the same. The Order ticket has Call/Put and Strike selectors, Buy / Sell / Write tabs, Limit or Market · IOC, Quantity · whole CT, Limit price · USDG / CT with one-tick steppers, Post-only and Reduce-only boxes (Advanced layout), and a preview: premium, fee bound, new collateral to lock, max loss and max profit for this order, breakeven fixing and available cash after reservation. A market order is an IOC signed at a guard price within 10% of the best opposite level; if there is no opposite level it is refused. Orders are signed in your wallet, not sent as transactions; the response line reports matched and remaining quantity and each fill's status until it is confirmed on chain. The Simple layout keeps only the market ticket. Below: Positions (side, CT, average entry, mark, unrealized P&L, locked USDG, a Close button that prepares a reduce-only IOC for the whole position), Open orders (with Cancel and Cancel all open orders), Fills (fee, status or skip reason, transaction) and Settlement (payout per contract and a Settle account button for settled series you still hold).
Collateral: cash, locked and free
You deposit USDG into the exchange (deposit; on the desk, Deposit in the account strip opens Deposit USDG with Approve and deposit, approving only that amount) and withdraw free cash at any time (withdraw; Withdraw on the desk, limited to your available cash after open-order reservations; allowed even while the exchange is paused). The account strip shows Cash, Locked, Reserved, Available, Account cap and Total cash / cap. For each account:
locked = Σ over series of max(0, −position) × $0.50
free = cash − locked
A buyer pays premium plus fee from free cash. A writer receives the premium into cash and has $0.50 per new short contract added to locked; the fill is skipped, not partially applied, if cash + premium would not cover locked + new lock + fee. Because every short is backed by its worst case from the moment it is opened, there is nothing to margin-call and nothing to liquidate, whatever the index does before expiry. The book service additionally reserves, against your free cash, the worst case of your open orders so that it never accepts an order it could not settle (Options API has the formula).
Deposit caps while unaudited: at most 5,000 USDG of cash per account, and 50,000 USDG of custody in total across the exchange, where custody is booked cash plus settlement payouts not yet converted into cash by settleAccounts. Both are adjustable by governance. A deposit that would exceed either is rejected, and a deposit reverts unless exactly the stated amount arrives in the exchange.
Fees
| Rate | Notes | |
|---|---|---|
| Maker (resting order) | 0 bps | |
| Taker (incoming order) | 100 bps = 1% of the premium | Rounded up to the atom per fill |
| Contract maximum | 500 bps for either side | Governance cannot set a fee above 5% |
Each order signs maxFeeBps, the most its trader accepts; a fill whose fee for that side would exceed it is skipped rather than charged. Fees are deducted from cash at the fill and accrue to the exchange (feesAccrued), which governance may withdraw. No governance function debits or withdraws trader cash; what governance does control is the fee rate, within each order's signed maxFeeBps, and, only in the governanceSettle fallback (72 h after expiry while the oracle is HALTED), the settlement price that decides how collateral moves between shorts and longs.
Worked example (hypothetical)
CMPT index $2.34 on 2026-09-25. You buy 100 CT of the 2.35 call expiring 2026-10-30 (cap $2.85) by taking a resting ask at $0.070:
- Premium
100 × 0.070 = $7.00; taker fee 1% = $0.07; your cash falls by $7.07. - The writer's cash rises by $7.00 (maker fee 0) and $50.00 (100 × $0.50) of their cash becomes locked until settlement.
| Fixing X | Payout per CT | You receive | Your net (after $7.07) | Writer's net (kept $7.00) |
|---|---|---|---|---|
| $2.30 | 0 | $0 | −$7.07 | +$7.00 |
| $2.45 | $0.10 | $10.00 | +$2.93 | −$3.00 |
| $2.85 or above | $0.50 (capped) | $50.00 | +$42.93 | −$43.00 |
If, a week later, a bid at $0.120 appears and you sell 100 CT into it, the sale closes your long (it does not open a short): you receive $12.00 minus a $0.12 taker fee, and the position is flat. The writer's $50 stays locked until someone buys their short back from them or the series settles.
Life of a series
flowchart LR
L[Listed] -->|trading| T[Trading end: expiry − 24 h]
T -->|24 h averaging window| E[Expiry 08:00 UTC]
E -->|fixing proposed, 24 h challenge window| F[Final fixing]
F --> S[settleSeries → settleAccounts]
E -->|no fixing after 72 h| V[severSeries / governanceSettle]
V --> S
- Trading, from listing until
tradingEnd = expiry − 24 h. The book service stops accepting orders 30 s before that and cancels what is resting; on chain, any fill at or aftertradingEndis skipped. - Averaging. The last 24 hours before expiry are the fixing window. You hold what you have; nothing can be opened or closed.
- Fixing. X is the same fixing V2 uses: the 24 h time-weighted average of the published CMPT index, sampled every five minutes in the window ending at expiry, under the series' frozen recipe. The oracle signers sign it, a bonded relayer proposes it to
FixingCouncilV2, and after the 24-hour challenge window (or council resolution of a challenge) it is final inTrionPriceVerifierV2.getFixing. See the benchmark statement for who may challenge and how. - Settlement. Once the fixing is final, anyone may call
settleSeries, which records the payout per contract (SeriesSettled). ThensettleAccounts(seriesId, accounts), also callable by anyone, turns positions into cash: a long of p contracts gainsp × payout; a short paysp × payoutfrom cash and hasp × $0.50unlocked. The book service's keeper does both automatically, in batches of 50 accounts; you do not need to claim anything, and there is no deadline.
If the fixing does not arrive
The fallbacks are the V2 rules, condition for condition (OptionEngineV2.severSeries / governanceSettle):
- Nothing can happen until strictly after expiry + 72 hours. A final fixing under the frozen recipe blocks both fallbacks (
FixingExists). A pending fixing blocks both until expiry + 72 h + 7 days (FixingPending) unless it is finalized or cancelled first. severSeries(anyone) reverts while the oracle snapshot for CMPT is HALTED. Otherwise it pays the capped payoff at a fresh, compatible NORMAL mark; if no such mark is usable, it pays the full width ($0.50) to every long, withsettlementPrice = 0recorded.governanceSettle(governance only) is possible only while the oracle is HALTED, and pays at the price governance supplies.
Either result is final and is flagged fallbackSettled; a later fixing does not rewrite it. This is not an automatic refund or a promised settlement date, and a writer can be charged the full width by a missing fixing even if the index never moved.
What can stop you trading
- Halt. Governance can halt one series (
setSeriesHalted): fills are skipped and the book service cancels its orders. Existing positions are unaffected and settle normally. - Pause. Governance can pause the exchange: no deposits or fills; withdrawals of free cash still work. The desk reports "Exchange paused · withdrawals remain available".
- Operator matching. Orders are matched off chain by Trion's book service and settled on chain by its matcher key. Only the fills it sends happen, and a signed order cannot be filled beyond its price, quantity, expiry or epoch, or after you cancel it on chain (
cancelOrder) or revoke everything you have signed (advanceEpoch). Those two on-chain calls need no cooperation from the operator. Orders are signed by your key as 65-byte ECDSA signatures; an EOA with EIP-7702 delegation keeps signing with its key, while EIP-1271 smart-contract wallets are not supported. If the operator is unavailable you cannot open or close, but your collateral and settlement never depend on it.
Perp versus capped option
| Perpetual | Capped option | |
|---|---|---|
| Expiry | None | Fixed |
| Upfront cost | Margin (returnable) | Premium (spent by the buyer, received by the writer) |
| Max loss | Buyer: whole account, plus ADL | Buyer: premium + fee. Writer: $0.50 per contract minus premium |
| Max gain | Unbounded | Width × quantity |
| Liquidation | Yes | Never; shorts are pre-funded in full |
| Funding | Hourly | None |
V2 pool options (until 2026-10-30)
The first CMPT options, live since 2026-09-23, are a different, older design that stays live until its 2026-10-30 08:00 UTC expiry and is then retired:
- Two series only: call $2.35 → $2.85 and put $2.35 → $1.85, $0.05 tick.
- Issuance from a pool. Options are minted as ERC-1155 tokens (
OptionTokenV2) byOptionEngineV2against a shared writer sleeve, at an ask equal to the larger of the model price × 1.02 and the executable secondary-pool ask for your size. The model uses a 30-day realized CMPT volatility with a floor now set to 24%. - No sale back to the issuer. The sleeve never buys options back. You can sell in the per-series DLMM secondary pool, where option inventory may not be offered below the model floor and a swap fee of 30–250 bps applies, or
closeToRedeemfor zero. Settlement pays holders throughclaim. - Writers are sleeve depositors with internal shares, not per-order counterparties.
Mechanics, reserve rule, drawdown limit and pool fees are in Option pool liquidity; the fixing and fallback rules are the same as above. V2 balances do not migrate to V3: a V2 option is a token that settles under V2; a V3 position is a ledger entry in the V3 exchange.
Caveats
- Payout depends on X only. The index at the moment of expiry, the mark, and the book do not matter at settlement, except in the severed-with-NORMAL-mark case above.
- The order book is operated by Trion, and Trion's market maker is a participant on it. Displayed depth is resting orders, not a guarantee of an exit; if nobody bids, you hold to expiry.
- Governance is a single address and all five council seats are Trion-held at launch; the council is not independent. A 3-of-5 council plus governance can set any X within the caps through a bonded correction. The contracts are not independently audited. See the risk disclosures.
- Nothing here is a guarantee of any return to buyers or writers.
Source trail: overdrive/shared/v3/OPTIONS_V3.md §§1–3 (normative); overdrive/shared/v3/IOptionsExchangeV3.sol (OptionOrderV3, SeriesV3, settleFills, settleSeries, severSeries, governanceSettle, settleAccounts, OptionsV3.SEVER_DELAY_SECONDS, PENDING_GRACE_SECONDS, MAX_FEE_BPS); overdrive/exchange/core/src/v3.ts (payoffWad, payoutAtoms, feeAtoms, projectFill); overdrive/deployments/v3/reviewed/4663.chain.json; overdrive/src/v2/options/OptionMathV2.sol, OptionEngineV2.sol (V2 section and fallback rules); docs/spec/FIXING_ORACLE_V2.md §2.1 (fixing and dispute rules).
Repository-owned documentation · September 2026 · Educational material, not investment advice and not an audit.
Documentation
V2 · Live on Robinhood Chain