DEFINITIONS AND COVERAGE

About the data

What the forecast numbers mean, what the history includes, and where the published record has limits.

Current forecast

The snapshot contains 506 listed races: 435 House districts, 35 Senate races, and 36 Governor races. Forecast values are presented as supplied in the local data files. The pages do not fetch live forecasts.

The forecasting approach and its underlying model may change as I continue refining it, until I am satisfied with its performance. This page presents the published outputs for the snapshot date above.

Candidate names are maintained in a separate linked reference. They are not part of the party-level margin or win chance.

Margins, chances, and ratings

Margins are Democratic minus Republican in percentage points. Positive values favor Democrats; negative values favor Republicans. Win chances are the published chance for each party and sum to 100%.

Governor win chances in this release apply fixed logit sharpening, k=1.5, to the prior-only calibrated probabilities. This changes confidence while preserving the favored party and predicted margin. The factor was compared on the 2018, 2020, 2022, and 2024 validation cycles; those same cycles informed selection for the incumbent and challenger, so the score gains are validation evidence, not an independent holdout.

Ratings group the favored candidate’s win chance: Toss-up below 60%, Lean from 60% to below 80%, Likely from 80% to below 98%, and Safe at 98% or higher. A rating is a quick label; it does not change the margin or chance.

Seat outlooks

Expected House seats add the 435 listed Democratic win chances. The saved House seat range uses an independent-race Poisson-binomial distribution built from those same district probabilities. Governor expected wins sum the 36 listed race chances. The Senate outlook combines 35 listed races with 65 seats already held. Seat ranges assume races are independent; they do not include shared election-wide or state-level movement. Expected totals, ranges, and favored-race counts describe different things.

Historical results

The History page summarizes the 2018, 2020, 2022, and 2024 elections. It shows races with both a published forecast and a recorded result.

House-wide actual seat totals appear separately for context and are not compared with partial race coverage.

Forecast archive and replay

The archive preserves prior forecast snapshots and compares each release with the immediately older saved snapshot. Source dates and inputs differ between releases, so these comparisons are descriptive and should not be attributed to specific new polls.

A point-in-time replay also needs matching, timestamped source inputs for each forecast date. Those records are not available here, so the site does not draw a day-by-day forecast curve. The History page shows past election results separately.

View the forecast archive

Sources and dates

Source dates can differ by office and may be earlier than the snapshot date. Poll fieldwork dates show when interviews took place; they do not by themselves establish when results were first published. Available source links and dates appear beside the relevant data where supplied.

Poll data and Governor polling averages include data from Polling Forecast. Its own forecasts and summaries are licensed under CC BY 4.0 where identified; poll records carry source-specific terms. See its data and license notes for details.

The website runs locally from static files. It does not contact polling or forecast APIs when opened.

Visitor counts

The public site uses GoatCounter for aggregate visit counts. It sends the page path only—without query strings, page titles, or referrer URLs—and runs only on the published GitHub Pages domain.

GoatCounter says it does not store full IP addresses, full user-agent headers, or browser cookies. It temporarily keeps an IP and user-agent combination in memory for up to eight hours to avoid counting repeat visits. Its hosted service can also collect aggregate browser, operating-system, location, language, and screen-width summaries; these optional categories can be disabled in the account settings. Individual pageview records are off by default. See the GoatCounter privacy policy: privacy details.