a data story · october 2026

When a market says 70%, does it happen 70% of the time?

Prediction markets let people bet on real-world events, and their prices are read as odds. I checked 46,168 of them against what actually happened, and found exactly where the odds go wrong.

the whole study in 60 seconds
46,168resolved markets
118,092prices checked
2platforms: Kalshi & Polymarket
5years of markets

the study in 60 seconds

Every dot you're about to see is a group of real markets with similar odds, priced a day before they closed. Across: what the market said. Up: how often it actually happened.

If the odds are honest, every dot lands on this line. Things priced at 30% happen 30% of the time; things priced at 90% happen 90% of the time.

Here are 13,951 prices from Kalshi. Almost every dot sits close to the line.

And 28,092 from Polymarket. On average, both are remarkably honest: within one to two points.

Now zoom into the cheapest bets, the long shots under 20¢. Kalshi's sit below the line: they happen less often than priced. Polymarket's sit above it.

And the near-sure things, over 80¢. On Kalshi they happen more often than priced. People overpay for long shots and underpay for favourites.

Honest on average, lopsided at the extremes. Here's what that looks like in real markets.

real markets

The upsets

Odds don't say what will happen; they say how often. A day before each of these closed, the market was almost certain. It was wrong.

Long shots that came in

Sure things that didn't

But how often should that happen?

Upsets are supposed to happen: a 3% chance comes in about 3 times in 100. So I counted every upset in the data and compared it with what the odds predicted.

Each dot is one market, a day before close. Long shots are priced at 5% or less; sure things at 95% or more. The stories above were picked for being memorable; the counts use every market.

your turn

Can you beat the market?

Here are three real groups of Kalshi markets, priced a day before they closed. The price is the market's guess at the odds. Drag the slider to your guess at how often they actually happened.

round 1 of 3

The market priced these at 25¢, a 25% chance.

How often did they actually happen?

your guess: 50%

chapter 1

A price is a probability

On a prediction market, you buy a contract that pays $1 if something happens and nothing if it doesn't. So the price tells you how likely traders think it is: a contract trading at 30¢ means roughly a 30% chance.

example contract

Will it rain in Toronto tomorrow?

Tap a side to see what you'd be betting.

If those prices are honest, then across every 30¢ contract, about 30% should pay out. A market where that holds at every price is called calibrated. That's what I tested, using each market's price 30 days, 7 days, 1 day and 1 hour before it closed. (The final price is useless: by then everyone knows the answer.)

chapter 2

Mostly, the odds hold up

Each dot below is a group of markets with similar prices. Left to right is what the market said; bottom to top is how often it actually happened. If the odds are honest, the dots sit on the dashed line. Press play to watch markets get sharper as their close approaches.

What the market said vs. what happened
time before close
1 day

Vertical lines show the range the true value plausibly falls in (a 95% confidence interval). Hover or tap a dot for its numbers.

show the numbers

On Kalshi, contracts priced at 99.2¢ a day before close paid out 99.8% of the time.

On average, the dots land within one to two percentage points of the line on both platforms. That's impressively close for odds set by strangers betting money. But "on average" hides a pattern.

chapter 3

Long shots are overpriced

Horse-racing gamblers have known this for decades: people overpay for long shots and underpay for favourites. One popular explanation: the thrill of a big payout makes cheap tickets more popular than they deserve. It's called the favourite–longshot bias.

On Kalshi it's there, and it grows as a market nears its close. Polymarket doesn't show it.

How lopsided the odds are, as close approaches

Each dot is a calibration slope: 1 means perfectly honest odds, above 1 means long shots are overpriced. Hollow dots repeat the test without the most extreme prices, to rule out a quirk of Kalshi's 1¢ price steps.

show the numbers

chapter 4

Is it getting better?

Kalshi has grown enormously since 2021. If the bias came from a young market with few traders, it should fade as the market matures. It did, partly: the bias was strongest before 2025 (slope 1.31) and has been smaller since, but it never went away.

Polymarket looks like it got worse in 2026. It didn't. It started listing far more weather markets (29% of its markets in 2026, up from 5% before), and weather markets are the overconfident ones. Take them out and 2026 is as honest as before.

How lopsided the odds are, by when the market closed

One day before close. Markets that closed before 2025 are pooled because there are fewer of them. Filled dots differ clearly from honest odds after correcting for multiple tests; hollow dots don't. Hover a dot for its numbers.

show the numbers

chapter 5

So, can you get rich betting against it?

If long shots are overpriced, maybe you could profit by avoiding them, or by betting against them. Try it with real Kalshi prices from a day before close, including the fee you'd actually pay.

bet $100 on

when the yes price is 0–2¢

on average you'd get back

$11

No price range makes reliable money. Cheap contracts lose heavily on either side, and everything else loses roughly the fee. The bias is real, but it isn't big enough to beat the costs of trading.

Average return per $1 after fees, every price range at once

betting yes

betting no

Bars are coloured where the loss is statistically clear, grey where it's within the margin of error. Kalshi only: Polymarket's history has no buy and sell quotes, so its returns can't be computed honestly.

show the numbers

Could a smarter forecaster beat the market?

Trading costs aside, maybe the bias could still sharpen a forecast. So I learned the bias from markets that closed before July 2025, used it to correct the prices of the 36,000 later ones it had never seen, and checked whether the corrected odds were more accurate than the market's own.

They weren't. A bias you can measure after the fact isn't the same as an edge you can use.

Accuracy gained by correcting for the bias, on markets it never saw

Change in Brier score, the standard accuracy measure for probability forecasts, as a share of the market's own. Right of zero, the correction helped; left of it, the market's raw odds were better.

show the numbers

chapter 6

Where the odds go wrong

The bias isn't spread evenly. On Kalshi it lives in less popular markets, and in politics; the most popular markets are almost perfectly honest. Polymarket errs the other way: its weather markets sound far too sure of themselves.

A twist: "less popular" is about the market, not the moment. Measured by trading in the 24 hours before each price, Kalshi's bias is about the same in quiet and busy moments. It belongs to the kind of market, not to a lull in trading.

Calibration slope by trading volume and topic, a day before close

kalshi

polymarket

Filled dots are clear findings that survive a correction for testing many groups at once; hollow dots are consistent with honest odds. Right of the dashed line, long shots are overpriced; left of it, prices are overconfident. "Popularity" is a market's total trading over its life; "trading in the last 24h" is what a trader could see at the moment of the price (Kalshi only, since Polymarket's history has no volume).

show the numbers

chapter 7

How I know it's real

Four things could have faked these results. Each was checked.

1.08

Price steps

Kalshi prices move in 1¢ steps, so nothing can trade above about 99¢, which squeezes extreme prices toward the middle. Ignoring the extremes, Kalshi's bias is still there: slope 1.08 .

10%

Markets that end early

"Will X happen by Friday?" closes the moment X happens, so when it closes depends on the answer, which can skew a "day before close" price. That share of Polymarket markets closed early; without them the conclusion holds (slope 0.93).

18/19

Testing many things at once

Test enough groups and some will look significant by luck. This page runs 45 tests; 19 look significant on their own, and 18 still do after correcting for the number of tests (a 5% false discovery rate). The core findings (Kalshi's bias close to the deadline, in less popular markets and in politics, and Polymarket's overconfident weather markets) also pass a much stricter correction that 12 tests survive.

0.21¢

The cost of waiting

Money tied up in a bet could have earned interest elsewhere, which also nudges prices. Over 30 days, by at most that much, far too little to matter.

what I found

The odds are honest on average. The exceptions are where it gets interesting.

  1. Kalshi overprices long shots. Contracts under 2¢ lost 89% per dollar. The bias has been smaller since Kalshi's growth took off in 2025, but it never disappeared.
  2. Polymarket's 2026 slip is an illusion. It's weather markets, which rose to 29% of listings. Without them, Polymarket is as honest as ever.
  3. It's about the market, not the moment. The bias lives in less popular markets, whatever the trading that day.
  4. None of it is an edge. It doesn't survive trading fees, and correcting for it doesn't beat the market's own forecasts on unseen data.

under the hood

How it was built

For the technically curious. Everything is open: the code, the methodology and the dataset.

data, sampling and statistics
  • Data. Public Kalshi and Polymarket APIs, fetched through a rate-limited, resumable Python pipeline. Kalshi prices are bid/ask midpoints from hourly candles, with spreads over 10¢ dropped; Polymarket prices are hourly for the two weeks before close.
  • Sampling. At most 10 markets per series or event, so a few hourly weather and index series can't drown out everything else. All sampling is seeded.
  • Statistics. Logistic calibration regression, P(yes) = sigmoid(a + b·logit(price)). Markets in one event resolve together, so intervals use a cluster bootstrap and cluster-robust standard errors.
  • Engineering. A tested Python package with CI, and a released dataset that reproduces every figure here in under a minute.
  • Lifetime volume is measured after the fact. For Kalshi the 24-hour trading measure shows what a trader could see at the time; Polymarket's history has no volume, so its split is lifetime-only.
  • Kalshi doesn't expose a scheduled close separate from the actual one, so the early-close check covers Polymarket only.
  • The platforms list very different markets, so their overall accuracy isn't directly comparable.