NonpartisanIndependent, data-first coverage of US elections — polls, forecasts, and prediction markets, refreshed daily.Updated daily.What's new·Methodology·Send feedback
Forecast accuracy · public scorecard

How accurate is the model?

We rate every race, every day. To keep us honest, this page is automatically generated from held-out evaluations — races the model never saw during training. We do not describe how the model works on this page. We describe how well it performs.

Typical miss
5.55 pt
median absolute error · margin (n=1383)
Right winner
95.2%
fraction of held-out races where the called winner won
High-confidence calls
97.2%
races we rated ≥80% — accuracy (n=1301)
Calibration gap
0.54 pt
expected vs actual · lower is better
In short

In a typical race, our predicted final margin is off by about 5.55 points (the median miss across 1383 held-out races). We call the right winner 95.2% of the time overall, and 97.2% of the time when we say a race is likely or safe. When we say "60% chance Democrat wins", that race breaks D about 60% of the time — though we're a little overconfident on the very tightest races, and we're working on it.

Are the probabilities trustworthy?

Reliability diagram

Each dot is a probability bin from the full held-out set (n=14–635 races per bin). Closer to the diagonal = better calibrated. Whiskers are 95% confidence intervals; dot area scales with the number of races in the bin. Overall ECE (expected calibration error) = 0.7 pt.

PREDICTED · D PROB %OBSERVED · D WIN %
Has it been consistent?

Per-cycle accuracy

Mean absolute error on each historical cycle's held-out races (no peeking).

2468101214202011.2420227.9120247MEAN ABSOLUTE ERROR (PT)
Does it improve as election day approaches?

% correct by horizon

Share of held-out races where the called winner won, at each forecast horizon. Leftmost is earliest, rightmost is closest to election day. Numbers are flat within ~1 percentage point — the model's accuracy is stable from 90 days out through the final week. Note: the y-axis is truncated to 85–95% to make the small horizon-to-horizon differences visible; bar heights are not proportional to zero.

878991939590D OUT94.8760D OUT94.8730D OUT95.0821D OUT95.1614D OUT95.377D OUT95.44
90d out
94.87%
60d out
94.87%
30d out
95.08%
21d out
95.16%
14d out
95.37%
7d out
95.44%

How the model compares to each forecaster

poliagg-v34 · same race set per rater · 3 of 10 wins overall
Beats all 10 forecasters
on well-polled races (≥5 polls · n=307)

When a race is well-polled, the model beats every one of the 10 forecasters on their own race set. This is the model's strongest ground: well-polled races are also the competitive ones, where the raters' own accuracy is worst — so a clean sweep here is harder than it looks, not easier.

ForecasterRaces comparedTheir BrierOur BrierWinner
Elections Daily480.06970.0545Model
FiveThirtyEight1040.08490.0640Model
Sabato's Crystal Ball1720.08890.0668Model
Split Ticket190.08140.0456Model
Decision Desk HQ380.07570.0395Model
Cook Political Report1980.11080.0734Model
CNalysis250.07420.0356Model
Inside Elections1070.10190.0630Model
The Economist190.07950.0335Model
RealClearPolitics1070.12370.0749Model

Across all races each forecaster rated

Each row compares the model against one external forecaster (Cook, Sabato, Inside Elections, etc.) on only the races that forecaster rated — including the safe, sparsely-polled seats where every forecaster does well and the gaps are tiny. Same race set both sides, so no one's penalized for races they didn't call. Lower Brier score wins.

Methodology — read before comparing: the model is scored at its 21-days-before-election horizon, while each rater is scored on their final pre-election rating (often the day before). The raters therefore have up to three extra weeks of polling that the model does not. This handicaps the model, so a tie or narrow loss here is stronger for the model than it looks. Predictions come from leave-one-cycle-out cross-validation across 12 cycles (2002–2024); the model never sees the cycle it is scored on.
ForecasterRaces comparedTheir BrierOur BrierDeltaWinner
The Economist4150.03890.0464+0.0075The Economist
Inside Elections12660.03500.0423+0.0073Inside Elections
FiveThirtyEight5700.03960.0457+0.0061FiveThirtyEight
Sabato's Crystal Ball14350.03670.0415+0.0047Sabato's Crystal Ball
Elections Daily4110.02790.0312+0.0033Elections Daily
Cook Political Report15270.04050.0438+0.0033Cook Political Report
Decision Desk HQ5610.03580.0379+0.0020Decision Desk HQ
CNalysis4170.02530.0245-0.0008Model
Split Ticket310.05480.0317-0.0231Model
RealClearPolitics1420.10120.0654-0.0358Model

Brier score = mean squared error on the predicted win probability. 0 = perfect, 0.25 = coin flip; lower wins. Delta is (our Brier − their Brier): positive means we scored worse than them on the shared race set, negative means we did better. Raters with fewer than 20 overlapping races are excluded.

When did the model get it wrong?

10 worst held-out calls
RaceCycleQualityPredictedActualMissWhy
AZ-8 · House · 20222022mediumR +12.4R +94.081.56Limited polling data · Sparse polling · Model leaned too far D
AL-7 · House · 20202020mediumD +18.6D +97.278.60Limited polling data · Sparse polling · Model leaned too far R
AL-6 · House · 20202020mediumR +23.2R +97.173.92Limited polling data · Sparse polling · Model leaned too far D
AZ-9 · House · 20222022mediumR +22.8R +96.073.22Limited polling data · Sparse polling · Model leaned too far D
FL-2 · House · 20202020mediumR +26.8R +95.768.88Limited polling data · Sparse polling · Model leaned too far D
LA-6 · House · 20222022mediumD +0.5R +67.467.85Limited polling data · Sparse polling · Decided by more than expected · Wrong winner called · Model leaned too far D
WI-6 · House · 20222022mediumR +29.1R +94.965.78Limited polling data · Sparse polling · Model leaned too far D
CA-5 · House · 20202020mediumR +7.9D +52.260.07Limited polling data · Sparse polling · Wrong winner called · Model leaned too far R
SC-4 · House · 20222022mediumR +32.6R +90.858.17Limited polling data · Sparse polling · Model leaned too far D
AL-5 · House · 20242024mediumR +38.2R +95.457.23Limited polling data · Sparse polling · Model leaned too far D
Performance by data quality

The model knows what it doesn't know

high quality
3.64 pt
median miss
90.9% called correctly · n=66
medium quality
5.64 pt
median miss
95.4% called correctly · n=1317
low quality
No held-out races in this bucket yet
n=0