From efd8afbe988a5f6f7c940fdf6a8841d273703133 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 24 Jun 2026 13:17:18 +0100 Subject: [PATCH 1/3] Add cash ISA and stocks and shares ISA holdings variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add two household-level wealth input variables, cash_isa and stocks_and_shares_isa, so the model can carry ISA balances separately. Previously the only ISA variable was the interest-income flow (individual_savings_account_interest_income); ISA *balances* had nowhere to land — investment ISAs were folded into corporate_wealth in the (now archived) policyengine-uk-data wealth imputation, and cash ISAs were not represented at all. These variables provide the model-side home for ISA balances imputed by the data pipeline (populace). Co-Authored-By: Claude Opus 4.8 (1M context) --- changelog_entry.yaml | 4 ++++ .../variables/household/wealth/cash_isa.py | 12 ++++++++++++ .../household/wealth/stocks_and_shares_isa.py | 15 +++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 changelog_entry.yaml create mode 100644 policyengine_uk/variables/household/wealth/cash_isa.py create mode 100644 policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml new file mode 100644 index 000000000..7cb280ed0 --- /dev/null +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Cash ISA and stocks and shares ISA holdings as household wealth input variables. diff --git a/policyengine_uk/variables/household/wealth/cash_isa.py b/policyengine_uk/variables/household/wealth/cash_isa.py new file mode 100644 index 000000000..69bcfca51 --- /dev/null +++ b/policyengine_uk/variables/household/wealth/cash_isa.py @@ -0,0 +1,12 @@ +from policyengine_uk.model_api import * + + +class cash_isa(Variable): + label = "cash ISA holdings" + documentation = "Amount held in cash Individual Savings Accounts" + entity = Household + definition_period = YEAR + value_type = float + unit = GBP + uprating = "gov.economic_assumptions.indices.obr.per_capita.gdp" + quantity_type = STOCK diff --git a/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py b/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py new file mode 100644 index 000000000..ab71b89b9 --- /dev/null +++ b/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py @@ -0,0 +1,15 @@ +from policyengine_uk.model_api import * + + +class stocks_and_shares_isa(Variable): + label = "stocks and shares ISA holdings" + documentation = ( + "Amount held in stocks and shares (investment) Individual Savings " + "Accounts" + ) + entity = Household + definition_period = YEAR + value_type = float + unit = GBP + uprating = "gov.economic_assumptions.indices.obr.per_capita.gdp" + quantity_type = STOCK From 8eaab780f2a085577038c55e35dd12248eabd13f Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 24 Jun 2026 14:41:20 +0100 Subject: [PATCH 2/3] Format ISA variables with ruff --- .../variables/household/wealth/stocks_and_shares_isa.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py b/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py index ab71b89b9..5c9b4d6cc 100644 --- a/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py +++ b/policyengine_uk/variables/household/wealth/stocks_and_shares_isa.py @@ -4,8 +4,7 @@ class stocks_and_shares_isa(Variable): label = "stocks and shares ISA holdings" documentation = ( - "Amount held in stocks and shares (investment) Individual Savings " - "Accounts" + "Amount held in stocks and shares (investment) Individual Savings Accounts" ) entity = Household definition_period = YEAR From abc47354a18376c259da621318aeca48e54adf82 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 7 Jul 2026 09:24:19 -0400 Subject: [PATCH 3/3] Move changelog to a towncrier fragment so the minor bump lands The repo dropped root changelog_entry.yaml for changelog.d/ fragments; bump_version.py and the versioning workflow only read changelog.d/**, and the .added suffix is what infers the minor bump. Co-Authored-By: Claude Fable 5 --- changelog.d/add-isa-balance-variables.added.md | 1 + changelog_entry.yaml | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) create mode 100644 changelog.d/add-isa-balance-variables.added.md delete mode 100644 changelog_entry.yaml diff --git a/changelog.d/add-isa-balance-variables.added.md b/changelog.d/add-isa-balance-variables.added.md new file mode 100644 index 000000000..62222c5b2 --- /dev/null +++ b/changelog.d/add-isa-balance-variables.added.md @@ -0,0 +1 @@ +- Add `cash_isa` and `stocks_and_shares_isa` Household wealth input variables for ISA balances. diff --git a/changelog_entry.yaml b/changelog_entry.yaml deleted file mode 100644 index 7cb280ed0..000000000 --- a/changelog_entry.yaml +++ /dev/null @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Cash ISA and stocks and shares ISA holdings as household wealth input variables.