Verify the math
2026 US House forecast: 83.2% probability with expected democratic seats 244.5 seats, backed by 96/100 (Strong) source readiness.
Independent math audit
All checked equations reconcile across steps 4, 5, 6, 7, 8, 9.
Every data figure below opens page 1 of a PDF receipt at its exact source cell or checked calculation — the same sealed data the dashboard reads, as of 2026-08-25.
Follow the math
Each step shows the real formula with the run's actual numbers — no rounding away the work.
Click any number
Every figure opens a PDF on page 1 with the exact stored cell or checked calculation highlighted.
Find it yourself
Some numbers live in big CSVs. Each step's footer says exactly which file, row, and column to open.
Steps 3–6 run once per district inside the model. They're worked here through MI-10, this run's most-likely tipping-point seat, as a representative example.
Start from the national House lean implied by current generic-ballot polls — the mapwide tilt before any single district is touched.
national environment = generic-ballot average, as a D/R margin national_poll_margin = D +5.5 (that is +2.4 pts versus the no-polling baseline)
Show how much evidence is under that environment read: how many usable polls fed it and how much of the 435-seat map polling actually reaches.
usable national polls = 542 map covered by direct polling = 26% (13 states with state polls) feed health: national_generic_ballot accepted 542 rows
For every one of the 435 districts the model blends the certified past lean, candidate status, and the state and national environment into one margin. Worked here through MI-10.
district lean = -9.0 pts (certified past results) candidate status = +2.6 pts (incumbent / open seat) state environment = -0.2 pts (statewide climate) national environment = +16.0 pts (House climate from Step 1) model remainder = -0.5 pts (structured prediction + priors) ---------------------------------- pre-poll margin = D +8.9 decomposition only: the remainder is derived from pre_poll_margin, so this is not an independent check
Where state or district polls exist, they nudge that district's margin. Districts without polls keep their pre-poll margin from Step 3.
pre-poll margin = D +8.9 (Step 3) polling shift = +3.5 pts ------------------------------ forecast margin = D +12.4 verification check = PASS (recomputed D +12.4; published D +12.4) all-district Step 4 audit = PASS (435/435 canonical districts reconcile) (MI-10: 0 direct House polls, 0 effective state polls)
Divide the forecast margin by the race's typical miss size, then read that off the bell curve to get a model win chance.
forecast margin = D +12.4 (Step 4) typical miss (SD) = 9.5 (idiosyncratic + national + state error, combined) z = margin / SD = 12.4 / 9.5 = 1.31 recomputed center/SD chance = bell-curve(z) = 90.5% stored center/SD chance = 90.5% probability domain = PASS (stored value must be in [0,1]) verification check = PASS (recomputed 90.5%; published 90.5%) all-district Step 5 audit = PASS (435/435 canonical districts reconcile)
Combine that model chance with the district's history-only baseline, then apply the correction learned from past elections so published chances match real win rates.
center/SD chance = 90.5% (Step 5) history-only chance = 47.8% (district's long-run baseline) weight on history = 45% raw chance = 45% x 47.8% + 55% x 90.5% = 71.3% recomputed raw chance = 71.3% verification check = PASS (recomputed 71.3%; published 71.3%) probability/weight domains = PASS (all stored values must be in [0,1]) calibration (none) = +0.0 pts ---------------------------------- final win chance = 71.3% verification check = PASS (recomputed 71.3%; published 71.3%) all-district Step 6 audit = PASS (435/435 canonical districts reconcile)
Add up all 435 calibrated district win chances. The total is the expected number of Democratic seats — a district at 80% adds 0.80 of a seat.
expected seats = sum of final_prob across all 435 districts
= 244.5 seats
published value (national_summary) = 244.5 seats
district integrity = PASS (canonical 435-seat roster with final_prob in [0,1])
verification check = PASS (recomputed 244.5 seats; published 244.5 seats)
distribution integrity = PASS (ordered buckets, draws, probability, and cumulative_probability reconcile)
distribution-mean check = PASS (simulation mean 244.5 seats; published 244.5 seats; 5-SE tolerance 0.5 seats)Run the full 435-seat map thousands of times, letting districts swing together. Count the Democratic seats each time and read the dense middle 80% of outcomes.
simulated elections = 100,000 full maps majority line = floor(435 / 2) + 1 = 218 seats 80% band = [10th percentile, 90th percentile] of Dem seats recomputed = 207 to 281 seats published = 207 to 281 seats distribution integrity = PASS (ordered buckets, draws, probability, and cumulative_probability reconcile) verification check = PASS (recomputed 207–281 seats; published 207–281 seats)
Count every simulated election that reached the 218-seat majority. Their share of all simulations is the House-control probability.
control chance = simulations with 218+ Dem seats / all simulations
= 83,182 / 100,000
recomputed = 83.2%
published = 83.2%
distribution integrity = PASS (ordered buckets, draws, probability, and cumulative_probability reconcile)
verification check = PASS (recomputed 83.2%; published 83.2%)Publish the headline answer next to the data behind it, so the reader sees how well-sourced the run is before trusting the number.
headline = House-control probability = 83.2% => Democrats favored to hold control built from 7 of 9 data feeds loaded MI-10 official-data grade = Good
The full source shelf and the public records behind every figure live on the sources page.