Trion Documentation V2 · Live on Robinhood Chain
Browse documentation

Prices: I, M, E, L and X

In one paragraph: Trion shows several prices for the same market, and each one has exactly one job. The index (I) is the outside-world benchmark. The mark (M) is the price your margin and liquidation are judged against. E is the price you actually traded at, and L is the last confirmed trade anyone made. X is the one-off settlement price for an expiring option. Mixing them up is the most common way to misread the screen.

Sources are aggregated into an index, the book is sampled into a mark, and fills become confirmed last prices

The five prices

LetterPlain nameWhere it comes fromWhat it is used for
IIndexSeveral independent external sources, combined by a 2-of-3 signer committeeFunding, price bands, option strike widths, input to M
MMarkI adjusted by at most ±0.5% toward the qualified order book, smoothed over 150 sYour equity, margin requirements, liquidation, TP/SL triggers, option premiums
EExecution / fillThe maker's limit price when your order matchedYour cash, fees and realized profit
LLastMost recent E confirmed on chainCharts and the trade tape only; never a fallback for a missing I or M
XFixing24 h time-weighted average of the published index, sampled every five minutes, in the window ending at expiryOption payout only

You will also see B/A (best executable bid and ask to a configured depth). They are indicative. A displayed bid is not a guaranteed fill.

Why the mark is not the last trade

If liquidations used the last trade, one thin fill could liquidate everyone. So M starts from I and only moves toward the book when the book has real depth on both sides (walked to a configured notional D, inside ±3% of I), and even then by at most 0.5%. If the book is too thin, the market is in INDEX_ONLY mode and M = I.

Example (hypothetical): I = $2.60. Book mid over the last few minutes averages $2.65 (+1.9%). M is clamped to $2.613 (+0.5%). Your margin is judged at $2.613, not $2.65.

Freshness rules

Each market has its own source cadence and the oldest source may not be older than a limit:

MarketSource cadenceOldest source allowed
CMPT15 min30 min
DRAM, NANDdaily24 h
GRID5 min6 min
HASH10 min15 min
DPIN5 s2 min

Republishing an old observation does not make it fresh: the original source time is what counts. A mark is valid for 15 seconds after sampling.

What happens when prices break

Trust caveat

Two of three committee signers must sign every I/M snapshot. That stops a single bad signer, not two colluding ones. Threshold signing proves agreement, not truth. The spec states this plainly and so should you when judging the system.

What the live desk shows

The rules above are the design and the verifier contract's checks. The desk and the public API show exactly the I and M that the TrionPriceVerifierV2 contract has accepted, nothing else: no book-derived adjustment is applied on the way out, and if the accepted snapshot is missing or expired the screen reports the current price and risk figures as Unavailable instead of showing an old number. While the CMPT perpetual is unlisted there is no qualified perp book, so the accepted snapshots carry the CMPT index as their mark (M = I); option premiums are quoted from that mark. The chart keeps drawing historical bars (confirmed prints and the daily index series, each with its provenance) even while the current price is unavailable, because history is still history. Do not read a chart that still has bars as a live quote; the current price is the ticker and account fields, and those say Unavailable.

X is not the spot index at expiry

An option does not settle on the index print at the moment of expiry. Trading closes 24 h before expiry, and that final 24 hours is the averaging window: X is the time-weighted average of the published CMPT index sampled every five minutes (288 samples, summed and divided by 288, rounding down). Every sample must satisfy the live-index provenance, freshness, spread and quorum checks; one missing sample makes the primary fixing unavailable, a single 48 h grace attempt requires all 576 samples, and if no eligible fixing is produced the 72 h sever backstop applies. The fixing is proposed on chain under bond and can be challenged for 24 hours before it becomes final. The full rule, the frozen-recipe binding and the contingency ladder are in the benchmark statement and the methodology factsheet.

flowchart LR
  I[Published CMPT index] -->|sample every 5 min| S[288 samples over the final 24 h]
  S -->|all eligible| X[X = sum / 288]
  S -->|any sample missing| G[48 h grace: all 576 samples]
  G -->|any missing| V[72 h sever backstop]
  X --> P[Proposed under bond, 24 h challenge window]
  P --> F[Final fixing settles the series]

Source trail: docs/spec/V2_ARCHITECTURE.md §2.1–§2.4; docs/spec/FIXING_ORACLE_V2.md §2.1; overdrive/perps/src/v2/TrionPriceVerifierV2.sol (DISCONTINUITY_BPS, MAX_MARK_BPS, RECOVERY_MIN_INTERVAL, RECOVERY_PERIOD, THRESHOLD); overdrive/exchange/oracle/src/fixing-service.ts (sampled TWAP, coverage); overdrive/exchange/matcher/src/mark-sampler.ts, canonical-prices.ts; overdrive/deployments/v2/reviewed/4663.cmpt-options-approval.md (markSource: "index" while perps are unlisted); overdrive/exchange/oracle/src/daily/csv.ts (per-bar provenance).

Repository-owned documentation · September 2026 · Educational material, not investment advice and not an audit.