On election night the returns do not arrive in a random order. Small rural precincts finish counting first and large urban counties finish last. Ballots cast in person are usually counted before ballots that arrived by mail, and several states keep counting mail for days. So the lead a candidate holds at nine o’clock is partly a fact about the electorate and partly a fact about which places have finished.
That produces a predictable pattern rather than noise. The law professor Edward Foley measured a shift toward Democratic candidates during the canvass, the official count that continues after election night, in every presidential election since about 2000.1 A number that is still moving is not a result. So how do you tell a real shift from the order of the count?
The answer is a baseline: a number written down beforehand saying what each place is expected to do. A county that reports is then compared against its own expectation rather than a running statewide total, and the gap is the only thing carrying information. Here the expectation for every state is its 2024 presidential result.
The baseline tested here is one sentence. A state elects the senator of the party whose presidential candidate carried it. No candidates appear in that sentence, and no money, polls or campaigns — nothing that happened after the previous presidential election was counted.
A rule cannot be graded on the election it was written for, because that election has not happened. So it is rehearsed one level down, on the 433 congressional districts of 2024 with the presidential vote counted inside each one and the party of the member elected there beside it. That file offers 433 chances to be wrong instead of 35, which makes accuracy measurable at each level of competitiveness rather than only overall. The presidential returns, by state and by district, are the researcher Jason Timm’s compilation of the certified state counts, downloadable at https://github.com/jaytimm/PresElectionResults. No federal agency publishes American election returns, so every national file is somebody’s assembly of fifty-one state publications.
Two joins build it — a join being the step that lines two tables up
on a column they share, the join key — and both keys
are geography. The 2026 landscape joins a roster of sitting senators to
each state’s 2024 presidential margin on the two-letter state
abbreviation. The rehearsal joins the presidential vote inside a
district to the House result there on the district identifier,
GA-05 for Georgia’s fifth. Every join takes on the
assumptions of both files plus one more about how they line up, which is
the subject of Join
Keys and Crosswalks. That chapter also covers the crosswalk, a table
that translates one set of areas into another.
Three files, and only two of them exist yet.
senate_2026_landscape.csv has 35 rows, one per Senate
seat on the 2026 ballot. It carries state,
senator_last, party,
pres24_margin and ev from the sources, and
pres24_winner, abs_margin and
hostile_turf computed here by comparison. The last is a
definition rather than a measurement: a seat is on hostile turf when the
party holding it is the party that lost the state for president.
The roster it starts from is the list of current members of Congress
maintained by the @unitedstates project, a
volunteer group that publishes public-domain data about Congress,
downloadable as legislators-current.csv at https://unitedstates.github.io/congress-legislators/legislators-current.csv.
It is two tables wearing one layout: its representatives carry a
district and its 100 senators carry a
senate_class instead, each side leaving the other’s column
blank. One row is a person, and this brief needs a list of
contests.
| Stage | Rows |
|---|---|
| Members of Congress in the roster | 537 |
| Senators | 100 |
| Senate seats on the 2026 ballot (33 Class 2 terms ending, plus 2 special elections) | 35 |
Senate terms run six years, and the Senate is divided into three classes so that one class’s terms end in each even-numbered year; the class says whose is expiring. Both Georgia senators appear in the roster and only one is in this brief, because Jon Ossoff’s seat is Class 2 and Raphael Warnock’s is not. Nothing about a senator’s name, party or state distinguishes them; one digit does.
Class 2 is not the whole ballot, and this matters on the night. A seat vacated mid-term is filled at the next general election whatever class it belongs to, and 2026 has 2 such seats: Ohio and Florida, where Marco Rubio and JD Vance left the Senate in January 2025 to become Secretary of State and Vice President. The appointees now holding them, Jon Husted and Ashley Moody, face special elections for the remainder of the terms, so both states have a Senate race on 3 November and both appear in the 35 rows here. Two cautions. Each of those states also has a Class 1 senator who is not on the ballot, so the seat, not the state, is what was selected. And a list built from the class digit alone would have 33 rows and nowhere to put 2 of the night’s results; that is what the results template below guards against.2
| State | Incumbent | Party | 2024 presidential winner | 2024 margin | Hostile turf? |
|---|---|---|---|---|---|
| GA | Ossoff | Democrat | Trump | 2.2 | TRUE |
Two things to notice in that row. pres24_margin
is not about this election. It is information from 2024 carried
forward, and it is the only predictive column in the file. And
senator_last is whoever held the seat in August
2026, because a roster of current members describes today and
is overwritten tomorrow. Retirement, primary defeat, appointment and
death each break that column, and by election day several will have.
Finding a name in these 35 rows that is on no ballot is one of the more
instructive things you can do here.
rehearsal_house_2024.csv is the opposite kind of object,
an election that is finished. It holds district,
state, cd, the Democratic share of the
district’s two-party presidential vote in dem_share, the
house_rep elected there with house_rep_party,
and the three columns computed here: baseline,
actual and as_expected. Nobody tallies a
presidential vote by congressional district, so dem_share
is less official than it looks. Somebody has to lay precinct returns
over district lines and split the precincts the lines cut through, which
makes it a careful reconstruction rather than a canvass.
The third file is results_senate_2026_TEMPLATE.csv: 35
rows, one per race including the 2 special elections, and two empty
columns waiting for the night. winner_party takes the party
of the candidate a results page has called the winner,
Democrat or Republican; dem_pct
takes the Democratic candidate’s share of the vote as reported at the
moment you look. A row for a race not yet called stays blank, because a
blank is honest and a guess is not. What fills the first column will not
be a count. A called race is a judgment, made by
analysts who decide that the ballots still outstanding cannot reorder
the ones already in, and the file will not remember who made it or when
unless you write that down beside it.
Little cleaning was needed. The two files are joined on the state abbreviation, the senators not on the ballot are dropped, and the remaining columns are comparisons. No missing value was guessed at and filled in.
Before you read on, commit to an answer. The rule above gets some districts wrong. Where do those districts sit? Not geographically — where on the range from the safest Republican seat to the safest Democratic one. Scattered evenly across it, as a rule that is wrong now and then everywhere would put them? Or bunched somewhere? If bunched, write down where, and how tightly, before you look.
Start with what is on the ballot.
| Quantity | Value |
|---|---|
| Seats up | 35 |
| Republican seats being defended | 22 |
| Democratic seats being defended | 13 |
| Seats where the other party’s presidential candidate won in 2024 | 3 |
35 seats, 22 Republican and 13 Democratic. That asymmetry is an accident of 2020, because it is whichever class of senators happened to be elected six years earlier. Only 3 seats sit on hostile turf.
| State | Incumbent | Party | 2024 winner | 2024 margin |
|---|---|---|---|---|
| MI | Peters | Democrat | Trump | 1.42 |
| GA | Ossoff | Democrat | Trump | 2.20 |
| ME | Collins | Republican | Harris | -6.94 |
One square per state. The letter is the party defending the seat and the number is that state's 2024 presidential margin. Hover for the incumbent.
Figure 1. The 35 seats up in 2026, one square per state. Equal squares fit because the Senate gives every state two seats regardless of population, so a geographic map would size the states by the one quantity that does not matter. Coloured squares have a seat on the ballot and are filled by the party defending it; grey squares have no Senate election. The letter and number in each contested square give the defending party and that state’s 2024 presidential margin, and the 3 heavily outlined squares are where those two disagree.
| Quantity | Value |
|---|---|
| Seats where the 2024 margin was 15 points or more | 16 |
| Share of the seats up | 46% |
| Median 2024 margin, absolute value | 14.3 points |
| Seats where the 2024 margin was under 5 points | 5 |
16 of 35 seats sit in states decided by fifteen points or more in 2024, and the median seat is in a state decided by 14.3. Before anybody raised a dollar, roughly half the class was out of reach. Applied to this map, the baseline makes a falsifiable prediction without knowing who is running.
| Outcome | Value |
|---|---|
| Seats the baseline gives Republicans | 23 |
| Seats the baseline gives Democrats | 12 |
| Seats where the baseline implies a party change | 3 |
The rule expects 3 of 35 seats to change hands, precisely the 3 on hostile turf. Now rehearse it on districts already counted.
| Quantity | Value |
|---|---|
| Districts | 433 |
| Where the presidential winner’s party won the seat | 418 |
| Accuracy | 96.5% |
418 of 433 — 96.5%. A rule whose only input is two years stale calls 96.5% of a national election. So 15 districts broke it: few enough to list, and enough to ask a question of.
| Districts… | How many | Rule correct in | Accuracy (%) |
|---|---|---|---|
| within 2 points of even | 35 | 26 | 74.3 |
| within 5 points of even | 90 | 75 | 83.3 |
| within 10 points of even | 175 | 160 | 91.4 |
| within 15 points of even | 268 | 253 | 94.4 |
And the complement.
| Districts… | How many | Rule correct in | Accuracy (%) |
|---|---|---|---|
| more than 2 points from even | 398 | 392 | 98.5 |
| more than 5 points from even | 343 | 343 | 100.0 |
| more than 10 points from even | 258 | 258 | 100.0 |
| more than 15 points from even | 165 | 165 | 100.0 |
The same rule, scored twice at every cut-off. Hover for the district counts behind each pair of percentages.
Figure 2. The rule’s accuracy is a function of competitiveness and of almost nothing else. The same rule is scored twice at every cut-off. The red line is its accuracy among districts within that many points of an even presidential split; the blue line, among districts further out. The two separate at the first cut-off and never come back together. Beyond 4.0 points from even the blue line reaches 100% and stays there, across 357 districts where the rule did not miss once.
Outside five points of even the rule was right in 343 districts of 343. Inside five points it was right 83.3% of the time. Every one of the 15 misses lies within 3.7 points of an even split.
One of them shows how a miss is scored. Nebraska’s second district,
around Omaha, gave Harris 52.3% of its two-party presidential vote, so
the baseline for the seat was a Democrat. The seat went to Don Bacon, a
Republican, so as_expected is FALSE. The district sits 2.3
points from an even split, well inside the zone where the rule is
guessing; the same miss in a district Trump carried by thirty would have
been a shock, and there were none.
| District | Democratic % (president) | Presidential winner | Member elected | Member’s party |
|---|---|---|---|---|
| TX-28 | 46.31 | republican | Henry Cuellar | democrat |
| OH-09 | 46.61 | republican | Marcy Kaptur | democrat |
| CA-13 | 47.21 | republican | Adam Gray | democrat |
| NY-03 | 47.33 | republican | Thomas R. Suozzi | democrat |
| TX-34 | 47.77 | republican | Vicente Gonzalez | democrat |
| WA-03 | 48.30 | republican | Marie Gluesenkamp Perez | democrat |
| NC-01 | 48.44 | republican | Donald G. Davis | democrat |
| MI-08 | 48.99 | republican | Kristen Mcdonald Rivet | democrat |
| NM-02 | 49.03 | republican | Gabe Vasquez | democrat |
| CA-09 | 49.08 | republican | Josh Harder | democrat |
| NJ-09 | 49.41 | republican | Nellie Pou | democrat |
| NV-03 | 49.62 | republican | Susie Lee | democrat |
| PA-01 | 50.16 | democrat | Brian K. Fitzpatrick | republican |
| NY-17 | 50.28 | democrat | Michael Lawler | republican |
| NE-02 | 52.34 | democrat | Don Bacon | republican |
Every failure of the rule sits in the middle of the distribution. Hover for counts.
Figure 3. The failures against the whole distribution they came from. Grey bars count all 433 districts by the Democratic share of their two-party presidential vote; red bars, on the same axis and scale, count the 15 the rule got wrong. The red is not thinly spread across the grey. It occupies one narrow column in the middle, and the two long tails holding most of the House are empty of it.
The rule is not 96.5% accurate. It is 100% accurate where nothing was at stake and a coin-flip-plus where something was. Both readings of that percentage were available and only one is useful. “A rule this simple forecasts a national election” is true and misleading; “it forecasts every uncompetitive election, which is most of them” is true and usable.
That second reading is what makes the baseline work on the night. Beyond five points the expectation is close to certain, so a place reporting far from it is either a real shift or a partial count. Ask what is still outstanding there and you can tell which. Inside five points the baseline knows nothing, so a lead that moves is neither evidence of a shift nor evidence against one.
Take the two ends of the map. Wyoming went for Trump by 45.8 points, and Lummis is defending a Republican seat, so the baseline says Republican; in the rehearsal the rule never missed a district that far from even. If at nine o’clock the Republican leads there by only ten, the baseline says partial count, not shift: ask which counties have yet to report and expect the margin to widen as they do. If the certified result were a ten-point Republican win, that would be the night’s news, a departure a baseline exists to catch. Georgia went for Trump by 2.2, and Ossoff is defending a Democratic seat, so the baseline says Republican but the rehearsal says a call this close to even is a coin flip plus. A Democratic lead at nine o’clock there means nothing, and neither does a Republican one; the only useful question is what is still out.
| Zone | Seats | What the rehearsal says |
|---|---|---|
| More than 15 points from even in 2024 | 16 | rule was 100.0% right here |
| Between 5 and 15 points | 14 | rule was 100.0% right here |
| Within 5 points | 5 | rule was 83.1% right here |
| State | Incumbent | Party | 2024 winner | 2024 margin |
|---|---|---|---|---|
| MI | Peters | Democrat | Trump | 1.42 |
| GA | Ossoff | Democrat | Trump | 2.20 |
| NH | Shaheen | Democrat | Harris | -2.78 |
| NC | Tillis | Republican | Trump | 3.21 |
| MN | Smith | Democrat | Harris | -4.24 |
5 seats of 35 are in the zone where the rule stopped working. Those are the races to watch, and the rest are the yardstick you watch them against. Two caveats before treating that as a forecast. A House district is not a Senate state, because Senate races have larger and better-known candidates, which should make a presidential baseline less accurate. And a midterm is not a presidential year, because the electorate is smaller and differently composed.
What does not follow is that campaigns do not matter. The baseline holding is consistent with two very different worlds: one where nothing happened, and one where enormous effort made the expected thing happen.
What to do on the morning of 4 November. Open
results_senate_2026_TEMPLATE.csv beside a results page. For
each of the 35 rows, Ohio and Florida included, write the called
winner’s party in winner_party and the Democratic share
reported at that hour in dem_pct, and leave uncalled races
blank. In a notes column of your own, record where each call came from
and at what time. Then set winner_party beside
pres24_winner in senate_2026_landscape.csv,
the baseline, and count the agreements separately for seats more than
five points from even and seats within five, the way the rehearsal did.
The rehearsal says the first group should agree almost everywhere; any
seat there that disagrees is either the night’s real story or a state
still counting, and the way to tell is to ask how many ballots it has
left. The second group is where the baseline knew nothing, so a
disagreement there is not a surprise and an agreement is not a
vindication.
Whether the baseline has become more accurate over time. Daniel Hopkins argues that American political behaviour has nationalised, with local contests increasingly decided by national party loyalties,3 and Alan Abramowitz and Steven Webster put the tightening down to negative partisanship, voting against the other party rather than for one’s own.4 Both predict that the same rehearsal run on 1980 would score far lower. This file holds one election and cannot test it.
What is still outstanding anywhere. Nothing here records how many ballots a jurisdiction has left to count, which is what you need to separate a real shift from a partial one. The baseline says what to expect; it does not say how much of the answer has arrived.
Who will be on the ballot. The landscape is a snapshot from August 2026, so retirements, primary defeats and appointments after that date are absent, and an open seat behaves very differently from an incumbent defending one.
Anything about candidates, turnout, money or polling. There is exactly one predictor in either file by construction, which makes it a clean baseline and useless for anything else. 2 House districts are also missing from the rehearsal, and every accuracy figure above is computed over 433.
None of these is answered above, and every one can be answered from the tables the Sources section hands over.
rehearsal_house_2024.csv has baseline,
actual and as_expected. Count how often the
baseline was right within each ten-point slice of
dem_share, and find the slice where it stops being
useful.as_expected is FALSE and read
house_rep beside dem_share. What do those
members have in common?senate_2026_landscape.csv flags seats with
hostile_turf and gives pres24_margin beside
it. List them, and say which party has more exposure.senate_2026_landscape.csv by
abs_margin, then check senator_last against
the candidates actually on this year’s ballot. How many names have
changed?results_senate_2026_TEMPLATE.csv from a results page and
score the baseline against it, following the morning-of-4-November steps
above. Note where each call came from and at what hour, because a called
race is somebody’s judgment and the file will not say so. Check that the
Ohio and Florida special elections have found their rows.Data
legislators-current.csv, https://unitedstates.github.io/congress-legislators/legislators-current.csv;
the project itself is at https://github.com/unitedstates/congress-legislators).
Incumbents are as of August 2026. The state margins are from Jason
Timm’s compilation below.PresElectionResults compilation of the certified state
counts (https://github.com/jaytimm/PresElectionResults). The
presidential figures are a reconstruction from precinct returns.The data itself
Every figure above is drawn from these plain CSV tables.
rehearsal_house_2024.csv,
senate_2026_landscape.csv,
results_senate_2026_TEMPLATE.csv
Also cited
I want to rebuild a public dataset from its original sources, without any starting files. Please do the following and show your work. THE FIRST SOURCE. The @unitedstates project's roster of current members of Congress, a plain CSV at https://unitedstates.github.io/congress-legislators/legislators-current.csv One row per sitting member, with chamber, state, party, and -- for senators -- the class that says which election year the seat faces. Open, maintained by volunteers, no account or key needed. THE SECOND SOURCE. The 2024 presidential result by state and by congressional district. Any careful public compilation will do: the jaytimm/PresElectionResults collection on GitHub carries the state results, and The Downballot publishes district-level presidential calculations as freely exported spreadsheets. WHAT TO BUILD. This was assembled before a November 2026 election night, in two halves: the map that exists in advance, and a rehearsal of the method on an election that has already happened. 1. The 2026 Senate landscape: every Class 2 seat up in 2026, who holds it today, and how the state voted for president in 2024 -- flagging seats where the holding party lost the state. 2. The rehearsal: each 2024 House result beside the presidential result in the same district, marking where the seat went against the district's presidential winner. CHECK YOUR WORK. The copies this book used were downloaded in August 2026. If your rebuild matches them, you should find: - 35 Senate seats on the 2026 ballot: 33 Class 2 terms ending, plus the Florida and Ohio special elections for the Class 3 seats Rubio and Vance vacated - 3 of them held by the party that lost the state for president - 433 districts in the rehearsal table, out of the House's 435; in all but 15 the seat went to the party that carried the district The seat landscape moves as members resign, die, or are appointed, so the roster file changes week to week; a different holder for a seat means the world moved, not that you made an error.
Edward B. Foley, “A Big Blue Shift: Measuring an Asymmetrically Increasing Margin of Litigation,” Journal of Law and Politics 28, no. 4 (2013): 501–546, SSRN working paper 2353352.↩︎
The Senate’s own list of seats by class is at https://www.senate.gov/senators/Class_II.htm; the two special elections are Class 3 seats, listed at https://www.senate.gov/senators/Class_III.htm.↩︎
Daniel J. Hopkins, The Increasingly United States: How and Why American Political Behavior Nationalized (Chicago: University of Chicago Press, 2018), https://press.uchicago.edu/ucp/books/book/chicago/I/bo27596045.html.↩︎
Alan I. Abramowitz and Steven Webster, “The Rise of Negative Partisanship and the Nationalization of U.S. Elections in the 21st Century,” Electoral Studies 41 (2016): 12–22, https://doi.org/10.1016/j.electstud.2015.11.001.↩︎