ElectIt

ElectIt · U.S. elections forecast

The model says there's a – chance the Democrats take the House

Unpacking the simulations…

  • Forecast Democratic House seats–
  • National House vote, Democratic–
  • Competitive seats–

No races called yet.

435 House districts

Republican winevenDemocratic win

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

    SeatHeld byGoes toChance 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.

    How Votes Become Seats

    House Odds If the Polling Average is the Same on Election Day

    Distribution of Seats

    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,

    logit(vit)=μit+ωit,ωit∼tνit(0,ϕit)
    μit=Xitβt+γD(i,t)−γR(i,t)+ηt
    ϕit=exp(ζ+ζd+Zitδ),νit=1+exp(α+αd+Zitλ)

    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.

    1. 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, σ^G, 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 .

    2. 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:

      V(η)=∑iTilogit−1(ci+η),ci=Xiβ+γD(i)−γR(i)+ωi

      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.

    3. 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,

      q(η)=12N(η;0,ση2)⏟the model's prior: the simulations+12N(η;Δ,ση2)⏟the prior shifted by Δ: the 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.

    4. 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:

      G=a+b⋅logit(V)+e,e∼N(0,σG2)
      a^=,b^=,σ^G=

      The fitted line gives the likelihood of today's reading for each national vote,

      L(G|V)=N(G;a^+b^⋅logitV,kσ^G2)

      where k, the standard small-sample correction for predicting from an estimated regression, widens the variance for a line estimated from so few elections:

      k=(1+1+(logitV)2)

      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.

    5. 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:

      p(η|G)∝N(η;0,ση2)×L(G|V(η))

      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:

      1. Inverting the regression backs out the national vote implied by today's generic ballot, logitVG=(G−a^)/b^: % at .
      2. Within a simulation, the logit of the national vote is close to a straight line in the swing, logitV(η)≈y0+βη, 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 ηG=(logitVG−y0)/β.
      3. The line's prediction error goes with it: 𝜂G has variance kσ^G2/(b^β)2, the line's variance divided by b^2 to put it on the logit of the national vote and by β2 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:

      1τ12=1ση2+(b^β)2kσ^G2,η1=τ12(b^β)2ηGkσ^G2

      The smaller the polling error against the model's spread for the swing, 𝜎𝜂, the stronger the pull toward the generic ballot's swing.

    6. 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 σ^G:

      τ22=τ12+drift2+k(σ2−σ^G2)(b^β)2

      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.

    7. 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:

      ws=p(ηs|G,σ,drift)q(ηs)

      That distribution is the update of steps 5 and 6:

      p(η|G,σ,drift)={N(η;0,ση2)L(G|V(η))Con Election Day, σ=σ^GN(η;η1,τ22)otherwise

      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,

      C=∫−∞∞L(G|V(u))N(u;0,ση2)du

      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.

    8. 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 vis=logit−1(cis+ηs), and the race's forecast vote share and chance of a Democratic win are averages over the 320,000 draws, weighted:

      v^i=∑swsvis∑sws,Pi=∑sws1[vis>0.5]∑sws

      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

    E[h]=∫∫h(θ,η)p(η|G,θ)π(θ)dηdθ

    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

    E[w(η0)h(η0)+w(η1)h(η1)|θ]=∫hpq(q0+q1)dη
    =2∫hpdη=2Ep[h|θ]

    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,

    ∑s∑jw(ηsj)h(θs,ηsj)∑s∑jw(ηsj)→2E[h]2=E[h]

    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, (∑w)2/∑w2, 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.