Skip to content

High Value Council Tax Surcharge charges tenants when main_residence_value is positive #2141

Closed

Description

@juaristi22

The high_value_council_tax_surcharge formula applies the charge to English households with a qualifying main_residence_value, regardless of whether they own their home. The announced policy places liability on property owners.

At b5b0923, the formula checks the year, country and property value, then returns the surcharge for every household in England. It never reads tenure_type. Consequently, changing an otherwise identical household from owner-occupied to privately rented leaves its surcharge unchanged.

The Drill 1 evaluation identified this in a mock reform lowering the threshold to £1.5m: approximately 27,100 private-renter households were charged £68m. The dashboard corrected its Personal impact adapter, but the national calculation retained the model’s behaviour. These figures describe the rehearsal dataset and reform, not the current-law population impact.

The fix should:

  • Require tenure_type to be OWNED_OUTRIGHT or OWNED_WITH_MORTGAGE before charging the household for its main residence.
  • Retain the existing commencement date, England restriction, valuation adjustment and band calculation.
  • Apply the ownership condition under both baseline policy and threshold reforms.
  • Set tenure explicitly in owner test fixtures: the current default is RENT_PRIVATELY.

Add regression tests showing that:

  • Each owner tenure retains the expected surcharge.
  • Private, council and housing-association tenants owe zero on their rented home, even with an explicitly supplied property value above the threshold.
  • The ownership condition still holds when a reform lowers the threshold.
  • Existing geographical, commencement-date and value-boundary cases continue to pass.

Microcosm #1089 now prevents owned main-residence value from being imputed onto renter households. The model should also enforce ownership for older datasets and explicit household inputs.

This issue covers liability on the household’s main residence. Landlord and second-home liabilities require separate property-level ownership and valuation coverage. Removing tenant charges does not transfer those liabilities to landlords or preserve the existing revenue estimate.

Activity

  1. juaristi22 commented on Oct 6, 2026

    @juaristi22
    CollaboratorAuthor

    Additional reproduction and scope for PE-UK #2141

    The dashboard PR #7 audit independently reproduces this on PE-UK source 4ec7ef1d30a2f476094a7fba6abdfe494856f3f9 (2.122.2), using core 3.32.17. The controlled situation gives both an owner and a private renter a £4m London main residence in 2028:

    from policyengine_uk import Simulation
    
    people = {
        name: {"age": {"2028": 40}}
        for name in ("owner", "renter")
    }
    benunits = {name: {"members": [name]} for name in people}
    households = {
        name: {
            "members": [name],
            "region": {"2028": "LONDON"},
            "tenure_type": {
                "2028": "OWNED_OUTRIGHT" if name == "owner" else "RENT_PRIVATELY"
            },
            "main_residence_value": {"2028": 4_000_000},
        }
        for name in people
    }
    sim = Simulation(situation={
        "people": people,
        "benunits": benunits,
        "households": households,
    })
    print(sim.calculate("high_value_council_tax_surcharge", "2028").tolist())
    # Observed: [5000.0, 5000.0]
    # Expected: [5000.0, 0.0]

    The expectation follows the official owner-liability rule. The renter's supplied value describes the residence; it does not establish ownership.

    The existing issue's tenure, geography, date and threshold tests cover the required repair. Include this positive-property-value renter case so the test cannot pass merely because a dataset happens to zero renters' residence values.

    For downstream interpretation: the dashboard's added £1.5m–£2m band already checks owner tenure. This native defect therefore does not establish that its 99k incremental-band count is wrong. Fixing the gate also does not provide liability on landlords' rented-out properties or second homes; that remains a separate representation/coverage question.

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