Skip to content

UK: surface cash ISA and stocks & shares ISA holdings in the wealth imputation #180

Description

@vahid-ahmadi

Problem

PolicyEngine UK has no usable data on ISA balances. The only ISA variable in policyengine-uk today is an income flowindividual_savings_account_interest_income (cash-ISA interest). ISA holdings (the amounts in cash ISAs and stocks & shares ISAs) cannot be recovered:

  • In the now-archived policyengine-uk-data wealth imputation (datasets/imputations/wealth.py), the WAS field DVIISAVR8_aggr was read as investment_isas but summed into corporate_wealth (alongside non-DB pensions, employee shares/options, UK shares, and unit trusts), so stocks & shares ISA balances are not separable downstream.
  • Cash ISAs were never mapped at all — cash holdings only enter via the broad savings aggregate (DVSaValR8_aggr), which is not ISA-tagged.

Since the UK microdata pipeline now lives here in populace (and policyengine-uk-data is archived/read-only as of 2026-06-19), the fix belongs in the populace UK build.

Proposed fix

Add a WAS-donor wealth imputation stage to the UK build (packages/populace-build/src/populace/build/uk/, modelled on the existing uk/bus_imputation.py and the DonorSpec/Stage framework in build/plan.py) that surfaces, as standalone columns:

  • stocks_and_shares_isa — from the WAS investment-ISA value (DVIISAVR8)
  • cash_isa — from the WAS cash-ISA value (a WAS field not currently mapped; the legacy code only mapped investment ISAs)

Keep these separable rather than folding into corporate_wealth. (A copy can still be added into corporate_wealth for back-compat if needed, but the split must be exposed.)

Model side

The matching input variables have been added to policyengine-uk so these columns have somewhere to land: cash_isa and stocks_and_shares_isa (household-level wealth STOCK variables). See the linked PR.

Why it matters

Enables ISA-balance modelling (e.g. ISA-reform / wealth-tax scenarios) that today is impossible because the holdings are either bundled into corporate_wealth or absent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions