How it works

General
Senate
House
FAQ

Purpose

The upcoming 2022 US midterm elections will determine which party controls the senate and house for the next two years. Various outlets assign ratings to each individual race to indicate which party is more likely to win that seat, and many aggregate those ratings into an overall assessment of which party is more likely to control congress. However, the actual math of how those assessments are made tends to be pretty opaque.

The purpose of this site is to provide a fully transparent assessment of the midterm elections, while empowering users with the ability to assign their own ratings arbitrarily.

Simulating Elections

When the page is loaded, and any time a race rating is subsequently changed, thousands of "election nights" are simulated, for both the senate and the house.

In each of those, for each seat, a winner is decided (based on the race's rating and a generated random number), the senate/house seat is allocated appropriately, and once all senate/house seats are assigned, whichever party has at least 51 senate seats or 218 house seats wins control.

The overall probabilities are then computed by simply dividing the number of a party's wins by the total number of simulated election nights (though note that the overall probabilities can fluctuate by 1% due to rounding and one party getting a particularly lucky batch of simulated elections).

Ratings

The site uses the following ratings:

Rating
Meaning
Lock Democratic
The democratic candidate has a 100% chance of winning (intended for use after a projection has been made)
Certain Democratic
The democratic candidate has a 100% chance of winning
Solid Democratic
The democratic candidate has a 99% chance of winning
Likely Democratic
The democratic candidate has a 90% chance of winning
Lean Democratic
The democratic candidate has a 75% chance of winning
Tilt Democratic
The democratic candidate has a 65% chance of winning
Tossup
Each candidate has a 50% chance of winning
Tilt Republican
The republican candidate has a 65% chance of winning
Lean Republican
The republican candidate has a 75% chance of winning
Likely Republican
The republican candidate has a 90% chance of winning
Solid Republican
The republican candidate has a 99% chance of winning
Certain Republican
The republican candidate has a 100% chance of winning
Lock Republican
The republican candidate has a 100% chance of winning (intended for use after a projection has been made)

Environments

You may be wondering what the functional difference is between the "Certain" and "Lock" ratings. That's where things get slightly more complicated. By themselves, the ratings above contain an implicit assumption that the races for individual senate/house seats are completely independent from one another. In practice though, that's not really the case.

Elections are largely decided by which party's supporters actually vote, and these voting patterns generally operate on more of a nationwide scale. For that reason, for each election run by the simulation, an "environment" is first (randomly) selected, which can apply modifiers to the various ratings (for all races of that simulated election).

Environments that apply large modifiers are less likely to be used:

Environment
Frequency
Meaning
Blue Tsunami
  3%
Relative democratic turnout is far greater than expected
Blue Wave
13%
Relative democratic turnout is substantially greater than expected
Blue Ripple
22%
Relative democratic turnout is slightly greater than expected
Neutral
24%
Relative turnout is about as expected (no modification to ratings)
Red Ripple
22%
Relative republican turnout is slightly greater than expected
Red Wave
13%
Relative republican turnout is substantially greater than expected
Red Tsunami
  3%
Relative republican turnout is far greater than expected

The interactions between ratings and environments are summarized in the following table:



The net effect is to nerf the overall chances of whichever party is more likely to win in a neutral environment, because that party has fewer opportunities for a favorable environment to convert losses into wins (i.e., they have fewer losses in the first place).

You can force the simulations to use a particular environment for all elections. Note that forcing a "neutral" environment effectively disables the feature, but this may make sense if you're setting your own ratings and want a finer amount of control.



Default Ratings

For the presidential race, the default state ratings are based on polls (up to 8, with more recent polls weighted more heavily) as well as the final results from 2016. Averaging those together, the default rating is determined according to the following table:

Computed Lead
Rating (matches party with lead)
Less than 2 points
Tossup
At least 2 points
Tilt
At least 4 points
Lean
At least 6 points
Likely
At least 8 points
Solid
At least 10 points
Certain

With "quick-set" disabled, you can view the polls of a state by clicking on it in the map. For example:


If you'd rather exclude certain polls (or the 2016 result) from the rating calculation, they can be disabled individually, and the rating will be automatically re-computed. You can also ignore the polls (or lack thereof, in some cases) and set an arbitrary rating directly.

Electoral Votes

A state's number of votes in the electoral college is primarily a function of its population, except every state is guaranteed to have at least three. More precisely, a state gets one electoral vote for each senator (every state has two) and for each seat in the house of representatives (based on population, but every state has at least one). The District of Columbia (DC) gets three electoral votes as well, even though it technically doesn't have any congressional representation.

This means there are a total of 538 electoral votes (435 house seats + 100 senators + 3 from DC), which is why 270 (half plus one) is the number to win the presidency.

Maine and Nebraska

These are the only states that don't award all of their electoral votes in a winner-take-all fashion. Rather, there are effectively separate elections for the state at-large (worth 2 electoral votes) and for each congressional district (each worth 1 electoral vote). There aren't really polls at the congressional district level, so I've just set those default ratings manually based on historical data. In quick-set mode, those ratings can be changed by clicking on the little squares.

In the Event of a Tie

If each party ends up with exactly 269 electoral votes, the presidency is decided by a vote of the incoming house of representatives, except with each state delegation voting as one (meaning California and Wyoming would presumably cancel each other out, for example). The vice presidency is decided by a vote of the incoming senate.

County View

Clicking the "2016 Results" tab will open up a county-level map of the selected state, and hovering over any county will give something like this:


This shows a comparison of the county's 2016 results to those of the state overall.

More interestingly, there are two separate "benchmarks" given. So in Pennsylvania, for example, in 2016 Hillary Clinton lost the state by 44,292 votes, and we can ask the question "how many votes would need to have been converted to her in order for her to win?". Because she was effectively only competing with Donald Trump, each converted Trump vote counts for two against the deficit, while each converted third-party vote counts for one.

With the Joint Flip Benchmark, these conversions are distributed proportionately across all counties in the state, and the selected county's result in that scenario is displayed.

With the Individual Flip Benchmark, the conversions are concentrated exclusively in that single county. Note that a county will generally only have an Individual Flip Benchmark if it's a relatively large county in a close state (otherwise the county won't have enough votes available for conversion to make up the statewide deficit).

(Also note this all assumes counties' proportions of the total vote share remain constant between 2016 and 2020. Obviously those will fluctuate a bit, so the benchmarks shouldn't be considered perfectly exact.)

The idea is that as real votes from key counties start to be reported on election night 2020, you can compare them to these benchmarks to see if the state is on pace to flip. Now you too can live out your fantasies of being John King.



Default Ratings

The default ratings for each senate race are based on polls, along with the final results from the most recent senate election in which the incumbent was running (usually 2016) as a base. For open seats, the 2020 presidential election is used as the base instead.

More precisely, the "final score" for a senate race is computed by averaging the results of the most recent polls (at most four), and then averaging that with the results from the base election. The default rating is then assigned according to this table:

Computed Lead
Rating (matches party with lead)
Less than 2 points
Tossup
At least 2 points
Tilt
At least 4 points
Lean
At least 6 points
Likely
At least 8 points
Solid
At least 10 points
Certain

For example, with Quick-Set disabled, you can view the polls for a senate race by clicking on a state:


In this case, the GOP has an average polling lead of (( 1.00 + 6.00 + 1.00 + 0.00 ) / 4) = 2.00, and then averaging that with the base results gives a final score of ((2.00 + 3.00) / 2) = 2.50, which corresponds to a default rating of "Tilt Republican".

County View

For reference, I've also included a county-level overview of how each state voted in the two most recent presidential elections (with the expectation that counties' presidential preferences will strongly correlate with their senate preferences):


This shows a comparison of Dane county's 2020 results to those of the state overall.

More interestingly, there are two separate "benchmarks" given. So in Wisconsin, for example, in 2020 Donald Trump lost the state by 20,608 votes, and we can ask the question "how many votes would need to have been converted to him in order for him to win?". Because he was effectively only competing with Joe Biden, each converted Biden vote counts for two against the deficit, while each converted third-party vote counts for one.

With the Joint Flip Benchmark, these conversions are distributed proportionately across all counties in the state, and the selected county's result in that scenario is displayed.

With the Individual Flip Benchmark, the conversions are concentrated exclusively in that single county. Note that a county will generally only have an Individual Flip Benchmark if it's a relatively large county in a close state (otherwise the county won't have enough votes available for conversion to make up the statewide deficit).

The idea is that as real votes from key counties start to be reported on election night 2022, you can compare them to these benchmarks to get a sense of which party is on pace to win. Now you too can live out your fantasies of being John King.

In the Event of a Tie

If each party ends up with exactly 50 seats, control of the senate effectively goes to the Democrats, because ties in senate votes are broken by the vice president (currently Kamala Harris).



Default Ratings

There isn't a lot of publicly-available polling for house races, so for those default ratings I defer to the Cook Political Report.

However, note that I map their "Solid" ratings to my "Certain" ones.

PVI

Next to the rating for each district, you'll see a letter and a number, for example R+3. This is the PVI for that district.

PVI stands for "Partisan Voting Index". Plagiarizing from wikipedia:
PVIs are calculated by comparing a congressional district's average Democratic or Republican Party share of the two-party presidential vote in the past two presidential elections to the national average share for those elections. For example, the national average for 2004 and 2008 was 51.2% Democratic to 48.8% Republican. In Alaska's at-large congressional district, the Republican candidate won 63% and 61% of the two-party share in the 2004 and 2008 presidential elections, respectively. Comparing the average of these two district results (62%) against the average national share (48.8%), this district voted 13.2 percentage points more Republican than the country as a whole, or R+13.

In general, the PVI of a district is a good indicator of which party will win control the seat. It's not perfect though. For example, an incumbent and moderate Democrat may be a safe bet to win in an R+3 district. Also note that if in the past two presidential elections, Democrats got 52% of the two-party vote share nationwide, then an R+1 district would in absolute terms still be 51-49, since the R+1 is relative to the national average.



What polling data do you use?

The good people at electoral-vote.com are kind enough to provide downloadable polling data, so that's what I use. You can read about their standards for which polls they include here.

Why is there no polling data or county view for Alaska?

Alaska now uses Ranked Choice Voting. Which is cool, although it does have the unfortunate side effect of totally breaking the interface I'm using for every other state. Alaska also historically doesn't track county-level vote data.

What about the Utah senate race?

This year's senate race in Utah is unusual in that there is no Democratic candidate running; Evan McMullin is running against Mike Lee as an Independent. The interface of this site is built around the (usually correct) assumption that candidates of other parties have virtually no chance to win, and so any non-Republican winner is implicitly counted as a Democrat during the election simulations. In this case though I've made an exception such that any senate election in which Evan McMullin is either the 50th or 51st "Democrat" will be counted as a Tie.

Where is the Oklahoma special senate election?

Oklahoma technically has both of its senate seats up for election this year. But given how heavily Republican-leaning Oklahoma is, it honestly wasn't worth the trouble of refactoring the code to model that. The Oklahoma special election is taken by the simulation to be "Lock Republican", which is already a perfectly accurate characterization.

What do ferrets have to do with anything?

When used as a verb, "ferret" can mean "to search about". Mostly it's a reference to this adorable (and sadly, seemingly defunct) government tool that I used one time for a college project.