Repository navigation
bsp_reported is CPI-uprated but BSP rates are frozen, and the variable is mostly War Widow's Pension #2381
Description
Summary
bsp_reported is projected forward with CPI, but Bereavement Support Payment (BSP) rates have been frozen since BSP started on 6 April 2017. The catch is that bsp_reported is not only BSP. Both data pipelines build it from FRS benefit codes 6 and 9, and code 9 is War Widow's/Widower's Pension, which is uprated by CPI every April. In the FRS 2024-25 microdata, code 9 is about 90% of the value of bsp_reported. So simply freezing the variable would make the projection worse, not better.
The fix is to split the war widow's pension out into its own CPI-uprated variable, and then freeze BSP once the datasets populate the split.
The law
- BSP rates. The Bereavement Support Payment Regulations 2017 (SI 2017/410), reg 3 set the higher rate at £3,500 plus £350 a month and the standard (lower) rate at £2,500 plus £100 a month. The revised text on legislation.gov.uk still carries those amounts.
- The up-rating order holds them flat. The Social Security Benefits Up-rating Order 2026 (SI 2026/148), art 19 says each of £350, £3,500, £100 and £2,500 "remains unchanged". The DWP Benefit and pension rates 2026 to 2027 table shows the same four amounts for both 2025/26 and 2026/27.
- Widowed Parent's Allowance (WPA) is uprated by CPI under art 18 of the same order ("Rates of bereavement benefits"): £150.90 a week in 2025/26 and £156.65 in 2026/27, a 3.8% rise. It is closed to deaths from 6 April 2017 onwards.
- War Widow's/Widower's Pension is paid under the War Pensions Scheme, not the social security up-rating order. It is uprated each April by The Naval, Military and Air Forces Etc. (Disablement and Death) Service Pensions (Amendment) Order in line with September CPI: 1.7% for 2025/26 (HB circular A2/2025) and 3.8% for 2026/27.
The model
policyengine_uk/data/uprating_indices.yaml:42listsbsp_reportedundergov.economic_assumptions.yoy_growth.obr.consumer_price_index, which is what projects the dataset column forward.policyengine_uk/variables/gov/dwp/bsp_reported.pyalso declaresuprating = "gov.economic_assumptions.indices.obr.consumer_price_index". policyengine-uk-data buildsstorage/uprating_factors.csvfrom that attribute, so itsbsp_reportedrow is CPI too (1.0 in 2020 rising to 1.38 by 2029).- There is no formula for BSP and there are no BSP rate parameters.
bsp(policyengine_uk/variables/gov/dwp/bsp.py:11) is justadds = ["bsp_reported"]. bspfeedshousehold_benefits(and sohousehold_net_income),hbai_benefits,hbai_household_net_income,gov_spending,pre_budget_change_household_benefitsand thedisable_simulated_benefitsreform.
What the FRS codes are
The FRS 2024-25 benefits data dictionary labels code 6 "Bereavement Support Payment / Widowed Parent's Allowance" and code 9 "War Widow's/Widower's Pension". Both pipelines sum the two:
- policyengine-uk-data
policyengine_uk_data/datasets/frs.py:1464:benefits.benefit.isin((6, 9)) - microcosm
packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py:825:benefit.isin((6, 9))
Grossed with gross4, the raw FRS 2024-25 benefits table gives:
| FRS code | Weekly amount | Weighted recipients | Annual £m | What it is |
|---|---|---|---|---|
| 6 | £23.01 | 31,400 | 37.6 | BSP standard rate (£100 a month) |
| 6 | £80.55 | 14,800 | 62.0 | BSP higher rate (£350 a month) |
| 6 | £148.40 | 2,000 | 15.8 | WPA 2024/25 standard rate |
| 6 | other | 2,600 | 7.2 | unclear |
| 9 | various | 141,600 | 1,076.8 | War Widow's/Widower's Pension |
| Total | 1,199.4 |
So about £100m (8%) of the reported total is BSP at the frozen rates, and about £1,093m (91%) is WPA and war widow's pension, both of which are uprated by CPI. The 141,600 grossed code 9 recipients look high for the war widow's caseload, so part of code 9 may be misreported survivors' pensions, but those are also uprated. BSP lump sums are not captured in either code; that is out of scope here.
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 line up with the amounts (most £23.01 rows have VAR2 = 2), so an amount-based or admin-based split may be safer than VAR2.
Size of the effect
The CPI index in the parameters rises by a factor of 1.1225 from 2024 to 2029 (OBR year-on-year growth 3.4%, 2.3%, 2.0%, 2.0%, 2.0% for 2025 to 2029). Every pound of BSP in a 2024 dataset is therefore shown as £1.12 in 2029-30, when it should still be £1.00.
On the enhanced FRS 2024-25 dataset, bsp_reported totals £731.4m in 2024 and £840.2m in 2029 (about £92m of that rise is the CPI projection; the rest is weight growth). Using the raw FRS shares above:
- Keep CPI on the combined variable (status quo): the BSP part, about 8%, is overstated by about £8m in 2029-30.
- Freeze the combined variable: everything else, about 92% and almost all war widow's pension and WPA, is understated by about £84m in 2029-30.
Freezing the whole variable now would swap an £8m error for one ten times larger.
Proposed fix
- policyengine-uk (this repo). Add
war_widows_pension_reported(CPI-uprated, listed inuprating_indices.yaml) andwar_widows_pension, and addwar_widows_pensionto every aggregate that listsbsp. Document onbsp_reportedthat it currently holds FRS codes 6 and 9, and that it stays on CPI until the datasets split code 9 out. Existing datasets have nowar_widows_pension_reportedcolumn, so results do not change. - policyengine-uk-data and microcosm. Write code 9 to
war_widows_pension_reportedand only code 6 tobsp_reported. Ideally also move WPA (the code 6 rows at the WPA rate) out ofbsp_reported, for example into its own variable, so thatbsp_reportedis BSP only. - policyengine-uk, follow-up. Once released datasets carry the split, drop
bsp_reportedfrom the CPI list inuprating_indices.yamland remove itsupratingattribute, so BSP stays at the 2017 rates. Then regenerateuprating_factors.csvin policyengine-uk-data, which will drop thebsp_reportedrow.
Freezing in step 3 before step 2 lands would put the £84m error above into results, so the order matters.
🤖 Generated with Claude Code
Activity
Give War Widow's Pension its own CPI-uprated variable
Give War Widow's Pension its own CPI-uprated variable
State that BSP rates are held flat and note the War Widow's Pension s…
Give Widowed Parent's Allowance its own input, apart from Bereavement…
vahid-ahmadi commentedon Oct 23, 2026
Status, 23 Oct 2026: step 1 is done in #2382, which added
war_widows_pension_reportedandwar_widows_pensionwith CPI uprating. Freezing BSP (step 3) waits for the datasets to split FRS code 9 out ofbsp_reported: PolicyEngine/policyengine-uk-data#578 and PolicyEngine/microcosm#1222, both still open.🤖 Generated with Claude Code
juaristi22 commentedon Oct 24, 2026
Step 2 is now done on the Microcosm side:
war_widows_pension_reported.bsp_reported;widowed_parents_allowance_reported(2.149.0);bsp_reported.So in Microcosm releases built from that PR,
bsp_reportedholds the Bereavement Support Payment amounts and the off-rate amounts above WPA's rate, with no WPA and no War Widow's Pension.Step 3 can follow for those releases. Older Microcosm releases and policyengine-uk-data still put both codes in
bsp_reported, so freezing it outright would understate them. Keying the change on the dataset, for example on the presence ofwidowed_parents_allowance_reported, would cover both.Raised in Vahid's review of PolicyEngine/microcosm#1383 (item 12).