How accurate are prediction market prices?

From our own resolved markets · recomputed daily · 2026-10-29 13:01 UTC

In the markets we watched settle, cheap contracts came in below their price and expensive ones above it. Across 1,980 Kalshi and Polymarket contracts, those trading at 20–35¢ resolved yes 32.0% of the time, and those at 80–90¢ resolved yes 82.4%. That is the shape of the classic favourite-longshot bias, on both venues independently.

Price bucket vs what actually happened

PricenMean priceResolved yesBiasKalshiPolymarket
00–05¢ 14 3.1% 0.0% -3.1pp 0.0% —
05–10¢ 51 7.5% 2.0% -5.5pp 2.0% —
10–20¢ 122 15.1% 17.2% +2.1pp 17.2% —
20–35¢ 278 27.5% 32.0% +4.5pp 32.0% —
35–50¢ 497 43.7% 41.9% -1.8pp 41.9% —
50–65¢ 495 55.8% 59.8% +4.0pp 59.8% —
65–80¢ 211 71.9% 61.6% -10.3pp 61.6% —
80–90¢ 131 84.8% 82.4% -2.4pp 82.4% —
90–95¢ 115 92.5% 91.3% -1.2pp 91.3% —
95–100¢ 66 96.4% 97.0% +0.5pp 97.0% —

"Bias" is realised rate minus mean price: negative means the market charged more than the outcome was worth. Last two columns are the same measurement computed per venue, so you can see it is not one venue's quirk. Buckets with a small n are exactly as noisy as they look — read the n column.

What this does and does not mean

It does mean a naive "buy the cheap side" strategy is worse than it looks, and that the mid-range is where these markets are genuinely informative. It does not mean the bias is tradeable: the edge sits in the cheapest contracts, where fees are proportionally largest and depth is thinnest, and where being wrong ninety times in a row is a normal outcome rather than a surprise.

It also is not a claim about prediction markets in general. It is a measurement of the markets MarketMaster tracked, over the window it tracked them, and it is recomputed every day rather than written once.

Method, and what is wrong with it

We sample every tracked market's price hourly and keep about 35 days. A market counts as settled when the last price we recorded is at or above 97¢ (yes) or at or below 3¢ (no); it is then bucketed by the price 24 hours earlier. Both venues, all categories, no filtering for liquidity.

Two honest caveats. The outcome is inferred from price, not read from the venue's settlement record, so a market delisted before we caught its final tick is missing. And because those missing markets sit in the middle of the price range, they are exactly the ones that would soften the edges of this curve. We are adding settlement data read directly from each venue; when it lands, this page will be recomputed from it and the numbers here will move.

Does the mispricing survive fees? Get the data via API or MCP