Repository navigation
Move SUBRENT from property_income to sublet_income, after policyengine-uk reads sublet_income #508
Description
Problem
Rent a household gets from subletting part of its home (FRS household SUBRENT) lands in the head's property_income. policyengine_uk_data/datasets/frs.py (origin/main) adds household.tentyp2.isin((5, 6)) * household.subrent, commented "Owned and subletting", to the head's property_income, along with cvpay and royyr1. Nothing populates sublet_income, which policyengine-uk defines as an input (variables/input/sublet_income.py) but reads nowhere today.
The means tests treat the two kinds of rent differently:
- Rent from a let property the claimant does not occupy is actual income from capital. Pension Credit disregards it (SPC Regs 2002 Sch IV para 18), as does pension-age HB (HB (SPC) Regs 2006 Sch 5 para 22). The property's value counts as capital instead.
- Rent from someone occupying part of the claimant's home counts, less £20 a week per occupier: SPC Regs reg 15(5)(i) with Sch IV para 9; HB (SPC) reg 29(1)(v) with Sch 5 para 10.
Once policyengine-uk drops property_income from the Pension Credit and HB income lists, which branch legacy-capital-derived-income does, owner-occupier sublet rent would fall out of those means tests while it sits inside property_income.
Change
Write SUBRENT to sublet_income on the household reference person instead of adding it to property_income. In the same change, update the microcosm FRS spine (packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py), which builds the same columns.
Order (do not move the data first)
Nothing in policyengine-uk reads sublet_income yet. If the data moves first, sublet rent drops out of income tax, HBAI net income and every means test until the model catches up. Ship in this order:
- A policyengine-uk release that reads
sublet_incomein income tax (rent-a-room receipts), HBAI income, and the PC, HB, CTR and IS means tests with the £20 per-occupier disregard. The work is in policyengine-uk brancheslegacy-capital-derived-incomeandboarder-lodger-rent; they are agreeing one disregard variable and one parameter. - This data move, with a lock bump.
Notes from the SUBRENT fix (branch frs-property-losses-subrent, stacked on #503)
- That branch makes SUBRENT count for every tenure, not only
TENTYP25 or 6, because SubLet is asked of all households. The move should take all tenures. SUBALLOW= 1 means the amount is before allowable expenses, so gross receipts; 2 means after. The FRS has no expense amount from which to rebuild gross receipts forSUBALLOW= 2, and it does not record whether the let is furnished, which rent-a-room relief requires. Document the column as "receipts as reported" and say which answers are net.- FRS 2024-25 has a few dozen households with SUBRENT > 0. Don't publish a tenure split, because the cells are small.
- The tests in
tests/test_frs_property_income.py(conservation and locality) would split along with the column.
Related: policyengine-uk#1954 (Pension Credit income omissions).
🤖 Generated with Claude Code
Activity
MaxGhenis commentedon Oct 1, 2026
Step 1 is now split across two stacked policyengine-uk PRs:
sublet_incomein the IS, HB, PC and CTR means tests, less the £20 per-occupier disregard (legacy_benefits_home_letting_income).sublet_incomerent-a-room receipts for income tax (rent_a_room_receipts). It also addssublet_incometomarket_income,household_market_incomeandhbai_household_net_income.So the data move can follow once both are released and the lock is bumped. #2002 treats all receipts as furnished accommodation. The FRS does not say whether a let is furnished, so the column note suggested above still applies.
🤖 Generated with Claude Code
MaxGhenis commentedon Oct 3, 2026
Release gate for this move, following the round-2 review of PolicyEngine/policyengine-uk#1995 (finding 5).
Until SUBRENT moves, #1995 drops owner-occupiers' sublet rent from the IS, HB, Pension Credit and CTR means tests instead of counting it less £20. The model side prepares the channel, but production assessments of that rent are corrected only when all of the following hold:
Treat income derived from capital as capital in the legacy means tests policyengine-uk#1995 (means tests read
sublet_incomevialegacy_benefits_home_letting_income) and #2002 (rent-a-room tax,market_income, HBAI) are both released.This move ships in the batched data release with an aggregate conservation check in its tests:
property_incomeequals the newsublet_incometotal;property_incomefalls by exactly that amount.Aggregates only.
The policyengine-uk lock is bumped to the rebuilt artefact, and a real
Microsimulationon it showslegacy_benefits_home_letting_incomenon-zero where SUBRENT was reported.The raw FRS 2024-25 support is 33 owner households reporting SUBRENT, £0.41bn a year weighted. Fewer than ten of them are in households reporting any of PC, IS, JSA, ESA, HB or CTR.
🤖 Generated with Claude Code