Sign In Request Access
Back to Research

How to Read a Mark Price Feed Without Getting Misled

Conceptual illustration of mark price derivation from multiple oracle sources

The number labeled "mark price" in a perpetuals UI is not a market price. It is a derived quantity — assembled from oracle inputs, smoothed against gaming, and deliberately designed to differ from the price at which the last trade executed. Understanding what is inside that derivation is not optional knowledge for serious perpetuals traders. It is the number that determines whether you get liquidated, and when.

OTC desks treat mark price as a distinct observable. They cross-reference it against index price, note the divergence, and form a view on whether the perpetual is trading at a premium or discount to spot before they size in. Most retail traders watch last-traded price, assume it equals what the protocol uses for margin calculations, and discover the distinction at the worst possible moment.

What Mark Price Is Actually Calculating

The standard construction of mark price used by most on-chain perpetual protocols is a weighted combination, dominated by the index price with a bounded contribution from the perpetual's own trading price:

Mark Price ≈ Index Price + EMA(Premium Index, T)

The index price is an aggregated, volume-weighted mid-price derived from one or more external sources — typically a set of centralized exchange spot prices, sometimes combined with on-chain oracle data. It represents a consensus "true" market price, resistant to manipulation on any single venue.

The premium index is the difference between the perpetual's fair-value price (mid of orderbook or impact mid-price) and the index price, normalized to a percentage. A positive premium index means the perpetual is trading above spot. A negative premium index means it is trading below.

The EMA (exponential moving average) over period T smooths the premium index to prevent flash manipulation — a short-duration price spike in the perpetual that moves the mark price far enough to trigger a cascade of liquidations. Without the smoothing, an attacker who can temporarily move the perpetual price can force liquidations at arbitrary levels and profit by being on the other side. With the smoothing, moving mark price requires sustained deviation, which costs real capital to maintain.

The practical effect of the EMA: mark price responds to sustained moves, not instantaneous ones. If the perpetual price spikes 5% in one second and reverts immediately, mark price may move only a fraction of a percent. If the price sustains that 5% premium for ten or fifteen minutes, mark price will have moved substantially toward it. This is why rapid flash crashes that immediately recover typically do not cause the liquidation wave that a sustained move of the same magnitude would produce.

Why Mark Price ≠ Last Trade Price

Last trade price is the price at which the most recent matching of a buy and sell order occurred in the protocol's own orderbook. It is a point observation on a specific trade, subject to the full order flow of the protocol — including large trades, thin liquidity windows, and MEV-influenced transaction ordering.

Mark price, by construction, cannot be moved by a single trade on the protocol. It is anchored to the index price and can only deviate by the amount the premium index has moved — and only after the EMA has had time to absorb that deviation. The index price itself is computed from multiple external venues, so even a significant trade on the protocol itself has essentially no direct influence on mark price.

The divergence is most visible in three market conditions:

  • Low-liquidity periods. When the protocol's own orderbook is thin, last-traded price is volatile — a single block trade can move it several percent. Mark price, anchored to index, barely moves. This is visible as a widening gap between last-price and mark-price in your UI during off-hours or low-volume sessions on smaller pairs.
  • News-driven gap moves. A sudden macro event drives price gapping on CEXes. The index price updates rapidly (spot markets on major venues move first). The perpetual's own orderbook may gap as well — but mark price updates as the oracle refreshes, which adds a latency component. For a brief window after a gap, mark price may lag the index price as the oracle catch-up cycle completes.
  • Funding settlement windows. In the hours before an 8-hour funding settlement, informed participants adjust positions to reduce or capture funding payments. This can create divergence between the perpetual's trading price and mark price, as the premium index builds or compresses in anticipation of settlement mechanics.

The Liquidation Trigger Uses Mark Price — Not Last Trade

This is the load-bearing fact that everything else rests on. When the protocol evaluates whether your position should be liquidated, it computes your margin ratio using mark price, not the last-traded price.

Specifically: your unrealized P&L is calculated as the difference between your entry price and the current mark price. Your maintenance margin is a percentage of the notional value at mark price. When the ratio of your equity (initial collateral + unrealized P&L) to your maintenance margin requirement falls below 1.0, the liquidation engine triggers.

In practical terms: if mark price is below last-traded price — which can happen when the protocol's perpetual is briefly trading at a discount to index — your effective liquidation buffer may be smaller than it appears if you are reading your margin ratio from last-traded price. Conversely, if mark price is above last-traded price (perpetual at a premium), your effective buffer is larger than the last-price-based calculation suggests. Neither is the "right" price — mark price is simply the operationally relevant one for margin calculations.

A concrete illustration: imagine holding a long ETH-PERP entered at $3,200, with a theoretical liquidation price at $2,980. Last-traded price is $3,020. Mark price, anchored to a lagging oracle, is $3,005. Based on last-traded price, your buffer is $40 above liquidation — comfortable, if barely. Based on mark price, your buffer is $25. If the oracle hasn't updated in 30 seconds during a fast-moving market, the real index price may already be at $2,990 — and the next oracle push would set mark price there, instantly taking you below the liquidation threshold without any further market movement. This scenario is not hypothetical; it is the mechanism behind "I didn't see the liquidation coming" reports that follow cascade events.

The Edge Cases Where Mark Price Diverges Dangerously

Most of the time, mark price and last-traded price are close enough that the distinction is academic. The dangerous edge cases are specific and worth knowing:

Oracle source failure or manipulation. If one of the index price sources used to compute the oracle has an anomalous price print — either due to a technical failure, extremely low liquidity on that venue, or an intentional attack — it can skew the index price, and by extension the mark price, away from consensus market levels. Protocols address this by using median pricing across sources (so a single outlier cannot dominate) and by implementing circuit breakers or emergency pauses. But the possibility that the oracle can be wrong means mark price can be wrong. Understanding which oracle sources your protocol uses, and whether they include circuit breakers, is relevant due diligence for anyone holding large positions.

Sustained premium during a funding rate regime change. When the market transitions from a high-positive-funding regime to neutral or negative, mark price can temporarily diverge from both last-traded and spot as the premium index rapidly compresses. Positions that appeared comfortable during high-funding conditions may find their margin ratios shifting quickly when the premium collapses, because the mark price component that had been elevated begins correcting toward the index.

We are not saying the mark price mechanism is broken — it is specifically designed to prevent manipulation and flash-crash liquidations, and it does that job well. We are saying that treating mark price as a passive background number rather than an active variable in your risk calculation is a mistake that becomes costly in exactly the moments when it is hardest to manage.

In our mark price panel, the oracle source, timestamp of last update, and live divergence from last-traded price are all visible. Watching that divergence during the first minutes of a sharp move gives you a more accurate read on your real liquidation proximity than any single price number on a standard exchange UI. The gap is the signal.

Continue Reading

More from Aark Research

View All Articles