Methodology
Last updated: — · Model version: wra-v1.0
Overview
This tracker produces a daily weighted polling average of UK voting intention. It is not a prediction. It is an estimate of where public opinion currently stands, based on the best available polling data.
The model ingests polls from — pollsters, covering data from — to —. The database currently contains — individual polls.
What the model does
For each day, the model considers all published UK voting intention polls, weighting each by how recently it was conducted. Each poll receives a composite weight based on three factors: how recent it is, how large its sample was, and how reliable its pollster has historically been. The model then computes a weighted average for each party.
This approach is sometimes called a "poll of polls" or polling aggregate. It is designed to smooth out the noise from individual polls while still responding to genuine shifts in opinion.
The model reflects the polls. If polls are systematically biased — as they were in the 2024 general election, where they collectively overestimated Labour by approximately 7 percentage points — the model will reflect that bias. We do not apply ad-hoc corrections for past biases, because the direction and magnitude of polling error is unknown in advance. The model aggregates what pollsters report; it does not second-guess them.
Weighting factors
1. Recency
Polls are weighted by how recently their fieldwork was conducted, using exponential decay with a 14-day half-life. This means a poll conducted 14 days ago receives half the weight of a poll conducted today. There is no hard cutoff — the exponential decay ensures old polls contribute negligibly (a 60-day-old poll has just 4% of a fresh poll's weight). This parameter was validated by backtesting against the 2024 general election result.
Formula: w_recency = exp(−ln(2) × days_ago / 14)
2. Sample size
Larger polls receive more weight, since they provide more precise estimates. The weight is proportional to the square root of the sample size, normalised to a reference poll of 1,000 respondents. This is capped at 3× to prevent very large polls from dominating the average.
Formula: w_sample = min(√(n / 1000), 3.0)
3. Pollster reliability
Each pollster has a reliability score between 0 and 1, based on their historical accuracy, transparency, and methodological disclosure. Pollsters without a score are assigned a default of 0.5. No pollster is given a weight below 0.3, so even lower-rated pollsters contribute to the average.
The final weight for each poll is the product of all three factors: recency × sample size × reliability.
Uncertainty bands
The tracker displays 90% uncertainty bands around each party estimate. These are calculated as the weighted standard deviation of polls in the recency window, multiplied by 1.645 (the z-score for a 90% interval). We call these "uncertainty bands" rather than "credible intervals" because the model is not fully Bayesian — these bands reflect pollster disagreement, not a formal posterior distribution.
Wide bands mean pollsters disagree significantly. Narrow bands mean there is strong consensus. A minimum band of ±1.5 percentage points is applied to every estimate, because even when pollsters agree, there is always some irreducible uncertainty in measuring public opinion.
What this model does not do
This model does not predict elections. It does not project seats. It does not account for likely voter turnout, tactical voting, or campaign effects. It simply reports what current polls suggest about national voting intention.
The model does not apply house-effect adjustments in v1.0, though the infrastructure exists to add them. It does not use a Bayesian framework or state-space model — those are planned for future versions.
Seat projections are not included in this version. National vote share does not translate simply to seats in the UK system, and any preliminary seat model would require significant additional assumptions.
Data sources
Polling data is sourced from publicly available records, primarily Wikipedia's UK opinion polling tables, which aggregate polls published by British Polling Council members and other pollsters. Each poll entry includes pollster name, client, fieldwork dates, sample size, and party vote share figures.
The system stores both raw scraped data and a cleaned canonical version. All entries include source attribution. Polls that fail validation checks (e.g. party totals exceeding 105%, very small samples) are flagged and excluded from the model.
Known limitations
All polling aggregates have limitations. The key ones for this model are:
- •It relies on publicly published polls. Polls that are not published or are embargoed will not appear.
- •If a source changes its format, the automated scraper may fail until manually fixed.
- •Pollster reliability scores are currently at default values and have not yet been calibrated against election outcomes.
- •The model treats all polls as measuring the same thing, even though question wording, turnout filtering, and weighting methods differ between pollsters.
- •GB-only and UK-wide polls are currently combined, which may slightly affect SNP and Plaid Cymru figures.
Version history
v1.0 (March 2026) — Initial release. Weighted rolling average with recency decay (14-day half-life, decay-only, no hard cutoff), sample-size weighting, and pollster reliability framework (all pollsters at default in v1). 90% uncertainty bands. Data from Wikipedia polling tables. Parameters validated by backtesting against the 2024 general election: mean absolute error of 2.4 percentage points across all five major parties.
Questions about the methodology? Contact fred@fredcornell.com