Repository navigation
Conversation
The Family Resources Survey records the rent a boarder or lodger pays the householder only on the payer (CVPAY). New person inputs `rent_paid_as_boarder` and `rent_paid_as_lodger` carry it, and `rent_from_boarders_and_lodgers` gives it to the household head. - Income tax: rent-a-room relief (ITTOIA 2005 ss. 784-802). Receipts up to the limit (£3,250 from 1992-93, £4,250 from 1997-98, £7,500 from 2016-17; halved where someone else in the household also receives rent from the home) are not taxed; above it the excess is property income (the s. 800 election), with no property allowance (s. 783BB(2)). `sublet_income` counts as rent-a-room receipts too. - Legacy means tests: `legacy_benefits_home_letting_income` (#1995) now also counts lodger rent less £20 a week (per person at pension age, per lodger family at working age) and board and lodging less £20 and half the excess per boarder (IS Sch 9 paras 19-20; HB Sch 5 paras 22, 42; HB (SPC) Sch 5 paras 9-10; SPC Sch IV paras 8-9; CTR Sch 5 paras 9-10). Tax on counted letting income is deducted (`rent_a_room_income_tax`). - Tax credits count the taxable rent-a-room income (SI 2002/2006 reg 11(2)); Universal Credit counts none of it (reg 66(1)). - People paying the householder rent are not non-dependants for UC, HB or CTR (UC Sch 4 para 9(2)(d); HB reg 3(2)(e)(i); CTR reg 9(2)(e)). - Rent paid between household members is not household income; `sublet_income`, from outside the household, now is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Coordination note from #2062 (issue #2059), which makes every programme read one household head. This PR's Whichever of the two PRs lands second needs these readers switched:
#2062 adds a test, |
Rent-a-room tax moves from capital-source tax to counted tax in the rewritten legacy_means_test_income_tax; lodger and boarder receipts use the claimant-or-partner pension-age switch and count for the head's benefit unit when the head is its claimant or partner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of #2002: - UC earned income stops deducting the tax on rent-a-room income: UC does not count the rent (reg 66(1)) and reg 55(5)(b) allows only tax in respect of the employment. New rent_a_room_income_tax_after_reductions is that tax less its pro-rata share of Step 6 reductions. - Council tax reduction does the same where it excludes the rent: the Scottish working-age scheme and Welsh applicants with a UC award, whose income is the UC assessment (WSI 2013/3029 reg 3, Sch 6 para 9); home-letting income is no longer added for the latter. - Property tests: the rent-a-room limit must be halved exactly when two people in the household receive rent; uncounted rent leaves UC earned income and the excluded CTR routes unchanged; partner sublet income in the closed form; no lambda (ruff E731). - YAML: UC earned income with a lodger above the limit; Welsh CTR for a UC recipient. - Documentation: commercial and non-relative assumption for the non-dependant exclusion, multiple heads, annual inputs over 52 weeks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
#2062 is now on This PR still adds formulas that read the raw flag:
Each needs to read the resolved head instead:
|
Summary
Stacked on #1995, which stops counting income from capital in the legacy means tests and adds
legacy_benefits_home_letting_incomefor rent from letting part of the home.This PR models the rent a householder receives from boarders and lodgers who live in the household. The Family Resources Survey records that rent only on the payer, as CVPAY (PolicyEngine/policyengine-uk-data#506 adds it as
rent_paid_as_boarderandrent_paid_as_lodger). It also routessublet_income(rent from a sub-tenant outside the household) through income tax.What changes:
rent_from_boarders_and_lodgersgives the household head the rent paid by household members outside the head's benefit unit.The tax on counted letting income is deducted, like the tax on other counted income.
sublet_income, which comes from outside the household, is now counted in market income, household market income and HBAI net income, alongsideproperty_income.The law
Read from the revised text on legislation.gov.uk on 1 October 2026. An independent legal memo, which checked 284 quotations against saved sources, agrees with every rule below.
Modelling choices
rent_a_room_income_tax) is the share of property income tax that falls on taxable rent-a-room income, pro rata, because nothing in the law orders the two.legacy_means_test_income_tax(Treat income derived from capital as capital in the legacy means tests #1995) shares Step 6 reductions pro rata between tax on counted income and tax on income from capital; this PR moves the rent-a-room share from the capital side to the counted side.property_incomeandsublet_incomedo. No national private rent index exists as a parameter.rent_a_room_income_tax_after_reductionsis that tax less its pro-rata share of Step 6 reductions; UC and the CTR routes that exclude the rent deduct income tax less this amount.sublet_incomekeeps Treat income derived from capital as capital in the legacy means tests #1995's single-occupier disregard. The policyengine-uk-data change that moves SUBRENT out ofproperty_incomeand intosublet_incomeis separate work.Invariants and tests
test_boarder_lodger_rent_properties.py(Hypothesis) generates households with one or two members in the head's unit and up to two paying units of one or two boarders or lodgers. It varies working and pension age, sublet income, tenure and region, for 2025 and 2026. It checks:legacy_means_test_income_tax≤ income tax.YAML tests (hand-worked from the provisions) cover:
#1995's tests (YAML and property) pass on the merged head, as do the CTR Pension Credit property tests.
Mutation check (run at
298a8ccba, before the merge of #1995's89bdbeed9; the rules it mutates did not change in that merge). Each mutant below was applied to a copy of this branch, then the 32 YAML cases and the property tests were run against it (property tests with shrinking off).The YAML cases catch all 12. At 10 examples per test, the property tests catch the three mutants that break an invariant on most households. The other nine change a rule only for particular household shapes, so the YAML cases cover those. A twelfth mutant first tried, moving the rent-a-room term inside the
maxintaxable_property_income, turned out to be equivalent to the original, becauseproperty_allowance_deductionnever exceedsproperty_income. It was replaced by the property-allowance mutant above.Measured impact
One real 2026 Microsimulation per model version, on the same dataset:
87a5f50with production settings and seed 0. It is identical, in every column of every table including household weights, to a seed-0 build of its parent (Add Tax Credits statistics to validation page #503 head0812cd1), apart from the two new inputs. Its later commitee40d7aadds uprating rows and tests and changes nothing the locked build model reads.89bdbeed9. This PR:6df59cdb4.Disclosure. Each enhanced-FRS record of a paying household was matched to its survey household by its members' ages and FRS rent amounts. Every change falls inside those households. Each figure below rests on at least 10 survey households. Figures resting on fewer are not reported, and neither are figures that would reveal one by subtraction. For the same reason, no survey-household counts are given.
Not in this PR
sublet_incomein the data is separate.Known interactions
is_household_head). The CTR award gates and non-dependant rules still find the claimant as the oldest adult (benunit_contains_household_head), so where a lodger is older than the householder the two differ. That predates this PR; Read one resolved household head in every programme #2062 makes every programme read one resolved household head.axiom: TheAxiomFoundation/rulespec-uk#402 queued (UC reg 66 is encoded-correct: uk/regulations/uksi/2013/376/66.test.yaml
rent_from_a_lodger_in_the_home_is_not_unearned_income)🤖 Generated with Claude Code