Problem
PolicyEngine UK has no usable data on ISA balances. The only ISA variable in policyengine-uk today is an income flow — individual_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.
Problem
PolicyEngine UK has no usable data on ISA balances. The only ISA variable in
policyengine-uktoday is an income flow —individual_savings_account_interest_income(cash-ISA interest). ISA holdings (the amounts in cash ISAs and stocks & shares ISAs) cannot be recovered:policyengine-uk-datawealth imputation (datasets/imputations/wealth.py), the WAS fieldDVIISAVR8_aggrwas read asinvestment_isasbut summed intocorporate_wealth(alongside non-DB pensions, employee shares/options, UK shares, and unit trusts), so stocks & shares ISA balances are not separable downstream.savingsaggregate (DVSaValR8_aggr), which is not ISA-tagged.Since the UK microdata pipeline now lives here in
populace(andpolicyengine-uk-datais 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 existinguk/bus_imputation.pyand theDonorSpec/Stageframework inbuild/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 intocorporate_wealthfor back-compat if needed, but the split must be exposed.)Model side
The matching input variables have been added to
policyengine-ukso 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_wealthor absent.