The Data: 23,921 forecasts, and what they cost to collect

The Findings page argues about aggregation rules. This one is about the dataset underneath them — how it was produced, what it is made of, where it is thin, and how much of the headline result survives being asked politely for a confidence interval. Everything recomputes live from the same Turso database that serves the leaderboard. If you are new here, read the tutorial first.

01

What the arena has collected

23,921

forecast rows

16,320 from live models

2,170

scored market-rounds

3+ valid models and a price

982

distinct markets

340 resolved

227

rounds

17 weekly cohorts

$79.88

total API spend

all models, all rounds

$0.037

per scored market-round

six models + search

27%

of scored markets resolved YES

the base rate to beat

103

topic tags in the pool

May 31, 2026 → Sep 20, 2026

Two of these numbers deserve attention before any chart. The first is 2,170 scored market-rounds — not forecasts, market-rounds. Six models answering the same question are not six independent observations about forecasting skill; they are one question, answered six ways. Every comparison on this page uses the market-round as the unit, which is why the sample looks smaller here than the leaderboard's forecast counts suggest, and why it should.

The second is 27% YES. That is the base rate of the sample, and it is the number a lazy forecaster would exploit. Any claim that a model "knows something" has to beat a constant forecast of 27%, not a coin flip.

02

Where the difficulty lives

Which topics are hard — and where do the models help?
Mean Brier by the market's primary Polymarket tag, lower is better. Bars ordered by how hard the topic was for the market itself.

A topic where the amber bar sits far above the gray one is a topic where the models, left to themselves, are lost. What matters for the project is the rose bar: whenever it dips below gray, the model consensus improved a price it never saw.

Forecast difficulty is not evenly spread across topics. The hardest slice for the market itself was gaming (crowd Brier 0.6097 over 11 market-rounds), and the models' contribution varies just as much: the blend helped most on trump (+0.0819 Brier vs. the price) and hurt most on crypto (-0.0314).

Resist reading a strategy into that. The typical bucket here holds about 34 market-rounds, so the gap between the best and worst topic is comfortably inside what chance produces — the honest use of this chart is to notice heterogeneity, not to pick a category to trade. Aggregate numbers on the other pages are averages over slices that behave quite differently, and that is worth knowing before you trust a single headline Brier.

A caveat this chart exposes about the arena itself. The row labels are Polymarket's own tags, and a single news cycle fragments across many of them — a Middle East escalation shows up separately as middle east, iran, strait of hormuz, geopolitics, and the names of individual figures. The round builder caps markets at three per category, but that cap compares tag strings, so eight differently-tagged markets about one week's events sail straight through it. The topic diversity in this dataset is therefore lower than the 103 distinct tags suggest, and the effective sample size is correspondingly smaller than 2,170.

Categories with fewer than 8 scored market-rounds are pooled into a single "other" row rather than dropped, so the counts still sum to the full sample.

03

Lead time

Does lead time change the picture?
Mean Brier by how far the resolution date was when the forecast was made.

Two effects fight here: distant questions are genuinely harder, but the arena's own selection gate only admits markets that are still live and mid-priced, which trims the easy ones out of every bucket.

Intuition says a question resolving tomorrow should be easier than one resolving in a month, and mostly it is — but the arena's selection gate suppresses the effect on purpose. A market only enters a round while it is still trading between 5¢ and 95¢, so the near-dated questions that survive filtering are precisely the ones that stayed genuinely uncertain right up to the deadline. The easy short-horizon markets never appear in this chart because they were already priced at 97¢ when the round was built.

04

Disagreement as a free uncertainty signal

Is model disagreement a usable warning light?
Market-rounds bucketed by how far apart the six models were (standard deviation of their probabilities).

The models cannot see the price, so their disagreement is an independent read on difficulty. If the gray bars climb with the spread, the models are detecting hard questions that the market also finds hard — a free uncertainty signal that costs no extra API call.

When the six models cluster within 2.0 points of each other, the market's own Brier on those questions is 0.0954. When they scatter by 27.0 points, it is 0.1331. The models are detecting hard questions — and detecting them without ever seeing the price, which means the signal is genuinely independent of the market's own uncertainty.

This one has a practical payoff that does not require the models to be good. A confidence signal that costs no extra API call — you already made the six calls — and correlates with difficulty is usable for triage: flag the wide-spread questions for a human, or for a more expensive model, and leave the tight ones alone.

05

The machinery: reliability, latency, unit cost

Per-model operating record
Every call the arena has ever made, including the ones that failed.
ModelCallsValidMedianp90Avg costTotal
🧠GPT-4.1 Mini2,72082.5%1.8s3.9s$0.0057$15.51
🌱Seed 1.6 Flash2,72182.3%2.1s4.1s$0.0048$13.19
💎Gemini 3.1 Flash Lite2,72182.1%2.1s4.6s$0.0055$14.87
🌀Mistral Small 3.22,72177.7%2.0s4.6s$0.0046$12.63
🔮DeepSeek V4 Flash2,71870.6%2.6s5.8s$0.0043$11.64
🐲Qwen3 235B2,71969.3%2.2s4.2s$0.0044$12.04
What one scored forecast costs
Total API spend for a model divided by the number of its forecasts that actually settled — so timeouts and unparseable answers are paid for but earn nothing.

The dashed line marks the ~$0.005 Exa web-search fee that every call pays regardless of model. Below it is essentially free; the search, not the inference, is the cost driver.

Why calls fail
Failure modes across every model call, collapsed into the categories that differ in how you would fix them.
Failure modeCountShare
request rejected (4xx)284677%
timed out (30s)58116%
unparseable JSON1975%
rate limited521%
empty response70%
provider 5xx10%

These rows are stored, not discarded. A failed forecast is excluded from scoring but still counted in the reliability column — so a model cannot buy a better Brier by refusing the hard questions.

The unglamorous section, and the one most likely to be useful if you are building something similar. Three things stand out. Qwen3 235B is the least reliable of the roster at 69.3% valid responses, which matters more than it looks: a model that fails 5% of the time is scored on a slightly different — and not randomly different — set of markets than its peers. DeepSeek V4 Flash has the longest median latency at 2.6s, which is what sets the concurrency ceiling for the whole round.

And the cost structure is the genuinely surprising part: inference is nearly free compared to retrieval. At roughly $0.005 per web search versus fractions of a cent for the tokens, the search plugin dominates the bill for every model on the roster. If you wanted to run this ten times cheaper, you would not switch models — you would batch or cache the search.

06

How much of this survives a confidence interval?

Brier advantage over the crowd, with 90% bootstrap intervals
Paired over market-rounds — each forecaster is compared to the crowd on the same question, so the noise that cancels, cancels.
no differencebeats the crowd →← loses to the crowdMarket × Models rule (80/20 logit blend)rule replayed over all settled history — backtest2,170 market-rounds · excludes zero-0.0023Ensemble — plain mean of the 6 modelsrule replayed over all settled history — backtest2,170 market-rounds · excludes zero-0.0415Logit pool of the 6 modelsrule replayed over all settled history — backtest2,170 market-rounds · excludes zero-0.0432Market × Models, live rows onlymade after the weight was fixed — out of sample1,614 market-rounds · excludes zero-0.003890% intervals from 2,000 paired bootstrap resamples over market-rounds. Dot = observed mean advantage in Brier.

This is the section the rest of the site should be read through. A Brier difference of a few thousandths is easy to report and hard to believe, so here every headline gap is resampled 2,000 times to ask what range of values is consistent with the data.

An interval that clears zero is a real effect at this sample size; one that straddles zero is not yet distinguishable from luck. As of this page load, 4 of 4 sit below zero with the whole interval on the losing side — measurably worse than simply quoting the market price. The least-bad of the four is Market × Models rule (80/20 logit blend) at -0.0023.

That is worth stating plainly rather than burying: on the full settled record, these aggregation rules do not beat the market price. Anchoring hard on the price and nudging it 20% toward the model consensus gets closest — the blend loses by a small fraction of what the raw model pool loses, which is the same ordering the Findings page describes. But "closest to the market" is not "better than the market," and an interval that sits entirely below zero is the data declining to support the stronger claim.

The bottom row is the one that counts as evidence. The three above it replay a rule across the same history that was used to pick the 0.8 weight, so they are flattered by construction. The live row contains only forecasts made after the weight was fixed: 1,614 market-rounds, an observed advantage of -0.0038, and an interval that excludes zero. At this sample size that is a real effect, in whichever direction the sign points.

The pairing is what makes these intervals as tight as they are. Comparing two overall Brier scores would drown the signal in the variation between easy and hard markets; comparing per-market differences removes that variation entirely, because both forecasters faced the identical question.

07

A result we had to throw away

Brier scores only grade a forecaster once the market resolves, which is slow and wastes most of the data. There is a sharper test borrowed from finance: instead of asking whether the model is accurate, ask whether it is early. If a model disagrees with the price today, does the price move toward the model tomorrow? A forecaster with genuine information should lead the market it is trading against, and this test yields an observation every round instead of one per resolution.

Run naively, it works. Pooled across all 1,885 round-to-round transitions, the model consensus predicts the direction of the next price move with a slope of 0.0145, and the interval clears zero. That is a headline: cheap LLMs anticipate prediction-market moves.

It is not true. It is a bug in this codebase, measured.

The same test, split by whether our stored price was stale
OLS slope of (next price move) on (model consensus − price), with 95% intervals from a block bootstrap that resamples whole markets.
no differencemodel leads →← model lagsAll transitions, pooledthe naive test — mixes fresh and stale prices2,050 transitions · excludes zero+0.0145Price at t was STALEunchanged since the previous round — our cache, not the market1,204 transitions · excludes zero+0.0223Price at t was FRESHhad moved since the previous round — the only honest test681 transitions · crosses zero+0.0025Block bootstrap, 1,000 resamples over markets. Dot = OLS slope.

The arena refreshes market prices by re-syncing Polymarket's top markets by volume before each round. A market that is still being forecast but has dropped out of that top slice keeps whatever price it was last given — so 64% of round-to-round transitions show no price change at all, not because the market was quiet but because nobody asked it.

When that stale snapshot eventually refreshes, it jumps to catch up with reality. A model that just ran a live web search "predicts" that jump for free — it is not forecasting the market, it is forecasting our own cache. Splitting the sample on that single distinction separates the two stories cleanly: 0.0223 when the price was stale (interval clears zero), and 0.0025 when it was fresh (indistinguishable from zero). All of the apparent edge lives in the stale rows. Against a market price we actually observed moving, the models lead by nothing.

The same conclusion arrives from a direction that does not depend on price refresh at all. Regressing the eventual outcome on the model's disagreement with the price gives a slope of -0.0796 (95% CI [-0.263, 0.166], 195 markets). If disagreement carried information about the truth, that slope would be positive, and it would tell you how far to move from the price toward the models — in other words, the optimal blend weight. The point estimate is negative, but the interval straddles zero, so the honest reading is "no detectable information" rather than "negative information." Either way it gives no support to a positive weight on the models, which is the same verdict the confidence intervals above deliver — reached without using a single Brier score.

Note the sample here: 2,167 observations, but only 195 markets, and observations inside one market share an outcome. The bootstrap resamples whole markets for exactly that reason, which is why the interval is as wide as it is. The effective sample size is the market count, not the row count.

Why this section exists. The result is null, so it wins no argument and appears on no leaderboard. But the near-miss is the most useful thing in this article: a plausible test, a clean significant result, a satisfying story — and an artifact of our own infrastructure. The only reason it was caught is that the confound suggested an obvious falsification test, and the test was run before the headline was written.

It also flags a live defect. If 64% of forecasts are scored against a price that is at least a round old, then "the crowd" on the leaderboard is not quite the market's current opinion — it is a slightly delayed one, and a delayed price is a weaker forecaster than a live one. That handicaps the baseline the models are already losing to, which means the models' deficit is, if anything, understated.

08

The blind forecasts are not entirely blind

Every claim on this site rests on one assumption: the six models never see the market price, so their forecasts are independent of it. The prompt does withhold the price. But the models also run a live web search, and Exa indexes Polymarket, Kalshi, and every site that quotes them. A model can simply read the number it was never told.

It happens constantly. 72% of valid blind forecasts (9,065 of 12,636) name a prediction venue or cite market-implied odds in their own stated reasoning. The detector is deliberately narrow — it matches "Polymarket", "implied probability", "betting odds" and similar, but not "stock market" or "market cap" — so this is a floor, not an estimate.

How often each model does it
Share of that model's valid blind forecasts citing market odds.
🔮DeepSeek V4 Flash1,640/1,918
86%
🐲Qwen3 235B1,580/1,884
84%
🌀Mistral Small 3.21,425/2,114
67%
🌱Seed 1.6 Flash1,489/2,240
66%
🧠GPT-4.1 Mini1,470/2,245
65%
💎Gemini 3.1 Flash Lite1,461/2,235
65%
Does it pull the forecast toward the price?
Within-market test: same market, same round, same price — leaky forecasts versus clean ones.

-1.05 pts95% CI [-1.93, -0.13]

Across 1,154 market-rounds (165 markets) that contained both a leaky and a clean forecast. Negative and clear of zero: citing the market moves a forecast measurably closer to the price, holding the question fixed.

Forecasts landing within half a point of the price: 4.0% versus 1.2% expected by chance (prices shuffled across unrelated markets) — a 3.2× enrichment. Some of these are verbatim: the reasoning quotes an implied probability and the forecast is that number.

Leakage was flattering the models, not fooling us
The same ensemble-vs-crowd comparison, split by how much of the round's forecasting cited a market.
Market-rounds where…nEnsembleCrowdSkill
No model cited a market2040.27640.1425-0.1339
Some did, some didn't11080.15170.1113-0.0404
Every model cited a market8580.13130.1103-0.0210

That table is the part worth sitting with. The intuitive worry is that leakage inflates the models — that they look competitive only because they are copying. The data says the effect is real and larger than the headline suggests: on rounds where no model cited a market, the ensemble loses to the crowd by -0.1339, against -0.0210 where every model cited one. The pooled number reported everywhere else on this site sits between those, because most rounds are mixed.

One honest confound: the no-leakage rounds are harder for everyone — the crowd's own Brier is worse there too, because a market nobody writes about is a market nobody has analysed. But the models degrade far more steeply than the crowd does across those strata, which is what you would expect if part of their apparent accuracy had been borrowed rather than earned.

What this does and does not overturn. It does not rescue the models — the direction of every finding on this site survives, and the honest version of "cheap LLMs lose to the market" is worse than the number we have been reporting. What it does undermine is the word independent. The ensemble argument on The Lesson assumes six forecasts that err in unrelated ways; forecasts partly anchored to a shared price are correlated by construction, and averaging cannot diversify away an error they all inherited from the same source.

The fix is not obvious. Removing web search would make the models genuinely blind and much worse, and would stop testing anything interesting. Excluding prediction-market domains from the search plugin is the narrow repair, and it is the one worth trying — but it changes the data-generating process, so it splits the dataset in two and every comparison across the boundary becomes suspect. That is a decision about the experiment, not a bug fix.

Caveats that apply to every chart above. This is one platform, one market-selection rule, one roster of cheap models, and one stretch of news. Categories are Polymarket's own tags, so the slicing inherits whatever inconsistency those tags have. And the blend weight used by the hybrid was chosen on earlier data — the Findings page separates that backtest from the live out-of-sample record, and only the latter is evidence.

Methods for every number are in methodology; the reasoning behind the design is in the tutorial.