Thursday, October 15, 2026
B.C. votes in 9 days

Methodology · Vote-Scope

How we calculate
who's going to win

Vote-Scope doesn't just display polls — and it isn't one more Monte Carlo. What sets the model apart happens before the simulation: every poll is audited, weighted, then corrected for its actually-measured house effects, before being fused into a Bayesian state-space model (BSTS) estimated by MCMC, whose accuracy is measured on past elections. Simulation only comes at the very end of the chain, to translate those intentions into seats. Here is every stage of the machine — because a projection you can't inspect is worth nothing.

  1. 01

    We ingest every poll — then we weight

    A principle borrowed from Nate Silver and The Economist: no published poll is dropped because it is inconvenient. Every poll enters the database; what varies is its weight, based on its quality, its firm, its size and its age. Excluding the polls you dislike is the surest way to manufacture the result you expected. Federally, nearly 300 polls are aggregated; in Quebec, about 90 for the 2026 election; in the United States, more than 600 for the House alone.

    The poll chain. Every poll is entered from its original source — the pollster's report when one exists, otherwise the article of the outlet that commissioned it — with its field dates, sample size, firm, sponsor, collection mode and every published breakdown (region, language, age, gender). Its provenance is kept: when a provisional entry taken from an article is replaced by the full report, the revision is logged, and original reports are archived.

    Recent polls count more, following a half-life that tightens as election day approaches, as at FiveThirtyEight: far from the vote, the model looks wide; late in the campaign, it closely follows the latest polls. When a wave is detected — a strong, sustained slope for a party over recent weeks, carried by several polls — the half-life shortens further, in proportion to the strength of the movement. Polls that are too old leave the window.

  2. 02

    Every poll goes through a quality check

    Before any weighting, a control module examines each poll's methodology individually — not the firm's reputation, the poll itself: declared weighting variables (age, gender, region, education, language, past vote), the source of weighting targets (which census), the presence of regional breakdowns, and the effective sample size once the weighting's design effect is accounted for (Kish's formula): 1,000 heavily reweighted respondents are worth less than 1,000 balanced ones.

    Each check produces a verifiable flag and a quality score that adjusts the poll's weight, with a floor: no poll is eliminated, but a national topline without breakdowns weighs less than a full study. Older polls, published before these fields were recorded, get neutral values — missing information is not treated as a fault.

  3. 03

    We weight firms — and correct their biases

    Each poll's weight combines several documented factors: the firm's methodological transparency, its past accuracy (its average error at previous elections: the lower it is, the more the firm counts), the quality of the poll itself and its effective sample size, on a logarithmic scale — going from 1,000 to 2,000 respondents helps, but doesn't help twice as much. As election day nears, firms that historically caught movements early gain a little weight.

    Several waves from one firm. Closely spaced polls from the same house look more like one series than independent measurements: each older wave is discounted by rank, after Kevin Bonham's rule, and a rolling poll whose sample overlaps the previous one counts less.

    House effects. For each firm, its bias on each party is measured at past elections: the gap between its final polls and the result. It is subtracted from the poll's numbers, but only partly: the corrected share depends on the firm's transparency, then on the poll's distance from the consensus of recent polls. A poll already in line with the consensus is barely corrected; a poll that strays from it is corrected fully. The correction only applies to firms whose bias has been reliably measured. When web panels drift away from telephone polls, their weight drops accordingly.

    Firms without a track record. A firm never measured at an election gets a cautious starting weight, adjusted for its collection mode, with no bias correction until one is measured. For firms whose bias is known but still poorly estimated, extra noise proportional to that uncorrected bias is added to the model's draws: uncertainty widens without moving the average.

    Where the weights act. In three places: they combine polls from the same day in the series the Bayesian model receives; they form, at full strength, the regional estimates that anchor each region's movement in the seat translation; and their recent mass sets the model's regime (rich, moderate or sparse). Bias corrections, for their part, change the poll's numbers directly, before any calculation.

  4. 04

    Outlier polls lose weight, never their place

    A poll in which a party sits clearly away from the median — beyond a fixed statistical threshold — is flagged, by two tests: against all polls of the period, and against those of the surrounding weeks, to catch a break no other poll confirms yet. Its weight is then sharply reduced, a little less for established firms with hybrid methods. Telephone and interactive-voice polls serve as anchors and are not penalised: when the median is dominated by web panels, they are often the ones that are right.

    No poll is removed. If the following polls confirm the movement, the median shifts and the penalty disappears on its own. The rare exemptions — a break the news explains — are documented one by one.

  5. 05

    Polls commissioned by a party are corrected and down-weighted

    A poll commissioned by a party or a partisan group gets a double treatment. Its numbers are first corrected for the sponsor's measured advantage — measured on our own data, by comparing sponsored polls with the others in the same races. Its weight is then sharply reduced. In Quebec, riding polls commissioned by a party get the same double treatment. A firm whose client is known to be partisan also sees its weight reduced.

  6. 06

    Regional polls and riding polls

    When a poll publishes regional breakdowns (Montreal, Quebec City region, rest of Quebec; Ontario, the Prairies, British Columbia…), they anchor each region's movement, instead of assuming every region moves like the average. Published sub-regions (Montreal island, suburbs) are recombined with the weights the pollster itself publishes.

    When a poll doesn't publish one of our regions, the model estimates it from the provincial movement, with a weight far below that of a real regional number. It is an approximation: for a collapsing party, it can drop too low where the party was weak. That is why we enter the full breakdown as soon as the pollster's report publishes it.

    A riding poll is an observation of the riding itself: it enters that riding's baseline before the simulation, so its information flows through the national draws, the cross-party correlations and local responses — instead of being averaged onto the result afterwards.

  7. 07

    A Bayesian model estimates vote intention (BSTS, by MCMC)

    The model's core is a Bayesian Structural Time Series (BSTS), fitted for each party on a daily series — polls from the same day are combined according to their weight, after their biases are corrected. Vote intention is a hidden state: a level and a slope evolving day to day, observed imperfectly through the polls; in the rich regime a weekly cycle is added. The model picks its regime from the richness of recent data, and each regime has its own priors: the thinner the data, the more constrained the trend, and the more the starting point leans on the previous election's result, fully when polls are scarce.

    Estimation runs by MCMC (Markov chain Monte Carlo): the algorithm explores the full set of trajectories compatible with the data and keeps 10,000 posterior draws per party. Since parties are estimated separately, their draws are then paired and brought back to 100% draw by draw; just before, noise proportional to the still poorly measured firm bias is added. The result isn't one number, it's a full distribution for each party — “the Liberals are probably between 41% and 46%”.

    Not to be confused: MCMC estimates vote intention; the Monte Carlo simulation in the next step replays the election. Same family of random methods, two different jobs.

  8. 08

    From votes to seats: 50,000 simulated elections

    A national average doesn't produce seats. Once intentions are estimated, we replay the full election 50,000 times — the standard for all our projections, federal, Quebec, Ontario, British Columbia, the United States, the United Kingdom and France. Each simulation draws one of the Bayesian model's 10,000 draws, which keep together the links between parties imposed by the 100% total. In Quebec, a shock shared by the whole polling industry is added to each simulation, along the axis on which past errors have been correlated (CAQ and PQ on one side, PLQ on the other): when pollsters miss, they often miss together. If Bayesian draws are missing, a matrix of historical cross-party correlations takes over.

    That result is then cascaded region by region with swing elasticities: each region and riding type reacts differently to the same movement, calibrated on past elections. The engine knows each riding's profile: its language make-up (francophones, anglophones, allophones, from the census) and whether it is urban or rural. In Quebec, each riding is treated as a mix of its francophone and non-francophone electorates, so the polls' language breakdowns apply to it directly. Riding-level noise completes the picture, because every riding has its surprises.

    How to read the numbers. The seat count shown is the number of ridings where each party is the most likely winner. The simulation average is also computed and can differ markedly: a party that often finishes a close second wins seats in many simulations without being favoured anywhere. The 80% and 95% intervals cover the central scenarios and nearly all scenarios. “Majority probability: 90%” literally means the party wins a majority in 9 out of 10 simulations.

  9. 09

    Statistical specification

    For readers who want to understand the model's structure. Notation: i a poll, f its firm, p a party, s a simulation, r a riding, Df the firm's methodological transparency score. The model's functional form is documented below; we do not publish some calibrated coefficients and thresholds, and for each we describe its statistical role and the direction of its effect.

    • Poll weight: wi = qi · d(Df) · m(MAEf) · g(neff) · ai · πi · 2−age/h — increasing with quality, transparency and past accuracy, logarithmic in effective size, reduced for an outlier (ai) or partisan poll (πi).
    • Half-life: h = h0 (1 − c · v) + ρ · J, where J is the number of days before the vote and v ∈ [0, 1] the strength of the current wave.
    • Bias correction: ỹi,p = yi,p − κ(Df) · φ((yi,p − cp) / σp) · bf,p, where bf,p is the bias measured at past elections, cp and σp the mean and dispersion of recent polls for party p (poll i included), and φ rises from 0 (poll at the consensus) to 1.
    • BSTS, per party: observation ỹt = μt + γt + εt; level μt+1 = μt + δt + ηt; slope δt+1 = δt + ζt; γt = weekly cycle (rich regime only). Estimated by MCMC, 10,000 draws.
    • Residual pollster uncertainty and normalisation: θp(s) ← θp(s) + 𝒩(0, σp²), where σp grows with the still poorly measured firm bias; then vp(s) = 100 · max(θp(s), 0) / Σq max(θq(s), 0).
    • Industry shock (Quebec): vp(s) ← vp(s) + λp · e(s), e ~ 𝒩(0, σe²), Σp λp = 0 — one shock per simulation, spread along the axis of past errors. A share that would turn negative is clipped at zero.
    • Seats and probabilities: displayed seats = Σr 1[p is the most likely winner of r], i.e. the sum of each riding's modal winner — not the expected seat count (1/50,000) Σs seatsp(s), which is also computed; P(majorityp) = (1/50,000) Σs 1[seatsp(s) ≥ threshold].
    • Backtest error: MAE = (1/P) Σp |projected seatsp − actual seatsp|.
  10. 10

    What we publish, and what we keep

    Everything the model produces is public. Our open data gives, for every jurisdiction, the projections, the polls used, the history of every run and our full record — missed calls and backtest errors included. Anyone can check our numbers, before and after the vote.

    What we don't publish: the exact values of our calibration parameters — weighting factors, thresholds, correction strengths — and the engine's code. Two reasons. First, those values come from long series of measurements and backtests: they are our know-how. Second, a published recipe is a recipe that can be gamed: a pollster or sponsor who knew our exact thresholds could tune its numbers to weigh more in the model. So we publish the model's structure, the reasoning behind each of our choices and all of its results, good or bad — enough to understand and judge it, without being able to replicate it exactly.

  11. 11

    By-elections

    By-elections play two roles. In a general projection, every by-election held since the last general election serves as a local anchor for its riding, with a weight that grows with turnout and fades over time.

    To project a by-election, the engine starts from the riding's last result and applies the movement measured since. A local poll, when one exists, is anchored into that baseline before the simulation. Without a local poll, the departing member's personal vote is removed. No automatic penalty is imposed on the governing party until one is measured on past by-elections. Uncertainty combines the engine's own error and a drift that grows with the time left before the vote.

    A discipline rule applies: without a local poll, we publish no point projection, only a range. Our only missed call to date, a U.S. runoff with no poll at all, shows why.

  12. 12

    We measure ourselves against the past — and publish our errors

    After every election, firm profiles are updated: measured biases, mean absolute error, confidence. These profiles feed directly into the next cycle's weighting and corrections.

    The model is also replayed on past elections, with the current engine and only the polls available the day before the vote (backtests): no later data enters the calculation. The measure is the mean absolute error (MAE): the average gap, per party, between projected and actual seats. Results as of September 28, 2026:

    • Federal 2021: 1.8 seats average error out of 338
    • Federal 2025: 7.0 seats out of 343 — replay of the April 2025 general election: right winner, but a projected Liberal majority the election didn't deliver
    • Federal 2019: 9.7 seats out of 338
    • Quebec 2022: 1.8 seats out of 125 (vote: 1.6 points)
    • Quebec 2018: 6.5 seats out of 125 (vote: 3.4 points)
    • Ontario 2022: 2.8 seats out of 124 (vote: 1.4 points)
    • United Kingdom 2024: 16.8 seats out of 650, 79.4% of constituencies correctly called (vote: 1.5 points)

    A caveat for Quebec 2018: it was our worst miss, and that election was used to diagnose the Quebec engine. The replay still uses no later data, but it isn't a blind test like the others. And a limit these replays reveal: our seat ranges are too narrow — the actual result falls outside the 80% interval more often than one time in five. The party-by-party detail is on our Track Record page, alongside our live calls.

  13. 13

    What we take from The Economist and Nate Silver — and what differs

    Two references served as the foundation, even though we looked elsewhere too.

    From Nate Silver (FiveThirtyEight, then Silver Bulletin): ingest every poll, then weight; rate firms on past accuracy; correct house effects; weight by size and recency; discount repeated waves from one firm; replay the election through correlated simulations and publish probabilities rather than a single number.

    From The Economist (the 2020 U.S. presidential model, the 2022 French presidential model): a dynamic Bayesian model, estimated by MCMC, where vote intention is a hidden state smoothed over time; the separation between polling error, industry-wide error and local error; the use of historical errors and correlated scenarios.

    What differs. Our elections are fought by four, five or six parties in single-member ridings, not head to head: we fit one BSTS per party, normalised together, rather than a two-sided model. In Canada and Quebec we use no economic “fundamentals”: each riding starts from its previous result and receives the movement measured by polls (U.S. governors, by contrast, blend fundamentals and polls). Regional and language breakdowns serve as anchors, riding polls enter before the simulation, web panels are checked against telephone polls, and our replays are rerun with the current engine and published, good or bad.

  14. 14

    We publish, and start again tomorrow

    Every night, the engine recomputes every projection and exports public data files — the same ones that power these pages. The date of the latest run is shown on every projection, along with the number of polls and simulations used. As election day approaches, recent polls weigh more and the ranges naturally tighten.

  15. 15

    What a model cannot promise

    Every model assumes the past sheds light on the future: that voters will react as they have reacted, and that pollsters will err as they have erred. In politics, nothing guarantees it. One day, voters will do something all our precedents deemed nearly impossible, and our projection will have been wrong.

    A probability doesn't promise an outcome; it promises a frequency. An 80% favourite should lose about one time in five — not much more often, not much less. That is the yardstick to judge us by, and it is why we measure the calibration of our probabilities, not just our right and wrong calls. Our own replays currently show that our ranges are still too narrow: we say so, and we are working to fix it. When our numbers stray from the results, we publish it, we look for why, and we do better the next time.

By jurisdiction

The same skeleton, locally calibrated

  • Canada federal — 343 ridings, 50,000 simulations, by-election anchoring. Replayed on 2019, 2021 and 2025.
  • Quebec 2026 — 127 ridings (hybrid map from the PL3 redistribution), 50,000 simulations, region, language, age and gender breakdowns, riding polls built in. Replayed on 2018 and 2022. Live results on the night of October 5.
  • Ontario — 124 ridings, 50,000 simulations. Replayed on 2022.
  • British Columbia — 93 ridings, 50,000 simulations, October 24, 2026 election; floor crossings and new parties (CentreBC, OneBC) tracked seat by seat.
  • United States — House (435 districts): national environment estimated by BSTS, then uncertainty calibrated on three levels (shared national shock, state shock, district error measured on past elections). Senate (Class II seats) and governors: a race-by-race model combining state polls, the national environment and, for governors, fundamentals. 50,000 simulations; a race is a toss-up when the projected margin is under 3 points.
  • United Kingdom — 650 seats, calibrated against published MRPs (YouGov, More in Common) used as local anchors, plus real by-election anchoring. 50,000 simulations. Replayed on 2024 (average error of 16.8 seats, 79.4% of constituencies). For by-elections: no point projection without local polling.
  • France — 2027 presidential — political-bloc aggregation, industry-bias correction calibrated on the 2017 and 2022 polling errors, bloc correlations estimated from the data, full second-round duel matrix, 50,000 simulations. Plus the Barrage Index, a continuous measure of how solid the republican front remains.
  • France — legislative — a two-round Monte Carlo engine over all 577 constituencies with the real legal rules (qualification at 12.5% of registered voters, direct first-round election). Vote transfers and withdrawals are calibrated on the 1,646 runoffs of 2017, 2022 and 2024 — the 2024 republican front is measured, not assumed (third-place withdrawal rates: left 95%, centre 82%, right 28%). Because French legislative polling is event-driven, a differential bridge anchors the projection to the last direct poll and carries the movement of presidential intentions, with uncertainty that grows as the anchor ages. Withdrawal scenarios bracket the outcome rather than pretending to know it.

Data sources

Where the numbers come from

  • Public polls (Léger, Abacus, Nanos, Mainstreet, EKOS, Angus Reid, Pallas, Forum, Innovative…)
  • Pollsters' original reports (PDF), archived, and the commissioning outlets' articles
  • Official 2025 results — Elections Canada
  • Official 2022 results and 127-riding geometry — Élections Québec / DGEQ
  • 2024 results — MIT Election Lab (US) and official results (UK)
  • Official French legislative results 2017, 2022 and 2024, by candidate and constituency — Ministry of the Interior via data.gouv.fr
  • French polls — institute publications filed with the Commission des sondages
  • Geographic maps — Elections Canada, DGEQ, Census Bureau
  • By-elections, floor crossings and vacant seats tracked manually

References

The work our choices rest on

  • Nate Silver — FiveThirtyEight, “How Our Polling Averages Work”, and Silver Bulletin: weighting by firm accuracy, house effects, discounting repeated waves.
  • The Economist — 2020 U.S. presidential model (Heidemanns, Gelman and Morris, Harvard Data Science Review, 2020) and the 2022 French presidential model.
  • Gelman, Goodrich and Han (2024), Harvard Data Science Review — separating polling, shared and local error.
  • Scott and Varian (2014), “Predicting the Present with Bayesian Structural Time Series” — the BSTS method and the R package bsts.
  • Jackman (2005), “Pooling the Polls Over an Election Campaign”, Australian Journal of Political Science — state-space poll aggregation.
  • Kevin Bonham, poll tracking and forecasting — discounting waves from one firm.
  • Kish (1965), Survey Sampling — effective sample size.
  • Hanretty (2020), “An Introduction to Multilevel Regression and Post-Stratification for Estimating Constituency Opinion”, Political Studies Review — riding-level estimation.

Model limits

What we don't capture well

  • Strategic voting — hard to anticipate mechanically
  • Local star candidates who outperform their party
  • Last-minute campaign events
  • French second-round withdrawals — their recent history is measured, their next level is bracketed by scenarios, not predicted
  • Very tight ridings — where the margin of error is greatest
  • Highly local sociolinguistic contexts (some bilingual, Indigenous ridings, etc.)
  • Our seat ranges, narrower than reality turned out to be in our replays of past elections

Independence

No partisan affiliation

Vote-Scope was founded and is led by Kim Leclerc, who has spent more than twenty years inside election campaigns in Canada, France and the United States. Having worked for political parties, he does not claim disembodied neutrality — he holds himself to impartiality: public data, transparent methodology, the same rules applied to every party, and published errors when the model gets it wrong. The model is not affiliated with any party, polling firm or media organization.

Methodological choices are documented here and evolve with the project. If you spot an error or want to discuss the method, reach out via kimleclerc.ca.

Major updates

Model versions

The model carries a version name — not a bare number. A new name marks a major update: new engine behaviour, or a recalibration that moves results. Minor tweaks are noted through the sections above.

  1. Harfang des neiges August 2026 Current release

    Rebuilt riding-level projection. A party’s vote concentration now depends on its level — a party at 7% does not spread like one at 30% — and each party’s own geography feeds the riding projection. House effects switched on for Quebec.

  2. Heron July 2026

    First named release. Bayesian BSTS aggregation, estimated-and-corrected house effects, Dirichlet vote transfers, inter-bloc correlations estimated from the data, and calibration published against past elections.