This is our forecast for the upcoming election based on our paper: Danny Ebanks, Jonathan N. Katz, and Gary King. 2026. “If a Statistical Model Predicts That Common Events Should Occur Only Once in 10,000 Elections, Maybe It’s the Wrong Model,” presently under review. We make this forecast public because the way academics learn is by making themselves vulnerable to being proven wrong. We posted this on October 15, 2026, before the election, and will only make changes as new polls are published.
Build your own forecast of the 2026 House and Senate: choose your forecasting settings, then see the live odds and a map where you call the winners. Watch the odds update in real time!
The model says there's a – chance the Democrats take the House
Unpacking the simulations…
Calibration Settings. We are not saying this is the true outcome, just a mathematical check of the validity of our model.
Democratic majorityRepublican majority
Forecast Democratic House seats–
Actual Democratic House seats–
National House vote, Democratic–
Actual national House vote–
Competitive seats–
No races called yet.
Your settings.
Build your forecast
Choose your forecast settings, then see the odds!
1
Which forecast?
2
What do the national polls say?
The Post-Nomination Forecast reads no polls.
3
How far will the race polls miss?
Only Model + All Polls reads each race's polls.
4
What if there are No Candidate Effects? Optional
Model + All Polls reads each race's polls, which already reflect its candidates.
Why it matters
Each candidate the model has seen before has an effect: how far they run ahead of their party, their seat's lean, and incumbency. This switch takes each one out and draws a fresh effect for an average candidate in its place, as the model does for a newcomer, so you can see what the candidates are worth.
435 House districts
Republican winevenDemocratic win
Elected at large: not forecast
toward the Democratstoward the Republicans
Race Polls
Race
Polls
Average
Model + Generic Ballot
Model + All Polls
A race's chance moves toward its polls by as much as the error model trusts them: more polls, and a race the simulations leave uncertain, move it further.
The snake
Each segment is a seat, colored by the Democrats' chance of winning it. A ring marks a seat whose current party is the underdog. Click a seat to call it.
Most likely tipping points
Seats Forecast to Flip
Seat
Held by
Goes to
Chance it flips
Every seat whose current party is the underdog, by the chance it changes hands given your calls and the poll settings. New districts with no incumbent party are left out.
Elections We Missed
Race
Democrat v. Republican
Democrat
Forecast gave the winner
Democratic vote
Every contested race whose forecast favorite lost, by the chance the forecast gave the winner: the holdout forecast before any calls, with the version's weights.
How Votes Become Seats
How the Odds for House Control Changed Over Time
House Odds If the Polling Average is the Same on Election Day
Distribution of Seats
The data
Every House race of 1946–2024 and every Senate race of 1946–1948 and 1954–2024 that the model learns from, and the model's reports on them: its forecast of each race and a summary of each year.
Datasets
Each row gives who held the seat, the Democrat, the Republican, the Democrats' share of the two-party vote, and the winner; each year adds the seats won, the national House vote, and the final generic-ballot reading.
Every race the Historical Forecasts cover, by the model fit only on the elections before it: the House of 1946–2024 and the Senate of 1946–1948 and 1960–2024.
Every race each model learns from, forecast by that model fit to all of its years.
Each year and chamber of both, over every race and over the contested ones.
Election year
MidtermPresidential year
Loading the results…
An unopposed race shows no share; the model counts it as 75% for the party that ran. Sources: from 1950, the panel of the paper's replication package (Jacobson's House files, ICPSR 00002 and 6311, the MIT Election Lab, and Voteview's rosters, with the Clerk's Statistics of the Congressional Election or a state's certified canvass deciding any conflict); before 1950, the pre-1946 build's panels, from ICPSR 00002's returns, Voteview, and Wikipedia's election pages. The model's other inputs, each district's lagged House, presidential, Senate, and governor votes and who ran again, are in the replication package.
A district report row is a race: the result (observed_vote, the Democrats' two-party share), the incumbent's party (inc: 1 Democratic, −1 Republican, 0 an open seat), the forecast's mean and SD (vote_predict, vote_sd), the chance the Democrat wins (win_pct), the bounds of its 10% to 99.999% intervals (lbound_10 and ubound_10 through lbound_99999 and ubound_99999), the chance of a close result, 45–55% (prob_comp), and the chance the incumbent's party loses (lose.prob); the crps column is blank, since the replication's reports do not compute it (the Calibration view's CRPS is computed from the simulations); and the race's earlier results as Democratic two-party shares, as the maps show them: the last presidential vote before the year (lagged_pres_vote), the latest governor's and Senate races (lagged_gov_vote, lagged_sen_vote), the House race of two years before (lagged_house_vote, blank where the model imputes it), and in a presidential year that year's own presidential vote (pres_vote). In the earlier results each independent sits on the side of the party they caucus with, as on the maps; the forecasts used the model's own data, so caucus_rule (1) marks the rows whose earlier results differ from it. The result is the model's own: where the Republican side in its data is an independent who caucused with the Democrats, the Democrat's share against the independent, the pairing the model forecast.
An election report row is a year: the RMSE, the results outside each interval (NCI_95 for the 95% interval) and the share inside (coverage_95_CI), R², the mean absolute error (map), the mean SD, each party's expected and actual incumbent defeats (E.inc.d and inc.d for the Democrats, E.inc.r and inc.r for the Republicans), the bias (predictive.bias, the mean forecast less the result), and the binomial chance of the year's misses beyond the 99.99% interval (p.obsv).
The reports are the replication's own (its 3_model/reports.py); talk/qoi.py gathers them.
The story of American politics
What the LogisTiCC model finds about American elections, from the paper (Ebanks, Katz and King). In the paper's words, accurate generative models can reveal a vast amount about American elections, far richer than any one specific estimate or data analysis on its own. Results before 1946 come from an extension of the model back to 1866, a preliminary finding.
Post-WW2 American Politics Was Anomalous
How Often the Incumbent Party Loses a Seat
The Incumbency Advantage Drifts over Time
Concentration is Higher when Politics are Partisan
House Elections Swing Between Nationalized and Localized Eras
Candidates, Midterms, and One Process
The President's Party Loses Ground in Midterms
Some Years are Simply Good for One Party
Candidates are Important, Win or Lose
One Data-Generation Process for the House and Senate
How well the model is calibrated
One-in-10,000 Results
Coverage of the 95% Ranges
Close Races: Forecast Against Frequency
The Vote: Forecast Against Result
The Median Contested Race, Forecast One Election Ahead
Expected Minus Actual Seats: Post-Nomination Forecast
Expected Minus Actual Seats: Model + All Polls
Expected Minus Actual Seats: Model + Generic Ballot
Race Forecasts: RMSE
Race Forecasts: CRPS
Races Called Wrong
Control of Each Chamber: Expected Against Actual Misses
Where the Polls Moved the Forecast Most
Best and Worst Post-Nomination Forecast Years
How Race Polls Did, 1960–2022
Race Polls, 1960–2022: The Three Versions by Election
The math behind the race polls
Model + All Polls starts from Model + Generic Ballot: the same simulations, weighted by the generic ballot. The race polls then move each simulation's polled races; the generic ballot sets the national swing 𝜂, and a race's polls inform its own parts, 𝜔it and 𝛾D − 𝛾R. Margins are in points, the Democrat's two-party share minus the Republican's.
We average each race's polls. Race j's average, ȳj, is the weighted mean margin of its nj polls, every poll from the nominations to , from : now . Each poll counts half as much for every 14 days of age, poll k being ℓjk days old. A poll a party or campaign paid for counts after moving back by its sponsor's typical lean, how far such polls ran ahead of the nonpartisan polls' misses in FiveThirtyEight's archive ().
We model how far an average misses. It misses race j's margin, mj, by a mean miss, a national part the year's races share, a regional part the races of a Census region share, and a race part that shrinks with the polls' effective number, :
so the averages' errors have covariance
We fit the five by maximum likelihood on FiveThirtyEight's nonpartisan polls of every November race of 1998–2022, the Senate's and the House's apart, for polls taken as far from the election as these (a race's at its polls' weighted mean distance):
We move each simulation's polled races toward their averages. In simulation s, the polled races' margins move by an ensemble Kalman gain,
where D holds each polled race's variance across the simulations, weighted by the generic ballot. Each simulation reads the averages with its own draw 𝜀s of their error, so the moved simulations keep the spread that error leaves. A miss the averages share moves the races less than one race's own, since R counts a shared miss as the polls' error. The races no poll reads stay as the generic ballot left them, and every simulation keeps its weight.
We count the seats in each simulation as in Model + Generic Ballot.
A past year's polling error. The year buttons move each average by that year's national and regional misses at this distance from the election, as the error model estimates them (their means given that year's misses), and leave only the race part:
Why move the simulations rather than reweight them. Reweighting the simulations by every race's polls at once, as the generic ballot reweights them, leaves too few: in 2018's House, one effective simulation of 40,000. Moving each simulation keeps all of them. Letting the polls move every race through the simulations' full covariance did worse in the holdouts when the polls missed together, as in 2016 and 2020.
The math behind the forecast
The LogisTiCC model. Race i's Democratic share of the two-party vote in election t, vit, follows an additive logistic t: its logit is a center plus a t-distributed surprise,
Xit includes the race's past results (its own lagged vote and the district's lagged presidential, Senate, and governor votes), incumbency, open seats left involuntarily or by a strategic exit, the incumbent party's and the exiting party's premiums, the South, an uncontested race, and the midterm penalty against the president's party. With each candidate's effect, 𝛾c ~ N(0, 𝜎𝛾2), these make up the fundamentals; their slopes 𝛽t change slowly from election to election, as random walks. Zit (an open seat, the distance from 50–50, single-district states and the Senate) sets how noisy each race is, 𝜙, and how prone to surprises, 𝜈. The national swing 𝜂t, shared by every race in a year, is the national trend beyond the fundamentals: 𝜂t ~ N(0, 𝜎𝜂2), with 𝜎𝜂 estimated for each decade. The model is fit to every House and Senate election of 1946–2024.
The calculation, step by step.
We select the four settings. The generic ballot, G: RealClearPolitics' average, Silver Bulletin's, or a margin you enter, now . The polling error, 𝜎: how far the final average misses the vote on Election Day, now points; its historical level, , is points, the standard deviation of the misses in the midterms of with a final reading. The pace of drift: how far an average moves over a span of days, at midterm history's pace (FiveThirtyEight's average in the midterms of 1998–2022) or this year's (Silver Bulletin's 2026 average). The days left, now . The pace and the days left give the drift, how far today's average can still move before Election Day: now ± points at .
We calculate the national vote, V, as a function of 𝜂, the swing. Each of the 160,000 simulations draws the model's parameters from their posterior, then 2026's national swing 𝜂 from N(0, 𝜎𝜂2) with the 2020s' 𝜎𝜂, then every race. The swing moves every race's logit by the same amount, so within a simulation the national vote, the Democrats' share of the two-party House vote, depends on the swing alone:
where ci is race i's logit without the swing (its fundamentals, its candidates, and its surprise) and Ti is the district's share of 2024's presidential turnout. With equal weights, these simulations are the Post-Nomination Forecast, which puts the Democrats' national vote at % on average.
We simulate a toss-up election by shifting each simulation's national swing by Δ = , toward the , just far enough that Democrats win 218 or more seats in exactly half of the shifted simulations: the Tied House Election Baseline. Everything else in the baseline stays as drawn, and it averages a national vote of %. The baseline adds draws near a close national vote, which the model alone rarely draws. Together, the simulations and the baseline are draws from an even mixture of two distributions, the model's prior for the swing and that same prior shifted by Δ to the Tied House Election Baseline,
The mixture only supplies draws: the forecast's prior for the swing stays the model's own, N(0, 𝜎𝜂2), and step 7 counts each draw by that prior over this mixture, so that if we think the generic ballot does not contain any useful information, we fall back to our Post-Nomination Forecast.
We predict the generic ballot result from the national vote to estimate the likelihood for the generic ballot. We estimate a regression, by least squares, of the final generic-ballot margin (Gallup's final poll through 2002, RealClearPolitics' final average from 2006) on the logit of the national vote in those midterms:
The fitted line gives the likelihood of today's reading for each national vote,
where k, the standard small-sample correction for predicting from an estimated regression, widens the variance for a line estimated from so few elections:
the first factor, the variance of a t with degrees of freedom, accounts for estimating the polling error, and the term in parentheses for estimating the line's intercept and slope; that term is centered on the mean of logit V in those midterms, scaled by the sum of its squared deviations from that mean, and grows for a national vote unlike theirs. Both approach one with more elections. The likelihood gives how well each national vote implied by a single simulated election explains today's estimate of the generic congressional ballot. A normal error, unlike the heavier tails of a t, never reads a generic ballot far from the fundamentals as likelier a polling miss than a real swing, so the forecast moves with the generic ballot at every margin.
We update each simulation's swing with today's national polling average, at the historical polling error. Each simulation keeps its fundamentals, candidates, and race surprises, and its swing follows the model's prior times the likelihood:
The update assumes the generic ballot measures the national vote with an error unrelated to the swing, as the regression in step 4 found in past midterms, and that it informs the races only through the swing they share.
To combine the two, we express the generic ballot in the swing's units, a shift on the logit of every race's vote:
Inverting the regression backs out the national vote implied by today's generic ballot, : % at .
Within a simulation, the logit of the national vote is close to a straight line in the swing, , where y0 is its value with no swing and 𝛽, about , is how far it moves per unit of swing: a swing moves every race's logit one for one, and races far from 50–50 change their share of the vote less. The swing that would move the simulation's national vote to VG is .
The line's prediction error goes with it: 𝜂G has variance , the line's variance divided by to put it on the logit of the national vote and by to put it in the swing's units, on the logit of each race's vote, with k at VG.
The model's prior for the swing, N(0, 𝜎𝜂2), and the swing the generic ballot implies, 𝜂G with that variance, combine into a normal update with mean 𝜂1 and variance 𝜏12:
The smaller the polling error against the model's spread for the swing, 𝜎𝜂, the stronger the pull toward the generic ballot's swing.
We increase the uncertainty in the generic ballot-informed update for 𝜂, for the time left and any larger error. By Election Day the average can still move by the drift, and the vote can miss it by any polling error you set above :
The update's center, 𝜂1, stays where step 5 put it; only its variance grows. More days left, a faster pace, or a larger error widen the range of outcomes and move every chance toward a toss-up, never back toward the Post-Nomination Forecast. On Election Day at the historical error, 𝜏22 = 𝜏12.
We weight every draw, in the simulations and in the baseline, so that together they follow the update. In the chart, the gray areas are where the 320,000 draws fall on the national vote, the model's simulations below and the baseline above, and the gold line is where Model + Generic Ballot puts the national vote. A draw counts for more where the gold line runs above the gray, and for less where it runs below; on average, its weight is the gold height over the gray height at its national vote. The chart starts at your settings; move the four settings here to watch the weighting change, without changing the forecast above.
Pace of drift
In symbols, the swing of draw s, 𝜂s, comes from q, the even mixture of step 3: half the model's prior for the swing, and half that same prior shifted by Δ to the Tied House Election Baseline. The forecast needs the swing to follow its distribution given the settings, p(𝜂 | G, 𝜎, drift), instead, so we create weights that upweight the draws whose swing is closer to the swing the generic ballot implies, as the update weighs it against the model's prior, and downweight the rest. Each draw's weight is the ratio of the two densities at its swing, which makes the weighted draws follow that distribution:
That distribution is the update of steps 5 and 6:
On Election Day at the historical error nothing widens the update, so it is step 5's p(𝜂 | G) itself, where C, the normalizing constant, is the marginal likelihood of today's reading under each simulation's prior for the swing,
which gives every simulation the same total weight, so the polls move only the swing. With days left or a larger error, it is the update's normal form, widened in step 6. We reweight to increase speed and stability of the forecast under campaign scenarios our post-nomination model finds unlikely.
We add up the weights of the draws in which Democrats win. Reweighting gives more weight to the draws whose realization of 𝜂 is closer to the assumed generic ballot result, as the update weighs it against the model's prior for the swing. In draw s, race i's Democratic share is , and the race's forecast vote share and chance of a Democratic win are averages over the 320,000 draws, weighted:
The chance of a Democratic House is the sum of the weights of the draws in which Democrats win 218 or more seats, divided by the sum of the weights of all 320,000 draws; the Senate's uses the draws with 51 or more Democratic seats, since the vice president is a Republican. The expected seats and their ranges come from the same weights. The map shows each race's chance as the settings change; its vote share needs every race's share in every draw, which the page keeps for past years only. Beyond a 10-point polling error the draws no longer span the range of outcomes, so the error box stops at 10.
Why reweighting is equivalent to resampling 𝜂 | G. Write 𝜃 for a simulation's other draws (its parameters, candidates, and race surprises), which come from the model's posterior, 𝜋, and h(𝜃, 𝜂) for anything we count, such as whether Democrats win 218 or more seats or race i's vote share. Resampling would give each simulation a new swing from p(𝜂 | G, 𝜃) and average h, which estimates
Our draws come in pairs instead: simulation s's own swing, 𝜂0 from q0 = N(0, 𝜎𝜂2), and its baseline copy, 𝜂1 = 𝜂0 + Δ from q1 = N(Δ, 𝜎𝜂2), so that q0 + q1 = 2q. With weights w = p/q, the expected weighted outcome of one simulation's pair is
twice what resampling that simulation's swing gives, although 𝜂1 is built from 𝜂0, since the expectation of a sum is the sum of the expectations. With h = 1 the pair's weights average 2: C, which makes p integrate to one, gives every simulation the same total weight. Over the 160,000 independent simulations, the weighted average therefore tends to the same limit as resampling,
with the draws indexed by simulation s and member j, 0 for the simulation's own swing and 1 for its baseline copy. Only the noise differs: resampling's comes from the number of simulations, and reweighting's from how unequal the weights are, summarized by the effective number of draws, , which the baseline keeps high. The same algebra holds for any target, so the widened normal of step 6 takes p's place with days left; and with an uninformative generic ballot, p is the model's prior, and the weighted draws give back the Post-Nomination Forecast.