Mark price vs index price vs last price: which price runs your futures position?
On this page · 8
- How do mark price, index price and last price differ?
- How is the index price calculated?
- How is the mark price calculated, and why do exchanges use it?
- Which price triggers liquidation, unrealized PnL and stop orders?
- What is basis? Worked mark vs index examples
- How does basis relate to the funding rate?
- How to read “Mark vs index” on the RonOnCrypto dashboard
- Checklist: choosing a stop loss trigger price
| Pair | Price | 24h | Funding (8h) | Annualized | Open interest |
|---|---|---|---|---|---|
| - | - | - | - | - | |
| - | - | - | - | - | |
| - | - | - | - | - |
Source: public exchange APIs (Binance, OKX fallback). Annualized = 8h funding × 3 × 365. Open the full dashboard.
Mark price is the reference price an exchange uses to value unrealized profit and loss and, on many platforms, to trigger liquidation on perpetual futures; it is anchored to the spot index price, so a single wick on the order book does not drag it away. Index price is a weighted average of spot prices from several sources, and last price is the most recent trade on the contract itself. For example, an index of 80,000, a mark of 80,040 and a last price of 80,120 can all sit on the same BTC/USDT order screen at once.
This guide covers, in order: how the three prices differ, how index and mark price are calculated, which price triggers liquidation, PnL and stops, what basis is with worked numbers, how basis relates to funding, how to read the “Mark vs index” column on the dashboard, and a checklist for choosing a stop trigger price. The short version: last price is what you actually fill at, mark price is what the exchange scores your position on, and the two can split apart exactly when it matters most.
| Attribute | Last price | Index price | Mark price |
|---|---|---|---|
| What it is | Latest trade on the contract’s order book | Weighted average of spot prices from several sources | Index plus a smoothed premium |
| Source | One order book on one exchange | A basket of spot exchanges chosen by the platform | Derived from the index and the contract’s order book |
| Moved by wicks | Yes, the most | Little, thanks to weights and outlier filters | Little, because it is anchored to the index |
| Typically used for | Order fills, candlestick charts | Input to mark price and funding | Unrealized PnL, liquidation |
| Can you fill at it | Yes | No | No |
How do mark price, index price and last price differ?
The three prices differ by data source: last price comes from one contract order book, index price comes from several spot exchanges, and mark price combines the two into a steadier number. On BTC they usually sit only a few tens of USDT apart, so in a quiet market the difference is hard to see.
The difference shows up when liquidity is thin or a large order sweeps the book. One big market sell can push the last price of a BTC perpetual to 79,000 for a few seconds while spot on other exchanges barely moves from 80,000. Index and mark follow spot; last price leaves a long wick on the chart.
Perpetuals need all three because they have no expiry date that forces convergence to spot. How funding anchors them is covered in the guide to perpetual futures.
How is the index price calculated?
The index price is a weighted average of spot prices from a basket of sources the exchange chooses, with rules that drop or pull back sources that deviate abnormally. Each exchange publishes its own basket and rules, so the numbers differ slightly between platforms, but the principle is shared: no single source decides the price. OKX’s help page “Index Prices” (accessed 2 November 2026), for example, describes weighted averages of price sources, with a source that deviates beyond a threshold from the median of the others adjusted toward that median.
A simulated example with 3 BTC/USDT spot sources:
| Source | Weight | Normal price | Price when source C wicks |
|---|---|---|---|
| A | 40% | 80,010 | 80,010 |
| B | 35% | 79,990 | 79,990 |
| C | 25% | 80,030 | 78,500 |
| Unfiltered index | 80,008 | 79,625.50 (−0.48%) |
When source C wicks to 78,500, it sits 1.88% below the median of the other two sources (80,000). Without a filter, the index drops 0.48% because of one exchange. If source C is replaced by the median of the others, the index is 80,000.50, only 0.009% below normal. Thresholds and the exact adjustment are set by each exchange; the table only illustrates the principle.
How is the mark price calculated, and why do exchanges use it?
The mark price is usually the index price plus the premium (basis) between the contract and the index, smoothed over time, so it tracks spot while still showing whether the contract trades rich or cheap. Exchanges use it so that a wick on the contract’s own order book cannot liquidate a crowd of positions on its own.
Public documentation from three derivatives exchanges describes the same idea with different smoothing (accessed 2 November 2026):
- OKX (help page “Mark price and Last price”): mark price = index price + moving average of basis, where the basis is the contract’s mid price (best bid plus best ask, divided by 2) minus the index price.
- Deribit (support page “Inverse Perpetual”): mark price = Deribit index + an exponential moving average (EMA) of the difference between a bounded mid price and the index.
- BitMEX (support page “How is the price of a Perpetual or Futures Contract determined”): for perpetuals, fair price = index price + a decaying funding basis rate, derived from the index rather than the last traded price, and used for margin, unrealised PnL and liquidation triggers.
A simulated example of “index + average basis”: the index is 80,008 and the contract’s mid price is 80,050, so the current basis is 42 USDT. The average of the last 5 basis readings (36, 38, 40, 44, 42) is 40 USDT, so the mark price is 80,008 + 40 = 80,048, 0.050% above the index. If a large order pulls the contract’s mid price a few hundred USDT away for a few seconds, the average basis moves only a fraction of that, and the mark price barely changes.
Which price triggers liquidation, unrealized PnL and stop orders?
On many exchanges, liquidation and unrealized PnL on perpetual futures use the mark price, while stop orders trigger on the price type you choose (last, mark or index) where the platform offers that choice. These three jobs use three different prices, so the same wick can trigger your stop without liquidating the position.
The example uses the standard trade from the other guides: a 1,000 USDT account, 1% risk, BTC long at 80,000, stop at 79,200, 0.05% fee per side, position size 909.50 USDT (0.01136875 BTC), 10x leverage, isolated margin, 0.5% maintenance margin and an estimated liquidation price of 72,400.
Liquidation on the mark price
When an exchange liquidates on the mark price, the position closes only when the mark price reaches 72,400, not when the last price does. A wick that takes last price to 72,300 while the mark stays at 72,900 leaves the position 500 USDT from liquidation. How 72,400 is calculated, with a 2x to 100x leverage table, is in the guide to liquidation price.
Unrealized PnL on the mark price
Unrealized PnL (the profit or loss of an open trade) is usually size × (mark price − entry) for a long, so the number on screen can differ from the same calculation on last price. With 0.01136875 BTC, a mark price of 80,400 shows 4.55 USDT unrealized PnL (5.00% ROE at 10x); on a last price of 80,600 it would be 6.82 USDT (7.50% ROE). When you close, you receive your actual fill, not the mark. Reading PnL and ROE correctly is covered in PnL and ROE.
Stop orders on last price or mark price
A stop triggered on last price reacts fast but is easy to wick out, while a stop triggered on mark price is harder to wick out but can fill at a worse price when the drop is real. It is a trade-off, and neither type is always better. OKX’s public API, for instance, lists last, index and mark as stop-loss trigger price types (OKX API v5 docs, accessed 2 November 2026).
A simulated 12-minute scenario: last price wicks to 79,000 (−1.25%), 200 USDT through the 79,200 stop, then recovers to 80,040. The mark price bottoms at only 79,920 (−0.10%), still 720 USDT above the stop.
- Stop on last price: triggered; the market order fills at 79,150 after slippage, a loss of 10.57 USDT (1.06% of the account) instead of 10 USDT, and then price comes back.
- Stop on mark price: not triggered; the position stays open.
- The downside of a mark trigger: in a real drop the mark lags the last price. If the mark reaches 79,200 when last is already at 79,120, the market order fills around 79,120 for a loss of about 10.91 USDT.
The 909.50 USDT position size, sized from the stop and 1% risk, is explained in the stop loss guide.
Which side of the current price each pending order sits on, and when it turns into a market order, is explained in futures order types.
What is basis? Worked mark vs index examples
Basis is the gap between the contract price and the spot price; on perpetual futures it is usually measured as (mark price − index price) ÷ index price × 100%. A positive basis means the contract trades above spot; a negative basis means it trades below.
With a BTC index of 80,000, each basis level equals the following in USDT:
| Basis | Gap per 1 BTC | Gap on a 909.50 USDT position |
|---|---|---|
| +0.01% | 8 USDT | 0.09 USDT |
| +0.03% | 24 USDT | 0.27 USDT |
| +0.05% | 40 USDT | 0.45 USDT |
| +0.10% | 80 USDT | 0.91 USDT |
| −0.05% | −40 USDT | −0.45 USDT |
At a 909.50 USDT size, a +0.10% basis moves unrealized PnL by only about 0.91 USDT, small next to the 10 USDT risk. Basis is mostly useful as a gauge of whether the contract is rich or cheap versus spot.
On dated futures, basis is larger and means something different: it shrinks toward zero as expiry approaches. A 90-day contract at 81,200 with the index at 80,000 has a basis of 1,200 USDT, or 1.50%, about 6.08% annualized. A perpetual has no expiry, so its basis oscillates around zero through funding instead of converging on a schedule.
How does basis relate to the funding rate?
Basis and the funding rate measure the same thing, whether the perpetual trades above or below spot: basis is a snapshot of that gap right now, and funding is the periodic payment calculated from it to pull the contract back to spot. A persistent positive basis usually comes with positive funding (longs pay shorts), and a persistent negative basis with negative funding (shorts pay longs).
Deribit’s “Inverse Perpetual” page (accessed 2 November 2026) defines the premium rate used for funding as (mark price − Deribit index) ÷ Deribit index × 100%. Other exchanges may add an interest component, caps and floors, and different intervals, so you cannot derive an exact funding number from basis alone. The useful habit is to read both together: +0.05% basis with funding near 0.01% every 8 hours is a different market from +0.05% basis with funding at +0.05%. The cost of funding on a 909.50 USDT position and annualized funding are covered in the guide to crypto funding rates.
How to read “Mark vs index” on the RonOnCrypto dashboard
The “Mark vs index” column on the crypto market data dashboard shows (mark price − index price) ÷ index price × 100% for the BTC, ETH, SOL, BNB and XRP perpetuals, rounded to 3 decimals, green when positive and red when negative. Both numbers come from OKX’s public API on every page load: the mark price from the mark-price endpoint of the USDT perpetual, and the index price from the index-tickers endpoint of the matching pair.
Two examples:
- Mark 80,040, index 80,000 → +0.050%: the BTC contract trades 40 USDT above spot, usually alongside positive funding.
- Mark 79,976, index 80,000 → −0.030%: the contract trades 24 USDT below spot, usually alongside negative funding.
The dashboard’s “Price” column is the last price of the spot pair from a different source, so do not compare the “Price” column with the mark price to work out basis; “Mark vs index” already compares two numbers from the same source. The live funding table on this page (its source can differ from the mark vs index column) lets you check the sign of basis against the sign of funding. Basis tells you whether the contract is rich or cheap right now; it is not an entry signal.
Checklist: choosing a stop loss trigger price
To choose a trigger price for your stop loss, check 5 things: which price types the platform offers, which price drives liquidation, the distance from stop to liquidation, the depth of the order book, and how much slippage you accept.
- See which trigger types the platform offers. Some platforms let you choose last, mark or index price for a stop; others have one default. Check the order window before you enter.
- See which price drives liquidation. If liquidation runs on mark price, a mark-triggered stop shares the same frame of reference; a last-triggered stop can be wicked out while the position was never in danger.
- Keep the stop far from liquidation. In the 10x example, the 79,200 stop sits 6,800 USDT above the 72,400 liquidation price, so a few tens of USDT between mark and last cannot change the order. At 100x, liquidation at 79,600 sits before the stop, and no trigger type can save it.
- Weigh order book depth. Thin pairs wick more on last price; large BTC and ETH books wick less, though news can still make price run.
- Budget for slippage. Both stop types become market orders when triggered (for stop market orders), so the real loss can exceed 10 USDT; in the simulated wick scenario with a 909.50 USDT position, the real loss was 10.57 USDT (last-price stop) or 10.91 USDT (mark-price stop). Trading fees also differ by platform; base-tier rates are listed on the futures exchange fees compared page.
The rule is simple: no trade may cost more than 1% of the account, so size from the stop first, then pick leverage. The trigger type only decides how sensitive the stop is to wicks; the loss when wrong is still set by position size. Size every trade with the position size calculator, check liquidation with the liquidation price calculator, then look at current basis and funding on the market data dashboard.
This content is for educational purposes only and is not investment advice. Trading leveraged derivatives carries the risk of losing your entire margin.
FAQ
Can you buy or sell at the mark price?
No. The mark price is a reference number the exchange calculates; no order fills at it. Your market order fills against the order book, so your fill can be above or below the mark price.
Why can last price touch the liquidation price without a liquidation?
Because many exchanges trigger liquidation on the mark price. A wick on the contract's order book can push last price to 72,300 while the mark price stays at 72,900, above a 72,400 liquidation price, so the position stays open.
What does a negative basis mean?
A negative basis means the contract's mark price is below the spot index, usually when shorts are crowded and funding is negative. It does not tell you whether price will rise or fall, only that the contract is cheaper than spot right now.
Is the mark price the same on every exchange?
No. Each exchange picks its own basket of spot sources, weights and basis smoothing, so the index and mark price of the same BTC/USDT pair differ slightly between platforms. Your liquidation price and stop only respond to the prices of the platform you trade on.
Derivatives trading can lose you your entire margin. See the disclaimer.