1. Raw listings and matching
A listing is one key: provider, GPU, instance, region, price type. Today's price is compared to that same listing's price on its last ok day. If the listing has no earlier ok price, it isn't matched and contributes nothing today.
2. Relatives, geometric mean, chain
Relative r = today ÷ reference. The CU score is in both, so it cancels: r is the same in $/hr or $/CU·hr. Provider relative = geometric mean of its listings' r. Market relative = geometric mean of the provider relatives. Then multiply yesterday's index by it.
3. Quality grade
Before the day is allowed to chain, its basket is compared to a baseline: the median basket over the last seven ok days. Three floors, each gated separately. Below any floor the day is thin: the index carries flat and no level is published. Nothing matched at all is a gap.
Glossary
- listing
- One product key: provider, GPU, instance, region, price type. Identity is canonical across collectors.
- reference price
- The listing's own price on its most recent ok day, up to 45 days back. Not simply yesterday.
- matched
- Present today and has a reference price. Only matched listings make relatives.
- relative
- today ÷ reference. 1.0 means unchanged. Multiplicative, so averaged geometrically.
- chain
- index[t] = index[t−1] × market relative[t]. Each day is measured against the basket that existed both days.
- level
- Mean $/CU·hr across cells present today. Honest about today, not about change.
- thin
- Basket below a floor versus baseline. Index carries flat, level withheld. The move that happened inside the hole is measured on the recovery day via the lookback.
- gap
- Nothing matched. Index null, line breaks.
- chain drift
- What you lose if a move is never measured: a chained index can end somewhere a fixed-base index wouldn't. The lookback is the defence.