The Sweeney Model

How the model works

Methodology v1.2: updated October 16, 2026. Polls and data update three times a day; the method itself only changes with a logged update (see the changelog).

The Sweeney Model is created with the idea that elections are driven by things we can measure, like how partisan a state or district is, the national mood, incumbency, the candidates themselves, their fundraising and what the polls say. Account for each of those properly, and you should be able to accurately forecast elections.

The other force driving this model is that even with all these variables accounted for, elections are random and full of surprises. So even if you know how elections usually behave, how wrong polls usually are, and how much things can still change, projections can still be off. That is what makes this fun.

The one-minute version

FundamentalsWhat we'd expect from partisanship, the national mood, incumbency, the candidates and their money
PollsPublic polls, checked, adjusted for each pollster's habits and averaged
The blendFundamentals and polls mixed according to how much each deserves to be trusted
20,000 electionsSimulated with realistic errors, then counted up

For every Senate race, every House district and every governor's race, the model makes two separate estimates of the result: one from the fundamentals of the race, one from the polls. It mixes them into a single best estimate, then asks: how wrong could we be? Using decades of history, it plays out the election 20,000 times with realistic, connected errors. If a candidate wins 14,000 of those simulated elections, they have a 70% chance.

Step 1: The fundamentals

Before looking at a single poll, you can predict most elections surprisingly well. A Democrat in a deep-blue district is going to win. An incumbent senator in a state that matches their party is very hard to beat. The fundamentals capture that kind of knowledge, built from every Senate and House race since 2010 (and further back where it helps).

Partisanship

The biggest factor by far. We measure how Democratic or Republican each state and district is compared with the country as a whole, mostly using recent presidential results. "Compared with the country" matters: a district that voted 5 points more Republican than the nation will usually stay about 5 points more Republican than the nation, whatever kind of year it is.

The national mood

Some years are good for one party everywhere. We read the national mood from the generic ballot, the polls that ask "which party do you want to control Congress?" But there's a catch. In the seven midterms since 1998, the generic-ballot average a month before Election Day missed the final national House vote by about 4 points on average, and in six of the seven it overstated Democrats. The miss shrinks as the election gets closer: on Election Day itself it has averaged about 2.5 points. So our correction shrinks too, sliding from the one-month figure toward the Election Day figure over the final 30 days, with its uncertainty built in, because seven elections is a small sample and they varied a lot. In 2018 the miss went slightly the other direction.

This correction is the single biggest judgment call in the model, so it's worth being clear about it. Some respected forecasters treat polling error as having no reliable direction, because across all elections, presidential years included, polls have missed both ways. We keep a correction because we're forecasting a midterm, and in midterms the record is lopsided (six of seven), with a plausible mechanism behind it: the voters least likely to answer polls are also the least likely to turn out in a midterm, and that doesn't cancel out. It isn't a bet that the pattern must repeat. The uncertainty around it is wide enough that a year with no bias at all sits comfortably inside our range. (We also checked whether Senate polls in individual states miss in a consistent direction in midterm years. They don't: in the seven midterms since 1998, four missed one way and three the other, so race-level polling errors are simulated with no assumed direction.)

That's why the national mood we project is less Democratic than the raw polling average. We show both, side by side, on the House page. And the correction earns its place: in tests on past midterms, leaving it out nearly doubled the error in our forecast of the national vote.

Incumbency

Sitting members of Congress usually run ahead of their party. That edge has shrunk a lot as voting has become more partisan: it's worth a few points today, much less than in the 1990s or 2000s. We measure it from recent elections only.

The candidates themselves

This is where the model gets interesting. Some politicians consistently run ahead of what their state or district "should" give them; others consistently lag. We measure each candidate's track record: in every past race, how did they do compared with what a generic candidate of their party would have done? A candidate who keeps beating expectations has a personal vote, and it tends to stick around.

We're careful with this. Records from long ago count for less. One good race could be luck, so short records get pulled toward zero until a pattern is clear. We account for the fact that personal votes were much bigger 20 years ago than today. And we let the historical data decide how much any of this matters. It materially improved our historical vote-share predictions, especially in the Senate, although the smaller number of Senate races makes the improvement in win probabilities much less certain. For candidates with no electoral record at all, we use a small, simple adjustment for their background: a former statewide officeholder starts with a small edge over a first-time candidate.

One subtlety: when two candidates have faced each other before, that earlier race appears in both of their records, and one candidate's overperformance is, by construction, the other's underperformance. Counted naively, that rematch would count twice. So a race both candidates ran in counts once, split between them. (We also tested whether a previous head-to-head result deserves extra weight of its own. It doesn't: it predicts the rematch no better than an ordinary past race.)

Money

Fundraising helps, but less than people think, and with diminishing returns: going from $1 million to $2 million matters far more than going from $20 million to $21 million. We use each candidate's reported fundraising from the Federal Election Commission as of September 30 (their third-quarter reports), measured the same way in every past election we learn from, compare the two candidates on a ratio scale, and cap extreme cases. In our testing, money earns its place in both chambers, but it's a supporting actor, not the star.

Money spent by outside groups, such as super PACs, isn't counted. We tested it two ways: as its own ingredient, and added to each candidate's own money as "total resources." Neither improved our forecasts of past elections. Part of the reason is that outside money is targeted: groups pour it into races that are close or slipping, so heavy spending partly signals a candidate in trouble. That's worth knowing this year, when outside spending is at record levels and, in several key Senate races, far more lopsided than the candidates' own fundraising.

Every ingredient had to earn its place

We didn't add candidate records and money because they sound sophisticated. We tested every version of the model by pretending to forecast each past election using only the other elections, then checked which version predicted best. The final recipe is the one that won those tests. And if a fancy ingredient doesn't help much, we say so (see How good is it?).

Step 2: The polls

We collect the public polls in our New York Times polling feed, for every Senate race, every House district that gets polled, and the national generic ballot, keeping the ones that pass our race and candidate-matching checks. Then we do three things.

Pick the right version

Many polls report results for likely voters, registered voters and all adults. Likely-voter samples are designed to better match the people who will actually turn out, so we prefer them when available. When a poll only reports registered voters, we nudge it using the gap we see in polls that published both versions.

Adjust for each pollster's habits

Some pollsters consistently lean a bit toward one party compared with everyone else. We measure each pollster's typical lean (a "house effect") and correct for it, carefully, so a pollster with only a couple of polls doesn't get over-corrected. Polls paid for by a campaign or party get a bigger correction: historically, the ones that get released tend to flatter their sponsor. That effect is much stronger in House races, where internal polls are common and there's often little public polling to check them against.

Average them sensibly

Not every poll counts equally. Bigger samples count more (with diminishing returns). Newer polls count more: a poll's weight halves every two weeks. Pollsters with stronger track records count more, using 538's pollster ratings. Campaign internals count half as much. And if one pollster releases ten polls of the same race, they don't get ten times the say.

For House races, we also update older district polls for any shift in the national mood since they were taken, because a district poll from July is out of date if the whole country has moved since.

Step 3: Mixing the two

Now each race has two estimates: one from the fundamentals, one from the polls. Which do we believe? Both, in proportion to how reliable each has historically been at this point in the race.

The fundamentals are steady but blunt. The polls are sharper but noisy, especially when there are only one or two of them, and polls a few weeks out still miss by more than polls the weekend before. So the model gives the polls more weight when there are lots of them, and more weight as Election Day gets closer. Three weeks out, a well-polled Senate race leans on the polls for about 60% of its forecast. A House district with a single campaign poll leans on them much less. A race with no polls at all runs entirely on fundamentals.

We checked this against history. For every Senate race from 2010 to 2022, we asked what weight on the polls would have produced the most accurate forecasts, at 30, 21, 14 and 7 days out. The answer matched the weights the model works out for itself: about 64% polls a month out, rising to about 72% in the final week. And the blend beat both of its ingredients at every point: about 13% more accurate than the polls alone, and roughly a third more accurate than the fundamentals alone.

Each race page shows exactly how this mix played out, under "What goes into the forecast."

Step 4: 20,000 elections

A single best guess isn't a forecast. The real question is how wrong it could be, and in which direction. So we simulate the election 20,000 times, each time drawing realistic errors based on how much forecasts like ours have missed in the past.

The errors are connected

This is the most important idea in the whole model. Polling misses aren't random coin flips in each race: when polls are off, they tend to be off in the same direction almost everywhere. In 2020 polls overstated Democrats nearly across the board; in 2022 they were much closer, and in some places missed the other way. A forecast that treats 435 House races as independent coin flips will be wildly overconfident.

So our simulated errors are layered, like a set of nested boxes:

  • A national error that moves every race in both chambers together. If Democrats do 3 points better than expected nationally, they do better in the Senate and the House at the same time.
  • A national polling error, partly linked to the first, for when the polls themselves are off.
  • Regional errors, so neighboring states with similar voters tend to move together.
  • State errors shared by every House district in the same state.
  • Race-specific errors for everything local: a scandal, a great campaign, a weak opponent.

That's why the chance Democrats win both chambers isn't just the two numbers multiplied together. It's counted directly from the same 20,000 simulated elections, and the outcomes are strongly linked. It's also why picking a winner in one Senate race on our pick-the-winners tool moves the odds in the House too.

Room for surprises

Real elections occasionally produce bigger misses than a neat bell curve would predict, so our simulations draw from distributions with slightly heavier tails, leaving room for genuine upsets. How heavy, and how wide overall, was tuned against past elections (more on that below).

Governor races

The 36 governor's races run through the same four steps, with the same simulated national mood, so a good night for Democrats in the House is a good night for them in governors' races too. What differs is how much each ingredient can tell us.

The fundamentals are weaker

Governor races are much less tied to national partisanship than races for Congress. Voters regularly elect governors from the party their state votes against for president: Phil Scott, a Republican, has won Vermont five times. So the same ingredients carry different weight. A state's partisan lean matters about half as much as it does in Senate races, and incumbency matters far more: a sitting governor runs about 12 points ahead of a generic candidate of their party, against about 5 for a senator. Candidates' track records count here too, including their records in Senate, House and other statewide races. As in Congress, the weights come from tests on past elections (294 governor's races from 2000 to 2024), using the most recent era, because governor races have become noticeably more partisan over time.

Even so, governor fundamentals miss by about 16 points per race, more than twice as much as in the Senate. That's the honest state of the science, and the model respects it: in a governor's race with polls, the polls carry about 87% of the weight.

Races with no polls

A few governor's races have had no public general-election polls at all. Those run on fundamentals alone, with the wide ranges that implies, and are labeled "No polls" on the governor page. Past races like these really did miss by more, so the wide ranges aren't excess caution.

Alaska

Alaska's governor's race uses ranked-choice voting, with several Republicans on the ballot. We combine the Republican candidates' support and prefer polls that report the final ranked-choice round.

What isn't in it

Governors' fundraising isn't included, because candidates file with their states rather than the FEC, and no national source has compiled 2026 state filings yet. Governors' approval ratings aren't included either; we plan to test them for future cycles. Ratings from the Cook Political Report appear on the governor page for comparison only; they aren't an input.

How to read our numbers

"63% chance"

A 63% chance means that in 63 out of every 100 simulated elections, that side wins. That's what the dot grids at the top of our pages show: each dot is one simulated election. It also means that in 37 of them, the other side wins. A 63% favorite losing doesn't, by itself, show the forecast was off: calibration is judged over many forecasts, not one. Think of a weather forecast: a 30% chance of rain means rain sometimes.

"<1%" and ">99%"

We never say 0% or 100%. When we show "<1%," the underdog won in fewer than 1 in 200 of our simulated elections (anything under half a percent, since we round to whole numbers), and often in none of them at all. Historically, races that lopsided have essentially never flipped, but a model can't see everything (a candidate dropping out, a scandal, a death), so we never say never.

Ratings

Our Solid, Likely, Lean and Toss-up labels come straight from the probabilities: Toss-up is anything between 40% and 60%, Lean up to 75%, Likely up to 95%, and Solid beyond that. Toss-ups are yellow on our maps, because that's where the action is.

Vote shares are two-party

Projected vote shares always count only the two main candidates, so they add up to 100%. A candidate projected at 52% of the two-party vote might get 50% of the actual vote once third-party candidates are counted.

The ranges

Each race shows a band of likely vote shares: the darkest part covers the middle half of our simulations, then 80%, then 95%. One honest note: historically, our 80% ranges for House races have contained the actual result about 88% of the time, so they're a bit cautious. We leave them that way on purpose: narrowing them to exactly 80% would have made our win probabilities overconfident when we tested on past elections, and getting the probabilities right matters more.

"Change what the model uses"

The buttons on the homepage show the same forecast with pieces switched off: no polls, generic candidates (both treated as average candidates), equal money, or just the bare fundamentals. Each version uses the exact same 20,000 simulated elections, so any difference you see comes entirely from the ingredient you removed. It's a quick way to see what's really driving the forecast.

Independents

For Senate control, independents who are the main opponent of the Republican, as in Nebraska, are counted in the Democratic-aligned total. That's a counting convention, not a prediction that every independent would caucus with Democrats; that choice is theirs. If an uncommitted independent ends up holding the deciding seat, "Democratic control" would really mean "not Republican control," so treat those seats with extra caution. We flag this wherever Senate control odds appear.

How good is it?

Any model can look smart in hindsight. The real test is how it does on elections it hasn't seen. We test the model in pieces, because each piece can fail in a different way.

  • The race-by-race layer. We hold out one election cycle at a time, build the model from the other cycles, and grade its forecasts for the held-out races. These tests plug in each year's actual national mood, so they isolate one question: given the national environment, how well does the model call individual races? Race-level probability calibration was broadly good: races called at about 98% were won by the favorite about 98% of the time, House favorites at 99% or more won over 99% of the time, and the closer races lined up with their stated odds within what you'd expect from chance.
  • The national mood. That uncertainty is checked separately, against the seven past midterms' generic-ballot misses shown above.
  • The polls. How far polls typically miss, nationally, by region and race by race, is estimated from historical polls and results.
  • The extra ingredients sharpen the vote-share predictions. Adding candidate records and money cut the typical miss on the margin from about 8.9 to 7.5 points in Senate races and from about 6.7 to 5.9 points in House races, averaged over the recent elections we held out.
  • But we won't oversell it. In the Senate there just aren't many races per cycle, and the richer model's probabilities are statistically no better than a simpler one's. In the House, the richer model does better on everything we measured, but even there the improvement in probability scores isn't decisive. The fundamentals and the polls do the heavy lifting; the clever stuff refines.
  • We tried to improve it, and mostly couldn't. Before launch we tested eight more ideas with a grounding in election research, each against a rule set before seeing the result: presidential approval, gas prices, separate weights for different eras, two other measures of partisanship, a midterm direction in polling errors, extra weight for rematches, poll errors that shrink with more pollsters, and outside spending. None cleared its bar, and the full results are in the technical section. A model that has been pushed this hard and held up is more trustworthy than one that has never been tested.
  • We stress-tested our assumptions. What if we're too confident about the national mood? Doubling that uncertainty lowers the leading party's chances but doesn't flip any conclusion. What if one of our key correlation assumptions is off? Varying it across its plausible range moves either chamber's odds by less than 2 points.

The honest summary: the model is careful, tested piece by piece, and calibrated, and it will still be wrong about some races. Getting every toss-up right wouldn't prove a forecast was good; it could simply have been lucky. Probabilistic forecasts should be judged over many predictions: did things given a 70% chance happen about 70% of the time? We'll publish how ours did after the election, misses included.

What the model doesn't do

  • No expert ratings or gut calls. Nobody hand-adjusts a race because it "feels" closer. If we write analysis notes on a race, they explain the numbers; they don't change them.
  • The economy isn't a separate input, and we checked. We tested income growth, unemployment, inflation, consumer sentiment and GDP growth. None improved our forecast of the national House vote beyond the generic ballot; every one made it slightly worse. By October, voters' economic mood is already in how they answer the generic-ballot question: in 2022, consumer sentiment was historically low, yet that year's generic-ballot miss was perfectly ordinary. (Details in the technical section.)
  • No "momentum." A candidate rising in the polls isn't assumed to keep rising.
  • Surprises are symmetric. Our simulations allow for bigger-than-usual misses, but equally in either direction. If you believe one party's upside is larger than its downside this year, for instance because of an enthusiasm gap the polls can't see, the model won't express that.
  • Outside spending isn't counted, and neither are governors' fundraising or approval ratings (see above).
  • Some House races aren't modeled. Seats with no major-party contest, including California and Washington districts where two candidates of the same party advanced, are decided in advance, and we count them for that party.
  • Special rules are simplified. In states with ranked-choice or top-four systems, like Alaska, we model the final head-to-head between the two main candidates.
  • Polling history runs through 2022. 538's archive, our source for how polls have historically missed, ends before the 2024 cycle. We'll fold in 2024 when a clean source is available.

Prediction markets

We show prices from Kalshi and Polymarket next to our forecasts, for comparison only. They are not an input to the model. Markets react quickly to news and pool many opinions, which makes them a useful reality check; they also reflect traders' own biases and can move on rumors. When we disagree with the markets by a lot, we take that as a prompt to double-check our inputs, not as proof either side is wrong. If the inputs check out, a market disagreement never causes us to manually change the forecast.

Where the data comes from

The forecast updates automatically three times a day, around 7 a.m., noon and 5 p.m. Eastern, picking up new polls each time.

Technical details

Architecture

The forecast target is each race's two-party vote share, not the win probability directly; probabilities emerge from simulation. For each race, a fundamentals estimate and a poll-based estimate are combined by inverse-variance weighting, where the poll variance combines sampling error (via an effective sample size that discounts correlated polls) with empirically estimated non-sampling error that grows with days to the election. The Senate and House are modeled separately but simulated jointly, sharing the national-environment draw in every simulation.

Fundamentals models

Linear models of the two-party vote on presidential lean (relative to the nation), the national environment's deviation, an incumbency code, shrunken candidate-quality terms, and a capped log fundraising ratio. Candidate quality is a recency- and era-normalized personal vote, estimated against an out-of-sample expectation to avoid leakage, and shrunk with reliability weight n/(n + k). The form and k were chosen by leave-one-cycle-out cross-validation using the realized national environment (an "oracle" environment), so the test isolates whether candidate quality and money add race-level signal; national-environment uncertainty is validated separately. Within the best form, a one-standard-error rule favors parsimony.

Mean per-cycle RMSE, leave one cycle out (margin, points)Base modelChosen modelRecent-cycle window
Senate8.897.472016–2024
House6.665.862018–2024
Governors17.816.02014–2024

These are averages of each cycle's RMSE, the criterion used for model selection. Base = partisanship + environment + incumbency. Chosen = base + candidate quality + money (governors: no money). Shrinkage constants chosen by cross-validation: k = 0.5 (Senate), 2 (House), 4 (governors). Estimated coefficients: incumbency about 4.9 points (Senate), 3.0 (House) and 12.3 (governors); a doubling of the fundraising ratio (September 30 snapshot) is associated with about 1.0 point (Senate) and 2.3 points (House). These are predictive associations, not causal effects: stronger candidates also tend to raise more.

Poll processing

  • Population selection: likely voters, then registered, then adults. Registered-voter results are shifted by the LV−RV gap estimated from same-poll pairs, separately for generic-ballot and Senate questions.
  • House effects: pollster random effects in a mixed model, estimated net of a sponsor-direction fixed effect, so partisan bias isn't double-counted.
  • Sponsor adjustment, per direction: about 2.1 margin points for Senate polls and 6.3 for House polls. The House figure is estimated within race, and held up under alternative windows, recent-cycle subsets and matched comparisons against nearby nonpartisan polls of the same race.
  • Weights: √n × 0.5days/14 × pollster quality (0.5–1.0, from 538 numeric grades; unrated 0.75) × 0.5 for internals ÷ √(polls by that pollster in the window).
  • House district polls are trend-adjusted by 0.75 × the change in the generic ballot since the poll's field date.
  • Senate averages receive a small, historically estimated correction related to state partisanship.

Error structure

In each simulation, the outcome for race r is the blended estimate minus a weighted combination of a polling error and a fundamentals error, weighted by the race's poll share w:

truthr = blendr − wr · εpollr − (1 − wr) · εfundr

ComponentScopeApproximate SD (margin points)
National environmentShared by both chambers2.9 to 3.5, by date
National poll errorAll polled races; correlation 0.5 with the environment draw3.3
Extra House-specific poll errorAll polled House districts2.0
Regional poll errorSenate races, by Census division2.5
Race-level poll error (non-sampling)Each race6.3 (Senate), 5.8 (House)
Cycle-level fundamentals errorEach chamber2.7 (Senate), 1.2 (House)
State fundamentals errorHouse districts in a state2.5
Race-level fundamentals errorEach race7.1 (Senate), 5.1 (House district)

Poll errors are scaled up with time to the election (factor 1.24 at three to five weeks out). Race- and state-level fundamentals errors are Student-t distributed with calibrated tails and multiplied by a calibration factor; see below. National and regional components use t(6). Values shown are before calibration multipliers.

Calibration

Race-level fundamentals uncertainty is scaled by a multiplier and given a t-distribution whose degrees of freedom are chosen jointly with the multiplier, by minimizing out-of-sample log loss over a grid (df 3–12, multiplier 0.9–1.5), on Senate races 2016–2024 and House races 2018–2024.

ChamberChosen80% interval coverageNote
Senatet(8) × 1.0381.5%Close to nominal
Houset(12) × 1.2488.3%Conservative intervals; probability calibration preferred

For the House, tail thickness barely affects log loss; the multiplier is what both criteria agree on. The gap between interval coverage and probability calibration isn't explained by competitiveness (coverage is 91% in competitive races and 88% in safe ones), and we're investigating it with continuous scoring rules (PIT diagnostics, CRPS) after the election, rather than retuning before it.

Validation summary

Out-of-sampleRacesBrier, allBrier, competitive80% coverage
Senate (calibrated)1510.0510.12481.5%
House (calibrated)1,5750.0280.15088.2%

Each model scored with its own out-of-sample error, the bootstrap 90% interval on the Brier difference between the chosen and base models spans zero in both chambers.

Sensitivity tests

TestRange testedEffect on control probabilities
Correlation between national poll error and environment error0 to 1 (published 0.5)Under 2 points per chamber across 0.25–0.75; the both-chambers-Republican tail is the most sensitive
National-environment uncertainty×1.25 to ×2Favorites' odds fall as uncertainty widens; no conclusion reverses
Partisan-poll adjustment (House)Recent-cycle alternativesLargest shift in any modeled race's margin under half a point

The national environment

Projected national House margin = generic-ballot average + a date-dependent historical correction. With d days to go, the correction is w · (mean 30-day miss) + (1 − w) · (mean Election Day miss), where w = min(d/30, 1). The historical spread used for the environment's uncertainty blends the same way, plus a term for the uncertainty in a mean estimated from seven midterms, plus the sampling error of the current average.

Generic-ballot miss, midterms 1998–2022Mean (margin pts)SpreadOverstated Democrats
Election Day−2.62.96 of 7
30 days out−4.02.36 of 7
60 days out−3.92.47 of 7
90 days out−4.23.06 of 7

The late polls are less biased but, in this small sample, not less variable: 2006 widened sharply in the final month. So the environment's uncertainty grows slightly toward Election Day rather than shrinking. It's the most consequential single input, and with only seven comparable midterms it's the parameter we're least able to pin down, which is why we stress-test it.

Forecast of the national House vote, 30 days out, leave one midterm outTypical error (RMSE, pts)
Generic ballot + historical correction (our model)2.48
+ consumer sentiment (level)2.57
+ consumer sentiment (change)2.59
+ real income growth2.71
+ unemployment change2.91
+ inflation2.99
Generic ballot + half the correction3.04
+ real GDP growth3.20
Generic ballot, no correction4.51

Each economic indicator is measured in June of the election year against June of the prior year (GDP: second-quarter annualized growth), signed so that a strong economy favors the president's party. Seven midterms can rule out a useless predictor more easily than confirm a useful one; none came close to earning a place.

Ideas tested and not adopted (v1.2)

Each idea was chosen because election research suggests it should matter, and judged against a rule fixed before the test was run: it had to reduce leave-one-cycle-out error by a set margin (0.3 points for national and Senate inputs, 0.1 to 0.15 for House-only inputs) and do so consistently across held-out elections. Lower error is better; negative changes are improvements.

IdeaGroundingResultVerdict
Presidential approval (national mood)Referendum theory of midterms−0.25 pts, but better in only 3 of 7 midtermsNot added
Gas prices (national mood)Widely cited; works mainly via approval and inflation+0.24 pts (worse)Not added
Separate weights for 2010–14 and 2016–24Rising partisanshipSenate −0.14 (2 of 5 cycles); House −0.12Not added
Partisanship from the last two presidential electionsCaptures realignmentAverage +0.23, trend +0.35 (Senate, worse)Not added
Midterm direction in Senate polling errorsRecent midterm misses4 midterms one way, 3 the other; mean +0.3 ptsErrors kept symmetric
Extra weight for a previous head-to-head resultRematchesWeight 0.26 vs 1.0 for an ordinary race; −0.03 ptsNot added
Poll error that shrinks with more pollstersPollster-specific error averages out+0.07 pts (worse) in the blend backtestNot added
Outside spending, as its own termCampaign-finance researchNo improvement; negative weight in the SenateNot added
Outside spending, as "total resources"Campaign-finance research+0.06 pts (worse), SenateNot added

Bug fixed in the same update: a past race contested by both candidates was counted in both records, effectively twice; it now counts once, split between them, and special elections are labeled separately so that two races in the same state and year are never confused.

Blend validation

Senate 2010–2022, days outHistory-optimal poll weightModel's poll weightBlend RMSEPolls onlyFundamentals only
300.640.506.287.138.95
210.660.595.806.718.74
140.660.585.776.698.66
70.720.655.546.209.01

Fundamentals built leave-one-cycle-out, with each midterm's national-environment projection error restored ("real-time"). Choosing the history-optimal weight on other cycles and applying it to the held-out one did not beat the model's own weights (5.84 vs 5.80 at 21 days), so the derived weights stand.

Changelog

VersionDateChange
v1.2Oct 16, 2026Governor forecast documented (published October 13). Fundraising now measured at September 30 (third-quarter reports) in every cycle; backtest error improved (Senate 7.62 to 7.47, House 5.96 to 5.86). Rematch double-count fixed and special elections labeled separately. Eight further ideas tested and not adopted, and the poll/fundamentals blend validated against history (see the technical details). Neither change moved either chamber's control odds by more than about 2 points.
v1.1Oct 13, 2026National-environment correction made date-dependent: it now shrinks from the historical one-month miss (about −4 pts) toward the Election Day miss (about −2.6) over the final 30 days, and its uncertainty blends the same way. On October 13 (21 days out) the correction was −3.5 points instead of −4.0, moving the projected national environment from D+5.5 to D+6.0, and its uncertainty from 2.9 to 3.1 points. Economic indicators tested and not added (see the technical details).
v1.0Oct 12, 2026Launch configuration. Any later change to the method will be listed here with its date, reason and approximate effect on the forecast.

Want to see the code?

The model is built in R software. We don't publish the full code here, but we're happy to walk anyone interested through it, share pieces, or talk about any decision on this page. Get in touch at hughsweeney460@gmail.com or through the contact page.