Skip to content

feat: implement LHA cap for private renters on HB and UC#30

Merged
nikhilwoodruff merged 1 commit intomainfrom
feat/lha-cap
Apr 8, 2026
Merged

feat: implement LHA cap for private renters on HB and UC#30
nikhilwoodruff merged 1 commit intomainfrom
feat/lha-cap

Conversation

@nikhilwoodruff
Copy link
Copy Markdown
Contributor

Private renters on HB and UC previously had eligible rent set to their full reported rent, overstating housing support for anyone above their LHA cap. This adds proper cap logic.

lha_bedroom_entitlement() implements the sharing rules from UC Regs 2013 Sch.4 / HB Regs 2006 Sch.B1: same-sex children over 10 share first, spare spaces filled by under-10s of the same gender, remaining under-10s share in mixed pairs. The cap then applies only to TenureType::RentPrivately; social renters are unaffected.

Rates are region×category monthly amounts (12 regions × 5 categories A–E) derived from the VOA list of rents (2020 data, uprated to April 2024 via ONS IPHRP index, frozen at that level for the 2025/26 re-freeze). A private_rent_index scalar allows reform scenarios — e.g. 1.10 models a 10% LHA uplift.

Note: EFRS calibration weights need regenerating after this — run python scripts/rebuild_all.py --only efrs.

…ment

Adds proper Local Housing Allowance cap logic for private renters on HB
and UC housing element. The model previously used full reported rent
as eligible rent for all tenures, overstating HB/UC for private renters
above their LHA cap.

Changes:
- LhaParams struct with region×bedroom-category monthly rate table (12
  regions × 5 categories A–E), private_rent_index multiplier for reform
  scenarios, and enabled flag
- lha_bedroom_entitlement() implements UC Regs 2013 Sch.4 / HB Regs 2006
  Sch.B1: same-sex children over 10 share first, remainder share in pairs
- lha_monthly_cap() applies cap only to TenureType::RentPrivately
- Both calculate_housing_benefit() and calculate_universal_credit() now
  apply the LHA cap to eligible rent for private renters
- 2025/26 rates from VOA list of rents (2020 data, uprated to April 2024
  using ONS IPHRP index, frozen at that level for 2025/26 re-freeze)
- 6 new unit tests covering bedroom entitlement and cap behaviour

EFRS calibration needs to be rerun to recalibrate weights against the
updated simulated HB/UC values: python scripts/rebuild_all.py --only efrs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@nikhilwoodruff nikhilwoodruff merged commit 3f4ced4 into main Apr 8, 2026
1 check passed
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.

1 participant