Skip to content

is_renting omits RENT_FROM_HA (RENT_PRIVATELY listed twice) #2064

Closed

Description

@juaristi22

is_renting (policyengine_uk/variables/household/demographic/is_renting.py, on main and at 2.100.0) builds its tenure list as:

RENT_TENURES = [
    tenures.RENT_PRIVATELY,
    tenures.RENT_FROM_COUNCIL,
    tenures.RENT_PRIVATELY,
]

RENT_PRIVATELY appears twice and RENT_FROM_HA (housing association) is missing, so a housing-association tenant is never renting to the engine. Everything that reads is_renting treats them as non-renters.

Where it was found. While making the WAS wealth donor coherent with tenure in PolicyEngine/microcosm#1063 (items 5 and 6, PR PolicyEngine/microcosm#1089), the data side had to carry four explicit tenure flags (owned outright, mortgaged, renting privately, renting socially) rather than read is_renting, because the engine flag disagreed with tenure_type for every RENT_FROM_HA household. In the FRS 2024-25 frame that is about a tenth of all households.

Expected. The list should be RENT_PRIVATELY, RENT_FROM_COUNCIL, RENT_FROM_HA (the three renting values of TenureType). A test that asserts is_renting is true for each renting tenure value and false for the two owner values would have caught the duplicate.

Filed from the microcosm#1063 work; the data-side workaround stays in place either way.

Activity

  1. vahid-ahmadi commented on Oct 4, 2026

    @vahid-ahmadi
    Collaborator

    Confirmed on main. is_renting.py lists RENT_PRIVATELY twice and omits RENT_FROM_HA, so housing-association tenants read as not renting.

    On scope, inside policyengine-uk the bug is narrower than it might look:

    • The benefit side doesn't read this variable. LHA_eligible reads benunit_is_renting, and that already lists all three renting tenures, RENT_FROM_HA included.
    • The household-level is_renting is read only by the two student-finance proxies, maintenance_loan_living_arrangement and maintenance_loan_household_income. So inside the engine, the effect is on maintenance-loan living arrangements for students in housing-association homes.
    • Downstream, uk-cliff-watch reads is_renting directly, so it is affected too.

    A one-line fix plus the parametrised test you describe (true for the three renting values, false for the owner values) would close it. It's also worth making is_renting and benunit_is_renting share one tenure list, so the two can't drift again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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