Skip to content

Prices

Why you got liquidated at a price the chart never touched

Published 11 August 2026

Mark price, index price and last price are three different numbers on every Polymarket Perps market, and only one of them can close your position. The chart shows you a different one.

Short answer

Polymarket Perps runs three prices per market. Last trade price is the most recent fill on the book — it draws the chart and it margins nothing. Index price is Polymarket’s estimate of the underlying’s fair value, aggregated from external feeds every 200ms. Mark price is the median of three independently-built candidates, and it is the only one that touches your money.

Mark decides your equity, your unrealised PnL, your margin check, your liquidation trigger, the funding premium and your stop-loss. So yes: you can be liquidated at a price the chart never printed. That is the system working, not failing.

The three prices

Every market on Polymarket Perps publishes all three at once, and the tickers endpoint hands you index, mark, last and mid side by side if you want to watch them diverge in real time.source

PriceWhat it isWhat it is used for
Last / tradedThe price of the most recent fill on the local book.Charts and trade history. Margining: never.
IndexPolymarket’s estimate of the underlying’s fair value, from external feeds, republished every 200ms.An input to mark, and the reference the funding premium is measured against.
MarkMark = median(C1, C2, C3)Unrealized PnL, Margin checks, Liquidation triggers, Funding premium, Take-profit and stop-loss triggers.
Three numbers, three jobs. Only the middle one can close your position.

That last cell is the whole story. Five separate mechanisms — every one of which can cost you money — read mark and none of them read the chart.source Your equity is collateral plus unrealised PnL measured at mark, so the moment mark moves your margin ratio moves with it, whether or not anything traded.source

The chart records what other people paid. Mark decides what you are worth.

Where index comes from

Index price is not a Polymarket opinion. It is an aggregation of 3 external providers — Pyth, Chainlink Data Streams and Hyperliquid — combined into one number and republished 5 times a second.source

The combination is not a naive mean. Weighted average across the selected feeds, after dropping stale prices and filtering outliers. A frozen feed is far more dangerous than a missing one, because it still looks like data. Filtering outliers handles the other failure mode, where one provider prints something absurd for a second and a half.

Which feeds are in the set is not fixed. It varies by market session, so an equity perp is priced from a different combination of providers at 3am than during the cash session.source The session categories are 5: Regular, Overnight, Weekend, Disrupted, Halted — and with no dedicated feed set for the current category, the overnight set is used.

This is also why a session change is far less dramatic than traders expect. Sessions change which external feed set computes index price and the c3 candidate in mark price, and explicitly not funding, margin and leverage tiers, order matching, liquidation triggers.source The overnight and weekend behaviour has its own page.

The three mark candidates

Mark is not calculated. It is elected. Three candidate prices are computed independently, from different inputs, and mark is whichever one lands in the middle.source

Mark = median(C1, C2, C3)
Recomputed every 200ms, per market.

C1 · Smoothed order book mid

C1 = Index + EMA(Mid − Index)

Strength. Slow-moving, resists sudden order book manipulation. Weakness. Can lag during fast moves.

C2 · Local market activity

C2 = median(BestBid, BestAsk, LastTrade)

Strength. Responsive to what is actually trading here. Weakness. Can be pushed around by thin liquidity.

C3 · Aggregated external mark

weighted average of external mark feeds, outliers filtered

Strength. Independent of the local book entirely. Weakness. Depends on external feeds being up.

Read those three weaknesses together and the design becomes obvious. C1 lags. C2 is manipulable. C3 depends on somebody else’s uptime. There is no fourth candidate without a flaw, because there is no flawless way to price a thing. So instead of hunting for one, Polymarket built three with uncorrelated flaws and let them vote.

C1 smooths the gap between the book’s mid and index with an exponential moving average over a 150-second window — long enough that a single aggressive sweep barely registers, and long enough that it trails a genuine repricing.source C2 takes the median of best bid, best ask and last trade, with stale trades excluded so a print from an hour ago cannot anchor a live valuation. C3 is built from aggregated external mark feeds — a separate feed set from the ones that build index — with a median, an outlier filter and a weighted average on top.

Whatever comes out is then snapped to the market’s tick and rounded to its price precision before it is published, so there is no hidden sub-tick mark that the risk engine uses and you cannot see.source

Why a median of three, and not an average

An average of three candidates would let any one of them move mark. Push C2 by ten dollars and the average moves by three and a third. Every candidate is a lever, and the cheapest lever to pull is always the local order book.

A median of three has a property an average does not: the output is always one of the inputs, and specifically the one two other candidates bracket. To move the median you must move at least two of the three candidates in the same direction. Move only one, however violently, and it becomes the highest or lowest of the three — and the median discards it entirely, along with all of your effort.

At least two of three must agree before mark moves. No single signal can move it alone.

And because the three candidates draw on different inputs — a smoothed premium over index, the local book, and an independent external feed set — moving two of them at once means simultaneously manipulating Polymarket’s book and the outside market it references. At that point you are not spoofing a perp; you are moving spot, which is a fundamentally more expensive hobby.

A worked spoof

Arithmetic, not a live reading. Take a market with index at 100.00 and a book that is quietly in line with it. Somebody then sweeps the bids in a thin moment and prints a fill down at 96.00 — a 4.00 hole, 4%, comfortably past the 2.56% adverse move that liquidates a 20x long, if it counted.

CandidateBuilt fromValue
C1Index + EMA of (mid − index), 150s window100.02
C2median(best bid, best ask, last trade) — the swept one96.00
C3Aggregated external mark feeds100.01
Markmedian of the three100.01
The sweep moves one candidate. The median is unimpressed.

Mark lands at 100.01. The wick that would have wiped out a book full of leveraged longs on a venue that margins off last trade does nothing here except leave a mark on the chart. The 150-second EMA in C1 is why the sweep barely touches that candidate at all: it has 150 seconds of history to argue with.

Now run it the other way, which is the case that actually costs people money. Suppose the underlying genuinely gaps down and the external feeds move, but Polymarket’s own book is thin and slow to follow. C1 and C3 both track the real move; C2 lags on a stale local book. Median takes the middle of the three — which now means mark leads the chart. Your margin ratio deteriorates on prices that have not printed locally yet, and if it crosses MarginRatio < 1.0, which means Equity < MM the liquidation engine does not wait for the book to catch up.source

When feeds break

Every candidate has a defined failure mode, and every one of them falls back to the same place: Index.source

  • Lose the local book and C1 and C2 have nothing to smooth or median — they collapse to index.
  • Lose the external mark feeds and C3 collapses to index.
  • Lose enough of both and mark becomes the median of three identical values, which is index.

That is the whole safety net. In the worst case Polymarket can construct, mark simply tracks the underlying’s fair value — itself a weighted average across multiple providers with stale prices dropped and outliers filtered, so the floor beneath the floor is still not a single point of failure.source

Note what does not happen: mark never falls back to the last traded price. There is no degraded state in which the chart starts margining your account.

So the chart lied to you (it didn’t)

You were liquidated at a price the chart never touched because the chart plots the last traded price and liquidation is evaluated against mark. Two different numbers, computed from different inputs. The gap between them is not an error, a lag, or somebody hunting your stop — it is the safety feature you would have wanted five minutes earlier, pointed the other way.

The same asymmetry runs through everything sitting on top of mark. Your stop-loss watches mark, so it can fire on a move the chart never printed, and it can decline to fire on a wick that did.source Polymarket is explicit that triggers watch mark price. Every order type, in full.

The funding premium is measured against index rather than mark: the premium index compares an impact price walked off the book to the index, and mark is what your position is then valued at.source The funding page has that arithmetic in full.

And if your liquidation price itself keeps drifting while you sit there doing nothing, that is a different mechanism again — cross-margin equity, funding accrual and unrealised PnL all push it around. That one has its own page.

Stop reading the chart as though it were your account. The number that closes your position is not the number you have been staring at. The overview explains the rest of the machine.

Questions people ask

Why did I get liquidated when the chart never hit my liquidation price

Because the chart shows the last traded price and liquidation is triggered by the mark price. They are different numbers by construction. Mark is the median of three independently built candidates, one of which is an aggregation of external feeds that owes nothing to Polymarket's own order book, so mark can be several ticks away from the most recent fill on the book at any moment.

What is the difference between mark price and index price on Polymarket Perps?

Index price is Polymarket's estimate of what the underlying asset is genuinely worth, aggregated from Pyth, Chainlink Data Streams, Hyperliquid and republished every 200 milliseconds. Mark price is the contract's own valuation: the median of three candidates, one of which is built from index plus a smoothed premium. Index describes the outside world; mark is what your account is valued against.

Which price does Polymarket use for liquidation?

Mark price. It is used for unrealized PnL, margin checks, liquidation triggers, the funding premium, and take-profit and stop-loss triggers. The last traded price is used for charts and trade history and is not used for margining at all.

How often does Polymarket update the mark price?

Every 200 milliseconds, the same cadence as the index price — 5 updates a second. Mark is snapped to the market's tick size and rounded to its price precision before it is published, so the value you see on the tickers endpoint is the value the risk engine used.

Can someone manipulate the mark price by pushing the order book?

Only with difficulty. Two of the three candidates must agree before the median moves, and the third candidate is built entirely from external mark feeds that a local order book cannot touch. Pushing one candidate to an extreme leaves it as the outlier of the three, and the median ignores it.

Do stop-loss orders trigger on mark price or last price?

Mark price. Take-profit and stop-loss brackets on Polymarket Perps watch mark, not the last print, which means a stop can fire without a single trade printing at your stop level and can also survive a wick that did print there.

What happens to mark price if the external price feeds go down?

Each of the three candidates degrades to the index price when its own inputs are unavailable, so in the worst case the median of three identical values is simply the index. The index itself is a weighted average across multiple feeds after stale prices are dropped and outliers filtered, so one failing provider does not take the price with it.

Bookie is not affiliated with Polymarket. We write about Perps because we're building on the same markets, and some links on this site earn us a share of trading fees. Nothing here is financial advice.