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) whose between-party correlations are estimated from the data and whose accuracy is calibrated 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.
- 01
We collect every published poll
Every poll published by major firms (Léger, Abacus, Nanos, Mainstreet, EKOS, Angus Reid, Pallas, Innovative…) is entered with its field dates, sample size, firm, collection mode and regional breakdowns when available. Federally: 240+ polls aggregated. In Quebec: 60+ provincial polls, with region and language breakdowns when published.
Recent polls count more: time weighting follows a 14-day half-life — a two-week-old poll counts half as much as one from today. When the model detects a wave (fast, coherent movement across several firms), the half-life shortens automatically, by up to half, to follow the movement without over-smoothing it.
- 02
Every poll goes through a quality audit
Before any weighting, a poll-quality module audits 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), presence of regional breakdowns, and the effective sample size once the design effect is accounted for.
Each check produces an auditable flag and a quality score that modulates the poll's weight, with a conservative floor: no poll is discarded, but a national topline without breakdowns weighs less than a complete study. Older polls, published before these fields were captured, get neutral values — missing information is not treated as a methodological fault.
This is the first building block of our data integrity initiative, which strictly separates three questions: is this poll methodologically sound (quality), does this firm historically hit the mark (performance), and are there anomaly signals in the data (integrity).
- 03
We weight firms — and correct their biases
Each poll's final weight combines several documented multiplicative factors: the firm's methodological transparency (disclosure score), its historical performance (mean absolute error at past elections: a firm averaging 1 point of error gets a bonus, a firm at 5 points is heavily reduced), a penalty for polls commissioned by partisan clients, and sample size on a logarithmic scale — going from 1,000 to 2,000 respondents helps, but not twice as much.
Then comes the house effects correction: for each firm, the model measures the systematic gap between its numbers and the cross-firm consensus over the same period. The correction uses adaptive shrinkage: a small gap (compatible with sampling noise) is barely corrected; a large, persistent gap is corrected at full strength. We don't punish a firm for being different — we correct what is demonstrably systematic.
Finally, historically poorly calibrated firms aren't just down-weighted: the uncertainty of their observations is widened inside the model, so that doubt propagates all the way to the final confidence intervals.
- 04
A Bayesian model estimates vote intention (BSTS)
The model's core is a Bayesian Structural Time Series (BSTS), fitted separately for each party. Vote intention is treated as a hidden state evolving over time — a level and a local trend — observed imperfectly through the weighted polls. The model picks its own structure based on data richness: a cycle rich in recent polls allows a more reactive trend; a sparse cycle forces a more cautious structure.
Estimation runs by MCMC (Markov chain Monte Carlo): thousands of successive draws explore the full set of trajectories compatible with the data. The result isn't one number, it's a complete posterior distribution for each party at each date — “the Liberals are probably between 41% and 46%” — and every draw keeps cross-party coherence (the shares have to stay plausible together, not just separately).
- 05
From votes to seats: the simulated election
A national average doesn't produce seats. The Monte Carlo simulation isn't what sets the model apart — it's simply the translation tool: once intentions are estimated and corrected, we replay the full election tens of thousands of times — 50,000 simulations federally, 20,000 in Quebec. Each simulation draws a plausible national result from the BSTS distributions, respecting the cross-party correlation matrix estimated from the data: when one party rises, the model knows whom it is taking votes from.
That national result is then cascaded region by region using swing elasticities: each region and riding type (urban, rural) reacts differently to the same national movement, calibrated on past elections. Regional swing anchors on the polls' regional breakdowns when they exist, on history otherwise. Federally, by-election results serve as an extra local anchor. Riding-level noise completes the picture — because every riding has its surprises.
Published numbers are statistics over these simulations: the seat projection is the average, the 80% interval covers the central scenarios, and “majority probability: 90%” literally means the party wins a majority in 9 out of 10 simulations.
- 06
We calibrate on 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 learns from every vote.
The model is also replayed on past elections using only the polls available at the time (backtests): the 2019, 2021 and 2025 federal elections, the 2024 UK general election, the 2017 and 2022 French presidential elections, and the 2022 and 2024 French legislative elections. The observed errors — by party, in seats — are published on our Track Record page. Predicting the past is easier than predicting the future; that is exactly why we impose the exercise on ourselves and show the results.
- 07
We publish, and do it again tomorrow
Every run exports public static JSON — the same files that power these pages. Each projection shows its latest run date, with the number of polls and simulations used. As election day approaches, recent polls carry more weight and the intervals tighten naturally.
By jurisdiction
The same skeleton, locally calibrated
- Canada federal — 343 ridings, 50,000 simulations, by-election anchoring. Our most complete pipeline, backtested on 2019, 2021 and 2025.
- Quebec 2026 — 127 ridings (hybrid map from the PL3 redistribution), 20,000 simulations, region and language breakdowns built in.
- Ontario — 124 ridings, provincial polls aggregated.
- United States — House (435 districts) and Senate (Class II seats), national environment + race ratings.
- United Kingdom — 650 seats, calibrated against published MRPs (YouGov, More in Common) used as local constituency anchors, plus real by-election anchoring. GE2024 backtest published (MAE 17.2 seats, 78.9% of constituencies). 50,000 simulations. For by-elections, a discipline rule: no projection is published without local constituency polling — national context alone is not enough.
- 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. Plus the Barrage Index, a continuous measure of how solid the republican front against the RN 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…)
- 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
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.)
Independence
No partisan affiliation
Vote-Scope is a personal project by Kim Leclerc, an independent political analyst. Having worked in politics in the past, 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.