← kevinmdeluca.com  ·  PLSC 2219 · Yale University

2026 Election Forecast Archive

A daily archive of who is forecasting the 2026 midterms, what they say, and where they disagree — plus the models we build in class from public data.

Snapshot 2026-08-20 · 2 snapshots collected

The class models

Built in PLSC 2219 from public-domain inputs, and published in full because every input is redistributable. These are teaching models: the point is that you can see, and argue with, every choice inside them.

PLSC 2219 class model
Fundamentals · national House margin
D+9.5
80% interval 3.6 to 15.4 points

Fit on 20 midterms, 1946–2022: presidential approval, real income growth, and seats held before the election.

PLSC 2219 class model
Polling · Senate
15.0 of 35 D seats
80% interval 12–18 · with 34 holdovers ⇒ 49 total

Generic ballot D+6.5, shrunk by λ=0.88 to an election-day tide of D+5.7, then carried to states by PVI.

Read this before quoting a probability. This model puts the Democrats' chance of reaching 50+ Senate seats at 39% — but that rests on a bookkeeping assumption, not a forecast: how many Democratic seats are not on the ballot. Move it by one seat and the headline moves about twenty points:
Holdover D seatsP(D reach 50+)
3323%
34 (used)39%
3559%

No modelling choice in the model matters this much. That is the lesson, not a footnote.

Senate, race by race

Expected margin is the election-day national tide plus twice the state's partisan lean. Lean is our own reconstruction from official returns, not a licensed index. Nothing here knows who the candidates are — which is exactly why it disagrees with the professionals in states with unusually strong recruits.

StateExpected marginP(D)State lean
MAD+33.6>99%D+14.0
DED+21.7>99%D+8.0
RID+21.6>99%D+8.0
ORD+21.0>99%D+7.7
ILD+18.4>99%D+6.3
COD+17.6>99%D+6.0
NJD+14.298%D+4.3
MED+13.398%D+3.8
NMD+13.098%D+3.7
VAD+12.797%D+3.5
MND+10.795%D+2.5
NHD+9.793%D+2.0
MID+5.379%R+0.2
GAD+4.173%R+0.8
NCD+2.967%R+1.4
OHR+4.923%R+5.3
FLR+5.122%R+5.4
TXR+6.217%R+5.9
IAR+6.516%R+6.1
AKR+7.214%R+6.5
KSR+10.46%R+8.0
SCR+10.95%R+8.3
MTR+14.02%R+9.8
NER+14.91%R+10.3
LAR+15.81%R+10.8
MSR+15.91%R+10.8
TNR+22.9<1%R+14.3
SDR+23.5<1%R+14.6
ALR+23.9<1%R+14.8
KYR+24.2<1%R+14.9
ARR+24.9<1%R+15.3
OKR+29.0<1%R+17.3
IDR+30.4<1%R+18.0
WVR+36.2<1%R+21.0
WYR+40.8<1%R+23.2

What the archive holds

Every forecaster we are permitted to collect, captured daily and stored as raw bytes before anything is parsed, so a parser fixed in October can be re-run over the whole history.

single source
Fundamentals · national House margin
D+9.5
class model — not a category average
single source
Professional · national House margin
D+5.7
grant_williams — not a category average
513 cells are withheld today. Category averages only for sources whose terms do not permit per-forecaster republication during the cycle. Averages containing any such source are shown only with at least 3 contributors. Full per-forecaster data will be released as a documented archive after the election.

Where the forecasters disagree

139 seats on which the raters do not all say the same thing, sorted by how far apart they are. Ratings are transcribed from Wikipedia (CC BY-SA) and are deliberately never averaged: “Lean R” is not a number, and turning it into one is a modelling choice worth arguing about out loud.

SeatSpreadRatings
OH-075cook: Toss-up · ddhq: Toss-up · fox_power_rankings: Likely R · inside_elections: Lean D · sabato: Toss-up
CO-044cook: Solid R · ddhq: Likely R · fox_power_rankings: Likely R · inside_elections: Toss-up · sabato: Likely R
FL-144cook: Lean R · ddhq: Lean D · fox_power_rankings: Lean R · inside_elections: Tilt D · sabato: Toss-up
NC-114cook: Lean R · ddhq: Lean R · fox_power_rankings: Toss-up · inside_elections: Lean D · sabato: Toss-up
CO-083cook: Toss-up · ddhq: Lean D · fox_power_rankings: Lean D · inside_elections: Likely D · sabato: Toss-up
MI-103cook: Lean R · ddhq: Toss-up · fox_power_rankings: Toss-up · inside_elections: Tilt D · sabato: Toss-up
NC-013cook: Lean R · ddhq: Toss-up · fox_power_rankings: Toss-up · inside_elections: Tilt D · sabato: Toss-up
TX-343cook: Toss-up · ddhq: Lean D · fox_power_rankings: Toss-up · inside_elections: Likely D · sabato: Toss-up
TX-353cook: Likely R · ddhq: Lean R · fox_power_rankings: Lean R · inside_elections: Toss-up · sabato: Lean R
VA-013cook: Lean R · ddhq: Likely R · fox_power_rankings: Toss-up · inside_elections: Tilt R · sabato: Lean R
WA-033cook: Toss-up · ddhq: Likely D · fox_power_rankings: Lean D · inside_elections: Likely D · sabato: Lean D
AL-022cook: Likely R · ddhq: Likely R · fox_power_rankings: Likely R · inside_elections: Tilt R · sabato: Likely R
AZ-012cook: Toss-up · ddhq: Lean D · fox_power_rankings: Lean D · inside_elections: Lean D · sabato: Toss-up
AZ-062cook: Toss-up · ddhq: Lean D · fox_power_rankings: Lean D · inside_elections: Lean D · sabato: Toss-up
CA-132cook: Lean D · ddhq: Likely D · fox_power_rankings: Lean D · inside_elections: Solid D · sabato: Lean D
CA-222cook: Toss-up · ddhq: Lean D · fox_power_rankings: Toss-up · inside_elections: Lean D · sabato: Lean D
CA-452cook: Likely D · ddhq: Likely D · fox_power_rankings: Lean D · inside_elections: Solid D · sabato: Lean D
CO-052cook: Likely R · ddhq: Likely R · fox_power_rankings: Likely R · inside_elections: Tilt R · sabato: Likely R
FL-072cook: Likely R · ddhq: Likely R · fox_power_rankings: Likely R · inside_elections: Tilt R · sabato: Likely R
FL-092cook: Likely R · ddhq: Lean R · fox_power_rankings: Likely R · inside_elections: Tilt R · sabato: Likely R
FL-252cook: Toss-up · ddhq: Toss-up · fox_power_rankings: Toss-up · inside_elections: Lean D · sabato: Toss-up
IA-012cook: Toss-up · ddhq: Lean D · fox_power_rankings: Toss-up · inside_elections: Lean D · sabato: Toss-up
IA-022cook: Lean R · ddhq: Lean R · fox_power_rankings: Lean R · inside_elections: Toss-up · sabato: Lean R
IA-032cook: Toss-up · ddhq: Lean D · fox_power_rankings: Toss-up · inside_elections: Lean D · sabato: Toss-up
ME-022cook: Likely R · ddhq: Lean R · fox_power_rankings: Lean R · inside_elections: Tilt R · sabato: Likely R

Showing the 25 widest of 139.

Methods, and what we are unsure about

The judgment calls that move the answer most, stated rather than buried.

The four choices that matter
ChoiceWhat we didWhy it is arguable
Generic-ballot shrinkageλ decays from 1.0 at Election Day toward 0.5 far out; λ=0.88 todayA stylised reading of Bafumi–Erikson–Wlezien, not a re-estimation. We hold no historical generic-ballot series to fit.
Race-level uncertaintyσ=6.5 points, regressed from official Senate returns against prior-cycle leanOne cycle, n≈30. Cannot yet separate a national polling miss from state-level noise.
Seat baseline34 Democratic holdoversWorth ~20 points of headline probability per seat. See the box above.
No bias correctionNone appliedGeneric-ballot bias is conditional on presidential approval rather than constant, so a fixed adjustment fits the last cycle and calls it a law.
What is not published here, and why. Several sources permit collection but not republication of their individual numbers during the cycle, so those appear only inside averages with at least three contributors. District-level forecasts are withheld entirely: given the published national tide, a district forecast reveals its partisan index exactly, and that index is licensed. The full per-forecaster archive will be released after the election as a documented dataset.