Extended Methodology – Elections

Gambit Forecaster’s Senate and Governor models are built in two sequential stages: a Bayesian poll aggregation pipeline that produces posterior distributions for polled states, and a Monte Carlo simulation engine that draws from those posteriors (or from structural bounds for low-polled states) to estimate the probability of each party reaching its governing threshold.

Stage One: Aggregation and Updating of Polling Data

For every race with at least two qualifying polls, the model runs a Dirichlet-Multinomial sequential update. The Dirichlet distribution is the natural prior for a three-candidate vote share problem. It defines a probability distribution over Democratic, Republican, and Other support simultaneously, and updates cleanly as new poll information arrives.

Each state begins with a prior. Where state-specific priors are manually specified, encoding baseline expectations from historical behavior, structural partisanship, or candidate-specific factors, those are used directly. Where no state-specific prior exists, the model falls back to a set of defaults: 47% Democratic, 47% Republican, and 6% Other, anchored at a prior strength of 50 pseudo-observations. Prior strength controls how much incoming polling is required to meaningfully move the posterior away from the prior. A state with sparse polling will remain relatively anchored to its structural baseline, while a well-polled state will be pulled firmly toward its polling average.

Before any poll enters the Bayesian update, it passes through a weighting and adjustment process. Each poll is assigned a base multiplier drawn from a grade-and-type matrix that cross-references the pollster’s letter grade with the sample type (likely voters, registered voters, or all adults) and the sample size bucket (550 or fewer, 551 to 899, or 900 and above). That base multiplier is then reduced by a time decay penalty that increases as the poll ages, and by additional penalties for partisan-sponsored polls and internal campaign polls. Any poll whose final weight reaches zero or below is dropped entirely. What survives is a set of polls with weights that reflect methodological quality, recency, and independence.

The model also applies house effect corrections prior to the Bayesian update. Each pollster carries a novel house effect value representing its historical lean relative to actual election results. A negative house effect indicates a Democratic-leaning house, meaning the pollster has historically overstated Democratic support, and is corrected by subtracting that value from the Democratic figure and adding it to the Republican figure. A positive house effect indicates the reverse. Unranked pollsters with no calculated house effect receive a lean consistent with the national average, which slightly favor the Democratic Party when utilizing data from 2020 and 2024 Presidential election and 2022 Midterm elections. These adjustments are applied to the raw poll figures before they enter the update, so the posterior reflects bias-corrected rather than face-value numbers.

The Bayesian update itself works as follows. For each poll, the house-effect-adjusted Democratic and Republican percentages are converted to proportions, the implied Other share is computed as the remainder (floored at zero), and all three are renormalized to sum to one. An effective sample size is computed by multiplying the poll’s raw respondent count by its final weight. That effective sample size scales the poll’s proportional draw, meaning high-quality, large-sample, recent polls from independent firms shift the posterior substantially, while low-quality, small, old, or partisan polls contribute far less. The Democratic, Republican, and Other alpha parameters of the Dirichlet posterior are each incremented by the corresponding proportion multiplied by effective sample size. Polls are processed chronologically within each state, so the posterior traces the update path sequentially.

After all qualifying polls for a state have been processed, the final posterior is summarized by its mean (the normalized alpha parameters), its two-party Democratic share (Democratic mean divided by the sum of Democratic and Republican means), and 95% credible intervals derived from the Beta marginals of the Dirichlet, one interval per candidate category. The results are exported to CSV and passed directly into Stage Two.

Stage Two: Monte Carlo Simulation

Both the Senate and Governor models run 8,400 individual simulations. Each simulation represents one coherent, internally consistent election environment drawn from the full range of modeled uncertainty.

At the state level, polled states draw their vote shares from a Dirichlet distribution with parameters built around the exported alpha values from Stage One. A single Dirichlet draw produces a three-category share vector, Democratic, Republican, and Other, that respects the correlations implied by the posterior. The Democratic and Republican shares from that draw are used directly as the simulated vote percentages for that state in that simulation. Unpolled states, which have no posterior, instead draw from a truncated normal distribution bounded by their prespecified Democratic and Republican low and high ranges. This dual-method approach means the model applies richer distributional uncertainty where polling evidence exists, and structural bounds where it does not.

To ensure simulations reflect how elections actually move together rather than treating each state as independent, the model applies a layered swing structure on top of the state-level draws. Movement might be suppressed on a singular level to account for potential overdispersion. For Senate races, a national shock is drawn from a truncated normal distribution with a standard deviation of 0.9 percentage points, bounded between -1.4 and +1.9. This directly reflects an asymmetric range designed to prevent implausible extremes while preserving realistic rightward and leftward environments. Bloc-level shocks are then drawn for four predefined regional groupings: the Upper Midwest (Minnesota, Wisconsin, Michigan, Ohio, Pennsylvania), New England (Maine, New Hampshire, Vermont), the Coastal Atlantic and Sun Belt (Georgia, South Carolina, North Carolina, Virginia), and the Southwest (Texas, New Mexico, Arizona, Nevada, Colorado), each with a standard deviation of 0.6, bounded between -1 and +1. A final state-level idiosyncratic shock is added from a normal distribution with a standard deviation of 0.4. States within a bloc receive the national shock plus their bloc shock plus their state shock; states outside all defined blocs receive only the national and state components. The combined swing is capped at plus or minus 4 percentage points. Governor races use a structurally identical framework but with reduced volatility: the national shock uses a standard deviation of 0.6, the bloc shock uses 0.4, and the state shock remains 0.4, reflecting that gubernatorial races are more insulated from nationalized environments than Senate contests.

The swing is applied by adding it to each state’s Democratic draw and subtracting it from the Republican draw, preserving the directional nature of each simulated environment. Vote shares are clipped to the 0 to 100 range. The winner of each simulated contest is the party with the higher simulated share; ties are broken randomly.

After each state winner is determined, the model tallies seats. Each simulation records the final seat split and increments a control counter when a threshold is crossed. Across all 8,400 simulations, the model computes the share of runs in which each party achieves its governing threshold, identifies the modal seat split as the most common single outcome, and produces state-level win rates alongside average simulated margins and average absolute margins. The state-level win rates are the primary output used to classify states as Democratic-leaning, Republican-leaning, or competitive in the interactive map visualizations. The map itself is generated as a self-contained HTML file, too.

Interpretation
The Bayesian aggregator and Monte Carlo engine are designed to work together. The aggregator compresses polling data into a principled posterior that quantifies not just where a race stands but how much genuine uncertainty remains, and the simulator propagates that uncertainty through thousands of plausible environments to produce probability estimates rather than point predictions. States with wide credible intervals will generate more variable Dirichlet draws and therefore contribute more variance to the topline control probabilities. States with narrow, confident posteriors will draw more consistently and contribute less. The swing layer then ensures that individual-state uncertainty compounds with correlated national and regional movement, meaning a good or bad environment for one party tends to affect multiple states simultaneously, as it does in real elections.

Early in the cycle, unpolled states rely entirely on their structural bounds, and polled states with few surveys remain closely anchored to their priors. As polling accumulates, the Dirichlet posteriors tighten, credible intervals narrow, and the simulation outputs become more driven by observed evidence and less by prior assumptions. Changes in topline control probabilities will often lag behind changes in state-level win rates. Variance in individual states can shift well before it aggregates into meaningful movement at the chamber level.

Check out our most recent election forecast here >