Skip to content

Correct historical Housing Benefit pensioner allowances - #2207

Queued
anth-volk wants to merge 9 commits into
mainfrom
fix-hb-pensioner-history
Queued

anth-volk wants to merge 9 commits into
mainfrom
fix-hb-pensioner-history

Conversation

@anth-volk

@anth-volk anth-volk commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2206
Fixes #2230

Combines the complete changes from #2207 and #2231 into this PR: approved plan A2's historical higher pensioner allowances and B1's former under-65 category. #2231 is superseded; both tracking issues remain open until this PR merges.

Changes

Correct the three existing higher-category allowance histories for 2015–18. Single/lone-parent weekly amounts are £166.05 / £168.70 / £172.55 / £176.40; couple amounts are £248.30 / £252.30 / £258.15 / £263.80. The 2019-20 entries (£181.00 single and lone parent, £270.60 couple) are unchanged and now cite SI 2019/480 Schedule 4 and SR 2019/58 Schedule 4; main's 2020-21 and later entries are untouched.

Add the three historical under-65 parameter documents and route qualifying pension-age-regulation families by eldest claimant/partner age. Lower single/lone-parent amounts are £151.20 / £155.60 / £159.35 / £163.00; couple amounts are £230.85 / £237.55 / £243.25 / £248.80. Each document contains the amount and independently sourced GB/NI category-ending dates. Explicit zero parameter reforms remain zero.

Government citations appear at each dated value: GB 2015, 2016, 2017, 2018, with matching NI 2015, 2016, 2017, 2018.

GB removes the lower category on 6 December 2018, under SI 2017/1187 regulations 1 and 7. NI removes it on the same day, under SR 2017/242 regulations 1(2)(b) and 7(7); NI's 2019 replacement table no longer has it. The annual calculation retains the established 30-April sampling: fiscal year 2018 retains the category, 2019 no longer does. This does not reconstruct within-year age or household histories.

Update existing qualifying-age and scheme-routing regression tests: the 64-year-old HB claimant receives £155.60 × 52 = £8,091.20 in 2016 and £159.35 × 52 = £8,286.20 in 2017, not the previously asserted later-year £9,412.

Scope and dependencies

14 changed files, no new inputs. Includes both original Towncrier fragments. No change to CTR formulas, datasets, deferred child allowances or future-cohort rules.

CTR's existing formula reads the same higher-category HB parameters. Consequently its historical outputs change with this rate correction, and the matching regression assertions now reflect £8,772.40 / £8,972.60. Its existing omission of the under-65 category is not fixed here; the test comments explicitly identify those CTR outputs as an unchanged approximation rather than the statutory lower-category amounts.

#1925 and #1913 have merged; this branch now merges main (below). #2092 still edits the same three aged.yaml files (2025-26 citations and the protected-allowance uprating), so whichever of #2092 and this PR lands second needs a small merge; both keep each other's values. This consolidation eliminates the separate #2207 → #2231 merge dependency.

Merge with main after #1913 (23 Oct 2026)

Merged origin/main at a45baf5e4 into this branch with a merge commit (no rebase or force-push).

  • aged.yaml (single, couple, lone parent). Kept this PR's 2015-16 to 2018-19 values, cited the 2019-20 values as above, and kept main's 2020-21 to 2026-27 values, its lagged-CPI uprating and its references. The descriptions now say that until 6 December 2018 (GB and NI) the higher rate excluded units where the claimant and any partner were under 65.
  • housing_benefit_applicable_amount. The under-65 selector now sets the higher (pre-cutoff) allowance, and Split pension-age Housing Benefit allowances by when State Pension age was attained #1913's split then gives units where neither member attained State Pension age before 1 April 2021 the aged_from_cutoff rate. Both age limits are 0 from 2019-20 at the 30-April reading, so the selector does nothing from then on and Split pension-age Housing Benefit allowances by when State Pension age was attained #1913's routing is unchanged.
  • Historical HB tests. The 2015-19 cases in housing_benefit_pensioner_history.yaml and housing_benefit_applicable_amount.yaml now state housing_benefit_attained_pension_age_before_cutoff: true. Parameter processing backdates every parameter's first value to 2015-01-01 (BACKDATED_FROM in utils/dated_reforms.py), the 2021 cutoff included. So a unit given only eldest_claimant_or_partner_age, with no person ages, read as the post-2021 cohort and got the backdated £177.10 lower rate. All 18 of these cases failed after the merge until the cohort was stated.

Legal reading: the 2019 GB table

SI 2017/1187 reg 7(7) omits paragraph (a), the under-65 rows, of the Schedule 3 para 1 table, in force from 6 December 2018 (reg 1). The GB Up-rating Order 2019's replacement table (SI 2019/480 Sch 4) still prints the under-65 rows (£167.25 single or lone parent, £255.25 couple), while NI's (SR 2019/58 Sch 4) does not. This PR keeps the GB category ending on 6 December 2018: that date is the amendment's own, and from it everyone who had attained the qualifying age was 65 or over, so no pension-age claimant could fall in the rows the 2019 table reprints. The last cohort to attain it under 65 (women born 6 November to 5 December 1953) did so on 6 November 2018, and the next attains it on 6 March 2019 aged 65 and 3 months (Pensions Act 1995 Sch 4 para 1, as encoded in state_pension/age/day_by_birth_date.yaml). The two readings agree for every unit whose ages are consistent.

The pre-2021 cutoff branch

Parameter processing backdates the April 2021 pension-age cutoff to 2015, so the "no cutoff yet" branches in the HB and CTR cohort variables couldn't run in any supported year (#2610). Main fixed that in #2628 (closed #2610 on 24 Oct), and this branch now contains it (below): before 2021 both cohort flags are true. The historical cases above still state the cohort explicitly.

Hub fix (23 October)

The independent review found NI's end date wrong: SR 2017/242 reg 7(7) removes the under-65 rows from 6 December 2018 (reg 1(2)(b)), not 1 April 2019. The hub corrected the three NI age limits, their citations and descriptions, the three aged.yaml descriptions and the formula comment (23182a190). It pinned both jurisdictions' end date in tests/test_hb_under_65_category_dates.py, and merged main (8d85577de), keeping both case blocks in housing_benefit_applicable_amount.yaml. Annual parameters are sampled at 30 April, so no annual result changes.

Merge with main and test update (24 Oct 2026)

  • 037f66919 merges main at adbaa87d7. It is clean: the two sides changed different files, and the recorded tree is git's automatic merge. The allowance parameters and housing_benefit_applicable_amount are byte-identical to the previously reviewed head.
  • 3dc9fa220 updates main's new test_omitted_age_component_keeps_existing_higher_allowance (from Restore neutral pre-2021 pension-age cohort flags #2628), whose comment named this PR as the historical repair. With no age input the claimant is 40, so in 2015 the pre-cutoff route now gives Housing Benefit's under-65 rate (SI 2006/214 Sch 3 para 1(1)(a), £151.20 a week, ended by SI 2017/1187 from 6 December 2018). The test now takes the HB rate from the parameters and asserts the lower amount for 2015. England's pensioner CTR still has no under-65 category in the model, so it keeps the higher rate.

Impact

Only fiscal years 2015-16 to 2018-19 change: main read the 2019-20 rate (£181.00 / £270.60) back to 2015, and these years now get each year's own rate and, for units under 65, the lower rate. 2019-20 and later read unchanged values, so the aggregate-impact years (2025-26 on) are unaffected. CTR's pensioner allowances read the same aged parameters and change for those historical years too.

Validation

Original validation (Anthony, before the merge): 56 cases across the four YAML files, rebased on main 88ecf58b8.

After the merge (23 Oct 2026, locked env from uv sync --frozen --extra dev, policyengine-core 3.33.2, Python 3.13):

  • Policy YAML, 154 files (the HB, CTR and Pension Credit directories, every file naming HB or CTR, and every file with a 2010-2020 period): 1,844 cases pass. The first run had 18 failures, all the historical cases described above; after the fix both files pass (25 cases).
  • Python, 13 modules (HB pension-age cohorts and properties, CTR and benefit-cap pension-age properties, State Pension Credit qualifying age, September CPI uprating, DWP published rates, parameter descriptions and metadata, fiscal-year parameters, legacy benefit parameters, build metadata, uprating declarations): 1,382 passed and 61 skipped, with no failures, before I stopped a tail starved by host load. Rerun on their own: test_housing_benefit_pension_age_cohorts.py 47/47 and test_consumers_use_the_qualifying_age (births 1945-65, years 2015-2030) pass. Five Hypothesis properties in the HB pension-age, benefit-cap/CTR and CTR young-person modules, which sample 2021 and later, were not run here; CI runs them.

uvx ruff format --check . and git diff --check pass. No microsimulation run (no effect on the simulated years).

After the 24 Oct merge: an independent delta review (Opus 5.5) approved 3dc9fa220. It ran test_housing_benefit_pension_age_cohorts.py and test_hb_under_65_category_dates.py (86 passed), and three mutations of the test and the model, each of which fails. All 18 CI checks pass at this head.

Follow-up (separate model gap): England's prescribed pensioner CTR scheme had the same under-65 rows from 2015-16 to 2018-19 (SI 2012/2885 Sch 2 para 1), removed for 2019-20 by SI 2018/1346. PolicyEngine's CTR gives those units the higher rate.

Reproducer: policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/housing_benefit_pensioner_history.yaml::Higher pension-age single allowance in 2015

axiom: TheAxiomFoundation/rulespec-uk#383 queued

The historical GB and NI tables, the 6 December 2018 removal and these companion cases are queued as an extension of #383's personal-allowance output: TheAxiomFoundation/rulespec-uk#383 (comment)

@anth-volk
anth-volk force-pushed the fix-hb-pensioner-history branch from 435fc43 to 96ed76e Compare October 9, 2026 14:50
@anth-volk anth-volk changed the title Correct historical pension-age Housing Benefit allowance values Correct historical Housing Benefit pensioner allowances Oct 9, 2026
@anth-volk

Copy link
Copy Markdown
Collaborator Author

Consolidated the complete #2231 historical under-65 implementation into this PR and rebased on main. Corrected the three existing HB regression expectations; the same tests now document CTR's shared higher-rate parameter and unchanged historical category approximation. No new inputs or CTR formula changes. All four relevant YAML files passed sequentially: 5 + 26 + 12 + 13 = 56 tests. Formatting/lint and git diff --check passed. No full suite or CI polling. This PR now references both tracking issues #2206 and #2230; #2231 is superseded.

Resolves the conflicts with #1913's pension-age cohort split. The three
aged.yaml histories keep this branch's 2015-16 to 2019-20 values (now each
cited, with SI 2019/480 Sch 4 and SR 2019/58 Sch 4 for 2019-20) and main's
2020-21 to 2026-27 values, uprating and references. The applicable-amount
formula applies the historical under-65 selector to the higher allowance and
then #1913's cutoff split. The historical HB tests state the claimant's
pre-cutoff cohort, since parameter processing backdates the 2021 cutoff to
2015 and a unit given no person ages would otherwise read as the later cohort.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Collaborator

Hand-off: merged main after #1913 (backlog job B, 23 Oct 2026)

Head: d9b74ad88 (merge commit on top of Anthony's 96ed76ead; no rebase or force-push).

What I changed

Tests (locked env, core 3.33.2)

  • Policy YAML, 154 files (HB, CTR and Pension Credit directories plus every file with an HB/CTR reference or a 2010-2020 period): 1,844 pass.
  • Python, 13 modules: 1,382 passed, 61 skipped, 0 failed before host load starved the tail. On their own, test_housing_benefit_pension_age_cohorts.py passed 47/47 and test_consumers_use_the_qualifying_age (2015-2030) passed. Five Hypothesis properties that sample 2021 and later were not run locally (HB pension-age, benefit-cap/CTR and CTR young-person modules).
  • uvx ruff format --check . passes.

Impact: only 2015-16 to 2018-19 HB (and CTR pensioner) allowances change. 2019-20 and later read unchanged values, so the aggregate-impact years see £0.

Open items

  1. CI on d9b74ad88 is pending at the time of writing.
  2. Legal reading (my call): SI 2019/480 Sch 4 reprints the GB under-65 rows (£167.25 / £255.25) after SI 2017/1187 omitted them from 6 Dec 2018. I kept the PR's 6 Dec 2018 end. From that date everyone who had attained the qualifying age was 65 or over (the last under-65 cohort attained it on 6 Nov 2018), so both readings agree for consistent ages.
  3. Main follow-up, not changed here: Split pension-age Housing Benefit allowances by when State Pension age was attained #1913's if p.pension_age_cutoff is None branches never run from 2015, because processing backdates the 2021 cutoff. This affects housing_benefit_applicable_amount, council_tax_reduction_applicable_amount and both *_attained_pension_age_before_cutoff variables. Results are right for consistent person ages, but the documentation of housing_benefit_attained_pension_age_before_cutoff ("true for every unit" before the cutoff) does not match the code for units with no person ages.
  4. Correct Pension Credit and pension-age Housing Benefit projections #2092 edits the same three aged.yaml files; whichever lands second needs a small merge.
  5. CTR's own historical under-65 category is still not modelled (already stated in the PR).
  6. Independent review: the hub's to dispatch at this head. axiom: needed stands.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Aggregate impact on certified data: pass

Base adbaa87d79 against head beea6ba749, both on enhanced_frs_2024_25.h5 (policyengine-uk-data 1.58.1, sha256 056e80fd8e91), fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 0 (thresholds in report_spec.yaml; a flag does not fail the job).

Workflow run and full report

Notes

  • In the years a figure from fewer than 10 records is suppressed (spending.disabled_students_allowance), every total containing it, and the decile incomes, are rebuilt from their other components, so no published total includes it. Those totals are marked †. A change is withheld where the two sides leave out different figures and can't be lined up.

Moves flagged for review

None.

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise additional rate by 3pp 0 0 0 0 0 suppressed suppressed

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise additional rate by 3pp: change in income_tax 0 0 0 0 0 suppressed suppressed

Household net income by decile

No household's net income changes in any year.

No change in any year: receipts by tax head; government balance, each component counted once; model totals; household income totals; population; poverty rates; people in poverty; inequality; mean household net income in each side's own deciles.

Checks failing on both base and head (1)
  • VAT is never negative (sign:vat): 2025-26: 76 units below zero, a weighted £-54,346,675 in total; 2026-27: 76 units below zero, a weighted £-55,887,703 in total; 2027-28: 76 units below zero, a weighted £-57,090,734 in total
Counted-once check

Each of 87 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.

  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; gov_spending; not a failure)
  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; household_benefits; not a failure)
Provenance
Side Commit Runtime Environment hash Partition hash Time
base main adbaa87d79 uk 2.156.0 (files 39e6300c1bcf), core 3.33.2, py 3.13.17 aarch64 6e908e96b696 06ff679de152 1667.49s
head #2207 merged into main beea6ba749 uk 2.156.0 (files 6259ffe43aab), core 3.33.2, py 3.13.17 aarch64 6e908e96b696 06ff679de152 1651.0s

Dataset: hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@2526edbbb687a3b54dbb11272e5389e4b62d2ac2, sha256 056e80fd8e9151d78f432a25cde863340baee81304c6216a37fb575ce8563784 (verified on both sides), policyengine-uk-data 1.58.1.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax £298.41bn £318.00bn £335.26bn £350.17bn £365.42bn £383.13bn £400.61bn
National Insurance (employee and self-employed) £52.37bn £54.71bn £56.48bn £58.15bn £60.22bn £62.11bn £64.44bn
National Insurance (employer) £152.00bn £158.47bn £163.28bn £167.71bn £174.87bn £180.28bn £187.05bn
Employer NI change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Employer NI change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Capital gains tax £12.61bn £13.05bn £13.53bn £14.02bn £14.52bn £15.05bn £15.58bn
Student loan repayments £7.79bn £8.09bn £8.31bn £8.51bn £8.72bn £8.97bn £9.28bn
VAT £251.45bn £257.40bn £263.96bn £270.05bn £276.34bn £282.83bn £289.13bn
Change in VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
VAT on private school fees £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Fuel duties £24.53bn £24.64bn £26.64bn £26.69bn £26.42bn £25.76bn £26.35bn
Alcohol duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tobacco duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Vehicle excise duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Betting and gaming duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
TV licence fee £4.26bn £4.41bn £4.42bn £4.44bn £4.45bn £4.47bn £4.48bn
Council tax £49.21bn £51.88bn £54.97bn £58.29bn £61.55bn £64.92bn £68.49bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.48bn £0.49bn £0.50bn £0.51bn
Northern Ireland domestic rates £0.55bn £0.58bn £0.60bn £0.63bn £0.66bn £0.69bn £0.72bn
Business rates £34.68bn £38.04bn £38.88bn £39.76bn £43.07bn £43.13bn £44.57bn
Stamp duty land tax on the household's own purchases £6.90bn £7.39bn £7.81bn £8.21bn £8.62bn £9.02bn £9.42bn
Stamp duty land tax paid by companies £4.81bn £5.98bn £6.73bn £7.46bn £8.21bn £8.87bn £9.16bn
Land transaction tax (Wales) £0.07bn £0.08bn £0.09bn £0.09bn £0.10bn £0.10bn £0.11bn
Land and buildings transaction tax (Scotland) £0.31bn £0.32bn £0.34bn £0.35bn £0.37bn £0.38bn £0.40bn
Unspecified tax change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Unspecified tax change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax excluding the main residence £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land value tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Carbon tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Spending by benefit and service: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension £121.64bn £126.07bn £127.08bn £128.87bn £132.52bn £136.31bn £140.08bn
Pension Credit £6.66bn £7.04bn £7.32bn £7.46bn £7.60bn £7.77bn £7.94bn
Winter Fuel Payment £1.69bn £1.67bn £1.58bn £1.56bn £1.56bn £1.54bn £1.51bn
Pension Age Winter Heating Payment (Scotland) £0.19bn £0.20bn £0.20bn £0.21bn £0.21bn £0.22bn £0.22bn
Universal Credit £75.21bn £80.38bn £82.93bn £84.23bn £85.58bn £86.87bn £87.97bn
Housing Benefit £8.55bn £8.89bn £9.17bn £9.31bn £9.57bn £9.83bn £10.10bn
Council Tax Reduction £1.98bn £2.02bn £2.07bn £2.11bn £2.16bn £2.21bn £2.25bn
Employment and Support Allowance (income-related) £0.79bn £0.81bn £0.83bn £0.85bn £0.86bn £0.89bn £0.90bn
Employment and Support Allowance (contribution-based) £5.20bn £5.34bn £5.46bn £5.59bn £5.72bn £5.85bn £5.99bn
Jobseeker's Allowance (income-based) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.30bn £0.30bn £0.31bn £0.32bn £0.32bn £0.33bn
Income Support £0.12bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Working Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Incapacity Benefit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Personal Independence Payment £26.94bn £28.06bn £29.13bn £29.83bn £30.54bn £31.26bn £31.96bn
Disability Living Allowance £7.49bn £7.80bn £8.10bn £8.29bn £8.49bn £8.69bn £8.88bn
Attendance Allowance £8.68bn £9.04bn £9.38bn £9.61bn £9.83bn £10.07bn £10.29bn
Carer's Allowance £4.48bn £4.67bn £4.84bn £4.96bn £5.08bn £5.19bn £5.31bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.35bn £0.36bn £0.37bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Severe Disablement Allowance £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn
Industrial Injuries Disablement Benefit £0.50bn £0.52bn £0.53bn £0.54bn £0.55bn £0.57bn £0.58bn
Armed Forces Compensation Scheme £0.61bn £0.62bn £0.64bn £0.65bn £0.67bn £0.68bn £0.70bn
War Widow's or Widower's Pension £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Benefit £16.16bn £16.83bn £17.43bn £17.85bn £18.26bn £18.69bn £19.10bn
Scottish Child Payment £0.49bn £0.52bn £0.54bn £0.55bn £0.56bn £0.57bn £0.56bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.30bn £3.39bn £3.47bn £3.55bn £3.63bn £3.72bn £3.80bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £1.12bn £1.15bn £1.18bn £1.21bn £1.24bn £1.27bn £1.29bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £0.67bn £0.69bn £0.70bn £0.72bn £0.73bn £0.75bn £0.77bn
Widowed Parent's Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tax-Free Childcare £0.55bn £0.56bn £0.57bn £0.58bn £0.59bn £0.61bn £0.59bn
Extended childcare entitlement £2.76bn £3.25bn £3.35bn £3.41bn £3.50bn £3.58bn £3.67bn
Universal childcare entitlement £2.25bn £2.44bn £2.50bn £2.56bn £2.63bn £2.70bn £2.76bn
Targeted childcare entitlement £0.47bn £0.49bn £0.49bn £0.51bn £0.52bn £0.53bn £0.47bn
Childcare Offer for Wales £0.26bn £0.28bn £0.28bn £0.29bn £0.30bn £0.30bn £0.31bn
Care to Learn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Childcare Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Parents' Learning Allowance £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Travel Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
NHS spending £203.83bn £204.54bn £205.13bn £205.79bn £206.49bn £207.23bn £207.73bn
State education spending £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
Transport subsidy spending £25.05bn £25.13bn £25.21bn £25.29bn £25.37bn £25.46bn £25.53bn
Cost-of-living support payment £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Bills Rebate £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Price Guarantee subsidy £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disability basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Other public spending budget change £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Caseloads: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension 11,261k 11,158k 10,849k 10,746k 10,783k 10,822k 10,848k
Pension Credit 1,485k 1,483k 1,480k 1,461k 1,462k 1,464k 1,460k
Winter Fuel Payment 7,061k 6,979k 6,565k 6,472k 6,446k 6,328k 6,184k
Pension Age Winter Heating Payment (Scotland) 803k 803k 803k 800k 803k 806k 808k
Universal Credit 6,334k 6,341k 6,366k 6,347k 6,345k 6,333k 6,298k
Housing Benefit 1,249k 1,247k 1,250k 1,234k 1,238k 1,240k 1,239k
Council Tax Reduction 3,174k 3,198k 3,208k 3,228k 3,243k 3,256k 3,263k
Employment and Support Allowance (income-related) 71k 71k 71k 71k 71k 72k 72k
Employment and Support Allowance (contribution-based) 719k 721k 723k 726k 728k 731k 732k
Jobseeker's Allowance (income-based) 0k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 67k 67k 67k 68k 68k 68k 68k
Income Support 25k 0k 0k 0k 0k 0k 0k
Working Tax Credit 0k 0k 0k 0k 0k 0k 0k
Child Tax Credit 0k 0k 0k 0k 0k 0k 0k
Incapacity Benefit 0k 0k 0k 0k 0k 0k 0k
Personal Independence Payment 3,566k 3,579k 3,589k 3,601k 3,613k 3,626k 3,635k
Disability Living Allowance 1,291k 1,295k 1,299k 1,303k 1,308k 1,312k 1,316k
Attendance Allowance 1,694k 1,700k 1,705k 1,711k 1,716k 1,723k 1,727k
Carer's Allowance 1,034k 1,038k 1,041k 1,044k 1,048k 1,051k 1,053k
Carer Support Payment (Scotland) 71k 71k 72k 72k 72k 72k 73k
Carer's Allowance Supplement (Scotland) 0k 71k 72k 72k 72k 72k 73k
Severe Disablement Allowance 4k 4k 4k 4k 4k 4k 4k
Industrial Injuries Disablement Benefit 137k 137k 138k 138k 139k 139k 140k
Armed Forces Compensation Scheme 93k 93k 94k 94k 94k 95k 95k
War Widow's or Widower's Pension 0k 0k 0k 0k 0k 0k 0k
Child Benefit 8,102k 8,128k 8,142k 8,165k 8,191k 8,216k 8,232k
Scottish Child Payment 350k 352k 353k 357k 354k 355k 342k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 199k 200k 201k 201k 202k 203k 203k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 332k 334k 335k 336k 337k 338k 339k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 181k 182k 182k 183k 183k 184k 185k
Sure Start Maternity Grant 26k 26k 26k 26k 26k 27k 27k
Bereavement Support Payment 98k 98k 98k 99k 99k 99k 100k
Widowed Parent's Allowance 0k 0k 0k 0k 0k 0k 0k
Tax-Free Childcare 1,014k 1,024k 1,024k 1,027k 1,027k 1,031k 1,013k
Extended childcare entitlement 715k 722k 725k 727k 733k 735k 736k
Universal childcare entitlement 982k 985k 987k 991k 996k 1,004k 1,005k
Targeted childcare entitlement 98k 97k 95k 95k 96k 96k 84k
Childcare Offer for Wales 39k 39k 39k 39k 39k 39k 39k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 98k 98k 99k 99k 99k 100k 100k
Adult Dependants' Grant 18k 18k 12k 12k 12k 13k 13k
Travel Grant 0k 0k 0k 0k 0k 0k 0k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund 0k 0k 0k 0k 0k 0k 0k
Cost-of-living support payment 0k 0k 0k 0k 0k 0k 0k
Energy Bills Rebate 0k 0k 0k 0k 0k 0k 0k
Energy Price Guarantee subsidy 0k 0k 0k 0k 0k 0k 0k
Basic income 0k 0k 0k 0k 0k 0k 0k
Disability basic income 0k 0k 0k 0k 0k 0k 0k
Government balance, each component counted once: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once £899.96bn £943.04bn £981.29bn £1,015.02bn £1,054.03bn £1,090.23bn £1,130.30bn
Government spending £528.63bn † £543.42bn † £551.15bn † £557.43bn † £565.84bn † £574.45bn † £582.36bn †
Government balance, each receipt once £371.33bn † £399.62bn † £430.14bn † £457.59bn † £488.19bn † £515.78bn † £547.95bn †
Benefits in household_benefits but not in gov_spending £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Model totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax £899.96bn £943.04bn £981.29bn £1,015.02bn £1,054.03bn £1,090.23bn £1,130.30bn
household_tax £496.50bn £527.17bn £554.05bn £577.26bn £602.82bn £627.12bn £654.13bn
pre_budget_change_household_tax £488.71bn £519.08bn £545.75bn £568.28bn £593.61bn £617.65bn £644.33bn
gov_spending £528.63bn † £543.42bn † £551.15bn † £557.43bn † £565.84bn † £574.45bn † £582.36bn †
household_benefits £528.63bn † £543.42bn † £551.15bn † £557.43bn † £565.84bn † £574.45bn † £582.36bn †
gov_balance £371.33bn † £399.62bn † £430.14bn † £457.59bn † £488.19bn † £515.78bn † £547.95bn †
Household income totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income £1,651.49bn £1,713.03bn £1,764.05bn £1,812.97bn £1,862.19bn £1,918.39bn £1,985.28bn
Household net income £1,644.51bn † £1,688.72bn † £1,719.48bn † £1,750.46bn † £1,781.44bn † £1,820.74bn † £1,866.93bn †
Household net income (HBAI definition) £1,457.74bn £1,504.86bn £1,537.87bn £1,569.56bn £1,602.79bn £1,640.51bn £1,686.67bn
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 69,224k 69,466k 69,668k 69,891k 70,128k 70,381k 70,550k
Benefit units 35,100k 35,223k 35,325k 35,438k 35,558k 35,686k 35,772k
Households 31,037k 31,145k 31,236k 31,336k 31,442k 31,555k 31,631k
Poverty rates: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 16.0% 15.1% 15.5% 15.6% 15.7% 15.7% 15.8%
Absolute poverty, before housing costs: children 24.0% 21.1% 21.5% 21.5% 21.7% 21.7% 21.8%
Absolute poverty, before housing costs: working-age adults 13.8% 13.5% 14.0% 14.1% 14.2% 14.2% 14.3%
Absolute poverty, before housing costs: pensioners 13.6% 13.2% 13.1% 13.4% 13.5% 13.5% 13.5%
Absolute poverty, after housing costs: everyone 21.4% 20.8% 21.2% 21.5% 21.8% 21.9% 22.2%
Absolute poverty, after housing costs: children 33.0% 30.7% 31.0% 31.1% 31.4% 31.7% 32.3%
Absolute poverty, after housing costs: working-age adults 19.8% 19.6% 20.2% 20.5% 20.7% 20.9% 21.1%
Absolute poverty, after housing costs: pensioners 12.7% 12.3% 12.3% 12.5% 12.9% 12.9% 13.0%
Relative poverty, before housing costs: everyone 17.2% 16.4% 16.5% 16.4% 16.3% 16.4% 16.6%
Relative poverty, before housing costs: children 26.2% 23.5% 23.4% 23.1% 22.8% 23.0% 23.3%
Relative poverty, before housing costs: working-age adults 14.6% 14.3% 14.7% 14.7% 14.6% 14.7% 14.9%
Relative poverty, before housing costs: pensioners 15.0% 14.8% 14.1% 14.1% 14.0% 14.0% 14.2%
Relative poverty, after housing costs: everyone 21.6% 21.0% 21.2% 21.2% 21.3% 21.4% 21.8%
Relative poverty, after housing costs: children 33.2% 31.2% 30.9% 30.7% 31.0% 31.0% 31.5%
Relative poverty, after housing costs: working-age adults 19.9% 19.8% 20.1% 20.3% 20.4% 20.5% 20.7%
Relative poverty, after housing costs: pensioners 12.9% 12.4% 12.1% 11.9% 11.8% 11.9% 12.8%
People in poverty: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 11,042k 10,465k 10,769k 10,890k 10,993k 11,057k 11,136k
Absolute poverty, before housing costs: children 3,579k 3,171k 3,230k 3,240k 3,280k 3,300k 3,324k
Absolute poverty, before housing costs: working-age adults 5,846k 5,744k 6,034k 6,134k 6,183k 6,218k 6,267k
Absolute poverty, before housing costs: pensioners 1,617k 1,550k 1,504k 1,517k 1,530k 1,539k 1,546k
Absolute poverty, after housing costs: everyone 14,840k 14,418k 14,804k 15,005k 15,265k 15,431k 15,663k
Absolute poverty, after housing costs: children 4,937k 4,609k 4,667k 4,687k 4,755k 4,820k 4,919k
Absolute poverty, after housing costs: working-age adults 8,401k 8,356k 8,734k 8,907k 9,048k 9,135k 9,257k
Absolute poverty, after housing costs: pensioners 1,503k 1,453k 1,404k 1,412k 1,461k 1,476k 1,487k
Relative poverty, before housing costs: everyone 11,890k 11,390k 11,463k 11,486k 11,426k 11,531k 11,707k
Relative poverty, before housing costs: children 3,915k 3,517k 3,517k 3,489k 3,449k 3,491k 3,549k
Relative poverty, before housing costs: working-age adults 6,197k 6,128k 6,335k 6,400k 6,388k 6,442k 6,537k
Relative poverty, before housing costs: pensioners 1,777k 1,744k 1,611k 1,597k 1,588k 1,598k 1,621k
Relative poverty, after housing costs: everyone 14,943k 14,586k 14,741k 14,809k 14,944k 15,039k 15,355k
Relative poverty, after housing costs: children 4,967k 4,674k 4,650k 4,630k 4,688k 4,712k 4,792k
Relative poverty, after housing costs: working-age adults 8,441k 8,448k 8,700k 8,836k 8,913k 8,976k 9,102k
Relative poverty, after housing costs: pensioners 1,535k 1,464k 1,391k 1,342k 1,343k 1,352k 1,460k
Inequality: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs 0.3085 0.3058 0.3065 0.3071 0.3076 0.3082 0.3096
Mean household net income in each side's own deciles: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household £17,769 † £17,866 † £17,838 † £17,887 † £18,174 † £18,309 † £18,446 †
Decile 2: mean household_net_income per household £27,979 † £28,847 † £28,638 † £28,880 † £29,095 † £29,614 † £30,130 †
Decile 3: mean household_net_income per household £34,362 † £35,449 † £35,981 † £36,489 † £36,760 † £37,291 † £38,112 †
Decile 4: mean household_net_income per household £39,269 † £40,695 † £41,909 † £42,378 † £43,105 † £43,923 † £44,173 †
Decile 5: mean household_net_income per household £43,314 † £44,625 † £45,559 † £46,288 † £47,354 † £48,261 † £49,593 †
Decile 6: mean household_net_income per household £48,195 † £49,500 † £50,754 † £51,500 † £52,202 † £53,162 † £54,294 †
Decile 7: mean household_net_income per household £56,164 † £57,176 † £57,763 † £58,419 † £58,909 † £59,958 † £61,826 †
Decile 8: mean household_net_income per household £69,144 † £70,966 † £71,797 † £73,236 † £74,250 † £75,671 † £77,435 †
Decile 9: mean household_net_income per household £79,644 † £81,041 † £82,857 † £84,156 † £85,561 † £87,071 † £89,924 †
Decile 10: mean household_net_income per household £117,592 † £120,304 † £122,094 † £124,173 † £126,053 † £128,344 † £131,114 †
Standard reform costings (change in gov_balance): head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp £6.47bn £6.76bn £6.67bn £6.86bn £7.06bn £7.29bn £7.55bn
Raise higher rate by 1pp £3.69bn £3.98bn £4.03bn £4.24bn £4.46bn £4.73bn £4.92bn
Raise personal allowance by ~800GBP/year £-3.82bn £-3.94bn £-4.01bn £-4.08bn £-4.18bn £-4.24bn £-2.00bn
Raise child benefit by 25GBP/week per additional child £-1.99bn £-1.75bn £-1.58bn £-1.47bn £-1.37bn £-1.26bn £-1.16bn
Reduce Universal Credit taper rate to 20% £-20.40bn £-20.95bn £-21.38bn £-21.63bn £-21.88bn £-22.23bn £-22.62bn
Raise Class 1 main employee NICs rate to 10% £11.02bn £11.46bn £11.77bn £12.07bn £12.41bn £12.73bn £13.10bn
Raise VAT standard rate by 2pp £24.90bn £25.56bn £26.15bn £26.76bn £27.39bn £28.04bn £28.66bn
Raise additional rate by 3pp £2.96bn £3.21bn £3.26bn £3.46bn £3.66bn suppressed suppressed
Raise the Universal Credit standard allowance by 10% £-3.02bn £-3.15bn £-3.26bn £-3.32bn £-3.36bn £-3.41bn £-3.47bn
Raise the State Pension by 10% £-7.78bn £-8.01bn £-8.02bn £-8.12bn £-8.37bn £-8.53bn £-8.87bn
Standard reforms: change in each reform's target: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax £6.61bn £6.91bn £6.83bn £7.03bn £7.24bn £7.47bn £7.73bn
Raise higher rate by 1pp: change in income_tax £3.69bn £3.99bn £4.04bn £4.25bn £4.47bn £4.74bn £4.93bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.95bn £-4.08bn £-4.17bn £-4.24bn £-4.34bn £-4.41bn £-1.76bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.33bn £2.14bn £1.95bn £1.84bn £1.73bn £1.62bn £1.50bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £20.39bn £20.95bn £21.37bn £21.62bn £21.87bn £22.22bn £22.61bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £11.28bn £11.74bn £12.06bn £12.37bn £12.69bn £13.03bn £13.49bn
Raise VAT standard rate by 2pp: change in vat £24.90bn £25.56bn £26.15bn £26.76bn £27.39bn £28.04bn £28.66bn
Raise additional rate by 3pp: change in income_tax £2.96bn £3.21bn £3.26bn £3.46bn £3.66bn suppressed suppressed
Raise the Universal Credit standard allowance by 10%: change in universal_credit £3.02bn £3.15bn £3.26bn £3.32bn £3.39bn £3.44bn £3.48bn
Raise the State Pension by 10%: change in state_pension £10.68bn £11.18bn £11.31bn £11.55bn £12.00bn £12.44bn £12.94bn

MaxGhenis and others added 2 commits October 23, 2026 15:24
SR 2017/242 reg 7(7) omits the under-65 rows of the Schedule 4 para 1
personal allowance table from 6 December 2018 (reg 1(2)(b)), as SI
2017/1187 does in Great Britain. The NI age limits used 1 April 2019,
from the 2019 up-rating table. Correct the three NI dates, citations and
descriptions and the formula comment, and pin both jurisdictions' end
date in a parameter test. Annual parameters are sampled at 30 April, so
no annual result changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keeps both sets of cases appended at the same place in
housing_benefit_applicable_amount.yaml: this PR's 2015-2019 pensioner
allowance cases and main's Schedule 3 paragraph 1 age-band cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The merge queue marked #2207 unmergeable after main took the Housing Benefit
main-phase ESA allowance exception (f044be2). The only conflict is the
reference tuple of housing_benefit_applicable_amount, where both sides added
citations; the resolution keeps all five. The formula merges cleanly: main adds
the ESA adjustment to the return value, and this branch changes the
pension-age allowance selection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis removed this pull request from the merge queue due to a manual request Oct 24, 2026
@MaxGhenis

Copy link
Copy Markdown
Collaborator

Merged main again (UK hub, 24 Oct)

The merge queue marked this PR unmergeable at position 3. Main took the Housing Benefit main-phase ESA exception (f044be297), which edits the same reference tuple in housing_benefit_applicable_amount.py. The hub took the PR out of the queue so the branch could be updated, and merged main: ed1d90d39, on top of 8d85577de, with no rebase or force-push.

  • The only conflict was the reference tuple. Both sides added citations, and all five are kept.
  • The formula merged cleanly. Main adds housing_benefit_main_phase_esa_allowance_adjustment to the return value, and this PR changes how the pension-age allowance is chosen; the two changes don't interact.
  • On the merged tree, all 371 Housing Benefit and pension-age YAML cases pass, as do the 6 tests in test_hb_under_65_category_dates.py.

It goes back into the queue, pinned to ed1d90d39, once CI passes.

@MaxGhenis
MaxGhenis added this pull request to the merge queue Oct 24, 2026
Any commits made after this event will not be merged.
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 24, 2026
MaxGhenis and others added 2 commits October 24, 2026 17:59
main's 3a37c76 added test_omitted_age_component_keeps_existing_higher_allowance,
which expects the higher pension-age rate in 2015 and 2020 and notes that
the historical rate repair is #2207. This branch is that repair: until
6 December 2018 Housing Benefit paid pension-age claimants under 65 the
former under-65 rate (SI 2006/214 Sch 3 para 1(1)(a); ended by
SI 2017/1187). With no age input the claimant is 40, so in 2015 the
pre-cutoff route now gives that rate. England's pensioner Council Tax
Reduction has no such category in the model and keeps the higher rate.

The test now derives the Housing Benefit rate from the parameters and
asserts that the 2015 case uses the lower under-65 amount.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

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

Labels

None yet

Projects

None yet

2 participants