Example calculations are illustrative; observed figures are static-book estimates. Static-book estimates from public exchange data. Not a real cost to move any price, not a mark-price forecast, and not trading advice.
Three prices on every perpetual
A perpetual futures contract shows three prices. The last price is the latest trade on the perp's own order book. The index price is the coin's spot price, averaged across several spot exchanges. The mark price is the exchange's estimate of the perp's fair value, built from the index. Your unrealised PnL and your liquidation are calculated from the mark, not from the last trade.
Exchanges do this so that a brief spike on one order book does not liquidate positions by itself. The protection is only as good as the index underneath: if an index is built from a few thin spot markets, the mark is too.
Index constituents and weights
Each index lists its constituents: spot markets such as "exchange X, COIN/USDT" with a published weight, usually set from trading volume. The index is the weighted average of their prices. Large coins have many deep constituents. Newer or smaller coins can have three or four, sometimes with one source carrying half the weight or more. Exchanges add, remove and reweight constituents over time, and some sources (DEX pools, other perps, data vendors) have no public order book anyone can read.
Example calculation (from Bybit's own worked example, six sources):
| Source | Price | Weight |
|---|---|---|
| A | 20,046 | 20% |
| B | 20,048 | 15% |
| C | 20,056 | 20% |
| D | 20,058 | 15% |
| E | 20,060 | 15% |
| F | 20,051 | 15% |
Weighted average: 20,052.95. No source is far from the others, so no guard applies.
Outlier guards: clamp or exclude
Every venue protects its index against one source drifting away from the rest, but not in the same way. Two published approaches exist. A clamp caps a deviating source at a fixed distance from the median and keeps its weight. An exclusion removes the source and shares its weight among the others. Sources that stop updating are dropped after a timeout.
| Venue | Index guard | Silent source | Mark price | Basis average | Rules as of |
|---|---|---|---|---|---|
| Binance | Clamp: a source more than 3% from the median counts at the cap (1% for listed majors) | after 5 min without updates | median of three: funding-basis price, index + moving-average basis, last price | 30 s | binance-usdm-2026-09-25 |
| OKX | Clamp: a source more than 2% from the median counts at the cap | not published | index + moving-average basis | not published | okx-swap-2026-09-11 |
| Bybit | Exclude: a source more than 5% from the median is removed (1% for BTC and ETH, 3% for gold and silver) | after 15 min without updates | median of three: funding-basis price, index + moving-average basis, last price | 150 s | bybit-linear-2026-09-04 |
| Bitget | Exclude: a source more than 5% from the median is removed, and returns once back within 2% | after 15 min without updates | median of three: funding-basis price, index + moving-average basis, last price | 30 s | bitget-usdtm-2025-10-13 |
Example calculation: a generic coin with three sources, A at 100 (50% weight), B at 100 (25%) and C at 110 (25%). The median is 100 and C is 10% away.
- Binance (clamp): index 100.75
- OKX (clamp): index 100.50
- Bybit (exclude): index 100.00
- Bitget (exclude): index 100.00
Under a clamp, C still counts at its cap, so the index moves a little. Under an exclusion, C counts for nothing once it is past the threshold. Neither design is "safer" in every case: a clamp lets every source contribute up to its cap, while an exclusion leaves the index resting on fewer sources while a source is out.
From index to mark
Binance, Bybit and Bitget take the median of three prices:
- Funding-basis price: index × (1 + funding rate × time until funding ÷ funding interval).
- Moving-average basis price: index + the average gap between the perp's mid price and the index over a short window (30 seconds on Binance and Bitget, 150 seconds on Bybit).
- Last price of the perp.
OKX publishes a simpler mark: index + moving-average basis, without the funding or last-price terms. It does not publish the averaging window.
Example calculation (Bitget's worked funding-basis price, with an assumed +10 basis and last price): index 91,500, funding rate 0.01%, 120 of 480 minutes left. Funding-basis price 91,502.2875; basis price 91,510; last 91,520. The median, and so the mark, is 91,510.
Because the mark is a median, one input moving alone rarely changes it. When the index itself moves, two of the three inputs (funding-basis and basis prices) move with it, and the mark follows. That is why the composition of the index matters for anyone holding a leveraged position.
Concentration and liquidation risk
An index is concentrated when one source carries most of the weight, or when only two or three sources exist. On a concentrated index a move on one spot market flows into the mark with little dilution, and a guard threshold of a few percent still leaves room for a sizeable mark move. Where many leveraged positions have liquidation prices close to the current mark, a sharp move can set off a chain of forced closes. These are states of the market a trader can check before choosing leverage on a small perp: how many sources, how heavy the largest, how deep their books are.
What X-Ray estimates
Mark-Price X-Ray describes that risk with three figures, each an estimate, not an observation:
- Index depth to +X% (est.): resting spot order-book liquidity between the current index and a given percentage away, summed across the constituents we can read, with each venue's published guard applied.
- Est. liquidation exposure within ±X%: leveraged positions we estimate have liquidation prices inside that range, from open interest and a leverage prior (see the liquidation heatmap methodology).
- Exposure-to-depth ratio (est.): the second divided by the first.
Every figure carries its source, snapshot time, the share of index weight we could model and the legs held fixed. A perp is ok when at least 80% of its index weight is modelled with books under 15 minutes old and constituents under 2 hours old, partial between 50% and 80%, and insufficient below that: we then show the composition only. The example calculations above use the published rules on made-up or exchange-documented inputs; observed figures on X-Ray pages come from live order-book snapshots.
Limitations
- Static books. Depth is read from snapshots. Real books refill and market makers react, so the figures are not a price at which anything happens.
- Unreadable legs are held fixed. DEX pools, other perps and vendor feeds cannot be read; holding them fixed raises the estimate, while such legs may in reality be thinner. Together with static books, the figure is neither an upper nor a lower bound.
- Unpublished rules. OKX does not publish its staleness timeout or basis window, Bybit redistributes excluded weight with an unpublished smoothing, and Bitget reviews heavy or two-source legs manually. Where the outcome depends on such a rule, X-Ray shows no figure rather than a guess.
- Rules change. Each figure names the rule version used (the codes in the table). Rules were read from the exchanges' pages on 2026-10-01.
- Exposure is modelled. Most venues do not publish positions; the exposure estimate is a prior on open interest and may miss venues.
For how funding feeds the first input, see the funding rate explainer; for the perp-to-spot gap behind the second, basis. Live forced closes are on the liquidations page.
Checked against the exchanges' own documentation on 1 October 2026: Binance: index and mark price · OKX: index price · OKX: mark price · Bybit: index price · Bybit: mark price · Bitget: index price · Bitget: mark price. Not financial advice.