Summary
housing_benefit_applicable_income_disregard sums the single / couple / lone-parent base disregards and the worker disregard, but under SI 2006/213 (Housing Benefit Regulations 2006) Schedule 4 a claimant gets one base earnings disregard (the highest applicable) plus, separately, the £17.10 additional disregard where the 30-hour conditions are met. The worker parameter (£37.10) already equals the £20 higher base + £17.10 additional, so adding it on top of the £5 / £10 / £25 base double-counts a base-sized amount for working claimants.
On the Enhanced FRS this over-disregards earnings for ~63,500 benefit units and raises Housing Benefit paid by roughly £32 million/year.
The code
policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income_disregard.py:
single_disregard = single * p.single # £5/wk
couple_disregard = couple * p.couple # £10/wk
lone_parent_disregard = lone_parent * p.lone_parent # £25/wk
hour_requirement = where(lone_parent, WTC.min_hours.lower, p.worker_hours)
worker = hours > hour_requirement
worker_disregard = worker * p.worker # £37.10/wk
weekly_disregard = (
single_disregard + couple_disregard + lone_parent_disregard + worker_disregard
)
single / couple / lone_parent are mutually exclusive (is_single_person = family_type==SINGLE, is_couple = relation_type==COUPLE, is_lone_parent = family_type==LONE_PARENT), so the three base terms never overlap — that part is fine. The problem is worker_disregard being added on top of the base term.
What Schedule 4 actually says
Schedule 4 (Sums to be disregarded in the calculation of earnings), SI 2006/213:
- Base disregard — paras 3–10, mutually exclusive, highest applicable applies: £5 (para 10, default), £10 (para 7, couple), £20 (paras 3/5/6/8 — disability/severe-disability/carer premium, WRAG, certain occupations), £25 (para 4, lone parent). Para 3(1): "if this paragraph applies to a claimant it shall not apply to his partner" — the paragraphs are alternatives, not additive.
- Additional disregard — para 17: £17.10, on top of the single base, where the claimant/partner is 25+ in 30+ hours' remunerative work (16+ for a lone parent) or qualifies via the working-tax-credit 30-hour element.
So the worker value of £37.10 = £20 (para 3/5/6/8 higher base) + £17.10 (para 17 additional). It is an alternative base plus the additional, not something that stacks on the £5/£10/£25 base. PE's worker.yaml reference itself cites "Schedule 4 (5)(6)(17)".
Worked cases (nominal 2015 statutory values)
| Claimant |
PE disregard |
Schedule 4 |
Over-disregard |
| Single, no children, 30h worker |
£5 + £37.10 = £42.10 |
£5 base + £17.10 = £22.10 |
£20.00/wk |
| Couple, one 30h worker |
£10 + £37.10 = £47.10 |
£10 base + £17.10 = £27.10 |
£20.00/wk |
| Lone parent, 16h worker |
£25 + £37.10 = £62.10 |
£25 base + £17.10 = £42.10 |
£20.00/wk |
(In each row PE re-adds the £20 higher base that is already embedded in the £37.10 worker amount.)
Population impact (Enhanced FRS, 2026, uprated parameters)
Measured with Microsimulation(dataset="…/enhanced_frs_2023_24.h5"), benefit-unit level:
- Housing Benefit recipients: 1,518,048
- …with positive earnings (where the disregard bites): 223,774
- …who are also "workers" (hours > threshold), i.e. where the base is stacked on the worker disregard: 63,526 (single+worker 165; couple+worker 61,355; lone-parent+worker 2,523)
- Aggregate excess disregarded earnings from the stacking: ≈ £49.5 million/year
- Aggregate excess Housing Benefit paid (excess income × 65% withdrawal rate, upper bound where the award is not floored/capped): ≈ £32.2 million/year
The distinct PE weekly-disregard values on this population match the additive formula exactly (2026 uprated): £7.02 (single), £14.05 (couple), £35.12 (lone parent), £59.13 = 7.02+52.11 (single worker), £66.16 = 14.05+52.11 (couple worker), £87.23 = 35.12+52.11 (lone-parent worker).
Suggested fix
Take the highest applicable base rather than summing the bases-plus-worker, and add the £17.10 additional separately. Sketch (element-wise max_, as used elsewhere in the codebase):
base = max_(single * p.single, max_(couple * p.couple, lone_parent * p.lone_parent))
additional = worker * p.additional # the £17.10 para-17 amount, split out of the current £37.10
weekly_disregard = base + additional
This needs the worker parameter (currently £37.10 = £20 + £17.10) split into the para-17 additional (£17.10) and, if the £20 higher base is to be modelled, a higher-base term gated on the disability / carer / occupation categories in paras 3/5/6/8 rather than on being any 30-hour worker. Happy to open a PR if the maintainers agree on the approach.
Reference: The Housing Benefit Regulations 2006 (SI 2006/213), Schedule 4 — https://www.legislation.gov.uk/uksi/2006/213/schedule/4
Found via the Axiom cross-engine oracle comparison (axiom-oracles#165) while reconciling the encoded HB applicable-income surface against PolicyEngine-UK.
Summary
housing_benefit_applicable_income_disregardsums the single / couple / lone-parent base disregards and the worker disregard, but under SI 2006/213 (Housing Benefit Regulations 2006) Schedule 4 a claimant gets one base earnings disregard (the highest applicable) plus, separately, the £17.10 additional disregard where the 30-hour conditions are met. Theworkerparameter (£37.10) already equals the £20 higher base + £17.10 additional, so adding it on top of the £5 / £10 / £25 base double-counts a base-sized amount for working claimants.On the Enhanced FRS this over-disregards earnings for ~63,500 benefit units and raises Housing Benefit paid by roughly £32 million/year.
The code
policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income_disregard.py:single/couple/lone_parentare mutually exclusive (is_single_person=family_type==SINGLE,is_couple=relation_type==COUPLE,is_lone_parent=family_type==LONE_PARENT), so the three base terms never overlap — that part is fine. The problem isworker_disregardbeing added on top of the base term.What Schedule 4 actually says
Schedule 4 (Sums to be disregarded in the calculation of earnings), SI 2006/213:
So the
workervalue of £37.10 = £20 (para 3/5/6/8 higher base) + £17.10 (para 17 additional). It is an alternative base plus the additional, not something that stacks on the £5/£10/£25 base. PE'sworker.yamlreference itself cites "Schedule 4 (5)(6)(17)".Worked cases (nominal 2015 statutory values)
(In each row PE re-adds the £20 higher base that is already embedded in the £37.10
workeramount.)Population impact (Enhanced FRS, 2026, uprated parameters)
Measured with
Microsimulation(dataset="…/enhanced_frs_2023_24.h5"), benefit-unit level:The distinct PE weekly-disregard values on this population match the additive formula exactly (2026 uprated): £7.02 (single), £14.05 (couple), £35.12 (lone parent), £59.13 = 7.02+52.11 (single worker), £66.16 = 14.05+52.11 (couple worker), £87.23 = 35.12+52.11 (lone-parent worker).
Suggested fix
Take the highest applicable base rather than summing the bases-plus-worker, and add the £17.10 additional separately. Sketch (element-wise
max_, as used elsewhere in the codebase):This needs the
workerparameter (currently £37.10 = £20 + £17.10) split into the para-17 additional (£17.10) and, if the £20 higher base is to be modelled, a higher-base term gated on the disability / carer / occupation categories in paras 3/5/6/8 rather than on being any 30-hour worker. Happy to open a PR if the maintainers agree on the approach.Reference: The Housing Benefit Regulations 2006 (SI 2006/213), Schedule 4 — https://www.legislation.gov.uk/uksi/2006/213/schedule/4
Found via the Axiom cross-engine oracle comparison (axiom-oracles#165) while reconciling the encoded HB applicable-income surface against PolicyEngine-UK.