Skip to content

Abolish working-age Housing Benefit from 1 July 2026 (NI 1 October 2026) - #1910

Open
MaxGhenis wants to merge 16 commits into
mainfrom
abolish-working-age-housing-benefit
Open

MaxGhenis wants to merge 16 commits into
mainfrom
abolish-working-age-housing-benefit

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Status (22 October, head 2d0e49417): on hold. The UK hub (04:10Z) holds this until Microcosm UK supplies in_specified_or_temporary_accommodation, after 28 October: no dataset sets it yet, so landing now would end the supported and temporary accommodation awards that law saves. Current main is merged in, including #2119 (the Universal Credit claim when legacy benefits close) and #2549 (legacy closure scoped to each award's owner). Max's hold d837 (merge after PolicyEngine/policyengine-uk-data#492 is released) also still applies.

Summary

Working-age Housing Benefit awards were abolished from 1 July 2026 in Great Britain and 1 October 2026 in Northern Ireland, subject to statutory savings. PolicyEngine UK still paid unprotected awards in every year through the continuing-award route (reported HB and not claiming UC). This PR ends that route on the statutory dates, pays 2026-27 for the part of the year before abolition, and lets a family whose award is abolished claim Universal Credit through #2119's closure claim.

It also adds in_specified_or_temporary_accommodation: a boolean benunit input that preserves a payable share of 1 and permits new Housing Benefit claims, including alongside UC with no UC housing costs element. It defaults to False, and no current dataset supplies it.

Law

The dates were checked again on legislation.gov.uk and in DWP's circular on 22 October 2026.

Change

  • Parameter gov.dwp.housing_benefit.working_age_awards_payable, with children great_britain and northern_ireland: each is 1 while unprotected working-age awards are payable and 0 from its abolition date, blended over the fiscal year.
  • Input in_specified_or_temporary_accommodation (BenUnit, YEAR, boolean, default False): a supplied statutory accommodation status. It sets housing_benefit_payable_share to 1 in every year and opens the new-claim route in housing_benefit_eligible. Existing rental, capital, entitlement and take-up checks still apply.
  • housing_benefit_payable_share (BenUnit, YEAR): 1 for the accommodation input or a family meeting the Pension Credit age conditions (meets_pension_credit_age_conditions: reg 6A(4), and 6A(5) through the SI 2019/37 art. 4 saving); otherwise the country's parameter value. A mixed-age couple without the saving is not saved.
  • housing_benefit_eligible: the continuing-award route needs the share above 0; the accommodation input adds a new-claim route.
  • housing_benefit_pre_benefit_cap: entitlement is multiplied by the share; the benefit cap applies afterwards.
  • uc_housing_costs_element: 0 when the accommodation input is True.
  • claims_uc_at_legacy_closure: also true when a family reporting HB has a payable share below 1 (its award is abolished in the year) and would_claim_uc_at_legacy_closure is true.
  • person_legacy_benefits_closed (from Scope legacy-benefit closure to each award's owners #2549): for the claimant and partner, also true when the family makes that claim and was not already claiming UC (would_claim_uc false). Their income-related ESA ends by the claim; an adult claiming in their own right keeps theirs. income_support has the same gate, but Income Support and income-based JSA are already closed in the model from 2026, so under current law the claim ends only income-related ESA.
  • Documentation and metadata: describe the input, the savings and the remaining limits. Housing Benefit stays partial in programs.yaml.

How a mid-year date applies to a YEAR period

PE-UK period 2026 means FY 2026-27. convert_to_fiscal_year_parameters (utils/parameters.py) normally samples each parameter on 30 April. Parameters marked fiscal_year_blend: true instead use a day-weighted average over 6 April to 5 April. PE 2026 therefore reads:

  • 86/365 = 0.2356 in GB, for 6 April to 30 June;
  • 178/365 = 0.4877 in NI, for 6 April to 30 September.

From 2027 they read 0, and before 2026 they read 1. HB part-week rules for the week containing abolition are not modelled.

Reforms. A bare-year value, for example {"...great_britain": {"2026": 1}}, sets that fiscal year's share; a key dated inside the year (2026-07-01) leaves the 2026 share at 86/365 (tested). Use whole-year values or a date range for annual reform scenarios.

Savings: modelled, approximated and unmodelled

Statutory saved class Model coverage and limitation
Specified or temporary accommodation: GB reg. 6A(2); NI reg. 4A(2); art. 7(4)(a) Explicit input. True preserves share 1 in every year and allows a new HB claim, including alongside non-housing UC. Accommodation-specific eligible-rent and benefit-cap rules are not modelled, and capped joint HB/UC awards have the reduction-coordination issue in the notes. No current dataset supplies the status.
Qualifying final UC assessment-period case on reaching Pension Credit age: GB reg. 6A(3); NI reg. 4A(3) Not separately modelled. No input records the final assessment period or the decision history.
Pension-age singles and couples both over the qualifying age: GB reg. 6A(4); NI reg. 4A(4) Modelled through meets_pension_credit_age_conditions, which reads the claimant and partner.
Protected mixed-age couples: GB reg. 6A(5) and SI 2019/37 art. 4; NI reg. 4A(5) Inferred from current receipt (has_mixed_age_couple_pension_credit_saving): the older member reached the qualifying age by 14 May 2019, and the couple reports Pension Credit or pension-age HB and no UC. An unsaved mixed-age couple loses its award like a working-age family.
Income-related ESA appointee saving: art. 7(4)(b), importing art. 3A(2) Not modelled. It needs an appointee immediately before the date, or a determination in the previous six months that one was likely needed.
Delayed abolition for restricted prisoner cases: art. 7(2) Not modelled. It needs the UC reg. 19(1)(b)/(c) restriction immediately before the date and the release date.

What happens to families that lose HB

When a working-age family's award is abolished, it claims Universal Credit if would_claim_uc_at_legacy_closure is true. This is the same closure claim #2119 added for families moved off other legacy benefits.

  • A family that claims gets Universal Credit for the whole model year, and its HB continuing award and the claimant's and partner's income-related ESA end. In 2026 this is the annual convention: the model does not split the year into HB to the abolition date and UC after it.
  • A family that does not claim keeps HB for the part of the year before the abolition date (none from 2027) and keeps its other legacy awards.
  • A family already claiming UC (would_claim_uc) is unchanged: it already gets UC instead of HB. Its income-related ESA is left to the overlap rules in Abolish income-related ESA from 1 July 2026 (NI 1 October 2026) and stop paying it alongside UC #1914.
  • Families meeting the Pension Credit age conditions (including saved mixed-age couples) have share 1, so the abolition prompts no claim and leaves their route alone.

would_claim_uc_at_legacy_closure defaults to true, and no released dataset supplies it yet. PolicyEngine/policyengine-uk-data#534 (for #492) will draw it at DWP's Move to UC claim rates. Until then every unprotected working-age HB reporter not already claiming UC claims at the abolition. That is an upper bound: DWP's rates after a migration notice are 74.8% for HB-only households and 97.4% for HB with another legacy benefit (Stat-Xplore "Households invited to Move to Universal Credit", tables MtUC Households 3 and 6, to end of March 2026). Transitional protection is not modelled (#1912); an art. 7 termination carries none.

Invariants

Property-tested in test_housing_benefit_working_age_abolition_properties.py:

  1. Parameter: each fiscal year 2015–2040 equals the jurisdiction's independently counted share before the statutory date.
  2. Bounds and protection: 0 ≤ payable share ≤ 1; it is 1 for a family meeting the Pension Credit age conditions or with the accommodation input, in every year 2015–2040 and both jurisdictions.
  3. Abolition: from 2027, no other family receives HB.
  4. Differential: against a reform keeping awards payable, unprotected pre-cap HB equals the preserved amount times the share; protected awards are unchanged.
  5. Structural: only families with the accommodation input receive both HB and UC; their UC housing costs element is 0, and 0 ≤ HB ≤ rent. A capped joint award is capped once (YAML): reg 75F(1)(g) lifts the HB cap, and UC's cap counts HB as nil (reg 80(2A)).
  6. Default: omitting the accommodation input gives the same HB and UC as explicit False.
  7. Claim at abolition: from 2026, a family that claims gets no HB and the same UC as a family that would claim UC anyway; one that does not claim gets no UC. Before 2026 the flag changes nothing.
  8. Owner scope: the claim ends the claimant's and partner's income-related ESA and leaves a separate adult's own award (2025–2027, claiming and not). Dropping the gate in person_legacy_benefits_closed fails this test.

Tests

Locally:

  • At 2d0e49417, the full YAML suite: 4,106 passed. It includes 3 new cases: an unsaved mixed-age couple, the 75-year-old saved couple, and a capped joint award. It also includes 4 of main's 2026 legacy HB cases, which now pin would_claim_uc_at_legacy_closure: false and expect the 86/365 award. They are the AFIP benefit-cap case (the CI failure at c64d1421d) and three unsaved mixed-age couples.
  • At 2d0e49417, the two HB property files: 54 passed.
  • At c64d1421d, before the pension-age change, the UC legacy closure, closure scope (Scope legacy-benefit closure to each award's owners #2549), report-only reform, legacy-award readers and work, and dated reform route property files: 258 passed. The new owner-scope test passes (6), and 2 fail with the gate removed.

CI runs the full Python suite.

Dataset impact

Pending: the Aggregate impact CI job measures this head against main on the certified dataset (uk-data 1.58.1), and its report will be quoted here. Earlier figures in this PR (uk-data 1.56.16) predate the claim at abolition and are withdrawn.

Follow-ups

Notes for the reviewer

axiom: TheAxiomFoundation/rulespec-uk#376 queued (SI 2025/1148 arts 3A, 7; SR 2025/176 arts 3A, 7; SR 2016/226 reg 4A); TheAxiomFoundation/rulespec-uk#433 queued (the UC claim at legacy closure)

Reproducer: policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/housing_benefit_working_age_abolition.yaml, policyengine_uk/tests/test_housing_benefit_working_age_abolition_properties.py::test_payable_share_is_the_day_share_before_the_statutory_date, policyengine_uk/tests/test_housing_benefit_working_age_abolition_properties.py::test_abolition_matches_the_pre_abolition_rule_scaled_by_the_payable_share, policyengine_uk/tests/test_housing_benefit_working_age_abolition_properties.py::test_the_abolition_claim_ends_only_the_couples_legacy_awards

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits September 30, 2026 07:54
SI 2025/1148 art 7, inserted by SI 2026/409, brings WRA 2012 s.33(1)(d)
into force on 1 July 2026 for every Housing Benefit award not already
terminated. It saves claimants within SI 2014/1230 reg 6A(2)-(5)
(specified or temporary accommodation, pension age, protected mixed-age
couples), income-related ESA appointee cases and prisoners until release.
Northern Ireland: SR 2025/176 art 7, inserted by SR 2026/115, from
1 October 2026.

gov.dwp.housing_benefit.working_age_awards_payable holds 1/0 per
jurisdiction (great_britain, northern_ireland). PE-UK samples gov.*
parameters at 30 April of each fiscal year, which would have left all of
2026-27 unaffected, so the parameter is day-weighted with
fiscal_year_blend: 2026 takes 86/365 in GB and 178/365 in NI, and 0 from
2027. housing_benefit_payable_share is 1 for any benefit unit with a member
over State Pension age and the country share otherwise; the
continuing-award route needs it above 0 and the pre-cap award is scaled by
it.

Also make housing_benefit_eligible.yaml's boolean checks non-vacuous
(margin 0, would_claim_uc false), and update the docs, programs.yaml and
the take-up description.

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

A mutation check showed the mixed-population differential missed two
breakages (no proration; NI given the GB date), because random populations
rarely hold a working-age continuing award in 2026. The new property test
builds only those families, for 2025-2027 in GB and NI, and fails on both
mutations. Also drop dataset-specific take-up shares from the docs page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits September 30, 2026 08:43
Review follow-up: specified and temporary accommodation HB is not modelled,
so programs.yaml lists Housing Benefit as partial. Comment that Great
Britain's date applies to an unknown country, and use Stat-Xplore's own
"Employment and Support Allowance" label in the docs.

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

Copy link
Copy Markdown
Collaborator Author

Overlap with #1940: it replaces the pension-age new-claim test in housing_benefit_eligible with meets_pension_credit_age_conditions, which adds mixed-age couples keeping the SI 2019/37 art. 4 saving (TP Regs reg 6A(5)) and those before 15 May 2019. It leaves your continuing-award line alone, so the conflict should be textual only. It also extends test_dataset_take_up_stays_anchored_to_reported_claims: a saved mixed-age couple is eligible on the new-claim route as well as the continuing-award route.

MaxGhenis added a commit that referenced this pull request Sep 30, 2026
Para 17(1) and 9(1) add £17.10 where net earnings "equal or exceed" the
other disregards, the childcare charges and £17.10. Net earnings are
float32, so exactly £1,149.20 (£5 + £17.10 a week) was held as £1,149.19995
and failed the test. The comparison is now in pence, and new cases pin
£1,149.20 (single, 30 hours) and £2,189.20 (lone parent, 16 hours) as
granted and a penny below each as not.

The end-to-end pension-age cases are aged 72 and set the applicable amount
(£256 x 52) as an input. SI 2006/214 Sch 3 para 1(1) gives £256 only to a
claimant who reached pensionable age before 1 April 2021, and £238 to one
who reached it later; #1913 models that split. The working-age case asserts
housing_benefit_entitlement, which #1910's 2026 abolition scaling does not
change.

The disabled-worker case is labelled as a model limitation: the disability
premium also brings in Sch 4 para 3's £20 in place of £5, which is not
modelled. A new case pins the is_adult proxy counting an 18-year-old young
person's earnings and hours (the law excludes them) until #1896 replaces
it. The net earnings documentation names the provisions that set the tax
deducted (213 regs 36(3) and 39(1); 214 regs 36(2) and 40(1)), calls the
proportional attribution a lower bound for employees, and says what the
proxy counts. The changelog fragment is a bullet.

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

Copy link
Copy Markdown
Collaborator

Reviewed: request changes (sequencing only; the law is right).

The dates and savings are correct. GB is 1 July 2026 under SI 2025/1148 art 7, inserted by SI 2026/409, and NI is 1 October 2026 under SR 2025/176 art 7, inserted by SR 2026/115. Specified or temporary accommodation, pension age, protected mixed-age couples, ESA(IR) appointees and prisoners are saved. The 86/365 and 178/365 day counts are right.

  1. Blocking (merge order). In the dataset, the 28k working-age units whose HB ends have would_claim_uc = False and get nothing. That produces a £0.19bn saving and about 13k more people in AHC poverty, which the PR itself says may have the wrong sign (DWP's Move to UC claim rates are 75–97%). Fix: merge together with, or after, policyengine-uk-data#492, and ideally Abolish income-related ESA from 1 July 2026 (NI 1 October 2026) and stop paying it alongside UC #1914 (ESA(IR) abolition), so live results never show this.
  2. Should fix housing_benefit_payable_share.py:44-45 and housing_benefit_eligible.py:56-57. Nothing can mark specified or temporary accommodation (reg 6A(2)), so in the household calculator such tenants get £0 from July 2026. The PR cites a DWP figure of £5.6bn for this HB in GB (I didn't verify it). Fix: add a bool input in_specified_or_temporary_accommodation (default False) that sets the share to 1 and opens the new-claim route. Model Housing Benefit for specified (supported) and temporary accommodation at any age #1911 can then do the data.
  3. Nit. A reform dated inside a year (e.g. "2026-07-01") is silently ignored. Say so in the parameter description.

Verified: I read SI 2025/1148 art 7 (revised), SI 2026/409, SR 2026/115 (sealed 17 June 2026), TP Regs reg 6A and DWP circular A6/2026 (in force 1 July 2026). In a fresh environment the abolition and eligibility YAML passed 16/16 and the two property files passed 38/38. CI: all 7 checks pass, including the docs build.

@juaristi22

Copy link
Copy Markdown
Collaborator

Codex review — changes required

Reviewed commit bd9272a88ee1198eacd2a2da9cb5abf30e4be01c. PARTIAL; 1 confirmed blocking finding(s). Independent code/test and policy/source reviews were consolidated for the changed behavior and affected dependencies.

code-1 — [P1] Preserve working-age awards covered by the abolition exceptions

housing_benefit_payable_share.py:30–45 assigns the abolition share to every family without a pension-age member. The code comments acknowledge that specified/temporary accommodation and other saved cases have no input, so the new multiplier nonetheless sets all of those working-age awards to zero from2027. The independently checked article7/regulation6A exceptions preserve qualifying continuing awards; the model needs to distinguish them before zeroing this entire population.

Executed2027 case: age40, reported HB £5,200, would_claim_uc false, council rent £5,200 and assessable HB income held at zero. The model calculates HB entitlement £5,200, payable share0, HB £0 and UC £0. Protection status cannot be supplied at this head, so an otherwise identical protected continuing award necessarily gets the same exclusion. This is a confirmed missing condition with an executed downstream path; it is not a claim that the diagnostic encoded a protection variable that does not exist.

Add a supported protection input/path, or coordinate the data/migration work so protected cases are retained before applying the blanket ending rule. Cover protected working-age awards through final payment after2026. Confidence: high on the universal-zero code path and statutory omission; population incidence is unverified.

The source review independently confirms the continuing-award protections in GB article 7, NI article 7 and transitional regulation 6A. The overlapping code and policy findings are counted once. Appointee/prisoner savings also need an explicit treatment.

The GB/NI commencement dates and annual shares are corroborated. The migration concern is separate from the confirmed missing protection: an absent UC award alone does not establish UC entitlement or take-up. The PR's population cost/poverty estimates remain author-reported.

Outstanding evidence/decision:

Validation: 54 focused tests passed. An additional executed diagnostic traced the new payment-share path from £5,200 HB entitlement to £0 paid HB in 2027. Four official source originals were inspected and their cached bytes verified. Protection itself cannot be supplied as an input at this head; the finding combines the universal code path with the statutory exception, rather than claiming a fully represented protected household was simulated.

Focused tests used an existing cached Python 3.13 environment (Core 3.32.9, NumPy 2.1.3, pandas 2.3.1, microdf-python 1.2.1, Hypothesis 6.168.2, pytest 8.4.2) with this PR’s isolated source snapshot. No dependencies were installed; this was not a freshly synced lock environment or a full-suite/population run. This is a review comment, not a formal GitHub review vote.

Live check before posting (2026-10-02T10:39:08.735058+00:00): same commit, CLEAN; all reported CI checks pass.

@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Review pass (Claude Code, on Vahid's behalf) at bd9272a8 — round 2

Short version: no new commits since my round 1 (head still bd9272a8), so my three items stand as they were. The branch still merges cleanly onto today's main (30 commits ahead of its base) and its tests pass on the merged tree. The Codex review's P1 is my item 2; I agree with it and won't repeat it.

Item from round 1 Status
1. Blocking (merge order): the 28k working-age units whose HB ends have would_claim_uc = False, so the abolition shows a £0.19bn saving and ~13k more people in AHC poverty that the PR itself says may have the wrong sign Open. policyengine-uk-data#492 and #1914 are both still open issues, with no PR yet. Holding this until #492 lands (or merging them together) is still my ask.
2. Should-fix: no input for specified or temporary accommodation (reg 6A(2)), so those tenants get £0 from July 2026 in the household calculator Open, and independently confirmed by the Codex review's P1. A single bool input (default False) that sets the share to 1 and opens the new-claim route is enough here; #1911 can supply the data. The ESA(IR) appointee (art 7(4)(b)) and prisoner (art 7(2)) savings could ride on the same input or be documented as not modelled, as now.
3. Nit: a reform key dated inside a year ("2026-07-01") is silently ignored Open. One sentence in the parameter description would do.

Checked again at this head:

  • git merge-tree against main 1c9bb5c2 reports no conflicts (only programs.yaml auto-merges). On the merged tree, the Housing Benefit YAML directory passes 74/74, and test_housing_benefit_working_age_abolition_properties.py plus test_housing_benefit_pension_age_properties.py pass 38/38.
  • Day counts: 6 April–30 June is 86 days and 6 April–30 September is 178, so the 0.2356 and 0.4877 shares are right.
  • CI at this head: all 7 checks pass.
  • Date the mixed-age couple Pension Credit exclusion and model the SI 2019/37 saving #1940 (mixed-age couples) is still open; the overlap with housing_benefit_eligible remains textual only.

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

@vahid-ahmadi — response to your 1 October and 2 October reviews:

  1. Take-up / merge order: left open for Max, as requested. This follow-up does not change would_claim_uc, migration take-up or the data pipeline. The sensitivity section is preserved exactly. Move working-age legacy-benefit reporters onto UC at Move to UC claim rates (stranded after HB, tax credit, IS and JSA closure) policyengine-uk-data#492 and Abolish income-related ESA from 1 July 2026 (NI 1 October 2026) and stop paying it alongside UC #1914 remain separate work; this PR has not been merged or marked ready.

  2. Protected awards: the assigned worktree now contains in_specified_or_temporary_accommodation (BenUnit, YEAR, bool, default False). It keeps the payable share at 1 and opens the HB new-claim route. The route also works when UC is claimed: reg 6A(2) and reg 8(3) permit this, while the corresponding UC rent element is excluded under Schedule 1 paragraph 3(h)/(i); the NI counterparts were also read and implemented. New 2027 GB/NI YAML covers protected continuing awards and new claims paid in full, unprotected zero controls, the capital gate and HB with non-housing UC. Properties check protection in every year 2015–2040 and omitted-input/explicit-False equivalence.

    The other savings are now listed precisely in variable documentation and the PR body: the qualifying final UC assessment-period case on reaching Pension Credit age; pension-age and protected mixed-age approximations; ESA(IR) entitlement immediately before abolition plus an appointee then or a determination in the prior six months that one was likely needed; and the restricted prisoner delay based on UC exclusion immediately before abolition, until that restriction ends. The historical cases remain unmodelled rather than being assigned a generic status that would not establish the statutory conditions. Accommodation-specific eligible-rent and benefit-cap rules remain incomplete under Model Housing Benefit for specified (supported) and temporary accommodation at any age #1911.

    Further cap-coordination limitation for Max / Model Housing Benefit for specified (supported) and temporary accommodation at any age #1911: benefit_cap_reduction includes both HB and UC pre-cap awards, and final housing_benefit and universal_credit each subtract that same reduction. With the new status permitting joint awards, a binding cap can therefore subtract the reduction from both. Capped joint awards are not fully supported; no cap methodology was chosen here. The synthetic joint-award final tests are below the cap, and the default False path leaves existing outputs unchanged.

  3. Mid-year reforms: the parameter description now explains annual reads, the usual 30 April sampling, and this flag's day-weighted fiscal-year conversion. The checkpoint merge changed the relevant implementation: Simulation.apply_parameter_changes now applies dictionary reforms before conversion. A 2026-07-01 key setting the flag to 1 is a one-day override and yields 87/365 in GB; a bare 2026 key covers the full fiscal year. A date written into already-converted parameters after the annual read date is ignored for that year's formula. The PR body corrects the earlier broader statement, and a real Simulation regression covers the dictionary examples.

Follow-up validation: the full Housing Benefit YAML directory plus the affected UC housing-cost and HB/UC mutual-exclusion YAML files passed: 101 passed in 211.90s. Notebook JSON and git diff --check passed. The two property files and policyengine_uk/tests/code_health were attempted, but the cutoff lost their final pytest session; its log contains only startup output, so no completed Python-suite result is claimed. Process inspection is blocked (ps/pgrep cannot list processes), so another potentially concurrent test was not started. The checkpoint also lacks the post-#1896 generic-child/adult code-health check because the latest-main merge is blocked. No full-dataset or microsimulation suite was run.

Publication status: these fixes are prepared locally, but the live PR branch does not yet contain them. The filesystem sandbox rejects writes to the worktree's Git metadata outside the assigned writable directory, preventing fetch/merge, staging, commit and push. The existing checkpoint merge 165448576a955105972817cddb73bf82be54dc88 is preserved. This is not a claim that item 2 is already closed on the remote branch.

Final lint: uv run --frozen ruff format . left 1,098 files unchanged; uv run --frozen ruff check . passed. git diff --check passed.

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

@juaristi22 — response to the Codex review:

  • code-1 / P1: implemented in the assigned worktree with an explicit in_specified_or_temporary_accommodation input, default False. Protected working-age families retain share 1 after abolition, including GB/NI 2027 final-award cases paid in full with otherwise identical unprotected zero controls. Protected new claims are supported. Accommodation HB can coexist with UC under GB reg 8(3) / NI reg 6(3); the same input excludes UC rent support under the statutory housing-cost exclusions. The ordinary HB/UC exclusion remains for unprotected families.
  • Other saved classes: variable documentation and the PR body now list the qualifying final UC assessment-period case, pension-age and protected mixed-age approximations, exact ESA(IR)/appointee-or-likely-needed conditions and the restricted prisoner delay. Award history, decision and timing conditions are not replaced with invented current-status tests. Accommodation-specific eligible-rent and benefit-cap rules remain incomplete.
  • Unresolved joint-award cap coordination — Max / Model Housing Benefit for specified (supported) and temporary accommodation at any age #1911: benefit_cap_reduction includes both HB and UC pre-cap awards, while final housing_benefit and universal_credit each subtract that same reduction. With the new status permitting joint awards, a binding cap can subtract the reduction from both benefits. Capped joint awards are not fully supported and no cap methodology was selected here. The synthetic joint-award final tests are below the cap; default False preserves existing outputs.
  • Dataset/migration evidence: this follow-up leaves take-up work to Max under Move working-age legacy-benefit reporters onto UC at Move to UC claim rates (stranded after HB, tax credit, IS and JSA closure) policyengine-uk-data#492 and Abolish income-related ESA from 1 July 2026 (NI 1 October 2026) and stop paying it alongside UC #1914. No dataset run was added. Existing datasets do not supply the new input; False reduces each changed formula to its previous expression, including the UC housing element. A generated-population regression compares omitted input against explicit False. The sensitivity section is unchanged.

Follow-up validation: the full Housing Benefit YAML directory plus the affected UC housing-cost and HB/UC mutual-exclusion YAML files passed: 101 passed in 211.90s. Notebook JSON and git diff --check passed. The two property files and policyengine_uk/tests/code_health were attempted, but the cutoff lost their final pytest session; its log contains only startup output, so no completed Python-suite result is claimed. Process inspection is blocked (ps/pgrep cannot list processes), so another potentially concurrent test was not started. The checkpoint also lacks the post-#1896 generic-child/adult code-health check because the latest-main merge is blocked. No full-dataset or microsimulation suite was run.

Publication status: the changes remain local. Sandbox restrictions prevent writes to the external Git metadata needed by fetch/merge, staging, commit and push, so the live PR branch has not received this fix and code-1 cannot yet be closed there. The existing checkpoint merge is preserved; the PR has not been merged or marked ready.

Final lint: uv run --frozen ruff format . left 1,098 files unchanged; uv run --frozen ruff check . passed. git diff --check passed.

MaxGhenis and others added 2 commits October 2, 2026 15:52
…bolition

Adds the benefit-unit input in_specified_or_temporary_accommodation
(default False; SI 2025/1148 art 7 and TP Regs reg 6A(2), NI equivalents):
such awards stay payable after 1 July 2026 (NI 1 October 2026), new claims
remain open, and the UC housing costs element excludes that rent. Other
saved classes (pension-age switchers, ESA(IR) appointees, restricted
prisoners) are documented as not modelled. The parameter description now
says how reforms dated inside a year are read. With the input absent every
existing result is unchanged.

Addresses Vahid's items 2-3 and the Codex P1 on bd9272a. Item 1 (data
migration onto UC) is held for Max (d837).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pension-age route now reads the claimant and partner
(is_claimant_or_partner, from #1896) in place of the age-18 approximation.
A reform key dated inside a year leaves that model year's payable share
unchanged (86/365 for Great Britain in 2026): the test, the parameter
description and the notebook now say so; the earlier text claimed it added
one day.

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

Copy link
Copy Markdown
Collaborator Author

Cross-reference from #2123, the HB Sch 4 para 18 specified or temporary accommodation earnings disregard. It is in force on 5 October 2026 and reads the same status input as this PR.

MaxGhenis and others added 4 commits October 3, 2026 17:17
Working-age Housing Benefit awards end on 1 July 2026 (NI 1 October 2026).
The abolition now prompts the same claim as a legacy benefit closure
(claims_uc_at_legacy_closure), at the rate datasets supply in
would_claim_uc_at_legacy_closure (PolicyEngine/policyengine-uk-data#492).

- A family that claims is on Universal Credit for the whole year of the
  abolition and loses its Housing Benefit continuing award; its claim also
  ends income-related ESA, Income Support and income-based JSA.
- A family that does not claim keeps its award for the part of the year
  before abolition (housing_benefit_payable_share) and its other legacy
  awards; unlike a migration notice the abolition ends no other award.
- Tests: the abolition cases about a continuing award now say the family
  does not claim at the abolition; new cases cover a claiming family in
  2026 and 2027.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t the abolition claim

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

Copy link
Copy Markdown
Collaborator Author

Status 02:45Z: this PR now belongs to the uk-data#492 session. A local branch has main merged (housing_benefit_eligible and notebook conflicts resolved) and #2119 merged. On it, the abolition prompts the closure claim: a family that claims Universal Credit at the abolition moves for the whole year, and one that does not claim keeps its award until the abolition date. All 2,043 policy YAML and 53 property tests pass. It is not pushed yet, because it would carry #2119's diff. It will be pushed once #2119 merges, then reviewed. It merges only after PolicyEngine/policyengine-uk-data#534 is released (d837).

@MaxGhenis

MaxGhenis commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator Author

Coordination: the universal credit limb of the HB passport (#2133, fixes #2132).

That PR targets main and touches none of this PR's files. It adds the universal credit limb to the working-age passports:

  • SI 2006/213 Sch 4 para 12 (earnings), Sch 5 para 4 (whole income) and Sch 6 para 5 (whole capital);
  • the Northern Ireland equivalents, SR 2006/405 Sch 5 para 12, Sch 6 para 4 and Sch 7 para 5.

"On universal credit" is entitlement, whether in payment or not (reg 2(3B)). The model reads it as is_uc_entitled, Universal Credit before the benefit cap and deductions, so there is no cycle through the cap.

What changes for this PR once both land:

  • A family with in_specified_or_temporary_accommodation that is entitled to Universal Credit is passported. Its HB applicable income, capital and tariff income are nil, and all its earnings are disregarded, so it gets maximum Housing Benefit. The YAML case here that supplies housing_benefit_applicable_income: 0 for HB alongside UC no longer needs that input.
  • Six existing HB YAML files leave would_claim_uc at its default True, so their low-income families are UC-entitled and now passported. Add the universal credit limb of the Housing Benefit passport #2133 pins those fixtures with would_claim_uc: false; they test the continuing-award route.

Checked on a local merge of this head (06ef074), main 6ae9c5e and the passport commit:

  • Once those fixtures are pinned, the HB YAML folder passes.
  • This PR's test_housing_benefit_working_age_abolition_properties.py passes, 38 of 38.
  • On the Enhanced FRS, the passport changes £0 in every year from 2024-25 to 2030-31. That holds by default, and with the accommodation input set for working-age benefit units reporting both HB and UC. With that input their UC housing costs are nil, so none of them is UC-entitled.

Two things for this PR:

  1. Benefit cap with HB and UC both paid. housing_benefit.py and universal_credit.py both subtract the full benefit_cap_reduction, so a capped co-recipient loses it twice. The law has three relevant rules:

    • Housing Benefit counts as nil in the UC cap (UC Regs 2013 reg 80(2A)).
    • The HB cap does not apply where the claimant is receiving Universal Credit (HB Regs reg 75F(1)(g)).
    • Specified-accommodation HB counts as nil in the HB cap (reg 75C(2)(a)).

    On a synthetic capped lone parent with four children and £3,000 earnings, the passport raises HB before the cap by £671. Through the double subtraction it also lowers UC by £671, so the family ends up worse off. No Enhanced FRS unit is in that position today. This is the "reduction-coordination issue" in the body. The fix is tracked in Benefit cap reduction is taken from both Housing Benefit and Universal Credit for a family receiving both #2136 and should land before or with this PR.

  2. Age tests. housing_benefit_payable_share still tests any_over_SP_age, while main's housing_benefit_eligible now uses meets_pension_credit_age_conditions. The merge keeps both as each side wrote them; check that this is intended.

🤖 Generated with Claude Code

… local/1910-on-2119

# Conflicts:
#	policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/housing_benefit_eligible.yaml
#	policyengine_uk/variables/gov/dwp/housing_benefit/housing_benefit_eligible.py
#	policyengine_uk/variables/gov/dwp/housing_benefit/in_specified_or_temporary_accommodation.py

@vahid-ahmadi vahid-ahmadi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs changes before merge. The law is right and enacted, but the branch conflicts with main and one saving is wider than the statute.

@MaxGhenis, round 3, at 06ef0744. This covers the accommodation follow-up (0d7df47d) and where the branch now stands against main 714b1438.

The law. I re-read both instruments today. Both are made and in force, so this is law, not a policy assumption.

  • GB: SI 2025/1148 art 7, inserted on 15 April 2026 by SI 2026/409 art 2(6). Art 7(3) appoints 1 July 2026. Art 7(2) delays it for the reg 19(1)(b)/(c) prisoner cases. Art 7(4)(a) saves reg 6A(2)-(5) and art 7(4)(b) saves the ESA(IR) art 3A(2) cases.
  • NI: SR 2025/176 art 7, inserted on 17 June 2026 by SR 2026/115 art 2(6). Same structure, with 1 October 2026 and reg 4A(2)-(5).
  • The 86/365 and 178/365 shares are right.
  1. must (merge with main). git merge-tree against main 714b1438 conflicts in four files:

    • housing_benefit_eligible.py
    • housing_benefit_eligible.yaml
    • in_specified_or_temporary_accommodation.py (add/add with #2123)
    • docs/book/programs/gov/dwp/housing-benefit.ipynb

    Main's eligibility has moved on. It now uses meets_pension_credit_age_conditions, left_pension_route_at_legacy_closure, claims_universal_credit and legacy_benefits_closed (#1940, #2119). This head's continuing_award still reads would_claim_uc, and so do the new YAML cases. Your 4 October comment says a merged local branch exists. Please push it so the abolition can be reviewed on main's rules. Everything below is at this head.

  2. must (merge order, still open from round 1). The 28k working-age units whose HB ends still get no UC in the data. The PR body says the PR is on hold until policyengine-uk-data#492 (and #534) is released. That hold should stay in place until the data change lands.

  3. should housing_benefit_payable_share.py:59-63. any_over_SP_age gives a share of 1 to any family with a member over State Pension age. That includes mixed-age couples who don't have the SI 2019/37 art 4 saving. Art 7(4)(a) saves only those within reg 6A(4) (both members over the qualifying age) or 6A(5) (mixed-age couples with the art 4 saving). At this head, a couple aged 68 and 50 with a reported HB award, would_claim_uc: false, £5,200 council rent and no saving gets a share of 1 and £5,200 of HB in 2027. The same couple aged 40 and 38 gets £0. The PR body lists this as a retained approximation. Main now has #1940, so the exact test is cheap. Fix: use main's meets_pension_credit_age_conditions, which already encodes 6A(4) and the art 4 saving. Add a 2027 YAML case for an unsaved mixed-age couple (share 0) next to a saved one (share 1).

  4. should (HB and UC both paid, under the cap). On main, housing_benefit.py:14-15 and universal_credit.py:14 both subtract the full benefit_cap_reduction. This PR is the first to let a family get both HB and non-housing UC, so a capped family in protected accommodation loses the reduction twice. The law gives three rules:

    • UC Regs 2013 reg 80(2A): HB counts as nil in the UC cap.
    • HB Regs 2006 reg 75F(1)(g): the HB cap doesn't apply to someone on UC.
    • Reg 75C(2)(a): specified-accommodation HB counts as nil in the HB cap.

    The PR body leaves this to #1911. #2089 splits the cap by scheme. Either merge this after #2089 and add one capped joint-award YAML case, or state in the merge plan that capped joint awards are wrong until #1911.

  5. nit housing_benefit_payable_share.py:7-29. The documentation lists the unmodelled savings well. It would help to add one line on the direction of error: the ESA(IR) appointee and prisoner savings are not modelled, so their awards wrongly end on the abolition date.

Round-1 nit 3 (dated reform keys) is done: the parameter description now covers it, and there is a Simulation regression for it.

What I checked

  • I read both art 7 texts (GB as revised 15 April 2026, NI as revised 17 June 2026) on legislation.gov.uk.
  • I hand-checked the abolition YAML: £5,200 × 86/365 = £1,225.21.
  • I set up a fresh uv env at this head and ran:
    • housing_benefit_eligible.yaml and housing_benefit_working_age_abolition.yaml: 25 passed.
    • The two property files: 42 passed.
    • ruff check and ruff format --check on the 7 changed Python files: clean.
  • I ran the mixed-age case in item 3 with a Simulation at this head.
  • I ran git merge-tree against main 714b1438.
  • CI at this head: Lint, docs, smoke-import and Fix evidence pass. Test shows as failed after 6h0m, which looks like the job timeout. I didn't see its log.
  • I couldn't check: behaviour on main's eligibility rules, because there's no merged head. I also didn't run a dataset.

🤖 Generated with Claude Code

MaxGhenis added a commit that referenced this pull request Oct 15, 2026
…reg 75F(1)(g))

UC Regs 2013 reg 80(2A) counts Housing Benefit as nil in the Universal Credit
total, so uc_benefit_cap_reduction takes it out of benefit_cap_welfare_benefits,
which keeps it for the Housing Benefit cap (HB Regs 2006 reg 75C(2)(b)). HB reg
75F(1)(g) lifts the Housing Benefit cap where the claimant is receiving
Universal Credit: is_housing_benefit_benefit_cap_exempt_specified_benefit now
includes a family with Housing Benefit and Universal Credit before the cap.

housing_benefit_eligible rules out a family that claims Universal Credit, so no
computed family gets both today and no baseline result changes; the rules
matter once a family is paid both (specified or temporary accommodation, #1910).
Reg 75C(2)(a) (specified-accommodation HB counted as nil) is not applied:
in_specified_or_temporary_accommodation does not separate specified from
temporary accommodation. Vahid Ahmadi's finding 3 on #2089.

Tests: two YAML cases (each fails on the previous formulas), a property file
(test_benefit_cap_uc_and_hb_properties.py), and the split property file's
reduction invariant now checks reg 80(2A) and 75F(1)(g) in place of
asserting that no family gets both.

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

Copy link
Copy Markdown
Collaborator Author

UK hub takeover for the Budget fix sprint (Max, 21 Oct). The owner session local_4147cacc has been idle since mid-October. The hub woke it on 21 Oct at 23:58Z, and it did not start. To land this before the Budget model locks (the first pe-uk release cut by about 12:00Z Thu 22 Oct), the hub has taken it over as build 20261021-211254-sprint-1910, which merges main, re-tests, pushes as a fast-forward and marks it ready. The hub then reviews it and lands it through the merge queue.

If the owner session wakes, please don't push to this branch; comment here instead, so there's only one writer.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

UK hub: takeover withdrawn. The owner session has been woken (22 Oct 01:25Z) and is finishing this PR itself, so the hub's build is cancelled. One writer: the owner session.

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits October 21, 2026 21:18
…ousing-benefit

Brings in the merged #2119 (fa4389d) and three weeks of main. Conflicts in
esa_income_eligible and jsa_income_eligible: keep main's claimant and work
tests and this PR's abolition-claim gate. The HB eligibility documentation no
longer says Universal Credit is unavailable to wholly pension-age families,
since a Working Tax Credit migrant can claim it (left_pension_route_at_legacy_closure).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng-age-housing-benefit

#2549 moved the ESA and JSA closure out of their eligibility screens into
person_legacy_benefits_closed, scoped to each award's owner. Take main's
screens, and put this PR's abolition-claim gate in the claimant-and-partner
branch of person_legacy_benefits_closed, so a member claiming in their own
right keeps their award when the family claims Universal Credit at the
Housing Benefit abolition.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A family that claims Universal Credit when its working-age Housing Benefit is
abolished ends the claimant's and partner's income-related ESA; an adult
claiming in their own right keeps theirs (#2395), and a family that does not
claim keeps both. Dropping the gate in person_legacy_benefits_closed fails it.

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

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Aggregate impact on certified data: pass

Base 582b86315c against head ed7e1bec2e, 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: 79 (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

Measure Year Base Head Change
Housing Benefit 2031-32 1,249k 1,131k -117.8k
Housing Benefit 2030-31 1,247k 1,129k -117.3k
Housing Benefit 2029-30 1,245k 1,128k -116.8k
Housing Benefit 2028-29 1,240k 1,123k -116.3k
Housing Benefit 2027-28 1,254k 1,140k -114.1k
Housing Benefit 2026-27 1,252k 1,143k -109.7k
Universal Credit 2031-32 £90.35bn £92.04bn +£1.68bn
Universal Credit 2030-31 £89.03bn £90.66bn +£1.64bn
Universal Credit 2029-30 £87.61bn £89.21bn +£1.59bn
Universal Credit 2028-29 £86.69bn £88.25bn +£1.56bn
Universal Credit 2027-28 £84.93bn £86.42bn +£1.50bn
Universal Credit 2026-27 £83.11bn £84.52bn +£1.41bn
Employment and Support Allowance (income-related) 2031-32 191k 127k -64.8k
Employment and Support Allowance (income-related) 2030-31 190k 126k -64.5k
Employment and Support Allowance (income-related) 2029-30 190k 125k -64.2k
Employment and Support Allowance (income-related) 2028-29 189k 125k -63.9k
Employment and Support Allowance (income-related) 2027-28 188k 124k -63.9k
Employment and Support Allowance (income-related) 2026-27 188k 124k -63.6k
Decile 5: mean household_net_income per household 2028-29 £47,439 £47,915 +£476
Decile 5: mean household_net_income per household 2029-30 £48,027 £48,505 +£478
Housing Benefit 2031-32 £10.15bn £9.31bn -£842.0m
Employment and Support Allowance (income-related) 2031-32 £2.45bn £1.61bn -£838.9m
Employment and Support Allowance (income-related) 2030-31 £2.39bn £1.57bn -£819.2m
Housing Benefit 2030-31 £9.87bn £9.06bn -£815.0m
Employment and Support Allowance (income-related) 2029-30 £2.33bn £1.53bn -£799.8m
Housing Benefit 2029-30 £9.61bn £8.82bn -£788.7m
Employment and Support Allowance (income-related) 2028-29 £2.28bn £1.50bn -£780.8m
Decile 5: mean household_net_income per household 2030-31 £49,181 £49,560 +£378
Employment and Support Allowance (income-related) 2027-28 £2.23bn £1.46bn -£764.8m
Housing Benefit 2028-29 £9.34bn £8.57bn -£763.3m
Employment and Support Allowance (income-related) 2026-27 £2.18bn £1.43bn -£747.2m
Housing Benefit 2027-28 £9.19bn £8.46bn -£729.7m
Decile 5: mean household_net_income per household 2031-32 £50,036 £50,394 +£359
Housing Benefit 2026-27 £8.93bn £8.25bn -£678.7m
Decile 6: mean household_net_income per household 2028-29 £51,174 £50,840 -£334
Decile 6: mean household_net_income per household 2029-30 £52,167 £51,830 -£337
Decile 5: mean household_net_income per household 2027-28 £47,077 £47,367 +£290
Decile 5: mean household_net_income per household 2026-27 £46,150 £46,414 +£264
Relative poverty, before housing costs: children 2031-32 23.2% 23.7% +0.50pp
Relative poverty, before housing costs: pensioners 2031-32 1,686k 1,727k +41.8k

39 more flags are in the report artifact.

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Winter Fuel Payment 0 +£20,081 0 0 0 0 0
Universal Credit 0 +£1.41bn +£1.50bn +£1.56bn +£1.59bn +£1.64bn +£1.68bn
Housing Benefit 0 -£678.7m -£729.7m -£763.3m -£788.7m -£815.0m -£842.0m
Council Tax Reduction 0 -£3.2m -£4.1m -£4.3m -£4.4m -£4.6m -£4.8m
Employment and Support Allowance (income-related) 0 -£747.2m -£764.8m -£780.8m -£799.8m -£819.2m -£838.9m
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
Winter Fuel Payment 0 +100 0 0 0 0 0
Universal Credit 0 +110.8k +115.2k +117.7k +118.2k +118.7k +119.3k
Housing Benefit 0 -109.7k -114.1k -116.3k -116.8k -117.3k -117.8k
Council Tax Reduction 0 -1.1k -1.1k -1.0k -722 -725 -729
Employment and Support Allowance (income-related) 0 -63.6k -63.9k -63.9k -64.2k -64.5k -64.8k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Government balance, each component counted once

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government spending 0 † -£23.7m † -£2.9m † +£15.1m † -£1.4m † -£2.0m † -£2.6m †
Government balance, each receipt once 0 † +£23.7m † +£2.9m † -£15.1m † +£1.4m † +£2.0m † +£2.6m †

Model totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_spending 0 † -£23.7m † -£2.9m † +£15.1m † -£1.4m † -£2.0m † -£2.6m †
household_benefits 0 † -£23.7m † -£2.9m † +£15.1m † -£1.4m † -£2.0m † -£2.6m †
gov_balance 0 † +£23.7m † +£2.9m † -£15.1m † +£1.4m † +£2.0m † +£2.6m †

Household income totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household net income 0 † -£23.7m † -£2.9m † +£15.1m † -£1.4m † -£2.0m † -£2.6m †
Household net income (HBAI definition) 0 -£23.7m -£2.9m +£15.1m -£1.4m -£2.0m -£2.6m

Poverty rates

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 0 +0.01pp +0.01pp +0.01pp +0.01pp +0.01pp +0.01pp
Absolute poverty, before housing costs: children 0 -0.00pp -0.00pp -0.00pp -0.00pp -0.00pp -0.00pp
Absolute poverty, before housing costs: working-age adults 0 +0.01pp +0.00pp +0.00pp +0.00pp +0.00pp +0.00pp
Absolute poverty, before housing costs: pensioners 0 +0.03pp +0.04pp +0.04pp +0.04pp +0.04pp +0.04pp
Absolute poverty, after housing costs: everyone 0 +0.01pp +0.01pp +0.00pp +0.01pp +0.01pp +0.01pp
Absolute poverty, after housing costs: children 0 -0.01pp -0.01pp -0.01pp -0.01pp -0.01pp -0.01pp
Absolute poverty, after housing costs: working-age adults 0 +0.00pp +0.00pp -0.00pp +0.00pp +0.01pp +0.01pp
Absolute poverty, after housing costs: pensioners 0 +0.04pp +0.04pp +0.04pp +0.04pp +0.04pp +0.04pp
Relative poverty, before housing costs: everyone 0 +0.01pp +0.06pp +0.02pp +0.05pp +0.08pp +0.32pp
Relative poverty, before housing costs: children 0 -0.00pp +0.08pp +0.01pp +0.03pp +0.19pp +0.50pp
Relative poverty, before housing costs: working-age adults 0 +0.01pp +0.05pp +0.01pp +0.05pp +0.04pp +0.24pp
Relative poverty, before housing costs: pensioners 0 +0.03pp +0.09pp +0.06pp +0.08pp +0.11pp +0.36pp
Relative poverty, after housing costs: everyone 0 +0.01pp +0.11pp +0.00pp +0.07pp +0.03pp +0.02pp
Relative poverty, after housing costs: children 0 -0.01pp +0.19pp -0.01pp +0.16pp -0.01pp +0.01pp
Relative poverty, after housing costs: working-age adults 0 +0.01pp +0.08pp -0.00pp +0.03pp +0.01pp +0.02pp
Relative poverty, after housing costs: pensioners 0 +0.04pp +0.11pp +0.04pp +0.08pp +0.17pp +0.05pp

People in poverty

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 0 +6.2k +5.6k +4.4k +4.4k +4.8k +5.5k
Absolute poverty, before housing costs: children 0 -52 -52 -52 -52 -53 -53
Absolute poverty, before housing costs: working-age adults 0 +2.2k +1.6k +369 +378 +696 +1.4k
Absolute poverty, before housing costs: pensioners 0 +4.0k +4.0k +4.1k +4.1k +4.1k +4.1k
Absolute poverty, after housing costs: everyone 0 +5.0k +4.1k +2.9k +3.8k +8.3k +8.3k
Absolute poverty, after housing costs: children 0 -1.9k -1.9k -1.9k -1.9k -1.9k -1.9k
Absolute poverty, after housing costs: working-age adults 0 +2.0k +1.2k -50 +849 +5.3k +5.3k
Absolute poverty, after housing costs: pensioners 0 +4.8k +4.9k +4.9k +4.9k +4.9k +4.9k
Relative poverty, before housing costs: everyone 0 +6.3k +43.4k +14.1k +35.0k +58.0k +225.1k
Relative poverty, before housing costs: children 0 -52 +11.6k +1.9k +3.9k +28.5k +77.3k
Relative poverty, before housing costs: working-age adults 0 +2.3k +21.3k +5.6k +21.8k +16.9k +106.0k
Relative poverty, before housing costs: pensioners 0 +4.0k +10.5k +6.5k +9.3k +12.5k +41.8k
Relative poverty, after housing costs: everyone 0 +5.5k +78.1k +2.9k +48.3k +23.3k +16.2k
Relative poverty, after housing costs: children 0 -1.9k +29.2k -1.9k +24.2k -1.8k +1.1k
Relative poverty, after housing costs: working-age adults 0 +2.5k +35.6k -50 +14.5k +5.8k +8.8k
Relative poverty, after housing costs: pensioners 0 +4.8k +13.2k +4.9k +9.6k +19.3k +6.3k

Inequality

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs 0 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000

Mean household net income in each side's own deciles

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household 0 † +£13 † +£8.44 † +£14 † +£6.61 † +£9.99 † +£14 †
Decile 2: mean household_net_income per household 0 † -£10 † +£5.24 † -£25 † -£22 † -£20 † -£22 †
Decile 3: mean household_net_income per household 0 † -£53 † -£64 † -£57 † -£71 † -£68 † -£67 †
Decile 4: mean household_net_income per household 0 † +£12 † -£30 † -£3.08 † +£3.36 † +£1.03 † -£2.27 †
Decile 5: mean household_net_income per household 0 † +£264 † +£290 † +£476 † +£478 † +£378 † +£359 †
Decile 6: mean household_net_income per household 0 † -£198 † -£194 † -£334 † -£337 † -£260 † -£243 †
Decile 7: mean household_net_income per household 0 † +£4.54 † +£4.74 † -£2.12 † -£9.37 † -£5.97 † -£5.64 †
Decile 8: mean household_net_income per household 0 † +£2.24 † +£2.29 † +£2.33 † +£2.38 † +£2.43 † +£2.43 †
Decile 9: mean household_net_income per household 0 † +£0.01 † +£0.01 † +£0.01 † +£0.01 † +£0.01 † +£0.10 †
Decile 10: mean household_net_income per household 0 † -£0.59 † -£0.59 † -£0.60 † -£0.61 † -£0.62 † -£0.63 †

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp 0 -£0.1m -£0.1m -£0.1m -£0.1m -£0.1m -£0.1m
Raise higher rate by 1pp 0 -£0 0 -£694 -£7,907 -£16,652 -£21,600
Raise personal allowance by ~800GBP/year 0 +£29,869 +£29,980 +£37,022 +£60,464 +£60,736 +£25,333
Raise child benefit by 25GBP/week per additional child 0 +£1 -£1 -£1 +£1 0 +£1
Reduce Universal Credit taper rate to 20% 0 -£7.3m -£7.5m -£7.7m -£7.8m -£8.0m -£8.3m
Raise Class 1 main employee NICs rate to 10% 0 -£0.2m -£0.3m -£0.3m -£0.3m -£0.3m -£0.3m
Raise VAT standard rate by 2pp 0 -£76 -£4 -£9 -£1 +£6 +£10
Raise additional rate by 3pp 0 -£0 -£0 -£0 0 +£0 -£0
Raise the Universal Credit standard allowance by 10% 0 -£56.6m -£60.4m -£63.0m -£64.7m -£66.3m -£67.8m
Raise the State Pension by 10% 0 +£5.2m +£6.6m +£6.8m +£7.1m +£7.3m +£7.5m

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Reduce Universal Credit taper rate to 20%: change in universal_credit 0 +£7.3m +£7.5m +£7.7m +£7.8m +£8.0m +£8.3m
Raise the Universal Credit standard allowance by 10%: change in universal_credit 0 +£57.2m +£61.1m +£63.6m +£65.4m +£67.0m +£68.5m

Household net income by decile

Mean change in household net income per household, and as a share of the decile's base income; households stay in the base run's deciles.

Base decile 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1 0 +£3 (+0.0%) +£7 (+0.0%) +£10 (+0.1%) +£10 (+0.1%) +£10 (+0.1%) +£10 (+0.1%)
Decile 2 0 +£6 (+0.0%) +£9 (+0.0%) +£9 (+0.0%) +£10 (+0.0%) +£10 (+0.0%) +£10 (+0.0%)
Decile 3 0 +£2 (+0.0%) +£2 (+0.0%) +£4 (+0.0%) 0 -£1 (-0.0%) -£1 (-0.0%)
Decile 4 0 -£33 (-0.1%) -£35 (-0.1%) -£35 (-0.1%) -£35 (-0.1%) -£36 (-0.1%) -£36 (-0.1%)
Decile 5 0 +£25 (+0.1%) +£26 (+0.1%) +£26 (+0.1%) +£24 (+0.1%) +£26 (+0.1%) +£26 (+0.1%)
Decile 6 0 -£9 (-0.0%) -£9 (-0.0%) -£9 (-0.0%) -£10 (-0.0%) -£10 (-0.0%) -£10 (-0.0%)
Decile 7 0 -£1 (-0.0%) -£1 (-0.0%) -£1 (-0.0%) -£1 (-0.0%) -£2 (-0.0%) -£1 (-0.0%)
Decile 8 0 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 9 0 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
Decile 10 0 fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change fewer than 10 households change
all 0 -£1 (-0.0%) 0 0 0 0 0
Year People gaining over £1 People losing over £1
2025-26 0.0% 0.0%
2026-27 0.1% 0.1%
2027-28 0.1% 0.1%
2028-29 0.1% 0.1%
2029-30 0.1% 0.1%
2030-31 0.1% 0.1%
2031-32 0.1% 0.1%

No change in any year: receipts by tax head; components the model counts twice; population.

Checks failing on both base and head (1)
  • VAT is never negative (sign:vat): 2025-26: 76 units below zero, a weighted £-54,797,972 in total; 2026-27: 76 units below zero, a weighted £-56,271,349 in total; 2027-28: 76 units below zero, a weighted £-57,609,146 in total
Counted-once check

Each of 84 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.

Provenance
Side Commit Runtime Environment hash Partition hash Time
base main 582b86315c uk 2.146.1 (files 792e7aaf1a15), core 3.33.2, py 3.13.16 aarch64 5d40da9d9749 f210f83d5be4 1476.77s
head #1910 merged into main ed7e1bec2e uk 2.146.1 (files 4a7231f90b22), core 3.33.2, py 3.13.16 aarch64 5d40da9d9749 f210f83d5be4 1495.74s

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 £299.29bn £319.01bn £336.47bn £351.62bn £367.17bn £385.29bn £403.59bn
National Insurance (employee and self-employed) £52.58bn £54.94bn £56.75bn £58.48bn £60.62bn £62.57bn £65.03bn
National Insurance (employer) £152.64bn £159.18bn £164.14bn £168.73bn £176.11bn £181.72bn £188.90bn
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.62bn £13.06bn £13.55bn £14.04bn £14.54bn £15.09bn £15.65bn
Student loan repayments £7.83bn £8.12bn £8.35bn £8.56bn £8.79bn £9.04bn £9.38bn
VAT £253.71bn £260.53bn £266.72bn £273.14bn £279.83bn £286.71bn £293.71bn
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
TV licence fee £4.28bn £4.43bn £4.44bn £4.46bn £4.48bn £4.51bn £4.53bn
Council tax £49.56bn £52.45bn £55.78bn £59.39bn £62.98bn £66.74bn £70.70bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.48bn £0.49bn £0.51bn £0.52bn
Northern Ireland domestic rates £0.55bn £0.58bn £0.61bn £0.63bn £0.67bn £0.70bn £0.73bn
Business rates £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn
Stamp duty land tax (own purchases, and corporate until the £10.06bn £10.56bn £10.98bn £11.40bn £11.81bn £12.23bn £12.64bn
Land transaction tax (Wales) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land and buildings transaction tax (Scotland) £0.01bn £0.01bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
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 £122.15bn £126.64bn £127.57bn £129.47bn £133.29bn £137.24bn £141.32bn
Pension Credit £6.68bn £7.07bn £7.06bn £7.13bn £7.26bn £7.39bn £7.49bn
Winter Fuel Payment £1.70bn £1.68bn £1.59bn £1.58bn £1.57bn £1.55bn £1.52bn
Pension Age Winter Heating Payment (Scotland) £0.19bn £0.20bn £0.20bn £0.21bn £0.21bn £0.22bn £0.22bn
Universal Credit £78.81bn £84.52bn £86.42bn £88.25bn £89.21bn £90.66bn £92.04bn
Housing Benefit £8.59bn £8.25bn £8.46bn £8.57bn £8.82bn £9.06bn £9.31bn
Council Tax Reduction £1.99bn £2.03bn £2.07bn £2.13bn £2.18bn £2.23bn £2.28bn
Employment and Support Allowance (income-related) £2.12bn £1.43bn £1.46bn £1.50bn £1.53bn £1.57bn £1.61bn
Employment and Support Allowance (contribution-based) £5.22bn £5.36bn £5.49bn £5.62bn £5.76bn £5.90bn £6.04bn
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.33bn £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 £27.05bn £28.19bn £28.94bn £29.64bn £30.37bn £31.11bn £31.87bn
Disability Living Allowance £7.52bn £7.83bn £8.04bn £8.24bn £8.44bn £8.65bn £8.86bn
Attendance Allowance £8.71bn £9.08bn £9.32bn £9.55bn £9.78bn £10.02bn £10.26bn
Carer's Allowance £4.50bn £4.69bn £4.81bn £4.93bn £5.05bn £5.17bn £5.29bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.35bn £0.36bn £0.36bn
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.51bn £0.52bn £0.53bn £0.54bn £0.56bn £0.57bn £0.59bn
Armed Forces Compensation Scheme £0.61bn £0.62bn £0.64bn £0.65bn £0.67bn £0.69bn £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.23bn £16.91bn £17.32bn £17.73bn £18.16bn £18.60bn £19.04bn
Scottish Child Payment £0.50bn £0.52bn £0.53bn £0.55bn £0.56bn £0.57bn £0.58bn
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.32bn £3.41bn £3.49bn £3.57bn £3.66bn £3.75bn £3.84bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £1.13bn £1.16bn £1.19bn £1.22bn £1.25bn £1.28bn £1.31bn
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.74bn £0.76bn £0.78bn
Tax-Free Childcare £0.55bn £0.56bn £0.57bn £0.58bn £0.60bn £0.61bn £0.59bn
Extended childcare entitlement £2.66bn £3.14bn £3.23bn £3.30bn £3.38bn £3.47bn £3.55bn
Universal childcare entitlement £3.32bn £3.59bn £3.69bn £3.78bn £3.88bn £3.99bn £4.08bn
Targeted childcare entitlement £0.57bn £0.60bn £0.62bn £0.63bn £0.65bn £0.66bn £0.67bn
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 £204.68bn £205.46bn £206.22bn £207.04bn £207.96bn £208.89bn £209.79bn
State education spending £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
Transport subsidy spending £25.15bn £25.25bn £25.34bn £25.44bn £25.55bn £25.67bn £25.78bn
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,308k 11,208k 10,906k 10,812k 10,860k 10,908k 10,955k
Pension Credit 1,491k 1,489k 1,478k 1,459k 1,459k 1,457k 1,453k
Winter Fuel Payment 7,092k 7,011k 6,601k 6,517k 6,493k 6,381k 6,254k
Pension Age Winter Heating Payment (Scotland) 806k 807k 807k 805k 809k 812k 816k
Universal Credit 6,371k 6,489k 6,524k 6,537k 6,513k 6,506k 6,491k
Housing Benefit 1,254k 1,143k 1,140k 1,123k 1,128k 1,129k 1,131k
Council Tax Reduction 3,186k 3,210k 3,223k 3,244k 3,263k 3,280k 3,292k
Employment and Support Allowance (income-related) 187k 124k 124k 125k 125k 126k 127k
Employment and Support Allowance (contribution-based) 722k 724k 727k 730k 733k 737k 740k
Jobseeker's Allowance (income-based) 0k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 67k 67k 68k 68k 68k 69k 69k
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,581k 3,595k 3,608k 3,623k 3,639k 3,655k 3,671k
Disability Living Allowance 1,296k 1,301k 1,306k 1,311k 1,317k 1,323k 1,329k
Attendance Allowance 1,701k 1,708k 1,714k 1,721k 1,729k 1,736k 1,744k
Carer's Allowance 1,038k 1,042k 1,046k 1,050k 1,055k 1,059k 1,064k
Carer Support Payment (Scotland) 71k 72k 72k 72k 73k 73k 73k
Carer's Allowance Supplement (Scotland) 0k 72k 72k 72k 73k 73k 73k
Severe Disablement Allowance 4k 4k 4k 4k 4k 4k 4k
Industrial Injuries Disablement Benefit 137k 138k 139k 139k 140k 140k 141k
Armed Forces Compensation Scheme 94k 94k 94k 95k 95k 95k 96k
War Widow's or Widower's Pension 0k 0k 0k 0k 0k 0k 0k
Child Benefit 8,136k 8,165k 8,185k 8,215k 8,249k 8,282k 8,314k
Scottish Child Payment 352k 354k 355k 356k 357k 358k 357k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 200k 201k 202k 203k 204k 204k 205k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 334k 335k 336k 338k 339k 341k 342k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 182k 183k 183k 184k 185k 186k 186k
Sure Start Maternity Grant 26k 26k 26k 27k 27k 27k 27k
Bereavement Support Payment 98k 98k 99k 99k 100k 100k 101k
Tax-Free Childcare 1,017k 1,028k 1,028k 1,033k 1,034k 1,038k 1,023k
Extended childcare entitlement 665k 671k 675k 677k 682k 686k 687k
Universal childcare entitlement 986k 989k 992k 997k 1,002k 1,013k 1,015k
Targeted childcare entitlement 119k 120k 120k 121k 121k 122k 121k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 98k 99k 99k 100k 100k 100k 101k
Adult Dependants' Grant 18k 18k 12k 13k 13k 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.38bn £939.24bn £976.18bn £1,009.38bn £1,045.66bn £1,082.60bn £1,123.48bn
Government spending £536.24bn † £550.43bn † £556.57bn † £563.63bn † £572.15bn † £581.37bn † £590.55bn †
Government balance, each receipt once £363.15bn † £388.81bn † £419.62bn † £445.76bn † £473.51bn † £501.23bn † £532.93bn †
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 £902.51bn £942.37bn £979.31bn £1,012.51bn £1,048.79bn £1,085.73bn £1,126.61bn
household_tax £496.17bn £522.66bn £548.45bn £570.64bn £592.85bn £617.30bn £644.01bn
pre_budget_change_household_tax £488.34bn £514.54bn £540.10bn £561.60bn £583.57bn £607.75bn £634.11bn
gov_spending £536.24bn † £550.43bn † £556.57bn † £563.63bn † £572.15bn † £581.37bn † £590.55bn †
household_benefits £536.24bn † £550.43bn † £556.57bn † £563.63bn † £572.15bn † £581.37bn † £590.55bn †
gov_balance £366.28bn † £391.94bn † £422.75bn † £448.89bn † £476.64bn † £504.36bn † £536.06bn †
Components the model counts twice: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
corporate_sdlt, counted again inside expected_sdlt £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn
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,657.06bn £1,719.25bn £1,771.68bn £1,821.99bn £1,872.88bn £1,930.99bn £2,001.98bn
Household net income £1,657.86bn † £1,706.26bn † £1,737.91bn † £1,772.04bn † £1,808.10bn † £1,849.73bn † £1,901.48bn †
Household net income (HBAI definition) £1,466.42bn £1,513.04bn £1,545.11bn £1,578.10bn £1,612.09bn £1,651.12bn £1,701.57bn
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 69,514k 69,778k 70,036k 70,316k 70,626k 70,944k 71,249k
Benefit units 35,247k 35,381k 35,512k 35,654k 35,811k 35,972k 36,127k
Households 31,167k 31,285k 31,401k 31,526k 31,665k 31,808k 31,944k
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 15.9% 15.0% 15.5% 15.6% 15.7% 15.8% 15.8%
Absolute poverty, before housing costs: children 23.7% 20.9% 21.6% 21.4% 21.6% 21.8% 21.7%
Absolute poverty, before housing costs: working-age adults 13.8% 13.4% 14.0% 14.1% 14.2% 14.3% 14.3%
Absolute poverty, before housing costs: pensioners 13.7% 13.2% 13.3% 13.6% 13.6% 13.7% 13.7%
Absolute poverty, after housing costs: everyone 21.1% 20.6% 21.3% 21.5% 21.9% 22.2% 22.3%
Absolute poverty, after housing costs: children 32.1% 30.2% 30.9% 31.1% 31.7% 32.2% 32.5%
Absolute poverty, after housing costs: working-age adults 19.6% 19.4% 20.2% 20.4% 20.8% 21.0% 21.1%
Absolute poverty, after housing costs: pensioners 12.8% 12.6% 12.7% 13.1% 13.4% 13.4% 13.5%
Relative poverty, before housing costs: everyone 16.9% 16.4% 16.5% 16.6% 16.6% 16.8% 17.0%
Relative poverty, before housing costs: children 25.6% 23.5% 23.3% 23.2% 23.3% 23.4% 23.7%
Relative poverty, before housing costs: working-age adults 14.4% 14.4% 14.7% 14.8% 14.9% 15.1% 15.2%
Relative poverty, before housing costs: pensioners 15.0% 15.0% 14.5% 14.7% 14.4% 14.4% 15.0%
Relative poverty, after housing costs: everyone 21.7% 21.3% 21.5% 21.5% 21.7% 21.9% 22.1%
Relative poverty, after housing costs: children 33.0% 31.6% 31.2% 31.1% 31.5% 31.6% 32.0%
Relative poverty, after housing costs: working-age adults 20.0% 20.0% 20.3% 20.4% 20.6% 20.8% 20.9%
Relative poverty, after housing costs: pensioners 13.7% 13.2% 13.0% 13.0% 12.8% 13.1% 13.2%
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,056k 10,441k 10,862k 10,964k 11,096k 11,225k 11,240k
Absolute poverty, before housing costs: children 3,560k 3,141k 3,261k 3,253k 3,298k 3,334k 3,335k
Absolute poverty, before housing costs: working-age adults 5,862k 5,737k 6,070k 6,164k 6,236k 6,314k 6,323k
Absolute poverty, before housing costs: pensioners 1,634k 1,563k 1,531k 1,547k 1,562k 1,576k 1,583k
Absolute poverty, after housing costs: everyone 14,663k 14,371k 14,911k 15,146k 15,495k 15,764k 15,882k
Absolute poverty, after housing costs: children 4,809k 4,554k 4,674k 4,717k 4,833k 4,937k 4,992k
Absolute poverty, after housing costs: working-age adults 8,333k 8,328k 8,776k 8,931k 9,123k 9,281k 9,334k
Absolute poverty, after housing costs: pensioners 1,521k 1,489k 1,461k 1,498k 1,538k 1,546k 1,556k
Relative poverty, before housing costs: everyone 11,780k 11,470k 11,566k 11,675k 11,743k 11,890k 12,104k
Relative poverty, before housing costs: children 3,840k 3,538k 3,517k 3,526k 3,546k 3,582k 3,642k
Relative poverty, before housing costs: working-age adults 6,154k 6,162k 6,377k 6,469k 6,552k 6,653k 6,734k
Relative poverty, before housing costs: pensioners 1,786k 1,770k 1,672k 1,679k 1,645k 1,655k 1,727k
Relative poverty, after housing costs: everyone 15,110k 14,871k 15,034k 15,112k 15,329k 15,537k 15,712k
Relative poverty, after housing costs: children 4,948k 4,754k 4,713k 4,713k 4,795k 4,838k 4,917k
Relative poverty, after housing costs: working-age adults 8,531k 8,562k 8,829k 8,917k 9,069k 9,193k 9,266k
Relative poverty, after housing costs: pensioners 1,631k 1,555k 1,492k 1,482k 1,465k 1,505k 1,529k
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.3074 0.3052 0.3066 0.3072 0.3078 0.3084 0.3095
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,700 † £18,009 † £17,943 † £18,006 † £18,335 † £18,516 † £18,694 †
Decile 2: mean household_net_income per household £28,323 † £29,092 † £28,710 † £28,957 † £29,308 † £29,713 † £30,295 †
Decile 3: mean household_net_income per household £34,629 † £35,754 † £36,381 † £36,962 † £37,149 † £37,743 † £38,425 †
Decile 4: mean household_net_income per household £39,334 † £40,815 † £41,728 † £42,690 † £43,438 † £44,026 † £44,924 †
Decile 5: mean household_net_income per household £44,856 † £46,414 † £47,367 † £47,915 † £48,505 † £49,560 † £50,394 †
Decile 6: mean household_net_income per household £47,930 † £49,136 † £50,095 † £50,840 † £51,830 † £52,693 † £53,962 †
Decile 7: mean household_net_income per household £56,319 † £57,573 † £58,478 † £59,420 † £60,139 † £61,615 † £62,887 †
Decile 8: mean household_net_income per household £69,267 † £70,358 † £71,674 † £72,812 † £74,354 † £75,799 † £77,581 †
Decile 9: mean household_net_income per household £79,648 † £81,992 † £83,192 † £84,486 † £86,056 † £87,570 † £90,645 †
Decile 10: mean household_net_income per household £117,618 † £120,488 † £122,420 † £124,552 † £126,802 † £129,073 † £131,886 †
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.21bn £6.50bn £6.70bn £6.90bn £7.11bn £7.34bn £7.62bn
Raise higher rate by 1pp £3.54bn £3.82bn £4.05bn £4.27bn £4.49bn £4.76bn £4.96bn
Raise personal allowance by ~800GBP/year £-3.83bn £-3.96bn £-4.03bn £-4.10bn £-4.19bn £-4.29bn £-2.02bn
Raise child benefit by 25GBP/week per additional child £-2.00bn £-1.76bn £-1.64bn £-1.54bn £-1.44bn £-1.34bn £-1.24bn
Reduce Universal Credit taper rate to 20% £-20.54bn £-21.10bn £-21.46bn £-21.89bn £-21.96bn £-22.33bn £-22.80bn
Raise Class 1 main employee NICs rate to 10% £11.06bn £11.51bn £11.83bn £12.14bn £12.47bn £12.81bn £13.29bn
Raise VAT standard rate by 2pp £25.01bn £25.68bn £26.29bn £26.92bn £27.58bn £28.26bn £28.95bn
Raise additional rate by 3pp £2.83bn £3.07bn £3.27bn £3.47bn £3.67bn £3.91bn £4.23bn
Raise the Universal Credit standard allowance by 10% £-3.04bn £-3.22bn £-3.31bn £-3.39bn £-3.43bn £-3.49bn £-3.53bn
Raise the State Pension by 10% £-7.81bn £-8.06bn £-7.98bn £-8.10bn £-8.36bn £-8.65bn £-9.01bn
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.36bn £6.65bn £6.86bn £7.07bn £7.28bn £7.52bn £7.80bn
Raise higher rate by 1pp: change in income_tax £3.55bn £3.83bn £4.06bn £4.28bn £4.50bn £4.77bn £4.97bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.96bn £-4.10bn £-4.19bn £-4.26bn £-4.36bn £-4.47bn £-1.77bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.34bn £2.15bn £2.03bn £1.92bn £1.82bn £1.71bn £1.59bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £20.53bn £21.09bn £21.45bn £21.87bn £21.96bn £22.33bn £22.79bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £11.33bn £11.79bn £12.13bn £12.44bn £12.78bn £13.13bn £13.62bn
Raise VAT standard rate by 2pp: change in vat £25.01bn £25.68bn £26.29bn £26.92bn £27.58bn £28.26bn £28.95bn
Raise additional rate by 3pp: change in income_tax £2.83bn £3.07bn £3.27bn £3.47bn £3.67bn £3.91bn £4.23bn
Raise the Universal Credit standard allowance by 10%: change in universal_credit £3.04bn £3.23bn £3.31bn £3.39bn £3.44bn £3.50bn £3.54bn
Raise the State Pension by 10%: change in state_pension £10.72bn £11.23bn £11.37bn £11.62bn £12.08bn £12.54bn £13.07bn

… cases

Vahid's round 3, item 3: the payable share kept every family with a member
over State Pension age, including mixed-age couples without the SI 2019/37
art. 4 saving, which art. 7(4)(a) does not save. It now reads
meets_pension_credit_age_conditions (reg 6A(4), and 6A(5) through the art. 4
saving). New YAML: an unsaved mixed-age couple (68 and 50) gets nothing in
2027; the saved couple's older member is 75, so born before 6 February 1954.
Item 4: a capped joint HB/UC award (protected accommodation) is capped once:
main's 75F specified-benefit exemption already lifts the HB cap for a UC
recipient, and UC's cap counts HB as nil (reg 80(2A)); one YAML case checks
it. Item 5: the documentation says the unmodelled savings end too early.

Main's 2026 legacy HB cases now meet the abolition: the AFIP cap case (CI
failure) and three unsaved mixed-age couples pin would_claim_uc_at_legacy_closure
false and expect the 86/365 award.

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

Copy link
Copy Markdown
Collaborator Author

@vahid-ahmadi, thanks for round 3. Here is where each item stands at 2d0e49417.

  1. Merge with main: done. Current main is merged in, including Move families onto Universal Credit when a legacy benefit they receive closes #2119 (the UC claim at legacy closure), Give Universal Credit and Housing Benefit their own benefit cap and LHA shared-accommodation rules #2089 (separate HB and UC caps) and Scope legacy-benefit closure to each award's owners #2549 (closure scoped to each award's owner). The four conflicts you listed resolved on main's rules. continuing_award now reads claims_universal_credit, legacy_benefits_closed and the payable share. The ESA and JSA screens take main's version, and the abolition-claim gate sits in the claimant-and-partner branch of person_legacy_benefits_closed.
  2. Merge order: changed since your review, decision not mine. The abolition now prompts Move families onto Universal Credit when a legacy benefit they receive closes #2119's closure claim (claims_uc_at_legacy_closure). A family whose award is abolished claims UC when would_claim_uc_at_legacy_closure is true; then its HB continuing award and the claimant's and partner's income-related ESA end. No released dataset supplies the flag yet, so it takes its default, true, and every unprotected working-age HB reporter not already claiming UC moves to UC. That is an upper bound against DWP's 75–97% Move to UC rates, rather than the stranding you flagged. Move legacy-benefit reporters onto Universal Credit at Move to UC claim rates policyengine-uk-data#534 will draw the flag at those rates. Whether to land this before Consolidate weighting categories by unit #534 is d837 (Max's hold), which the UK hub is handling for the Budget sprint. The Aggregate impact report for this head will be quoted in the body.
  3. Mixed-age saving: fixed. housing_benefit_payable_share now reads meets_pension_credit_age_conditions (reg 6A(4), and 6A(5) through has_mixed_age_couple_pension_credit_saving). Your case, a couple aged 68 and 50 with a reported award, would_claim_uc: false and £5,200 council rent, now gets share 0 and £0 in 2027. It is a new YAML case next to the saved couple, whose older member is 75 and so born before 6 February 1954. The property test's saved set now uses the same variable. Three of main's 2026 cases had unsaved mixed-age couples with continuing awards; they now pin would_claim_uc_at_legacy_closure: false and expect the 86/365 award.
  4. Capped joint awards: correct on main. Give Universal Credit and Housing Benefit their own benefit cap and LHA shared-accommodation rules #2089 counts receiving UC (with HB) as a reg 75F specified benefit, which lifts the HB cap (75F(1)(g)), and UC's cap counts HB as nil (reg 80(2A)). A new 2027 YAML case checks a capped family in protected accommodation: no HB cap reduction, and a UC cap reduction of 57,471.94 − 30,000 − 25,323 = 2,148.94. Reg 75C(2)(a) applies to specified accommodation only, and the input combines specified and temporary accommodation, so that rule stays with Model Housing Benefit for specified (supported) and temporary accommodation at any age #1911.
  5. Direction of error: added. The payable-share documentation now says the unmodelled savings (ESA(IR) appointees, the final UC assessment-period case, prisoners) end too early.

Locally at 2d0e49417: the full YAML suite, 4,106 passed. The two HB property files: 54 passed. Before this commit, at c64d1421d, the closure-scope, report-only reform and legacy-award property files passed: 258 tests.

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

On hold until after the Budget (UK hub, 22 October 04:10Z). This PR lands after Microcosm UK supplies in_specified_or_temporary_accommodation, so not before 28 October.

Why. From 1 July 2026 this PR keeps working-age Housing Benefit only for families flagged as in specified or temporary accommodation (reg 6A(2)), and on families meeting the Pension Credit age conditions (reg 6A(4)–(5)). No dataset sets the accommodation flag yet. Microcosm lists it under inputs no concept covers. So every working-age continuing award ends, including the supported and temporary accommodation awards that law saves. Those families can't get their rent through Universal Credit instead, because UC excludes those rent payments.

Size at the previous head. Measured at c64d1421d on uk-data 1.58.1, before the mixed-age fix, in the Aggregate impact report, for 2026-27:

Change
Housing Benefit −£648m, −105k units
Universal Credit +£1.36bn, +106k units
Income-related ESA −£665m, −58.5k units
Household net income +£44m

The UC rise comes from the claim at abolition, with its flag at the default (true). The report for 2d0e49417 is still running. The figure of 28k units and £0.19bn in the earlier review is from the 1.56.16 runs, before the claim wiring.

State at 2d0e49417. It is merged with main and pushed. Vahid's round 3 is answered (comment). Locally the full YAML suite passes (4,106) and the HB property files pass (54). CI is running.

To land.

  1. Microcosm UK (and later uk-data, Model Housing Benefit for specified (supported) and temporary accommodation at any age #1911) supplies the accommodation flag.
  2. Quote a fresh Aggregate impact report.
  3. Get an independent review of the head.
  4. Resolve d837, the hold for Move legacy-benefit reporters onto Universal Credit at Move to UC claim rates policyengine-uk-data#534, which draws would_claim_uc_at_legacy_closure at Move to UC rates.

🤖 Generated with Claude Code

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

Development

Successfully merging this pull request may close these issues.

3 participants