Skip to content

UK State Pension projection bundle: entitlement sidecar, abroad dataset, manifest and scorecard for PolicyEngine UK #1076

Description

@MaxGhenis

Part of PolicyEngine/microcosm-dynamics#501 (WP8). The plan is at docs/plans/uk-state-pension-dynamics.md (merged in PolicyEngine/microcosm-dynamics#502), sections "Assigning cohort states to records" and "Output artifact and PolicyEngine UK interface".

Why

uk-triple-lock runs 13 to 23 fiscal years inside one simulation per policy, on one fixed record set, with each path's own uprating. Any artifact holding projected money fixes one path into every job. The bundle therefore holds no path-dependent money: shares of the full rate, and base-year pounds the engine grows by each path's index.

Scope (contract uk_sp_projection.v1)

Files:

  • slots.h5 (private). Per-year household weights. Per person: months_since_last_birthday, fixed per record (or, once Apply the 6 April 2017 child cutoffs by date of birth policyengine-uk#1904 merges, a per-year date_of_birth consistent with the slot's fixed age on 6 October), state_pension_flat_share, and state_pension_addon_weekly_base in base-year prices. A record's rows across years are age slots holding different cohorts; they describe no individual trajectory.
  • abroad.h5 and abroad.years.h5. Single-person cohort-cell households built from published Stat-Xplore aggregates only: residence country, frozen amount or freeze year, share and add-on base. Per-year weights and age, with a fixed date of birth.
  • manifest.json: contract version, base name and sha256, sidecar sha256, producer commits, environment lock, projection variant, State Pension age timetable, extract hashes.
  • scorecard.csv: aggregates only.

Assignment. A deterministic rank assignment of the cohort entitlement model's distributions to age slots within age, sex and nation. Records are ordered by a predictor: the base-year reported share for people already over State Pension age; otherwise earnings, self-employment and benefit indicators.

  • This is an imputation that needs Max's ruling (plan, decision 2).
  • Reported State Pension is a predictor only, and never re-enters a build stage.
  • In the base year each record keeps its own reported state.

Acceptance

  • Invariant I10: for every year after the base year, the assigned marginals equal the cohort model's distributions for every age, sex and nation.
  • The scorecard reports the change in the State Pension distribution from the base year to the first projected year as a seam diagnostic.
  • I11: the sidecar takes no path input; its bytes are the same for any path.
  • I7: base-year totals with and without the sidecar agree to £0.01bn.
  • The abroad dataset holds no survey record.
  • The bundle loads through the policyengine-uk applier (E7), and its manifest carries the names and sha256 values WP8b registers.

Depends on

Followed by: WP8b, a policyengine.py release that registers the bundle's datasets by name and sha256 and pins the engine release.

Estimate: 2-3 agent-days; 1 human review day.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions