From e9a2334bcf3546a98db8ce129a5ae355b5ab3bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Sun, 18 Oct 2026 10:07:49 +0100 Subject: [PATCH] Use the Housing Benefit pension deduction parameter consistently --- ...40-hb-pension-deduction-parameter.fixed.md | 1 + .../housing_benefit_applicable_income.yaml | 136 ++++++++++++++++++ .../housing_benefit_applicable_income.py | 4 +- 3 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 changelog.d/140-hb-pension-deduction-parameter.fixed.md diff --git a/changelog.d/140-hb-pension-deduction-parameter.fixed.md b/changelog.d/140-hb-pension-deduction-parameter.fixed.md new file mode 100644 index 0000000000..b3b4e5d473 --- /dev/null +++ b/changelog.d/140-hb-pension-deduction-parameter.fixed.md @@ -0,0 +1 @@ +- Fixed Housing Benefit applicable income to use the configured pension contribution deduction rate, preserving the current 50% deduction. diff --git a/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml b/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml index f5218d1b0b..d0370fcfbc 100644 --- a/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml +++ b/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml @@ -127,3 +127,139 @@ housing_benefit_applicable_income_childcare_element: 0 output: housing_benefit_applicable_income: 0 + +- name: Continuing council tenant retains the default half-pension deduction + # SI 2006/213 reg 36(3)(c): half of the personal pension contribution. + # Earnings are below the tax and NI thresholds. Net earnings are + # 12,000 - 0.5 * 2,000 = 11,000; the single earnings disregard is 5 * 52. + # Applicable income is 10,740 and the allowance is 92.05 * 52 = 4,786.60. + # HB = 10,000 - 0.65 * (10,740 - 4,786.60) = 6,130.29. + period: 2025 + absolute_error_margin: 0.01 + input: + people: + person: + age: 40 + employment_income: 12_000 + weekly_hours: 16 + personal_pension_contributions: 2_000 + housing_benefit_reported: 1_000 # continuing award, not calculated cash + benunits: + benunit: + members: [person] + would_claim_uc: false + households: + household: + members: [person] + tenure_type: RENT_FROM_COUNCIL + region: LONDON + num_bedrooms: 1 + rent: 10_000 + output: + housing_benefit: 6_130.29 + housing_benefit_applicable_income: 10_740 + housing_benefit_net_earnings: 11_000 + housing_benefit_applicable_income_disregard: 260 + housing_benefit_applicable_amount: 4_786.60 + pension_contributions: 2_000 + income_tax: 0 + national_insurance: 0 + housing_benefit_non_dep_deductions: 0 + housing_benefit_benefit_cap_reduction: 0 + housing_benefit_on_passporting_benefit: false + housing_benefit_eligible: true + would_claim_housing_benefit: true + legacy_benefits_closed: false + universal_credit: 0 + +- name: Quarter-pension deduction reform reduces the continuing Housing Benefit award + # Model reform, not current law: 12,000 - 0.25 * 2,000 - 260 = 11,240. + # HB = 10,000 - 0.65 * (11,240 - 4,786.60) = 5,805.29. + period: 2025 + absolute_error_margin: 0.01 + input: + gov.dwp.housing_benefit.means_test.pension_contribution_deduction_rate: 0.25 + people: + person: + age: 40 + employment_income: 12_000 + weekly_hours: 16 + personal_pension_contributions: 2_000 + housing_benefit_reported: 1_000 + benunits: + benunit: + members: [person] + would_claim_uc: false + households: + household: + members: [person] + tenure_type: RENT_FROM_COUNCIL + region: LONDON + num_bedrooms: 1 + rent: 10_000 + output: + housing_benefit: 5_805.29 + housing_benefit_applicable_income: 11_240 + housing_benefit_net_earnings: 11_500 + housing_benefit_applicable_income_disregard: 260 + housing_benefit_applicable_amount: 4_786.60 + +- name: Zero pension deduction reform counts the full income + # Model reform: 12,000 - 0 * 2,000 - 260 = 11,740. + # HB = 10,000 - 0.65 * (11,740 - 4,786.60) = 5,480.29. + period: 2025 + absolute_error_margin: 0.01 + input: + gov.dwp.housing_benefit.means_test.pension_contribution_deduction_rate: 0 + people: + person: + age: 40 + employment_income: 12_000 + weekly_hours: 16 + personal_pension_contributions: 2_000 + housing_benefit_reported: 1_000 + benunits: + benunit: + members: [person] + would_claim_uc: false + households: + household: + members: [person] + tenure_type: RENT_FROM_COUNCIL + region: LONDON + num_bedrooms: 1 + rent: 10_000 + output: + housing_benefit_applicable_income: 11_740 + housing_benefit: 5_480.29 + housing_benefit_net_earnings: 12_000 + +- name: Full pension deduction reform increases the continuing Housing Benefit award + # Model reform: 12,000 - 1 * 2,000 - 260 = 9,740. + # HB = 10,000 - 0.65 * (9,740 - 4,786.60) = 6,780.29. + period: 2025 + absolute_error_margin: 0.01 + input: + gov.dwp.housing_benefit.means_test.pension_contribution_deduction_rate: 1 + people: + person: + age: 40 + employment_income: 12_000 + weekly_hours: 16 + personal_pension_contributions: 2_000 + housing_benefit_reported: 1_000 + benunits: + benunit: + members: [person] + would_claim_uc: false + households: + household: + members: [person] + tenure_type: RENT_FROM_COUNCIL + region: LONDON + num_bedrooms: 1 + rent: 10_000 + output: + housing_benefit: 6_780.29 + housing_benefit_applicable_income: 9_740 + housing_benefit_net_earnings: 10_000 diff --git a/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py b/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py index b97d9ac316..b343e2b9e5 100644 --- a/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py +++ b/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py @@ -90,8 +90,10 @@ def formula(benunit, period, parameters): benunit, period, ["basic_income"], members ) # Reduce increased income by pension contributions and tax + p = parameters(period).gov.dwp.housing_benefit.means_test pension_contributions = ( - add_for_members(benunit, period, ["pension_contributions"], members) * 0.5 + add_for_members(benunit, period, ["pension_contributions"], members) + * p.pension_contribution_deduction_rate ) TAX_COMPONENTS = ["income_tax", "national_insurance"] tax = add_for_members(benunit, period, TAX_COMPONENTS, members)