diff --git a/changelog.d/hb-residential-capital.fixed.md b/changelog.d/hb-residential-capital.fixed.md new file mode 100644 index 0000000000..6f2932a39d --- /dev/null +++ b/changelog.d/hb-residential-capital.fixed.md @@ -0,0 +1 @@ +- Added the working-age Housing Benefit residential capital threshold using one separately pre-assessed qualification input. diff --git a/policyengine_uk/parameters/gov/dwp/housing_benefit/means_test/capital/working_age/residential_threshold.yaml b/policyengine_uk/parameters/gov/dwp/housing_benefit/means_test/capital/working_age/residential_threshold.yaml new file mode 100644 index 0000000000..171e420569 --- /dev/null +++ b/policyengine_uk/parameters/gov/dwp/housing_benefit/means_test/capital/working_age/residential_threshold.yaml @@ -0,0 +1,13 @@ +description: Working-age Housing Benefit capital tariff threshold where the statutory residential exception applies. +metadata: + label: Housing Benefit residential capital tariff threshold + unit: currency-GBP + period: year +values: + 2006-04-10: + value: 10000 + reference: + - title: The Housing Benefit Regulations 2006, regulation 52(3)-(5), (8)-(9) + href: https://www.legislation.gov.uk/uksi/2006/213/regulation/52 + - title: The Housing Benefit Regulations (Northern Ireland) 2006, regulation 49(2)-(4), (7)-(8) + href: https://www.legislation.gov.uk/nisr/2006/405/regulation/49 diff --git a/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/housing_benefit_residential_capital.yaml b/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/housing_benefit_residential_capital.yaml new file mode 100644 index 0000000000..769846b837 --- /dev/null +++ b/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/housing_benefit_residential_capital.yaml @@ -0,0 +1,81 @@ +- name: ENGLAND ordinary capital threshold and partial steps + period: 2025 + absolute_error_margin: 0.01 + input: + country: [ENGLAND, ENGLAND, ENGLAND, ENGLAND, ENGLAND, ENGLAND] + housing_benefit_assessable_capital: [6000, 6001, 10000, 10001, 10250, 10251] + housing_benefit_residential_capital_exception: [false, false, false, false, false, false] + housing_benefit_pension_age_regulations_apply: [false, false, false, false, false, false] + in_receipt_of_guarantee_credit: [false, false, false, false, false, false] + in_receipt_of_savings_credit_only: [false, false, false, false, false, false] + output: + housing_benefit_tariff_income: [0, 52, 832, 884, 884, 936] + +- name: ENGLAND residential capital threshold and partial steps + period: 2025 + absolute_error_margin: 0.01 + input: + country: [ENGLAND, ENGLAND, ENGLAND, ENGLAND, ENGLAND, ENGLAND] + housing_benefit_assessable_capital: [6000, 6001, 10000, 10001, 10250, 10251] + housing_benefit_residential_capital_exception: [true, true, true, true, true, true] + housing_benefit_pension_age_regulations_apply: [false, false, false, false, false, false] + in_receipt_of_guarantee_credit: [false, false, false, false, false, false] + in_receipt_of_savings_credit_only: [false, false, false, false, false, false] + output: + housing_benefit_tariff_income: [0, 0, 0, 52, 52, 104] + +- name: NORTHERN_IRELAND ordinary capital threshold and partial steps + period: 2025 + absolute_error_margin: 0.01 + input: + country: [NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND] + housing_benefit_assessable_capital: [6000, 6001, 10000, 10001, 10250, 10251] + housing_benefit_residential_capital_exception: [false, false, false, false, false, false] + housing_benefit_pension_age_regulations_apply: [false, false, false, false, false, false] + in_receipt_of_guarantee_credit: [false, false, false, false, false, false] + in_receipt_of_savings_credit_only: [false, false, false, false, false, false] + output: + housing_benefit_tariff_income: [0, 52, 832, 884, 884, 936] + +- name: NORTHERN_IRELAND residential capital threshold and partial steps + period: 2025 + absolute_error_margin: 0.01 + input: + country: [NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND, NORTHERN_IRELAND] + housing_benefit_assessable_capital: [6000, 6001, 10000, 10001, 10250, 10251] + housing_benefit_residential_capital_exception: [true, true, true, true, true, true] + housing_benefit_pension_age_regulations_apply: [false, false, false, false, false, false] + in_receipt_of_guarantee_credit: [false, false, false, false, false, false] + in_receipt_of_savings_credit_only: [false, false, false, false, false, false] + output: + housing_benefit_tariff_income: [0, 0, 0, 52, 52, 104] + +- name: Omitted residential status retains the ordinary threshold + period: 2025 + input: + housing_benefit_assessable_capital: 10001 + housing_benefit_pension_age_regulations_apply: false + output: + housing_benefit_residential_capital_exception: false + housing_benefit_tariff_income: 884 + +- name: Specified accommodation alone does not establish the capital exception + period: 2025 + input: + in_specified_or_temporary_accommodation: true + housing_benefit_assessable_capital: 10001 + housing_benefit_pension_age_regulations_apply: false + output: + housing_benefit_residential_capital_exception: false + housing_benefit_tariff_income: 884 + +- name: Pension-age tariff and passports are not changed by residential status + period: 2025 + input: + housing_benefit_assessable_capital: [10001, 10001, 10001] + housing_benefit_residential_capital_exception: [true, true, true] + housing_benefit_pension_age_regulations_apply: [true, true, true] + in_receipt_of_guarantee_credit: [false, true, false] + in_receipt_of_savings_credit_only: [false, false, true] + output: + housing_benefit_tariff_income: [52, 0, 0] diff --git a/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_tariff_income.py b/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_tariff_income.py index 6526375fe8..13e659a327 100644 --- a/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_tariff_income.py +++ b/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_tariff_income.py @@ -10,6 +10,7 @@ class housing_benefit_tariff_income(Variable): unit = GBP reference = ( "https://www.legislation.gov.uk/uksi/2006/213/regulation/52", + "https://www.legislation.gov.uk/nisr/2006/405/regulation/49", "https://www.legislation.gov.uk/uksi/2006/214/regulation/29", "https://www.legislation.gov.uk/uksi/2006/214/regulation/26", ) @@ -31,10 +32,16 @@ def formula(benunit, period, parameters): "in_receipt_of_guarantee_credit", period ) p = parameters(period).gov.dwp.housing_benefit.means_test.capital + # This statutory category differs from specified/temporary accommodation. + working_age_threshold = where( + benunit("housing_benefit_residential_capital_exception", period), + p.working_age.residential_threshold, + p.working_age.tariff_income.threshold, + ) threshold = where( pension_age_regulations, p.pension_age.tariff_income.threshold, - p.working_age.tariff_income.threshold, + working_age_threshold, ) step = where( pension_age_regulations, diff --git a/policyengine_uk/variables/gov/dwp/housing_benefit/housing_benefit_residential_capital_exception.py b/policyengine_uk/variables/gov/dwp/housing_benefit/housing_benefit_residential_capital_exception.py new file mode 100644 index 0000000000..90da1fc24c --- /dev/null +++ b/policyengine_uk/variables/gov/dwp/housing_benefit/housing_benefit_residential_capital_exception.py @@ -0,0 +1,25 @@ +from policyengine_uk.model_api import * + + +class housing_benefit_residential_capital_exception(Variable): + value_type = bool + entity = BenUnit + label = "Housing Benefit residential capital tariff exception" + definition_period = YEAR + default_value = False + documentation = ( + "Pre-assessed qualification for the working-age residential capital " + "tariff exception: GB HB regulation 52(4)-(5), (8)-(9), or NI " + "regulation 49(3)-(4), (7)-(8). This includes the specified historical " + "saved circumstances; generic supported housing, a care-home label " + "or in_specified_or_temporary_accommodation does not establish it. " + "Supply true only after assessing the applicable jurisdiction's rules. " + "No dataset mapping has been verified. Missing input defaults to false " + "and retains the ordinary threshold; that approximation may understate " + "Housing Benefit for qualifying residents. This does not change " + "eligibility, capital ownership/valuation or the upper capital limit." + ) + reference = ( + "https://www.legislation.gov.uk/uksi/2006/213/regulation/52", + "https://www.legislation.gov.uk/nisr/2006/405/regulation/49", + )