Skip to content

Mark the benefit units that share their household's rent - #512

Draft
MaxGhenis wants to merge 3 commits into
frs-boarder-lodger-rentfrom
frs-shared-household-rent
Draft

MaxGhenis wants to merge 3 commits into
frs-boarder-lodger-rentfrom
frs-shared-household-rent

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #511

Stacked on #506 (base frs-boarder-lodger-rent), which is stacked on #503. Model side: PolicyEngine/policyengine-uk#2006.

Summary

Adds the benefit-unit input liable_for_share_of_household_rent. In FRS shared households (HHSTAT 2), it is true for each benefit unit after the first with any of:

  • rent its adults report paying (SRENTAMT > 0);
  • housing benefit (HBOTHAMT > 0);
  • a Universal Credit housing element on a benefit record linked to DWP data (UCHOUSEL > 0 on a BENEFIT 95 record). The questionnaire takes SRENTAMT after state help with the rent, so a joint tenant whose share is wholly met by UC reports neither of the first two. Total UC alone does not count.

Conventional households (HHSTAT 1) are out of scope: their later units can report the same signals, but the data do not say whether they owe a share of HHRENT to the landlord or rent to the householder.

rent (HHRENT) is unchanged and stays the rent of the whole dwelling. policyengine-uk#2006 splits it per person liable (UC Regs 2013 Sch 4 para 24(4); HB Regs 2006 reg 12B(4)).

Why not BURENT

The FRS derived variable BURENT is meant to split HHRENT across the units of a shared household. In the raw 2024-25 and 2023-24 EUL files it does not:

  • Units 2+. Between them they are given all of HHRENT, in proportion to their SRENTAMT. The ratio of BURENT to HHRENT × SRENTAMT share is p10 0.998, p90 1.004 (169 units, 2024-25).
  • Unit 1. It gets a further amount: BURENT/HHRENT has a median of 1.5 and a p90 of 2.0.
  • Totals. BURENT summed over a shared household is about 2.5 times HHRENT: £12.7bn against £5.0bn a year in 2024-25. This is the whole of the gap between unit-1 BURENT (£96.6bn) and HHRENT (£93.9bn). Conventional households match exactly.
  • Likely cause. RENT is blank in the EUL for every shared household. That is consistent with the spec's TOTRENT having lost its RENT term.

HHRENT and SRENTAMT are coherent. HHRENT ≈ n/(n−1) × the other units' summed SRENTAMT (median 1.5; 2.0 where there are two units), which is consistent with equal shares.

In the base build (FRS 2024-25, survey weights)

Value
Benefit units flagged 177 (613k weighted)
Households with a flagged unit 97 (306k weighted)
Rent of those households (HHRENT) £4.97bn a year

These counts are with the first two signals. The UC housing element adds fewer than 10 survey units (suppressed) and removes none.

Tests

policyengine_uk_data/tests/test_frs_shared_household_rent.py (25 cases, synthetic frames, no survey data) covers:

  • later paying units, and HBOTHAMT alone;
  • zero, negative and missing SRENTAMT and HBOTHAMT, including a missing code on one partner beside the other partner's rent;
  • conventional households;
  • benefit unit 1, whatever it reports;
  • a paying unit beside a non-paying unit, in the same household and at the same unit number in another household;
  • rent on either adult of a couple;
  • the tables in any order;
  • the result's type and length;
  • a UC housing element on a unit that reports nothing else, and the UC records that must not count (zero, negative or missing amount; another benefit; another unit; a conventional household; a benefits table with no UCHOUSEL column).

Eleven mutations of the mapper were run against the tests and each fails at least one.

Impact

The build. Enhanced build of this branch at a9e3371: production settings, sha256 ed1a29912656, finished in 53 minutes, exit 0. The only errors were the existing HMRC salary-sacrifice CSV download, which returns 410.

This PR on its own. It changes no output until policyengine-uk reads the new input. policyengine-uk ignores dataset columns it has no variable for.

With policyengine-uk#2006. On this build, same weights, #2006 at 16a455bc9 against the main commit it merged (5232f9afb) gives:

  • Universal Credit: +£31.2m in 2025-26 and +£34.1m in 2026-27.
  • UC housing costs element: sharers £0 → £665m, boarders and lodgers £0 → £147m (2025-26).
  • Housing Benefit and Council Tax Reduction: changes in fewer than 10 survey households (suppressed).

The build predates the UC housing element signal, which marks fewer than 10 more survey units.

The full tables are in the #2006 description.

Review

  • Round 1 (independent, GPT-6.1 Sol, at 479dd3e): REQUEST_CHANGES. One blocker (a wholly UC-funded joint tenant was not marked) and one should-fix (test mutations that survived), both addressed in 10ce111, with the scope and derivation notes added to the docstring.
  • Round 2 (delta review at 10ce111): pending.

This PR lands with the batched data release, not on its own.

axiom: n/a: data input (the rules are in policyengine-uk#2006; rulespec-uk#406)

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 1, 2026 11:58
In FRS shared households (HHSTAT 2), later benefit units report the rent
they pay (SRENTAMT) and their housing benefit (HBOTHAMT); HHRENT is the rent
of the whole dwelling. Store liable_for_share_of_household_rent on those
units so policyengine-uk can split the household's rent among the people
liable for it. The FRS's own BURENT split is not used: in shared households
it sums to about two and a half times HHRENT.

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

A later unit of a shared household whose share of the rent is wholly met
by Universal Credit reports no SRENTAMT and no HBOTHAMT, since the
questionnaire takes the rent after state help. It is still liable, so a
housing element on a UC record linked to DWP data (UCHOUSEL, BENEFIT 95)
now marks it. Total UC alone does not.

Tests added for each mutation the independent review found surviving:
the first-unit exclusion, pooling rent within or across households, rent
on the second adult, negative codes, dtype and length, table order, and
the UC records that must not count.

The docstring states the HHSTAT 1 scope limit and separates the observed
BURENT failure from the 2003 derivation of HHRENT.

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

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.

1 participant