CMPT-USD perp index methodology
In one paragraph. The CMPT-USD perp index is the price the CMPT-USD perpetual (open beta) marks to. It is a second, separate index from the CMPT options index: same unit (USD per H100 SXM GPU-hour), different recipe. The options index (engine trion-cmpt-v1, six venues, methodology factsheet) settles the capped options and is unchanged. The perp index (engine trion-cmpt-v2-linked, ten venues) is a chain-linked, equal-weight trimmed geometric mean that is published on Robinhood Chain about once a minute and has been the on-chain CMPT-USD price since 2026-09-25 21:33 UTC. This page states the venues, the target, the linking and glide rules, the caps, the freshness rules, and how a recipe change is activated.
Two indices, one unit
| CMPT (options index) | CMPT-USD perp index | |
|---|---|---|
| Engine | trion-cmpt-v1 | trion-cmpt-v2-linked |
| Venues | Six: Vast.ai, RunPod, SF Compute, Lium, DataCrunch, Shadeform | Ten: RunPod, DataCrunch, Lium, Shadeform, Lambda, Nebius, Crusoe, Hyperstack, Voltage Park, Akash |
| Weights | Fixed (30/25/15/10/10/10 %) | Equal, after trimming |
| Combination | Trimmed weighted geometric mean (top and bottom venue dropped) | Trimmed equal-weight geometric mean (top 20 % and bottom 20 % dropped), reached through chain-linking and a glide |
| Feeds | CMPT capped options (V2 pool series, V3 order book): expiry fixing X | CMPT-USD perpetual beta: index I and mark M (mark = index, funding off) |
| Where documented | Methodology factsheet, benchmark statement | This page |
Both are USD per H100 SXM GPU-hour on demand. They are computed from different venue sets, so their levels differ. Do not read one as the other: an option settles on the options index, a perp position is marked on the perp index.
Unit
USD per GPU-hour ($/H100-hr). One CMPT-USD contract is one H100 GPU-hour at the index price; 730 contracts is about one GPU-month. On chain the price is an 18-decimal WAD USD-per-unit value.
Venues
Ten venues, each contributing a public H100 SXM on-demand price, except Akash, which contributes an executed price:
| Venue | What it contributes |
|---|---|
| RunPod | H100 SXM on-demand |
| DataCrunch | H100 SXM on-demand |
| Lium | H100 SXM on-demand |
| Shadeform | H100 SXM on-demand |
| Lambda | H100 SXM on-demand |
| Nebius | H100 SXM on-demand |
| Crusoe | H100 SXM on-demand |
| Hyperstack | H100 SXM on-demand |
| Voltage Park | H100 SXM on-demand |
| Akash | Median price of active on-chain leases for exactly one H100 — executed prices, not a list price |
The venues are data sources, not partners. Listing a venue here does not mean it endorses Trion or licensed its data for any purpose beyond what Trion's own rights records state (see the constituent criteria in the benchmark statement).
Target: trimmed equal-weight geometric mean
At each update the engine computes a target from the venues that are live (fresh, see below):
- Sort the live venue prices.
- Drop the highest 20 % and the lowest 20 % of them (
floor(n × 0.2)on each side: with all ten live, two on each side; six remain). - Take the equal-weight geometric mean of the survivors.
The target exists only when at least 6 venues are live. With fewer, no target is computed and the published price is carried by the linking rule alone (see next section); it does not jump and it does not fall back to a stale or reference value.
Hypothetical example: ten live prices sorted are 1.70, 2.30, 2.55, 2.60, 2.70, 2.75, 2.80, 2.90, 3.20, 3.90. Drop 1.70, 2.30, 3.20, 3.90. Target = geometric mean of 2.55, 2.60, 2.70, 2.75, 2.80, 2.90 ≈ 2.72.
Chain-linking
The published price is not the target printed directly. Each update starts from the previous accepted on-chain price and moves it by the average price change of the venues that were present in both the previous and the current sample (the average of their log returns). A venue dropping out, or coming back, is therefore not by itself a price move: only the venues that printed on both sides contribute a change. If no venue is present on both sides, the linked level equals the previous price.
Glide toward the target
After linking, the price glides toward the target at up to 2 % per hour, pro-rated by the time since the previous update. If the target is within that band, the published price equals the target; if it is further away, the price moves the full 2 %/h in that direction and keeps closing the gap on later updates. This is what makes a recipe change, or a venue repricing, arrive gradually instead of as a step.
Safety caps
Two caps are applied after the glide, and the on-chain price verifier (TrionPriceVerifierV2) rejects an update that breaks them:
- at most 2.5 % per update, relative to the previous accepted price;
- at most 2.5 % per clock hour, relative to the price at the start of that hour.
If the two bounds ever disagree, the price is held at the previous value rather than pushed through either cap. Both caps sit below the verifier's 3 % single-step halt rule described in Prices.
Freshness rules
A venue counts as live only while its data is fresh:
- its latest observation is no older than 30 minutes at the sample time;
- for venues read from a cached web page, the page must be no older than the venue's approved cache age (2–20 minutes); an older cached page is excluded.
A stale venue is dropped from the sample; it is never carried forward at its last value. When it returns, it re-enters the target immediately and re-enters the linking on the next update after it has printed on both sides.
Publication
- Published about once a minute to
TrionPriceVerifierV2at0x2dFC619243fCDc748967868bB63810FD2E8594C5on Robinhood Chain (chain id 4663). - Each price is signed by Trion's oracle signers (2-of-3 threshold) and carries an evidence root: a hash of the exact inputs behind it. The raw inputs are kept off-chain.
- The CMPT-USD perpetual beta uses the accepted on-chain price as its index I; the mark M equals I and funding is off for the beta.
flowchart LR
V[Ten venues, fresh rows only] --> T[Target: trim 20/20, equal-weight geo mean, >=6 live]
P0[Previous accepted on-chain price] --> L[Link by average change of common venues]
V --> L
L --> G[Glide toward target, max 2%/h]
T --> G
G --> C[Caps: 2.5% per update, 2.5% per hour]
C --> S[Signed with evidence root, ~1/min]
S --> O[(TrionPriceVerifierV2)]
Changing the recipe
The venue set and the engine method are registered on chain. Changing them requires a governance source-configuration update that becomes effective only after the registry's 3-hour activation delay. A recipe change never restates published history; because of the linking and glide rules, its effect arrives gradually over the hours after activation.
The 25 September 2026 activation
The ten-venue, chain-linked recipe was activated on chain at 2026-09-25 21:33 UTC. At that moment the published level was 2.3586. Over roughly the next eight hours it glided to about 2.74, at the 2 %/h rate, toward the new ten-venue target. GPU rental prices themselves did not change during that window; the move was the recipe change (a different venue set and an equal-weight trim) working through the glide. The options index, which kept its six-venue recipe, did not move for this reason.
Known limitations
- Mostly list prices. Nine of ten venues contribute published on-demand prices, not executed trades; Akash is the only executed-price source. The index can lag a fast repricing and is not your GPU bill.
- Beta market. The perpetual that marks to this index is in open beta with funding off, no ADL and no backstop vault. See Perpetuals and Risk disclosures.
- Trion-operated. The collectors, the signers and governance are Trion-held. The recipe is not independently audited.
- Different from the options index. A hedge built on the perp will not track an option's fixing X one-for-one; the two indices use different venues.
Source trail: overdrive/exchange/oracle/src/index/linked.ts (computeLinkedIndex, computeTrimmedGeo, LinkedEngineConfig); overdrive/exchange/oracle/src/v2-runtime.ts (validateLinkedEngineConfig, validateMarketPolicy); overdrive/exchange/oracle/src/publication-evidence.ts (trion-cmpt-v2-linked derivation from the previous accepted snapshot); overdrive/exchange/oracle/src/collectors/akash.ts (active-lease median); overdrive/exchange/oracle/src/quality.ts (SOURCE_AGE_SEC); overdrive/shared/v2/MarketRegistryV2.sol (activationDelay); overdrive/deployments/v2/4663.perps.json (market CMPT-USD).
Repository-owned documentation · October 2026 · Educational material, not investment advice and not an audit.
Documentation
Options live · Perps in open beta