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

How the numbers are computed

Every number on this site is computed deterministically from the underlying source data. AI-generated text is labeled and validated by a separate model pass.

01Aggregation methods

Every chart can switch between 6 methods. None are 'right' — each makes different tradeoffs.

Simple mean
Unweighted arithmetic average of polls in the rolling window. Every poll counts the same. Noisy but transparent.
Weighted
Weights = sample size √(n/600) × recency exp(-age × ln(2)/14d) × pollster accuracy weight (1.0 default; up to 4.0×).
House-corrected
Same as Weighted, but each pollster's measured signed bias is subtracted from each result before averaging. Production default for race pages.
Trimmed
Same weights as Weighted, but the highest and lowest 10% of polls per anchor date are dropped. Robust to outliers.
LOESS
Local polynomial regression (frac=0.3). Smoother visual trend, less reactive to single polls. Requires ≥3 polls per candidate.
Kalman state-space
Models the true value as a latent random walk and polls as noisy observations. The smoothest line — closest to what 538 / Silver Bulletin show.
02Race ratings+

Each race gets one of: Safe / Likely / Lean / Tilt × D/R, plus Tossup. Source priority: polls → markets → PVI baseline.

Margin |D−R|Rating
≥ 15 ptSafe
5–15 ptLikely
2–5 ptLean
0.5–2 ptTilt
< 0.5 ptTossup

When no recent polls exist, we fall back to (a) prediction market implied probability or (b) the state's Cook PVI — one rating bucket more conservative than the PVI suggests.

03Pollster scorecards+
  • Race scorecard — for polls within 21 days of an election with a known outcome, compute implied two-way margin (R% − D%) − actual margin = error. Mean error is the pollster's accuracy; signed mean error is the bias.
  • Topic scorecard — for topic polls (approval, generic ballot, etc.) where there's no "outcome", compare each poll to the rolling consensus of all other pollsters on the same topic within ±30 days. The deviation is the pollster's house effect.

Pollsters with mean_error ≤ 4pt and ≥3 scored polls get an aggregation weight = 4 / mean_error, clipped to [0.25, 4.0].

04Chamber control probability+

Monte Carlo, 20,000 simulations. Each race draws independently from its rating-implied D-win probability:

RatingP(D wins)
Safe D99%
Likely D92%
Lean D78%
Tilt D60%
Tossup50%
Tilt R40%
Lean R22%
Likely R8%
Safe R1%
Caveat · info

Independent draws over-state polarization in close years. Real elections have national waves — a +3 R cycle moves all races, not each one independently. A correlated-swing model is on the roadmap.

05Backtest results+

Leave-one-cycle-out cross-validation: train on every cycle except one, then score the held-out cycle. Below is the most recent held-out cycle (2024, n=43 races) per model, sorted by mean absolute error. Lower is better.

ModelMAERMSEBrierECE
Ensemble (production)6.56pt12.00pt0.06220.0605
Random forest7.53pt13.88pt0.05580.0575
Gradient-boosted (qgbt)7.76pt15.09pt0.05600.0703
Ridge regression8.35pt13.65pt0.06980.0724
Kalman state-space8.38pt13.39pt0.06070.0418
PVI baseline12.50pt17.01pt0.12040.1428
Prediction markets18.50pt22.48pt0.25000.0814

Source: /data/backtest.json · generated 2026-05-04 · polagg-v1 · scored 21d before election. Full backtest →

Headline · warning

Polling-industry error is correlated within a cycle: when polls miss, they tend to miss the same direction nationwide (2016 and 2020 both under-counted Republican support). The house-effect correction removes each pollster's persistent lean, but it cannot anticipate a fresh, cycle-wide systematic miss — that residual is the largest unmodeled source of error.

06AI-generated content+

Daily reports, race summaries, topic summaries, state briefings, ballot-measure explainers, weekly digests, and glossary entries are generated by Claude (via the local CLI). Each piece goes through a separate validator pass that checks every claim against the source data, and daily/weekly reports additionally go through an editorial reviewer gate. Content that fails validation or review iswithheld — only verified content is published.