Skip to content

Split War Widow's Pension (FRS code 9) out of bsp_reported #1222

Open

Description

@vahid-ahmadi

Summary

bsp_reported is built from FRS benefit codes 6 and 9 (packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py:825, benefit.isin((6, 9))). The FRS 2024-25 data dictionary labels code 6 "Bereavement Support Payment / Widowed Parent's Allowance" and code 9 "War Widow's/Widower's Pension". These are uprated differently:

  • Bereavement Support Payment (BSP) rates have been frozen since April 2017 (SI 2017/410 reg 3; SI 2026/148 art 19 says each amount "remains unchanged").
  • Widowed Parent's Allowance rises with CPI under art 18 of the same order (£150.90 to £156.65 a week for 2026/27).
  • War Widow's Pension rises with September CPI under the Service Pensions (Amendment) Order.

In the raw FRS 2024-25 benefits table, grossed with gross4, code 9 is £1,077m a year and code 6 is £123m, of which about £100m is at the BSP monthly rates (£23.01 and £80.55 a week) and £16m at the 2024/25 WPA rate (£148.40). So about 92% of bsp_reported is benefits that are uprated by CPI.

PolicyEngine/policyengine-uk#2381 has the full evidence. PolicyEngine/policyengine-uk#2382 adds war_widows_pension_reported, a CPI-uprated input counted wherever bsp is. bsp_reported stays on CPI until the datasets carry the split, because freezing it now would understate war widow's pension by about £84m in 2029-30.

What this repo needs

  1. Write code 9 to war_widows_pension_reported and only code 6 to bsp_reported in frs_spine.py. bsp_reported is also listed in frs_spine.py:258, graph.py (lines 309, 859 and 979), spi_benefit_coherence.py:122 (SPI_RESTORED_REPORT_COLUMNS), spi_spine.py:217 and spi_support.py:164; war_widows_pension_reported should be carried the same way.
  2. Ideally, also take WPA out of bsp_reported so it is BSP only. VAR2 on code 6 rows is meant to carry the Wid question (1 BSP, 2 WPA), but in the 2024-25 EUL file it does not match the amounts (most £23.01 rows have VAR2 = 2), so check it before relying on it; matching the amount to the WPA rate is a fallback.
  3. Keep the split in step with policyengine-uk-data, which needs the same change, so both builds give the same columns.

The policyengine-uk freeze should only follow a dataset release that does step 1.

🤖 Generated with Claude Code

Activity

  1. juaristi22 commented on Oct 20, 2026

    @juaristi22
    Collaborator

    Update, 20 October: PolicyEngine/policyengine-uk#2382 merged on 18 October and is released in policyengine-uk 2.135.7. bsp_reported keeps its CPI uprating until the datasets carry the split (PolicyEngine/policyengine-uk#2381).

  2. juaristi22 commented on Oct 22, 2026

    @juaristi22
    Collaborator

    Step 2, taking Widowed Parent's Allowance out of code 6, now waits on PolicyEngine/policyengine-uk#2572, section 3: its own input, taxable and counted by Universal Credit, apart from Bereavement Support Payment. Step 1 is in #1333.

    🤖 Generated with Claude Code

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