← Presidential Performance

2026 election lens · Report

2026 Midterm Forecast

Three independent models + the live generic ballot, combined into one ensemble forecast for the 2026 US House midterm. Current ensemble point forecast: -42 seats for the incumbent party (union 90% band -61 to -12).

Last updated November 01, 2026

 

Forecast as of November 01, 2026

The incumbent — Donald J. Trump (2nd Term) (R) — is in a unified-R setup (same party controls House + Senate + White House) heading into the 2026 midterm. Historical baseline for unified presidents in midterms: mean -34.2 seats, median -38.0, across 16 cases 1946–2022.

Ensemble point forecast
-42 seats
Incumbent R party House swing (90% band: -61 to -12)
Generic ballot (avg of 5)
D +8.6 pp
5-aggregator consensus, as of October 30, 2026
President approval
37.6%
Donald J. Trump (2nd Term) (R)

Election: 2026-11-03. Weeks until election: 0. Current Congress: 119th (House: D 215 / R 220; Senate D 47).

Three models, one ensemble

The ensemble blends three independent approaches to the same question: how many House seats will the incumbent party lose? Each signal has different inputs and different failure modes. The ensemble point is the average; the union band spans each signal’s P10/P90.

KNN
Nearest 5 historical analogs
-45 seats
P10 -60  /  P90 -22
The 5 closest historical midterms by approval + setup + first-term status + incumbent-party House share. Point forecast is the mean of their outcomes (-45); median is -54. Range across the 5: -64 to -9 seats; standard deviation 21.4.
Ridge regression
Linear model, 4 features, LOO cross-validated
-36 seats
P10 -60  /  P90 -12
Features: approval, unified-government flag, first-term flag, incumbent-party House share. LOO RMSE: 18.5 seats. Residual std: 18.9. Coefficients tell the story: approval is the dominant lever (+8.18 per standard deviation).
Generic ballot
Linear fit on 8 historical cycles
-44 seats
P10 -61  /  P90 -28
Slope: 4.48 seats per point of generic-ballot margin. R² = 0.768. Current generic ballot (D minus R): +8.6 pp, which translates to a -8.6-point lean against the incumbent party. Residual std: 13.0.
Ensemble
-42 seats
Average of the 3 signal points. Signal spread: 9 seats. Union P10/P90: -61 to -12 seats.

Current generic ballot — 5 aggregators

The headline input to the Generic Ballot signal. All 5 aggregators agree on direction and roughly on magnitude — Democrats leading by between 8.0 and 8.9 points.

Aggregator As of R D Leader Margin
Decision Desk HQ January 9, 2025 – October 26, 2026 R 42.6% D 51.5% D Democrats +8.9%
FiftyPlusOne January 9, 2025 – October 26, 2026 R 43.4% D 52.2% D Democrats +8.8%
NBC News January 9, 2025 – October 26, 2026 R 44.0% D 52.0% D Democrats +8.0%
RealClearPolitics October 8–26, 2026 R 43.2% D 51.4% D Democrats +8.2%
Silver Bulletin January 9, 2025 – October 26, 2026 R 42.4% D 51.3% D Democrats +8.9%
Average October 30, 2026 R 43.1% D 51.7% D Democrats +8.6%

Source: https://en.wikipedia.org/wiki/2026_United_States_House_of_Representatives_elections

The five nearest historical analogs

The KNN signal’s five closest historical midterms by approval + setup + first-term + incumbent-party House share. Lower distance = closer match.

Year Incumbent Party Setup Approval House swing Distance
2022 Joe Biden D Unified D 41.0 -9 0.256
2018 Donald Trump R Unified R 41.7 -42 0.675
1946 Harry S. Truman D Unified D — -54 0.686
2010 Barack Obama D Unified D 48.5 -64 1.331
1994 Bill Clinton D Unified D 50.0 -54 1.421

Historical baseline — 25 midterms, 1946 to 2022

House seat swings for the incumbent party across every midterm since the end of World War II. Unified government (same party controls House + Senate + White House) performs worse than divided — which is the setup Trump II is defending today.

Cohort N Mean Median Min Max StDev
All midterms 25 -27.8 -27.0 -70 +9 23.8
First-term midterm 16 -25.2 -17.0 -64 +9 24.0
Later-term midterm 9 -32.4 -34.0 -70 +4 24.1
Dem incumbent 13 -30.8 -29.0 -70 +9 27.2
Rep incumbent 12 -24.6 -22.5 -53 +8 20.1
Unified gov (Trump II) 16 -34.2 -38.0 -70 +9 23.7
Divided gov 9 -16.3 -12.0 -48 +8 20.3

All numbers are incumbent-party House seat change (negative = incumbent lost seats). Senate stats exist too (see JSON).

Methodology + caveats

Three independent signals, one ensemble.

  • KNN (k-nearest neighbors, k=5). Finds the 5 historical midterms closest to today in approval, unified-government flag, first-term flag, and incumbent-party House share. Point forecast = mean of the 5 outcomes.
  • Ridge regression (L2 regularization, alpha=10). Trained on 20 historical midterms using the same 4 features. Leave-one-out RMSE = 18.47 seats, which is the honest measurement of out-of-sample error.
  • Generic ballot fit. Simple OLS: house swing ~ generic-ballot margin, trained on 8 historical cycles where a reliable generic ballot exists. R² = 0.77 — the strongest single predictor.
  • Ensemble is the equal-weight average of the three point forecasts. The union band spans each signal’s P10/P90.

What this cannot predict.

  • Individual-district outcomes. The forecast is seat swing, not seats won by name.
  • Turnout shocks. Unusual events (pandemic, major scandal, high-profile retirement wave) can push results outside the 90% band.
  • Redistricting effects. Mid-cycle map changes shift the baseline; the model treats the current map as given.
  • Senate. This forecast is House-only. Senate dynamics (which states are up in which cycle) require a different model.

Data sources.

  • Historical seat counts, inaugurations, Congress membership: presidential_performance.db historical_midterms table. Sourced from Clerk of the House + US Senate historical records.
  • Approval ratings: Gallup, scraped nightly via approval_scraper.py, stored in all_presidential_approval_ratings.csv + database.
  • Generic ballot: Wikipedia (which aggregates DDHQ + FiftyPlusOne + NBC + RCP + Silver Bulletin), fetched nightly via midterm_polls.py.

Model source: midterm_model.py. Report regenerates every Thursday night (weekly_midterm cadence group) plus the nightly timestamp refresh via daily_reports.

Related reports