A forecaster gave one candidate a 70% chance. The other side won. Was the forecast wrong?
Nothing about that single night can answer the question. Things priced at 70% are supposed to fail three times in ten, so whatever happens the forecaster has a reply, and the reply is correct. Probabilities are now the standard public format for talking about elections, and a 30% chance is routinely reported as “will not happen”. When the 30% arrives, readers conclude the forecast failed, and that misreading supplies the raw material for a claim that the result was impossible and therefore illegitimate. So the question worth answering is the one a single election cannot: can a forecaster be graded at all, and on what?
Grading a probability takes many probabilities, each carrying a number recorded before the answer and an answer that arrived later. This brief uses 746 resolved prediction markets from Polymarket (https://polymarket.com/), with closing dates running from 2024-01-15 to 2027-01-01. A prediction market is a forecast with money behind it. Traders buy contracts that pay one dollar if a thing happens and nothing if it does not, so a contract trading at 70 cents is the crowd betting that the chance is about 70%, and when the market settles everyone finds out. The record is Polymarket’s own: it publishes a list of every market that has closed and how it settled, downloadable at https://gamma-api.polymarket.com/markets?closed=true&order=volumeNum&ascending=false, and a day-by-day price history for each contract, described at https://docs.polymarket.com/.
That venue answers the question because almost nothing else in public life leaves a record of this shape. Forecasting models publish pictures rather than files, so the comparison everyone wants, market against model, cannot be run at all. The betting site publishes its trading record because its traders want it, not for anyone’s research, and it can withdraw the record without notice. Economists have argued since the early 2000s that prices like these pool scattered information well;1 this brief asks the narrower question of whether the prices this venue actually produced were honest.
Those two records are joined here. The list of closed markets carries each contract’s identifier, a long code, and the price history is looked up by that same code. Every join takes on the assumptions of both files plus one more about how they line up, which is the subject of Join Keys and Crosswalks; that chapter also explains the crosswalk, a table that translates one set of identifiers into another. A key is a column two files share, and nothing in either file promises that the same code means the same thing on both sides.
One row is one resolved market, and this is the largest of them.
| Field | Value | What it is |
|---|---|---|
| question | Will Donald Trump win the 2024 US Presidential Election? | the contract’s wording |
| p7 | 0.6585 | price seven days before resolution |
| p30 | 0.5015 | price thirty days before resolution |
| outcome | 1 | 1 if it happened, 0 if it did not |
| volume | 1,531,479,285 | traded volume in dollars |
| end_date | 2024-11-05 | the day it settled |
That is the whole design: a claim, a number attached to it before the
answer was known, and the answer. question holds the
contract’s wording. p7 and p30 hold the prices
seven and thirty days before it closed. outcome is 1 if the
thing happened and 0 if it did not, volume is the dollars
traded, and end_date is the day it closed.
The prices had to be dug out of a trading record. A market issues no
forecast. It trades continuously and leaves a price for every day it was
open, so p7 and p30 were picked by counting
back from the closing date. Those are two moments chosen out of
hundreds, after the fact, and the second is carried beside the first so
the choice can be tested rather than trusted.
Three cleaning decisions do real work. Only markets that settled cleanly to yes or no can be scored, so contracts that voided, that settled to a number, or that never settled were dropped. A market younger than thirty days has no thirty-day price, and 69 of 746 rows are left blank rather than filled in. And the file is ordered by money rather than drawn at random: it holds the resolved markets with the most dollars traded, taken in that order.
The last two decide how far anything here travels. This is not a sample of prediction markets and cannot be read as one. The markets that vanished are mostly the ambiguous ones, whose wording did not survive contact with events. A score computed on what is left is a score on the questions that turned out to be answerable.
| Quantity | Value |
|---|---|
| Resolved markets | 746 |
| Resolving between | 2024-01-15 to 2027-01-01 |
| Markets that resolved ‘yes’ | 145 (19.4%) |
| Markets priced under 0.10 | 527 (70.6%) |
| Median traded volume | $22m |
| With a price thirty days out | 677 |
Three facts in that table shape everything below. Most of these questions are about things that did not happen: 70.6% were priced under 0.10 and only 19.4% resolved yes. Most are not political either, because the highest-volume contracts include sport, cryptocurrency and Federal Reserve decisions. And volume runs from $10m to $1,531m, which matters more than any other column.
Before you read on, commit to a number. Take every market that traded between 0.70 and 0.80 seven days before it closed. What share of them actually happened? Write the number down. Then write down how far off the prices would have to be before you would call the venue unreliable.
Start with what cannot be done. Suppose the 70% chance came in; a defender says the forecast was good. Suppose it did not; a defender says three-in-ten events occur three times in ten.
| What happened | Is the forecast refuted | The reply |
|---|---|---|
| It happened | No | 72% is the larger side; this is the expected case |
| It did not happen | No | 28% events occur roughly three times in ten |
This is a property of probability rather than a weakness of forecasters, and the only escape from it is volume.2 Gather many forecasts, group them by what each one claimed, and check the groups against what happened.
746 dots, one per market, area proportional to traded volume: the largest market traded $1,531m and the median $22m. The lower strip is crowded against the left wall, 71% of every question asked here was priced under 0.10, and 81% of the file resolved no. Hover any dot for the question behind it.
Figure 1. Every resolved market in the file. One dot per market, placed at the price it carried seven days before it closed, with dot area proportional to traded volume. A dot sits on the upper strip if the thing happened and on the lower strip if it did not. Two strips and one axis is the right form because the whole record is a price and a yes-or-no, and calibration asks how those two line up. 527 of the 746 markets sit in the leftmost tenth of the axis.
Now sort every market into a band by its seven-day price and ask what share of each band happened. If the prices mean anything, the two middle columns should match.
| Price band | Markets | Average price | Share that happened | Gap |
|---|---|---|---|---|
| [0,0.1] | 527 | 0.008 | 0.019 | +0.011 |
| (0.1,0.2] | 27 | 0.155 | 0.296 | +0.141 |
| (0.2,0.3] | 19 | 0.245 | 0.368 | +0.123 |
| (0.3,0.4] | 14 | 0.344 | 0.286 | -0.058 |
| (0.4,0.5] | 28 | 0.454 | 0.429 | -0.025 |
| (0.5,0.6] | 32 | 0.548 | 0.656 | +0.108 |
| (0.6,0.7] | 28 | 0.658 | 0.643 | -0.016 |
| (0.7,0.8] | 13 | 0.752 | 0.769 | +0.017 |
| (0.8,0.9] | 13 | 0.848 | 0.846 | -0.002 |
| (0.9,1] | 45 | 0.979 | 0.978 | -0.001 |
Circle area is the number of markets in the band. Points on the dashed line are perfectly calibrated. Hover for detail.
Figure 2. What each price band claimed, against what happened to it. One circle per band, placed at the band’s average price and the share of it that occurred, with circle area the number of markets in the band. The dashed diagonal is perfect calibration, and the large circle at the bottom left is the 527 markets priced under 0.1.
Read the top of the table first. Markets priced 0.9 to 1.0 happened 97.8% of the time, those priced 0.8 to 0.9 happened 84.6% of the time, and those priced 0.7 to 0.8 happened 76.9% of the time. A 70% chance, from this venue, has meant roughly a 70% chance. One number compresses the picture: the Brier score, the average squared distance between the probability and the outcome, where zero is perfect.3 Take the largest market in the file, the one in the table above. It was priced at 0.6585 seven days out and then happened, so its outcome is 1. Its distance is 1 − 0.6585 = 0.3415, and squared that is 0.1166. Had it gone the other way the score would have been 0.4336. A forecast of exactly 0.5 scores 0.25 whichever way things go; a confident forecast scores near zero when right and near one when wrong. The venue’s Brier score is that calculation averaged over all 746 markets.
| Forecaster | Brier |
|---|---|
| The market, seven days out | 0.0644 |
| Always say 50% | 0.2500 |
| Always say the overall base rate | 0.1566 |
| Always say 0% (nothing will happen) | 0.1944 |
The market scores 0.0644, against 0.2500 for a coin flip. Notice the last row, though. Saying “nothing will happen” to every question scores 0.1944, which is worse but not absurdly so, because most of these questions really are about things that did not happen. A summary number is flattered by the mix of questions asked, which is why the calibration table sits beside it rather than behind it.
Read the table from the bottom and it stops behaving.
| Price band | Markets | Average price | Share that happened | Happened ÷ priced |
|---|---|---|---|---|
| [0,0.1] | 527 | 0.008 | 0.019 | 2.3 |
| (0.1,0.2] | 27 | 0.155 | 0.296 | 1.9 |
| (0.2,0.3] | 19 | 0.245 | 0.368 | 1.5 |
Markets priced 0.1 to 0.2 happened 29.6% of the time, roughly 1.9 times what they claimed, and the band below behaves the same way. Racetrack bettors have overpaid for longshots for as long as anyone has measured it,4 so that explanation is close to hand. Before taking it, count the chances the table gave itself. Ten bands were tested, and at the conventional 5% threshold — a p-value under 0.05, meaning a gap this large would arise by chance less than one time in twenty if the prices were honest — you expect about one apparent discovery from chance alone.
| Price band | Markets | Expected ‘yes’ | Observed ‘yes’ | P | |
|---|---|---|---|---|---|
| [0,0.1] | 527 | 4.4 | 10 | 0.015 | * |
| (0.1,0.2] | 27 | 4.2 | 8 | 0.058 | |
| (0.2,0.3] | 19 | 4.7 | 7 | 0.282 | |
| (0.3,0.4] | 14 | 4.8 | 4 | 0.783 | |
| (0.4,0.5] | 28 | 12.7 | 12 | 0.851 | |
| (0.5,0.6] | 32 | 17.5 | 21 | 0.287 | |
| (0.6,0.7] | 28 | 18.4 | 18 | 0.844 | |
| (0.7,0.8] | 13 | 9.8 | 10 | 1.000 | |
| (0.8,0.9] | 13 | 11.0 | 11 | 1.000 | |
| (0.9,1] | 45 | 44.1 | 44 | 0.615 |
1 of 10 bands clears that threshold, and it is the [0,0.1] band rather than either of the two the anomaly was read off. The (0.1,0.2] band gives p = 0.058 on 27 markets, which is no evidence of anything. Pooling the 0.1 to 0.3 range gives p = 0.037 on 46 markets, significant by convention and not by much. Now try the column nobody has used yet. Restrict to the mid-range prices where calibration bites, and split at the median traded volume.
| Markets | N | Average price | Share happened | Gap points |
|---|---|---|---|---|
| Above median volume | 87 | 0.491 | 0.494 | +0.3 |
| Below median volume | 87 | 0.464 | 0.552 | +8.7 |
The busy markets are nearly perfect at 0.3 points off across 87 markets, and the thin ones are off by 8.7 points.
Gap in percentage points at the right-hand end. In the mid-range the busy markets are off by 0.3 and the thin ones by 8.7 — 27 times as far, on 87 and 87 markets respectively. Across all prices the two halves look almost identical, which is why the split only shows up once the near-zero markets are set aside.
Figure 3. The same markets, split by how much money moved through them. Each bar runs from what a group of markets was priced at to what actually happened to it, so a short bar is a group the price described well. In the mid-range, markets above the median volume are off by 0.3 points and markets below it by 8.7.
So “markets underprice longshots” is the wrong lesson and “thin markets are noisy” is the right one. The deeper point is about how the anomaly got made. The market is not one forecaster. It is hundreds of separate markets of wildly varying depth, pooled here into a single table, so the averaging manufactured the effect it then reported. One honesty note runs the other way. The excess in the near-zero band does not follow this pattern, because there the surprises sit in the high-volume markets, in a band too small to resolve.
Everything above used the price seven days out, and that moment was chosen by whoever built the file.
| Snapshot | Markets | Brier |
|---|---|---|
| Thirty days before resolution | 677 | 0.0736 |
| Seven days before resolution | 677 | 0.0500 |
The average market that ended up happening moved from 0.553 to 0.689 over those three weeks; the average one that did not moved from 0.064 to 0.049. Prices sort themselves toward the answer as the answer approaches, which is what a forecast is supposed to do — and it is also why grading a market at one moment grades the moment as much as the market.
Figure 4. The same markets, a month out and a week out. One line per market, running from the price it carried thirty days before it closed to the price it carried seven days before, coloured by what eventually happened, with the two group averages drawn heavy. The score improves from 0.0736 to 0.0500 across the 677 markets carrying both prices.
That is reassuring rather than interesting, because information arrives over time. It also means the calibration table flatters the venue by construction, since the score was taken at the last moment before the answer arrived. The honest description of a forecaster is a curve over time rather than a single number.
Whether markets beat models. Model outputs are not published as data anybody can score, so one side of the comparison is a picture.
Anything about prediction markets as a class. This is one venue, and the file holds its highest-volume resolved contracts rather than a random draw. Markets that voided or settled ambiguously were dropped, and there is no reason to think they were a random subset.
Anything specific to elections. Most of these questions are about sport, cryptocurrency and interest rates. The calibration establishes a property of the mechanism at this depth of trading, not a fact about the American electorate.
Whether a well-calibrated forecaster can be beaten. It can. Calibration says the labels are honest, not that they are as sharp as the available information allows. A manipulated market can also be well calibrated on average.
None of these is answered above, and every one can be answered from the table the Sources section hands over.
polymarket_resolved.csv has p7 and
outcome. Group the rows into price bands of your own
choosing, five or twenty, and see whether the low-band anomaly survives
a different cut.volume and split it into thirds
rather than halves. Does calibration improve smoothly with money, or
only at the top?p30 against p7 on the rows
carrying both. Do the prices get more accurate as the closing date
approaches, or only more confident?p7 and
outcome, then read the question column for the
worst twenty. Do the misses have anything in common?Data
The data itself
Every figure above is drawn from this table. It is plain CSV and it opens in a spreadsheet.
Also cited
The dataset behind this chapter cannot be rebuilt, even though its source is open, keyless, and answering right now. WHY NOT. The data are a snapshot of Polymarket, a real-money prediction market: the highest-volume markets that had closed and resolved to a definite yes or no, each with the price it traded at 7 and 30 days before it closed. The snapshot was drawn in August 2026 from Polymarket's public interfaces, starting at https://gamma-api.polymarket.com/markets?closed=true&order=volumeNum and following each market into the matching price-history service. Ask the same question today and you get a different answer, honestly: markets resolve every day, so the top of the volume ranking is no longer the same list. A snapshot of a moving thing cannot be drawn twice. WHAT EXISTS INSTEAD. The same interfaces, today. They need no account and no key — only a browser-style User-Agent header, since bare requests are refused. A sample drawn now is just as valid as this one; it is simply a different sample, and every calibration question asked here can be asked of it. WHAT YOU CAN STILL CHECK. These numbers identify the August 2026 snapshot this book uses: - 746 resolved markets, each priced 7 and 30 days out - the largest, "Will Donald Trump win the 2024 US Presidential Election?", with 1,531,479,285 dollars traded - a Brier score of 0.064 for the 7-day prices — against 0.25 for always answering fifty-fifty
Justin Wolfers and Eric Zitzewitz, “Prediction Markets,” Journal of Economic Perspectives 18, no. 2 (2004): 107–126, https://www.aeaweb.org/articles?id=10.1257/0895330041371321.↩︎
Philip E. Tetlock, Expert Political Judgment: How Good Is It? How Can We Know? (Princeton: Princeton University Press, 2005), https://press.princeton.edu/books/paperback/9780691175973/expert-political-judgment, graded tens of thousands of expert forecasts in exactly this way.↩︎
Glenn W. Brier, “Verification of Forecasts Expressed in Terms of Probability,” Monthly Weather Review 78, no. 1 (1950): 1–3, https://doi.org/10.1175/1520-0493(1950)078%3C0001:VOFEIT%3E2.0.CO;2.↩︎
First measured by Richard M. Griffith, “Odds Adjustments by American Horse-Race Bettors,” American Journal of Psychology 62, no. 2 (1949): 290–294, https://www.jstor.org/stable/1418469; surveyed in Richard H. Thaler and William T. Ziemba, “Anomalies: Parimutuel Betting Markets: Racetracks and Lotteries,” Journal of Economic Perspectives 2, no. 2 (1988): 161–174, https://www.aeaweb.org/articles?id=10.1257/jep.2.2.161.↩︎