Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/2710-lisa-above-cap.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added the 20% Lifetime ISA withdrawal charge for a first-home purchase above the £450,000 property price cap that meets every other condition, for withdrawals from 29 October 2026 (ISA Regulations 1998 Schedule paragraphs 5 and 6A, inserted by SI 2026/1130); the annual model applies it from fiscal 2027-28.
1 change: 1 addition & 0 deletions changelog.d/2710.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added the ISA annual subscription limit (ISA Regulations 1998 reg 4ZA: £15,240 from 2015-16 and £20,000 from 2017-18), a cash ISA limit for people under an age at the end of the tax year that current law leaves unset (Budget 2026 retains £20,000 for cash, so SI 2026/1018's £12,000 for under-65s is a reform setting), per-person cash and stocks-and-shares ISA subscription inputs, and `cash_isa_subscriptions_above_limit` and `isa_subscriptions_above_limit`, the subscriptions a limit leaves out.
1 change: 1 addition & 0 deletions changelog.d/2710.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The household `cash_isa` and `stocks_and_shares_isa` now sum new per-person `cash_isa_balance` and `stocks_and_shares_isa_balance` inputs. A dataset or situation that stores a household total keeps it, and stored totals still project with savings, but a household total given for one year no longer carries into later years.
2 changes: 1 addition & 1 deletion docs/book/assumptions/growthfactors.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ We derive these rates as calendar-year nominal GDP growth from the OBR's March 2
|-------------|------|------|------|------|------|------|------|------|
| Growth rate | 10.0% | 5.2% | 3.9% | 4.7% | 2.9% | 3.3% | 3.2% | 3.1% |

We use per capita GDP for these variables: `benunit_reported_capital`, `capital_gains`, `capital_gains_badr`, `capital_gains_before_response`, `capital_gains_carried_interest`, `capital_gains_residential_property`, `cash_isa`, `corporate_wealth`, `directly_held_shares`, `dividend_income`, `gross_financial_wealth`, `household_lifetime_isa_balance`, `lifetime_isa_balance`, `lump_sum_income`, `main_residence_value`, `maintenance_income`, `miscellaneous_income`, `mortgage_capital_repayment`, `net_financial_wealth`, `non_residential_property_value`, `other_investment_income`, `other_residential_property_value`, `owned_land`, `pension_credit_reported_capital`, `pension_income`, `private_pension_wealth`, `private_transfer_income`, `property_income`, `property_rental_income`, `savings`, `savings_interest_income`, `spousal_maintenance_income`, `stocks_and_shares_isa`, `sublet_income`, `uc_reported_capital`, `unit_and_investment_trusts`
We use per capita GDP for these variables: `benunit_reported_capital`, `capital_gains`, `capital_gains_badr`, `capital_gains_before_response`, `capital_gains_carried_interest`, `capital_gains_residential_property`, `cash_isa`, `cash_isa_balance`, `corporate_wealth`, `directly_held_shares`, `dividend_income`, `gross_financial_wealth`, `household_lifetime_isa_balance`, `lifetime_isa_balance`, `lump_sum_income`, `main_residence_value`, `maintenance_income`, `miscellaneous_income`, `mortgage_capital_repayment`, `net_financial_wealth`, `non_residential_property_value`, `other_investment_income`, `other_residential_property_value`, `owned_land`, `pension_credit_reported_capital`, `pension_income`, `private_pension_wealth`, `private_transfer_income`, `property_income`, `property_rental_income`, `savings`, `savings_interest_income`, `spousal_maintenance_income`, `stocks_and_shares_isa`, `stocks_and_shares_isa_balance`, `sublet_income`, `uc_reported_capital`, `unit_and_investment_trusts`

## Council tax

Expand Down
119 changes: 104 additions & 15 deletions docs/book/assumptions/isa-inputs-and-capital-flows.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,24 @@ established by the household tests.

## Capital stocks

`cash_isa` is a household stock separate from `savings`. Ordinary accessible
cash ISA balances enter the capital sources for Universal Credit, Housing
Benefit, Pension Credit, Income Support, income-based JSA and income-related
ESA. There is no general ISA-wrapper disregard and no generic 10% sale-cost
deduction for cash. Existing source-specific disregards, ownership allocation
assumptions and reported-capital overrides still apply. A complete reported
capital amount already includes relevant ISA holdings; it replaces covered
components rather than adding them again.
`cash_isa` is a household stock separate from `savings`. It sums the members'
`cash_isa_balance`, and `stocks_and_shares_isa` sums their
`stocks_and_shares_isa_balance`, as `household_lifetime_isa_balance` sums
`lifetime_isa_balance`. A dataset or situation that stores a household total
keeps it: the total is recomputed only when it is not stored, and a stored
total is projected with `savings` or `corporate_wealth`. A household input is
used only for the year it is given for; the person balances carry the
variable-level uprating to later years. The means tests read the household
totals, so a person's balance is pooled with the household's other financial
capital rather than attributed to their own benefit unit.

Ordinary accessible cash ISA balances enter the capital sources for Universal
Credit, Housing Benefit, Pension Credit, Income Support, income-based JSA and
income-related ESA. There is no general ISA-wrapper disregard and no generic
10% sale-cost deduction for cash. Existing source-specific disregards,
ownership allocation assumptions and reported-capital overrides still apply. A
complete reported capital amount already includes relevant ISA holdings; it
replaces covered components rather than adding them again.

For example, £5,000 savings and a £3,000 ordinary cash ISA give £8,000 UC
capital. [UC regulation 72](https://www.legislation.gov.uk/uksi/2013/376/regulation/72)
Expand Down Expand Up @@ -167,26 +177,105 @@ Only the bounded qualifying home-payment portion is exempt. The residual
gross withdrawal is charged at 25%, or 20% during the temporary coronavirus
period. These rules come from [Schedule paragraphs 4–7 and 5A](https://www.legislation.gov.uk/uksi/1998/1870/schedule).

From 29 October 2026, a purchase that meets every one of these conditions
except the £450,000 price cap pays 20% on the home payment instead of 25%
(Schedule paragraphs 5 and 6A, inserted by
[SI 2026/1130](https://www.legislation.gov.uk/uksi/2026/1130/made)). The rest
of the withdrawal still pays 25%. `gov.hmrc.isa.lifetime.above_cap_purchase`
holds the rate and its start. Parameters are read on 30 April, so the model
applies the 20% rate from fiscal 2027–28; a withdrawal from 29 October 2026 to
5 April 2027 pays 25% in the model. When such a purchase fails and the money
is returned, the charge is restored to the account (paragraph 10A), so a
returned withdrawal should be left out of the inputs.

The model records `lifetime_isa_bonus` in government spending and
`lifetime_isa_withdrawal_charge` in government revenue. Both are capital
flows, excluded from household current benefits, taxes and net income. The
flows do not automatically update a supplied account balance. This is an
accounting convention for the model's current-income measures.

## Subscription limits

`gov.hmrc.isa.annual_subscription_limit` is the £20,000 limit on a person's
subscriptions in a tax year to all their ISAs other than Junior ISAs
([ISA Regulations regulation 4ZA(1)](https://www.legislation.gov.uk/uksi/1998/1870/regulation/4ZA)).
It was £15,000 from 1 July 2014 and £15,240 from 6 April 2015. The model reads
these limits from 2015–16; 2014–15 and earlier years, with their lower limits
and cash sub-limits, are not modelled.
Cash has had no limit of its own since 1 July 2014, so
`gov.hmrc.isa.cash.subscription_limit` is infinite and cash counts only
towards the annual limit.
[SI 2026/1018 regulation 6](https://www.legislation.gov.uk/uksi/2026/1018/regulation/6/made)
sets a £12,000 cash limit from 6 April 2027 for a person who is 64 or under
at the end of the tax year, but Budget 2026 retains the £20,000 cash limit
for all savers, with secondary legislation to be laid in November 2026
([OOTLAR paragraph 2.5](https://www.gov.uk/government/publications/budget-2026-overview-of-tax-legislation-and-rates-ootlar/budget-2026-overview-of-tax-legislation-and-rates-ootlar)).
Current law here therefore has no cash limit, and the £12,000 is a reform
setting. `gov.hmrc.isa.cash.full_limit_age` (65) is the age at which a cash
limit stops applying. `cash_isa_subscription_limit` reads the age at the end
of the year (5 April) from the date of birth, so a person aged 64 on
6 October whose 65th birthday falls on or before 5 April has the annual limit
for cash.

The inputs are per-person flows in the year: `cash_isa_subscriptions`,
`stocks_and_shares_isa_subscriptions` and the existing
`lifetime_isa_payments`, which `isa_subscriptions` adds up. They sum over
all of a person's accounts of each type, net of current-year subscriptions
withdrawn from a flexible ISA. They exclude transfers between ISAs, interest
and growth, and the subscriptions that
[regulation 5D](https://www.legislation.gov.uk/uksi/1998/1870/regulation/5D)
disregards, such as replacement subscriptions to a flexible ISA, additional
permitted subscriptions, defaulted subscriptions and transfers from a matured
Child Trust Fund
([HMRC guidance](https://www.gov.uk/guidance/manage-isa-subscriptions-for-your-investors)).
`lifetime_isa_payments` includes transfers into a Lifetime ISA from other
ISAs, which count towards the Lifetime ISA limit but are not new
subscriptions for the annual limit, so the total overstates subscriptions
where that input includes them. A withdrawal charge restored under Schedule
paragraph 10A is neither a subscription nor a Lifetime ISA payment (SI
2026/1130 regulations 3 and 4). Innovative finance ISAs are not included.
The inputs are not uprated: growing them would put people who pay in exactly
the annual limit above it in the baseline. Nominal subscriptions grow, so flat
amounts understate how much a lowered limit leaves out in later years. A
producer can grow them instead and cap each person at the limit in force.

The model compares the inputs with the limits in force and does not cap them.
`cash_isa_subscriptions_above_limit` is cash above the person's cash limit,
and `isa_subscriptions_above_limit` is the total above the annual limit. Cash
above both limits counts in both, so the two must not be added. Both are zero
for data that met the limits in force when it was collected. A reform that
lowers a limit reports what it leaves out. For example, a person aged 40
paying £20,000 into cash ISAs in 2027–28 has £8,000 above a £12,000 cash
limit.

The model reports these amounts and no more. It does not say where money
above a limit goes or change any tax for it: the model is static by year and
the data has no ISA history, so it holds no balances moved out of ISAs in
earlier years. A population run gives the first year's amount above a limit;
the tax on money moved out of ISAs over several years rests on the official
costing.

## Annual resolution and coverage

A bare year Y represents the fiscal year from 6 April Y to 5 April Y+1.
Parameters retain their legal effective dates; the annual model samples
rates at 30 April. Fiscal 2020 therefore uses the temporary 20% withdrawal
charge and fiscal 2021 uses 25%. The annual model cannot distinguish a
withdrawal in late March 2020 within fiscal 2019. Annual ages and purchase
withdrawal in late March 2020 within fiscal 2019. Likewise, the 20% charge for
a purchase above the price cap has effect for withdrawals from 29 October
2026, but fiscal 2026 samples 30 April 2026. So a 2026–27 run charges 25% on
such a withdrawal made from 29 October 2026 to 5 April 2027 (159 of the
year's 365 days), and the 20% applies from fiscal 2027. Annual ages and purchase
conditions similarly represent the relevant transactions at one annual
status. Multiple transactions with different conditions require externally
prepared qualifying amounts.

Help to Buy ISA bonuses are not modelled here. Subscription-limit compliance,
Junior ISAs, Child Trust Funds and a proposed First Time Buyer ISA are also
outside this implementation. Population data without payment, withdrawal or
non-cash-interest detail inputs retain zero for those new flows. Household
tests establish the rules; population effects require a separate certified
dataset measurement.
Help to Buy ISA bonuses are not modelled here. Junior ISAs, Child Trust
Funds, transfers between ISA types (including the SI 2026/1018 restrictions on
transfers into cash ISAs) and the First Time Buyer ISA announced at Budget
2026 for April 2029 are also outside this implementation. Population data
without payment, withdrawal, subscription or non-cash-interest detail inputs
retain zero for those flows; data without per-person ISA balances keeps its
stored household totals. Household tests establish the rules; population
effects require a separate
certified dataset measurement.
29 changes: 29 additions & 0 deletions docs/engineering/skills/dataset-sources.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,35 @@ advance apprenticeship tenure, so a producer or caller must supply changed
classifications for later years rather than rely on a carried input to
expire automatically.

## ISA balances and subscriptions

Producers can export per-person `cash_isa_balance` and
`stocks_and_shares_isa_balance`. The household `cash_isa` and
`stocks_and_shares_isa` sum them, but a stored household column takes
precedence, so existing datasets that store only the household totals keep
them, projected with `savings` and `corporate_wealth` through
`uprating_indices.yaml`. A producer that exports the person balances should
either stop exporting the household totals or keep them equal to the sums;
the model does not reconcile the two.

`cash_isa_subscriptions` and `stocks_and_shares_isa_subscriptions` are
annual person flows, summed over all of a person's accounts of each type, that
count towards the ISA subscription limits, with `lifetime_isa_payments` for
Lifetime ISAs. Projection carries them flat, because growing them would put
people who pay in exactly the annual limit above it in the baseline. Nominal
subscriptions grow, so flat amounts understate how much a lowered limit leaves
out in later years; a producer can grow them itself and cap each person at the
limit in force. The model does not cap them at the limits: a producer should
export subscriptions as observed, so a reform that lowers a limit shows what
it leaves out. Observed subscriptions stay within the £20,000 annual
limit, which the three inputs share, so an imputation should draw them
jointly. Drawn separately, for example from tables that leave Lifetime ISAs
out, they can sum above the limit and put people above it in the baseline,
where `isa_subscriptions_above_limit` should be zero. Absent columns default
to zero, so a change to an ISA limit changes nothing on such data.
[Microcosm issue 1415](https://github.com/PolicyEngine/microcosm/issues/1415)
covers imputing the subscriptions and balances.

## Defaults

`policyengine_uk` does not silently choose a default dataset when no situation is
Expand Down
7 changes: 5 additions & 2 deletions policyengine_uk/data/uprating_indices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,11 @@ gov.economic_assumptions.yoy_growth.capital_gains:
- capital_gains_carried_interest
gov.economic_assumptions.yoy_growth.obr.per_capita.gdp:
- benunit_reported_capital
# cash_isa and stocks_and_shares_isa sum the person balances listed with

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to have 9. cash_isa and stocks_and_shares_isa are also at lines 147 and 152 of this same list (this duplication is on main already). Remove the duplicates while you are here. Note that #2638 and #2723 edit the lines next to the new stocks_and_shares_isa_balance entry.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 1915a91. The second copies are removed.

# them; they are listed so a dataset that stores the household totals
# grows them like their parts.
- cash_isa
- cash_isa_balance
- corporate_wealth
- directly_held_shares
- dividend_income
Expand Down Expand Up @@ -138,13 +142,12 @@ gov.economic_assumptions.yoy_growth.obr.per_capita.gdp:
- non_cash_isa_cash_interest
- spousal_maintenance_income
- stocks_and_shares_isa
- stocks_and_shares_isa_balance
- sublet_income
- cash_isa
- consumer_debt
- mortgage_debt
- rent_paid_as_boarder
- rent_paid_as_lodger
- stocks_and_shares_isa
- owned_company_capital
- owned_company_holding_value
- owned_company_trade_assets
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
description: >
Limit on a person's total subscriptions in the tax year to ISAs other than
Junior ISAs: cash, stocks-and-shares, innovative finance and new Lifetime ISA
payments together. It was £15,000 from 1 July 2014 and £15,240 from 6 April
2015. The annual model reads it from 2015-16; 2014-15 and earlier years, with
their lower limits and cash sub-limits, are not modelled.
values:
2014-07-01: 15000
2015-04-06: 15240
2017-04-06: 20000

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to have 3. Core gives this value for every earlier year, so 2014-15 to 2016-17 read £20,000. Consider 2014-07-01: 15000 (SI 2014/1450 reg 6(a)(i)) and 2015-04-06: 15240. SI 2017/186 reg 5 replaced the sum £15,240.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 1915a91. I checked SI 2015/608 reg 3(1): it substitutes £15,240 for £15,000 in reg 4ZA(1). The two new 2015 and 2016 cases pass locally.

metadata:
label: ISA annual subscription limit
period: year
unit: currency-GBP
reference:
- title: Individual Savings Account Regulations 1998 regulation 4ZA(1)
href: https://www.legislation.gov.uk/uksi/1998/1870/regulation/4ZA
- title: Individual Savings Account (Amendment No. 2) Regulations 2014 regulation 6(a)(i)
href: https://www.legislation.gov.uk/uksi/2014/1450/regulation/6/made
- title: Individual Savings Account (Amendment) Regulations 2015 regulation 3(1)
href: https://www.legislation.gov.uk/uksi/2015/608/regulation/3/made
- title: Individual Savings Account (Amendment) Regulations 2017 regulation 5
href: https://www.legislation.gov.uk/uksi/2017/186/regulation/5/made
1 change: 1 addition & 0 deletions policyengine_uk/parameters/gov/hmrc/isa/cash/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Cash ISA
15 changes: 15 additions & 0 deletions policyengine_uk/parameters/gov/hmrc/isa/cash/full_limit_age.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description: >
Age a person must have reached by the end of the tax year (5 April) for the
cash ISA subscription limit not to apply. Their cash subscriptions then count
only towards the annual subscription limit. It matters only where a cash
limit is set, as SI 2026/1018 regulation 6 sets one for people aged 64 or
under.
values:
2027-04-06: 65
metadata:
label: Cash ISA full limit age
period: year
unit: year
reference:
- title: Individual Savings Account (Amendment) (No. 2) Regulations 2026 regulation 6
href: https://www.legislation.gov.uk/uksi/2026/1018/regulation/6/made
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
description: >
Limit on a person's subscriptions in the tax year to cash ISAs while they are
under the cash ISA full limit age at the end of the year. Cash has had no
limit of its own since 1 July 2014, so cash subscriptions count only towards
the annual subscription limit. SI 2026/1018 regulation 6 sets £12,000 from 6
April 2027 for people aged 64 or under, but Budget 2026 retains the £20,000
limit for all savers, with secondary legislation to be laid in November
2026, so cash keeps no limit of its own here. Set this to 12,000 to model the
lower limit.
# From 6 April 2027 this rests on Budget 2026 (OOTLAR para 2.5) until the
# November 2026 instrument is laid: tracked in
# https://github.com/PolicyEngine/policyengine-uk/issues/2728.
values:
2014-07-01: .inf
metadata:
label: Cash ISA subscription limit
period: year
unit: currency-GBP
reference:
- title: Individual Savings Account Regulations 1998 regulation 4ZA

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to have 4. The description relies on 'no limit of its own since 1 July 2014'. Add SI 2014/1450 reg 6(a)(ii) as a reference: https://www.legislation.gov.uk/uksi/2014/1450/regulation/6/made. It omitted reg 4ZA(1)(a) and (b) (footnote F3 on reg 4ZA).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 1915a91. The value now starts on 1 July 2014, and SI 2014/1450 reg 6(a)(ii) is cited.

href: https://www.legislation.gov.uk/uksi/1998/1870/regulation/4ZA
- title: Individual Savings Account (Amendment No. 2) Regulations 2014 regulation 6(a)(ii) (omits the cash sub-limits in regulation 4ZA(1)(a) and (b))
href: https://www.legislation.gov.uk/uksi/2014/1450/regulation/6/made
- title: Individual Savings Account (Amendment) (No. 2) Regulations 2026 regulations 1 and 6
href: https://www.legislation.gov.uk/uksi/2026/1018/regulation/6/made
- title: Budget 2026, overview of tax legislation and rates, paragraph 2.5
href: https://www.gov.uk/government/publications/budget-2026-overview-of-tax-legislation-and-rates-ootlar/budget-2026-overview-of-tax-legislation-and-rates-ootlar
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# First-time purchase above the property price cap
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
description: >
Whether a Lifetime ISA withdrawal towards a first home that meets every
first-time purchase condition except the property price cap pays the reduced
above-cap charge, rather than the withdrawal charge. It has effect for
withdrawals from 29 October 2026. The annual model reads parameters on 30
April, so it applies from fiscal 2027-28: in the model, a withdrawal from 29
October 2026 to 5 April 2027 pays the withdrawal charge.
values:
2000-01-01: false
2026-10-29: true

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to have 6. The 30 April read is correct (convert_to_fiscal_year_parameters). But 2026-27 is the current year, and about 159 of its 365 days fall from 29 October. A household-calculator run for 2026 shows 25% for a purchase above the cap in the rest of this tax year. Should we accept this as documented, or add a per-year override?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No change at 1915a91. This is a choice for the human reviewers, so I leave it open for them.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Decided: we keep the 30 April convention.

  • A 2026-27 run charges 25% on an above-cap purchase withdrawn from 29 October 2026 to 5 April 2027, and the 20% applies from 2027-28.
  • This is the same treatment as paragraph 5A's 20% from March 2020, which the model picks up from 2020-21.
  • Population runs aren't affected: the data has no Lifetime ISA withdrawals towards a home.

The caveat is recorded in 04895b0:

  • lifetime_isa_withdrawal_charge's docstring now gives the 2026-27 consequence;
  • the assumptions page's "Annual resolution and coverage" section gives it next to the March 2020 case.

It was already in this parameter's description, the Lifetime ISA section of that page, programs.yaml and the changelog fragment.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Keeping the 30 April convention is consistent with the paragraph 5A case in 2020. 04895b0 states the 2026-27 effect in the variable's docstring and on the assumptions page. I have nothing more on this item.

metadata:
label: Lifetime ISA reduced charge above the price cap in effect
period: year
unit: bool
reference:
- title: Individual Savings Account (Amendment) (No. 3) Regulations 2026 regulation 1
href: https://www.legislation.gov.uk/uksi/2026/1130/regulation/1/made
Loading
Loading