Repository navigation
UK State Pension dynamics to 2050 for the triple lock costing #501
Description
The plan is at docs/plans/uk-state-pension-dynamics.md (merged in #502). It scopes a UK State Pension projection for PolicyEngine UK, with the Burnham-plan costing in uk-triple-lock as the driving use case and acceptance benchmark.
Why
-
uk-triple-lock's expected gross saving in 2039-40 is £8.41bn, a weighted mean of 198 full PolicyEngine UK runs. DWP's £15bn is a single-path comparator from its Pensim3 dynamic microsimulation (Great Britain, gross, rounded to £1bn); it is compared only with single-path runs (R3).
-
PolicyEngine UK's basic plus new State Pension bill is 12.8% below DWP's in 2026-27 and 23.3% below in 2030-31. Our central run has £169.6bn in 2039-40; the OBR's July 2026 path implies £281.2bn for all State Pension (derived).
-
Verified contributors, whose sizes have not been isolated by runs:
- survey ages are held and top-coded at 80;
- anyone reaching State Pension age after the survey year gets £0;
- State Pension types are pinned;
- 1.09m recipients abroad are missing.
See Full review of triple lock modeling, dashboard, and PR #8 paper uk-triple-lock#9 (finding A3) and DWP's £15bn vs our £8.4bn: real paths near £15bn, and two untested explanations (OBR wedge, pension bill) uk-triple-lock#13.
Plan
Phase 1.
- Reweight the survey's fixed age slots each year to the ONS 2024-based projections.
- Assign each slot the entitlement of the birth cohort it represents, from a cohort entitlement model. The model covers mortality, State Pension age by date of birth, qualifying-year accrual to the transitional rate and protected payments, migration, and pensioners abroad with frozen and uprated pensions.
- Deliver a path-independent sidecar that PolicyEngine UK pins per year, plus a synthetic abroad dataset built only from published aggregates.
Phase 2. Person-level trajectories on version 2 of the same contract, which merge only if they beat Phase 1 on held-out facts.
Work packages
Phase 1 (estimates: about 26-41 agent-days, 10.5-14.5 human review days, 4-7 weeks elapsed if rulings and upstream merges come promptly):
- WP0 ADR 0005, the multi-year answer on Decide UK panel, public transfer, and other product-scope leftovers from uk-data microcosm#148, registration skeleton (this repo)
- WP1 Engine: per-year flat-rate share and add-on base with an uprating index (E1, E2) (policyengine-uk, to file)
- WP2 Engine: transitional-rate formulas (E3); uprated-country parameter, residence and frozen-rate inputs (E4) (policyengine-uk, to file)
- WP3 Engine: every horizon-bound builder to 2051 (E5) (policyengine-uk, to file; needs an owner)
- WP4 Engine: contract version and fail-closed applier (E7) (policyengine-uk, to file)
- WP5 Source packages: ONS projections to 2051 with mortality and migration, Stat-Xplore abroad and amount-band extracts, the country rule table, OBR July 2026 chart 3.11 and long-term determinants, DWP spending by country, and the feed re-pin with Add UK pension facts: State Pension, Pension Credit, workplace pensions, salary sacrifice and Winter Fuel Payment chronicle#305 (chronicle, to file)
- WP6 UK static aging, weights only (UK static aging: ONS 2024-based projection reader and weights-only annual projections to 2050-51 microcosm#1075)
- WP7 Cohort entitlement model (UK State Pension cohort entitlement model: mortality, State Pension age, accrual, migration and pensioners abroad #503)
- WP8 Assignment, bundle writer and abroad dataset (UK State Pension projection bundle: entitlement sidecar, abroad dataset, manifest and scorecard for PolicyEngine UK microcosm#1076)
- WP8b Register the bundle's datasets and release a policyengine.py bundle pinning the new engine (policyengine.py, to file)
- WP9 UK gate file, registration and one-shot scored run (Register UK State Pension gates and run the one-shot scored projection #504)
- WP10 Consumer integration, including the path model to 2049-50, proposed to uk-triple-lock's maintainers (uk-triple-lock, to file)
- WP11 Expected-value build, decomposition and write-up, after the OBR's 28 October 2026 forecast (uk-triple-lock)
Phase 2 (estimates: 25-38 agent-days without licensed data; licensed-panel accrual adds 12-20 after access):
- P2.1 Population kernels on persons
- P2.2 Residence kernels and overseas flows
- P2.3 Person-level accrual from fitted propensities
- P2.4 Labour, partnership, widowhood and claiming kernels
- P2.5 Accrual from Understanding Society, BHPS and ELSA histories
Depends on (consumed, not duplicated)
- Set State Pension age from date of birth, including the rise to 67 policyengine-uk#1899 State Pension age by date of birth
- Apply the 6 April 2017 child cutoffs by date of birth policyengine-uk#1904
date_of_birth - Split additional State Pension by the period's State Pension type policyengine-uk#1922 additional State Pension double count
- Compute the State Pension triple lock from its statutory inputs policyengine-uk#1939 triple lock from statutory inputs
- Uprate additional State Pension and protected payments by CPI, not the flat rate policyengine-uk#1941 CPI uprating of add-ons
- UK pensions: calibrate State Pension, Pension Credit and pension contributions to the resident administrative facts (PolicyEngine/chronicle#305), pin the State Pension age boundary, fix the pension spine stages, and the engine pieces a State Pension uprating analysis needs microcosm#1069 cross-sectional pension calibration, the
state_pensioncolumn guard, and the migration off the State Pension age parameters; this is its deferred "Multi-year runs" piece. It has no assignee yet - Add demographic static aging with aggregate-consistent income factors microcosm#957 and Long-term CPS projections (2026–2100) have no populace replacement — decide rebuild / inherit / retire before #204 closes microcosm#333 static aging; Decide UK panel, public transfer, and other product-scope leftovers from uk-data microcosm#148
- Add UK pension facts: State Pension, Pension Credit, workplace pensions, salary sacrifice and Winter Fuel Payment chronicle#305
- Encode Pensions Act 1995 Sch 4 para 1 (pensionable age by date of birth, as amended by Pensions Act 2014 s.26) TheAxiomFoundation/rulespec-uk#369, the encoding the engine's State Pension age is checked against
Related: PolicyEngine/policyengine-uk#1929, the engine-side statement of this problem.
Acceptance
Gates, locked before the one-shot run (their targets are published and known; the registration says they are not blind):
- G1: DWP Spring 2026 caseloads by type in 2030-31.
- G2: DWP Spring 2026 spending by type in 2030-31.
- G3: Stat-Xplore full-rate bands for cohorts held out of estimation.
- G4: Stat-Xplore abroad backcast, May 2022 to March 2026.
Registered comparisons:
- R1-R2: the OBR's July 2026 path.
- R3: DWP's £15bn and £50bn, as a single-path comparator against our single-path runs only.
- R4-R7: protected-payment inflows, Pension Credit, the cost of unfreezing, and Northern Ireland.
- R8: a blind comparison with the September 2027 Stat-Xplore release.
- R9: DWP Spring 2026 caseloads and spending by type, each year 2025-26 to 2029-30.
Decisions needed
Listed in the plan's "Decisions needed" section and queued for Max.
Activity