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.
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
30 days7 days1 day1 hour
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¢
long shotcoin flipsure thing
on average you'd get back
$11
$100 in
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.
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.
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.
It's about the market, not the moment. The bias lives in less popular markets, whatever the trading
that day.
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.