HOW IT WORKS · MP-26
From every poll to one probability.From every poll to one probability.
MP-26 turns public polls (VoteHub and Wikipedia) and its own race-level baseline into House and Senate odds in seven auditable steps. Every chart below runs on the live model, its data and its engine.
The short version
Five steps, no math.
- 01
Start from the 2024 map
Each of the 435 House districts and 35 Senate races starts from how it voted for president in 2024 against the country, plus the edge of the party defending the seat: who is ahead, and by how much.
—e.g. one Senate race - 02
Take the country's temperature
Average the national polls that ask which party people will vote for in Congress, newer, bigger and likely-voter polls counting more, and check it against what the Senate polls imply: few national polls have come out since the summer.
—weighted average of all two-party polls - 03
Add the race's own polls
Every race moves with the national average. Where a race has its own polls, they are blended in, weighted by how precise they are; how much each piece counts was fitted on past midterms.
2014–2022the midterms the weights are fitted on - 04
Admit what we don't know
Any race can miss by around 7.5 points. Part of that miss hits every race at once, because polls tend to be wrong in the same direction everywhere.
±7.5points per race, ±2.9 of it shared nationally - 05
Play the election 50,000 times
Each run rolls the dice for the country and for every race, then counts the seats. The odds are simply how often each party wins a majority.
—House and Senate odds
Want the math? The seven steps below run on the live model. Unsure about a word? Read the glossary →
01 Inputs
Public polls and the 2024 map feed the model. Everything else is context.
MP-26 does not collect polls or rate races itself. It reads public polls from VoteHub (CC BY 4.0), national and race by race, and Wikipedia's Senate polls (CC BY-SA 4.0), builds each race's starting margin from the 2024 presidential results and the party defending the seat, adds the current Senate composition, and keeps other data strictly out of the probabilities.
- Refresh every 15 minutes, with a dated fallback snapshot
- Model run —
Feeds the model
Context only
02 Poll weighting
Recent, large, likely-voter polls count most.
Every poll gets a weight from three factors. Recency halves every 14 days, sample size counts by its square root, and likely-voter samples beat registered voters and adults. The weighted average of the national polls is the generic ballot; the next step blends it with what the Senate polls imply.
w = 0.5age/14 × √(n / 1,000) × pop- pop LV 1 · RV 0.86 · A 0.72
- Result —
- Partisan a poll paid for by one party counts ×0.5 and moves 4 points against it; real examples in step 03
03 Movement
Each race starts from its own number, and you can take it apart.
There is no outside forecast to catch up with. Each race starts from today's national environment (the generic ballot blended with what the Senate polls imply once each state's fundamentals are taken out), plus its 2024 presidential lean and the incumbent's edge: in the House, part of how far the incumbent ran ahead of the 2024 presidential result where their party already held the seat. Weights are fitted on the 2014–2022 midterms. Where the race has its own polls, they are blended in by their precision; polls paid for by one party count half and are corrected 4 points.
margin = environment + a + b × lean2024 + c × incumbent + k × personal vote04 Race odds
Every race becomes a probability.
Each of the 470 races starts from its own baseline margin. A normal error of ±7.5 points turns that margin into a win probability.
- Tipping point —
05 Error budget
Races miss together, not one by one.
Polls tend to miss in the same direction everywhere. So each race's error is split in two: a national error shared by all races, and local noise of its own.
outcome = margin + national + local- National ±4.1 ballot pts × 0.7 = ±2.87
- Total per race ±7.5 pts
06 Simulation
Run the election 50,000 times.
One simulation draws a national error, then a local error for every race, and counts the seats each party wins. Repeat 50,000 times per chamber and the share of runs with a majority is the control probability.
- House 435 districts, 218 to win
- Senate 35 races + 65 seats not up; a 50–50 tie goes to the GOP via the Vice President
07 Outputs
One response feeds the whole site.
The API returns control odds, seat medians and 80% intervals, and a probability for every race. The home story, the Senate builder, the district map, race pages and the model page all read the same numbers.
- Deterministic fixed seeds: same inputs, same output
- Cached until the polls or date change
08 Versions & limits
Versioned, documented, and backtested.
Every change to the method gets a new version and a changelog. MP-26 as it runs now has been replayed on the 2018 and 2022 midterms and scored; its coefficients are fitted on the 2014–2022 midterms, so that test is not independent and the model stays labelled experimental.
Model validation →Sources and methodology →- v0.1Top-down chambers against a fixed D+7.4 baseline. The Senate read 69% while its own races implied 43%.
- v0.2Like-for-like movement, Senate simulated race by race, race error calibrated to the benchmark.
- v0.3House simulated race by race too; national error sized to the benchmark's correlated error.
- v0.4Race margins read as the benchmark's expected D−R vote, not its expected winning margin; race error refitted to ±7.5.
- v0.5 · currentOwn baseline instead of an outside benchmark: 2024 presidential lean, incumbency and the incumbent's 2024 personal vote, moved by the national environment and blended with each race's polls (party-sponsored polls corrected), fitted on the 2014–2022 midterms. Polls from VoteHub and, for the Senate, Wikipedia, with a 14-day half-life.
Known limits
- Normal errors; real misses can have fatter tails.
- One national factor; no regional correlation.
- No pollster house effects beyond a correction for party-sponsored polls; incumbency and the incumbent's personal vote are the only candidate factors.
- The baseline is fitted on the 2014–2022 midterms, the ones it is replayed on, so that test is not independent.
