Methodology

How the May 2026 model works

Eleven steps. Every assumption documented. Pin: ukelections.local.v0.2.0-may2026-lcc2025

Headline accuracy

Calibrated against the May 2024 actual results across 1,259 ward-elections: 82.7% winner accuracy and 5.69pp average per-party share error on the five major parties. The same backtest, same code, same metric: /data-quality/2024-backtest/.

Model lineage

The forecast engine was originally trained against Lancashire local elections (RMSE 1.65 on candidate briefings). It has been ported and extended for nationwide ward-level prediction with per-ward UK Demographics (UKD) Census 2021 data, per-county May 2025 cycle anchoring, and multi-cycle local-party stronghold detection.

Step 1, baseline

For each ward, the most recent borough/local cycle result. By-elections count as the most recent vote in that ward. If the baseline is more than 8 years old, the model decays the historical share by 5pp per year past 8 and blends in the GE2024 constituency share as the "fresh" component.

Step 2, national swing (per-region calibrated dampening)

Compute the change in UK Westminster vote intention since GE2024 per party (current polling minus the actual GE2024 result). Apply that swing additively to the baseline ward shares, dampened per region:

Calibration files: data/calibration/regional-dampening.json. Re-calibrated automatically on every nightly pipeline run.

Step 3, per-ward UKD demographic adjustment

For 76% of May 2026 wards we have ward-level Census 2021 data (TS021 ethnicity + TS030 religion + TS054 tenure + TS066 economic activity + TS067 qualifications + TS004 country of birth) aggregated from ONS LSOA bulk via WD22/23/24/25 lookups + name-based fallback for placeholder-GSS wards (Bradford LGBCE 2026 review etc.). The remaining 24% fall back to LA-level Hamilton-Perry v7.0 ethnic projections back-extrapolated to May 2026.

Per-party adjustments fired from per-ward Census evidence, calibrated against academic literature (Sobolewska & Ford Brexitland 2020, Goodwin & Eatwell 2018, BES Continuous Monitoring):

Step 4, multi-cycle local-party-strength anchor

For each party in each ward, compute the mean vote share across the last 5 cycle contests. If a party has mean ≥30% AND std ≤15pp AND has stood in every contest AND a candidate of that party is on the 2026 ballot, the predicted share is anchored to 0.65 × historical mean + 0.35 × model output.

Example: Coalclough with Deerplay (Burnley). Liberal Democrats won 8 consecutive contests at 36-65% (mean 47%, std 11pp). The Birtwistle personal vote anchors LD predicted share to ~33% even in a Reform-surge cycle. Same applies to Briercliffe (Lishman family stronghold).

Step 5, candidate continuity

Two distinct continuity bonuses:

Step 6, cross-tier county-winner continuity (geography-gated)

For a 2026 borough candidate whose surname AND party match a 2025 county councillor winner, AND the 2025 county division geographically overlaps the 2026 borough ward, apply a personal-vote bonus: min(7pp, votes / 5000 × 6pp).

Example: Mark Poulton (Reform UK) won Burnley Rural LCC division in May 2025 with 1,798 votes. He's standing for Reform UK in Briercliffe (one of the 3 wards in Burnley Rural). +2.2pp Reform. Geography gate prevents false positives. Abbey Hartley winning Pendle Hill LCC does NOT match her standing for Conservative in Coal Clough (different geographic area within Lancashire).

Step 7, hand-curated candidate overrides

Local intelligence not derivable from data alone (e.g, a candidate's specifically strong showing in part of their county-cycle division) can be entered into data/overrides/candidate-bonuses.json with a cited reason. Each override appears verbatim in the prediction's methodology trace on the public ward page.

Step 8, restrict to ballot

Drop any predicted party not standing in the 2026 ballot. Redistribute their share pro-rata to the parties that ARE standing. This prevents the model showing inherited-from-history Greens / Independents in wards where they aren't contesting.

Step 9, county-2025 anchor (dynamic weight)

Blend the prediction toward the 2025 county-cycle reference shares for this ward's parent county (where 2025 elections occurred. Lancashire, Lincolnshire, Staffordshire, Derbyshire, Kent, Nottinghamshire, Leicestershire, Warwickshire, Northumberland and 17 others), adjusted by national swing since May 2025.

For Lancashire wards, a per-ward Lancashire County Council 2025 division reference is also passed to the model's Reform-entry step, giving division-specific Reform shares like Burnley Rural 42.9% rather than the Lancashire-wide 35.3% average.

Step 9b. Reform realignment uplift (no-anchor councils)

Added 7 May 2026 to address a structural blind spot uncovered in the pre-election audit. Step 9 (the county-2025 anchor) only fires for wards whose parent county contested in May 2025. Unitary authorities and metropolitan boroughs sitting outside those counties received no realignment signal and fell back to dampened national swing only. The original Blackburn with Darwen forecast pinned Reform UK at a 4.8% mean across 17 wards (zero predicted wins) despite Burnley, Hyndburn and Pendle showing 30-40% Reform shares one mile across the unitary boundary. A subsequent national audit flagged 53 of 156 contesting councils with the same shape; about 30 were demographically plausible Reform-realigning areas and the rest (heavily Asian/Muslim London boroughs, Manchester/Birmingham central) were correctly held down by the existing Step 10 ceiling.

The fix borrows from the per-ward Asian%↔Reform% relationship observed in Burnley after the May-2025 LCC anchor lifted Reform to its empirically-realigned level. The relationship is monotone, at ~2% Asian Reform sits at 32-42%, at 30% Asian it's 24%, at 80% Asian it's capped at 12%. This piecewise-linear curve is applied to wards where no county-2025 anchor was available, modulated by a regional multiplier:

The lift is applied as an upward floor in most tiers (never reduces an existing Reform share). The new hard plausibility ceiling added 20 May 2026 is the exception, it can pull Reform down regardless of upstream prediction:

Other parties are scaled pro-rata so each ward sums to 100%. Step 10 (the older Muslim-only ceiling) is then re-applied as a safety net.

The step is gated by an environment flag and is not enabled in the May 2024 backtest, because the May-2025 realignment signal it borrows from did not yet exist. The 2024 backtest figures reported on this site (winner accuracy 82.7%, MAE 5.69pp) therefore remain the standard model's published accuracy, this step adds a forward-looking correction for the post-2025 political landscape and will itself be backtested against the 7 May 2026 declared results in the post-election audit.

Step 10. Reform UK demographic ceiling

After all adjustments, cap Reform's predicted share at the demographically-plausible ceiling:

Excess is redistributed pro-rata to other standing parties. Example: Daneshouse with Stoneyholme (Burnley) is 75% Muslim. Reform capped at 12.0% (would be ~43% without the ceiling). The model correctly predicts Independent (Hussain) wins.

Step 11, bootstrap intervals

Per-party P10 / P50 / P90 intervals + win_probability via 800-sample bootstrap using the per-party residual standard deviations from the 2024 backtest. Stored on every prediction; the ward page surfaces the central estimate plus the uncertainty band.

National polling source

The UK Westminster, Welsh and Scottish polling values used by the model are auto-refreshed daily as the rolling 14-day average of every pollster published on Wikipedia's polling pages. The current values are shown in the per-prediction methodology trace on every ward and constituency page, and the raw input is downloadable at /data/polling/override.json. A static fallback for each polling family lives in src/lib/nationalPolling.js in case the auto-refresh fails.

Senedd model

16 super-constituencies × 6 list seats (closed-list PR, new under Senedd Cymru Act 2024 Sch.1). Per-pair 2024 GE Welsh constituency baseline aggregated using our hardcoded pairings (with confidence flags). Welsh polling adjustment per party from 2024 → April 2026. d'Hondt allocation per super-constituency with σ=5pp bootstrap intervals (wider than locals to reflect new-system uncertainty). Each super-constituency now carries its Welsh Census 2021 demographic profile (white_welsh_pct, muslim_pct, owned_outright_pct, degree_pct).

Holyrood model

73 FPTP constituencies + 56 d'Hondt regional list seats across 8 regions = 129 seats. Per-constituency 2021 result + Scotland-wide polling swing → FPTP winner. Per-region 2021 list shares + Scotland-wide polling swing → d'Hondt with priorSeats from in-region constituency wins (real per-region compensation, not Scotland-wide apportionment).

Confidence tiers

Editorial neutrality

UK Elections is a public-utility election information site. Parties are listed by predicted share, never by ideology. No "watch lists", endorsements, or commentary. Every prediction is reproducible from the cited source files, and every methodology factor (county anchor, local strength anchor, candidate continuity, demographic adjustment, ceiling cap, override) appears in the per-ward methodology trace.

What we still don't do

Reproducibility

Every dataset that feeds the model is committed to the public repo at tompickup23/ukelections. The full pipeline is one command: node scripts/refresh-pipeline.mjs. Daily 04:30 UTC cron on vps-main runs ingest → features → predictions → backtest → Senedd → Holyrood → build → deploy.