Skip to content

UK: model landlord property income on the taxable (net of expenses) concept, not rent received #1106

Closed

Description

@vahid-ahmadi

The question

HMRC has confirmed to an external user of its statistics that the Property Rental Income Statistics report property income as declared, before allowable expenses (repairs, insurance, legal and letting fees and so on). Net of those expenses, the totals line up with HMRC's other property-income figures and with the SPI public-use tape. The published PRIS amounts are therefore a gross concept, while income tax is charged on landlords' profit after allowable expenses.

This raises two questions:

  1. What property-income concept does Microcosm UK hold, and what does it calibrate against?
  2. How should property income be modelled, so that property-tax and income-tax analyses use the taxable concept at the right level?

Where Microcosm UK stands today (main)

  • The spine's property_income is FRS rent received, not landlord profit. frs_spine.py:585-599 builds it from the household head's sub-let rent (subrent, tenure types 5–6), plus cvpay (lodgers) and royyr1 (royalties), annualised. Landlords' income from letting other properties isn't in it as a profit concept.
  • No property-income target is bound. All 26 HMRC SPI property-income rows (13 amounts, 13 counts, by total-income band) are excluded. docs/uk-income-anchors-280.md ("Not done here") explains why: the SPI concept is landlords' net income after expenses, and the spine doesn't hold that. hmrc_income_replay_report.json fences the rows (full_frs_tei_band_unavailable, blocked on hmrc_spi_assessable_income).
  • There is no PRIS target anywhere.
  • WAS round 8's DVNetRentAmtAnnualR8 (net rent) is read only as a predictor in was_wealth, never as a target.

So the release neither overstates property income through a gross target nor corrects the FRS's known under-reporting of it. It is close to raw FRS, which is likely too low for landlords.

Related, outside this repo: the Enhanced FRS pipeline (policyengine-uk-data) calibrates property income to the PRIS amount (about £55.5bn for 2023-24). Given HMRC's clarification, that is a gross target, and it overstates taxable property income in analyses built on the Enhanced FRS. That should get its own issue in policyengine-uk-data; this one covers Microcosm UK.

What we should do

The target concept is taxable property profit after allowable expenses, the SPI concept. PRIS should be used for counts of landlords, not for amounts.

1. Put a landlord-profit variable on the spine

  • Keep sub-lets, lodgers and royalties as they are, under a name that says what they are, and add landlord net property profit as its own person-level input. Then the engine's property_income can be the taxable concept without mixing in other things.
  • Check what the engine treats as taxable property income before choosing names:
    • the £1,000 property allowance;
    • Rent-a-Room;
    • the s.24 finance-cost restriction. Residential finance costs aren't deducted from profit and get a 20% tax reduction instead, so "profit after expenses" in the SPI may or may not be before finance costs. Pin down which before binding anything.

2. Impute landlord profit from the SPI

3. Bind the right targets

  • Amounts: un-exclude the 26 SPI property-income rows once the spine holds the matching concept. They are net of expenses, which is the taxable concept.
  • Counts: the PRIS landlord count is fine to bind (or keep as a diagnostic beside the SPI counts), because expenses change the amount per landlord, not the number of landlords.
  • PRIS amounts: only as a diagnostic, reported against the modelled gross equivalent (profit plus imputed expenses) if we model expenses. Never as a bound amount.

4. Acceptance checks (receipts)

  • The aggregate net property profit against the SPI total, and against HMRC's net figures.
  • The landlord count against PRIS.
  • The distribution across the SPI income bands, inside the usual fit.
  • Income tax on property income against HMRC's estimate, if one is available.
  • A short note quantifying the gross-to-net gap (PRIS against SPI), so the size of the concept difference is on record.

5. Downstream

  • Flag in the release notes that property-tax analyses (LVT, high-value property charges, property CGT) should read the new landlord-profit variable once it lands.
  • Once a fix is decided, open the matching issue in policyengine-uk-data.

Suggested order

  1. Confirm the engine's taxable property-income definition (allowance, Rent-a-Room, finance costs).
  2. Pin down the SPI field and its concept (before or after finance costs).
  3. Add the spine variable and the SPI-channel imputation behind a stage, with the coherence check.
  4. Un-exclude the SPI amount rows, add the PRIS count, and run a licensed arm with receipts.

This can go on the #1095 tracker if that's simpler.

Activity

  1. juaristi22 commented on Oct 5, 2026

    @juaristi22
    Collaborator

    Thanks for opening this. Below: corrections to how main stands, answers to the two open questions, what the plan misses, and a proposal to model landlords' expenses in full. Build figures come from the certified #1089 build (64c460b, candidate aa31bdf6…, before #1100) and the 30 September build from main (c5a1cba), at calibrated weights.

    Corrections to "where Microcosm UK stands today"

    1. The SPI landlord counts are bound; only the amounts are signed out. The 13 amount rows carry the signed exclusion property_income_undercount_adjustment_missing (2026-09-05, uk/target_reference_signed_exclusions.json). The 13 count rows are active references: 11 reach the national registry (the two bands from £500,000 don't) and fit within 0.3% in both builds. The fence in hmrc_income_replay_report.json comes from the hmrc_spi_income_spine stage's own replay of the 208 SPI facts; the calibration binds from the Ledger-compiled registry (Complete #622: compile the UK target surface from Ledger facts at the 2024-25 line #735), where the count rows are active.
    2. Release property income is not close to raw FRS. The SPI channel carries the SPI's own INCPROP, net income from property. In the UK spine follow-ups: SPI donors funded, WAS coherence, residential split, Child Benefit, release-cut blockers (#1063) #1089 build, SPI-channel records hold £17.8bn of the £30.7bn: £15.5bn on the synthetic channel and £2.3bn on the band donors. FRS records hold £12.8bn. So step 2's imputation from the SPI is largely in place. Because no amount is bound, the total floats: the 30 September build held £42.5bn. In the taxpayer bands the UK spine follow-ups: SPI donors funded, WAS coherence, residential split, Child Benefit, release-cut blockers (#1063) #1089 build holds about £29.5bn, against the SPI's £29.4bn for 2023-24. Uprated to 2025 with the registry's per-capita GDP index, the SPI figure is about £31.8bn. (These bands use a sum of income components, not the engine's total income.)
    3. royyr1 is rent from other property, not royalties. The FRS 2024-25 variable listing labels ROYYR1 "Rent before tax from other property" (question PropRent); royalties are ROYYR2. Landlords' letting income is therefore on the FRS rows, but on a different concept. PropRent asks for rent received "AFTER paying for any of the things on this card". The card lists mortgage payments and interest on a loan to buy the property, plus a 10% wear-and-tear allowance abolished in 2016. FRS amounts therefore sit below taxable profit for landlords with mortgages. cvpay is rent a lodger pays, recorded on the lodger's own record. Max's draft UK FRS spine: stop counting lodgers' rent and property losses as property income; sub-letting rent for every tenure #1081 removes it, counts losses flagged by RENTPROF as zero and takes subrent on every tenure.
    4. The Enhanced FRS target is the SPI scaled by 1.9, not the rental statistics amount. uk-data sets _PROPERTY_INCOME_SCALE = 1.9 in targets/sources/hmrc_spi.py (Property income may be underestimated (SPI ~£26bn vs HMRC ~£48bn) policyengine-uk-data#230). The factor is the rental statistics' £46.68bn over the SPI's £24.5bn for 2020-21. The Enhanced FRS file our national builds evaluate against carries £54.4bn.

    Answers to the open questions

    • Finance costs and the SPI field. HMRC's notes to SPI Table 3.7 say: "From tax year 2020 to 2021 landlords are no longer able to deduct any of their finance costs from their property income to arrive at their property profits." "Net income from property" is therefore profit after allowable expenses and before residential finance costs. The 2022-23 public-use tape agrees: all but 10 of its 43,188 records with finance costs have positive INCPROP.
    • What the engine treats as taxable.
      • taxable_property_income (ITTOIA s.268) is property_income less property_allowance_deduction. That deduction is the lesser of property_income and £1,000, for every landlord.
      • There is no Rent-a-Room relief: sublet_income exists as an input, but nothing reads it.
      • There is no finance-cost reduction. The only route is other_tax_credits, a lump sum whose docstring includes "landlord tax relief"; microcosm doesn't fill it.
      • From April 2027, property_income_tax applies the property rates of 22%, 42% and 47% outside Scotland.

    What the plan misses

    1. Finance costs are already on the SPI tape. LLIR_RESTRICT_AMT_TOT holds the residential finance costs that get relief: 1.11m landlords and £5.77bn in 2022-23. On those records TAX_CRED equals 20% of it (10th to 90th percentile ratio 0.199 to 0.205). Microcosm reads neither column. Without the reduction, microcosm overstates landlords' income tax by between £1.2bn (20% of the tape's 2022-23 amount) and £2.6bn. The £2.6bn is an upper bound: 20% of the £12.82bn declared for 2024-25, which includes partnerships and is before the caps. From April 2027 the reduction is given at the property basic rate of 22% (Budget 2025).

    2. The engine gives the £1,000 allowance on top of expenses. HMRC's SA105 notes say that if you claim the property income allowance, "you cannot deduct any allowable expenses or claim any other allowances." Applied to after-expenses profit, the engine takes £2.76bn off the taxable base in the UK spine follow-ups: SPI donors funded, WAS coherence, residential split, Child Benefit, release-cut blockers (#1063) #1089 build, across 2.87m landlords. The 0.24m whose profit is £1,000 or less pay nothing on it.

    3. The rental statistics publish expenses as well as income. The 2026 edition (2024-25) reports 2.88m landlords and £58.99bn of income: £49.81bn for individuals and £9.18bn for partnerships. Expenses total £34.75bn in seven categories:

      • residential finance costs, £12.82bn, declared by 1.15m landlords;
      • repairs and maintenance, £6.41bn;
      • other expenses, £4.58bn;
      • legal, management and professional fees, £4.16bn;
      • rent, rates and insurance, £3.81bn;
      • services and wages, £1.64bn;
      • non-residential finance costs, £1.33bn.

      Income less every expense except residential finance costs is £37.06bn (£58.99bn less £21.93bn), which is the taxable-profit concept. Income less all expenses is £24.24bn, below it.

    4. The rental statistics' landlord count is not our count. It counts everyone who declared rental income in Self Assessment, including landlords with a loss and partnerships, and leaves out landlords outside Self Assessment. The SPI counts are taxpayers with positive net property income. Binding the rental statistics count on property_income > 0 mixes two definitions of a landlord.

    5. The wealth check needs a buy-to-let column first. Since UK: port the unblocked uk-data fixes tracked in #1095 #1100's rental_income predictor, 88.3% of households with rental income hold other residential or non-residential property, up from 11.6%. Buy-to-let still has no column of its own:

      A coherence rule on those columns would flag landlords who hold only buy-to-let. WAS round 8 has the needed columns: DVBltValR8, DVBLtDebtR8, OthMortR8, and per-person gross and net rent (DVGrsRentAmtAnnualR8, DVNetRentAmtAnnualR8).

    6. Finance costs need their own uprating. The tape and the rental statistics agree on the number of landlords with finance costs (1.11m and 1.15m), but the amount more than doubles, from £5.77bn in 2022-23 to £12.82bn in 2024-25. Finance costs should move with the engine's OBR mortgage-interest index, not per-capita GDP.

    Proposal: model landlords' deductions in full

    The rules the engine has to apply:

    • A landlord deducts either actual allowable expenses or the £1,000 allowance, never both.
    • Rental income of £1,000 or less is exempt.
    • Residential finance costs become a tax reduction, and unused amounts carry forward.
    • Rent-a-Room exempts £7,500 of lodger income (£3,750 if shared), and the allowance can't be used on that income.

    The engine can only make these choices if it sees rental income and expenses separately. Step 1 therefore becomes four person-level inputs:

    • rental income before expenses;
    • allowable expenses, excluding residential finance costs;
    • residential finance costs;
    • lodger income under Rent-a-Room (sublet_income).

    The engine (policyengine-uk) then computes three things:

    • profit: rental income less the larger of expenses and £1,000, and zero when rental income is £1,000 or less;
    • the finance-cost reduction: the lesser of finance costs, property profit and income above the personal allowance, at 20%, rising to 22% from April 2027;
    • Rent-a-Room relief.

    With rental income modelled, landlords with a loss appear as records rather than zeros.

    In microcosm:

    • Keep each landlord's SPI profit fixed. Draw expenses from the rental statistics' expense ratios by size of rental income, and set rental income to profit plus expenses. The profit the calibration binds to the SPI then doesn't move.

    • Draw finance costs with the other SPI components from LLIR_RESTRICT_AMT_TOT, and impute them on FRS rows.

    • Put FRS rows on the same concept first. After UK FRS spine: stop counting lodgers' rent and property losses as property income; sub-letting rent for every tenure #1081's fixes, add back the mortgage interest that PropRent nets off.

    • Bind the four pieces:

      • profit, to the SPI amounts and counts, un-excluding the 13 amount rows unscaled;
      • rental income and the expense categories, to the rental statistics' figures for individuals;
      • residential finance costs, to £12.82bn and 1.15m landlords;
      • the landlord count, on rental income above zero.

      The rental statistics' amounts thus become bound targets on the rental-income variable, not diagnostics. Binding them needs a Chronicle package for the rental statistics, which doesn't exist yet.

    • Diagnostics: WAS gross against net rent, once WAS's "net" is pinned down. Also the tape's non-taxpayers (0.54m people with £3.67bn in 2022-23), whom no SPI table covers.

    Suggested order: finance costs first (the largest gap, with the data already in hand), then expenses with the allowance choice, then Rent-a-Room. Each step needs a matching change in policyengine-uk.

    Sources:

    🤖 Generated with Claude Code

  2. juaristi22 commented on Oct 5, 2026

    @juaristi22
    Collaborator

    María's decision (2026-10-05): bind both HMRC property-income amounts, each on its own concept.

    1. SPI 2023-24 Table 3.7 "Net income from property" → property_income, now.
      • This is profit after allowable expenses and before residential finance costs, the concept property_income holds.
      • To bind it, retire the signed exclusion property_income_undercount_adjustment_missing in uk/target_reference_signed_exclusions.json and regenerate the target references. The 13 amount rows then bind unscaled, beside the count rows that are already active.
      • The facts are in the pinned feed (825406f).
      • Until UK FRS spine: stop counting lodgers' rent and property losses as property income; sub-letting rent for every tenure #1081 lands, and FRS rows get back the mortgage interest that PropRent nets off, the calibration will meet these amounts mostly through the SPI records.
    2. HMRC Property Rental Income Statistics, rental income before expenses → a new rental-income variable, after it is added to policyengine-uk.
      • The target is £49.81bn for individuals in 2024-25. It never goes on property_income.
      • Bind the UK individuals' total only: the regional and income-band rows include partnerships.
      • The landlord count by size of rental income binds on rental income above zero at the same time.

    Two corrections to my comment above:

    🤖 Generated with Claude Code

  3. 38 remaining items

  4. added a commit that references this issue on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions