Skip to content

Housing association rents ~20% above benchmark; housing/rent_social target missed by 1.55x #454

Description

@vahid-ahmadi

Warning

This body has been corrected. The original asserted social rents ran 25-35% high against an RSH "general needs" benchmark, and that scaling the housing element by -25% reproduced the administrative capped count. Both were wrong: the benchmark excluded affordable-rent tenancies, and the counterfactual cut private rents that are not overstated. Corrected figures below; the original text is preserved in the first comment.

Problem

Modelled rents in the enhanced FRS exceed published averages, with the error concentrated in the housing association sector. Council and private rents are close to benchmark.

tenure model (2026) EHS 2024-25 (England) uprated ~12% to 2026 gap
council GBP 145/wk (median 128) GBP 120 ~GBP 135 +7%
housing association GBP 181/wk (median 161) GBP 134 ~GBP 151 +20%
social, blended GBP 166/wk GBP 129 ~GBP 145 +14%
private GBP 261/wk (median 225) GBP 250 ~GBP 275 −5%

Source: English Housing Survey 2024-25, chapter 2. EHS is England-only while the model is UK-wide; devolved social rents are lower, so the true gap is probably slightly larger than shown.

Comparability caveat that is not yet resolved: FRS HHRENT, the basis for the model's rent, is defined net of service charges and water, whereas EHS mean weekly rents for social tenants generally include service charges. That biases the model low in this comparison, which makes the +20% housing association gap harder to explain rather than easier. Quantifying this should be the first step before acting on the gap.

Enhanced FRS 2023/24 v1.40.3, simulated 2026.

The calibration target is being missed

This is the sharper statement of the problem. housing/rent_social already targets this quantity and is not converging, while the private target is:

target (2025) model target ratio
housing/rent_private GBP 92.9bn GBP 89.0bn 1.04x
housing/rent_social GBP 47.6bn GBP 30.7bn 1.55x

The social miss decomposes as 5.77m households against the target's 5.0m basis (1.15x) times GBP 159/wk against the GBP 118/wk basis (1.35x).

Note the private figures cannot both be right: this issue puts model private rent 5% below the EHS-uprated benchmark, while the target basis (ONS PRHI, GBP 317/wk) puts it 19% below. ONS PRHI mixes new lets into a stock measure, so part of the private "count 30% high / mean 19% low" decomposition may be an artefact of the basis rather than model error. The two comparators need reconciling.

Why it matters

The benefit cap is a threshold effect and unusually sensitive to level errors in its inputs (PolicyEngine/policyengine-uk#1818). Housing is 46% of capped benefits, and the median excess over the cap is only GBP 2,733/yr against a mean housing element of GBP 11,604/yr.

Applying tenure-specific corrections (council −7%, HA −20%, private 0%) moves modelled capping from 222k households to 145k, against DWP's 111k — closing about 69% of the excess. The residual belongs to other causes tracked in #1818.

Downstream this makes benefit-cap-interacting reform estimates roughly 2x too large, blocking JRF-style protected minimum floor analysis (PolicyEngine/policyengine-uk#1814).

Household counts

model (2025) UK benchmark
total households 31.76m 29.0m (ONS 2025)
owner-occupied 59.9% 65% (FRS 2024-25)
private rent 22.0% 19%
social rent 18.2% 17%

The household total is ~9.5% high and renting is over-represented. A concrete candidate: targets/sources/ons_tenure.py is documented as ONS "subnational dwelling stock by tenure" but targets/compute/households.py matches it against modelled household counts, and dwellings exceed households by roughly 8% in England.

What would help

  • Quantify the service-charge basis difference between FRS HHRENT and EHS rents before treating the +20% as pure model error.
  • Diagnose why housing/rent_social does not converge while housing/rent_private does. This is the same class of failure as the benefit cap targets in #1818, which are missed by 2.0x and 3.1x — a shared cause is plausible.
  • Reconcile the dwelling-stock vs household-count mismatch in the tenure targets.
  • Pair rent totals with household-count constraints, or target mean rent by tenure, so count and mean errors cannot cancel. Note datasets/local_areas/constituencies/devolved_housing.py already does exactly this for Wales and Scotland.
  • Add mean rent by tenure to per-release validation against EHS.

Related, found alongside

num_bedrooms is identically zero for every household in the dataset. The variable is declared in the model (variables/household/demographic/num_bedrooms.py) with no formula, nothing populates it, and nothing references it. Harmless today, but it makes the under-occupancy deduction (removal of the spare room subsidy) unimplementable — that policy is absent from the model entirely, and social renters receive full rent as their housing costs element.

Metadata

Metadata

Assignees

No one assigned

    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