The vote model
The vote model is deliberately simple, and its simplicity is the point: every number it produces can be traced back to something you did.
The core equation#
A state is divided into blocs. Each bloc's two-party share is:
share = sigmoid(baselineMargin + campaignMargin)
That is the whole model.
baselineMargin is where that bloc started — the historical, scenario-defined position before anyone campaigned.
campaignMargin is the sum of every cause logged against that bloc. Not a derived score, not a weighted blend: literally the sum. When the recap tells you a rally in Pennsylvania moved margin by some amount, that number is a term in this equation.
This is why the recap can be honest about attribution. There is no hidden term to explain away a discrepancy.
Momentum is transient#
Signed state momentum couples into vote margin at a per-point rate, but it does so
as a separate term rather than being added into campaignMargin.
The distinction matters. Momentum decays every week (×0.7 at state level), so its contribution fades. It never bakes into the permanent campaign margin. A surge is a surge; it is not a structural gain.
The coupling is zero at neutral momentum, so it leaves the model's calibration untouched when nothing is happening.
Blocs and enthusiasm#
Each bloc carries enthusiasm, which relaxes toward neutral by 40% a week.
Enthusiasm modulates how much a bloc actually turns out, which is why
get-out-the-vote work is a different lever from persuasion: persuasion moves
campaignMargin, turnout work moves who shows up.
From blocs to a result#
Bloc shares aggregate into a contest tally per state — Democratic votes, Republican votes, total, two-party share, and a winner. Contests aggregate into electoral votes, with a tossup category for states too close to call.
What this means in play#
- Everything is attributable. If your margin moved, a cause moved it, and the recap will name it.
- Momentum is not progress. It decays and it never becomes permanent margin. Do not read a momentum spike as a locked-in gain.
- Baselines are stubborn.
campaignMarginhas to overcomebaselineMargin, and in a state that starts 15 points against you, that is a great deal of campaigning. - The sigmoid means diminishing returns. Moving a bloc from 50% to 55% is far cheaper than moving it from 70% to 75%. Marginal blocs are where your effort is worth most.
- Persuasion and turnout are different problems. One moves the margin, the other moves enthusiasm.
See also#
- The campaign week — what decays and when
- Campaign actions — what generates causes
- Polling — why the numbers you see differ from this model's truth
A House Divided
Grand Century
MetroForge
Verdigris
Desktop client