Skip to content

Model ISA subscription limits and per-person cash and stocks-and-shares ISA subscriptions #2710

Closed

Description

@juaristi22

Summary

policyengine-uk can't score a change to the ISA allowances: not the £12,000 cash limit from April 2027, a reversal of it, or a change to the £20,000 overall limit.

  • The model has no ISA subscription limits.
  • It has no inputs for what people pay into cash or stocks-and-shares ISAs.
  • It holds the balances of those two ISA types per household only.

So a reform to an ISA limit leaves every household unchanged and scores £0. This issue lists the engine pieces needed. A data issue for Microcosm would supply the inputs.

What main has today (65da54d)

  • Balances: household cash_isa and stocks_and_shares_isa; the latter is part of corporate_wealth.
  • ISA returns: person individual_savings_account_interest_income, individual_savings_account_dividend_income and non_cash_isa_cash_interest, with the 2027-28 charge on cash interest in non-cash ISAs (isa_cash_interest_flat_rate_charge, from Fix ISA income and capital treatment; model bonuses and charges #2589).
  • Lifetime ISA:
    • lifetime_isa_payments, lifetime_isa_bonus and the withdrawal charge;
    • the gov.hmrc.isa.lifetime.* parameters, including payment_limit (£4,000).
  • No other ISA limits under gov.hmrc.isa.

What's needed

1. Parameters

Model them on gov.hmrc.isa.lifetime.payment_limit:

  • The overall annual subscription limit: £20,000 from 6 April 2017 (ISA Regulations 1998 reg 4ZA(1)).
  • The cash ISA subscription limit: £20,000 to 5 April 2027, then £12,000 from 6 April 2027 for people aged 64 or under at the end of the tax year (reg 4ZA(1ZA), inserted by SI 2026/1018).
  • The age at which the full limit applies to cash (65), as its own parameter, so a reform can move it.

Possible paths: gov.hmrc.isa.annual_subscription_limit, gov.hmrc.isa.cash.subscription_limit and gov.hmrc.isa.cash.full_limit_age.

2. Inputs per person

Model them on lifetime_isa_payments:

  • cash_isa_subscriptions and stocks_and_shares_isa_subscriptions: new money paid in during the tax year.
    • Exclude transfers between ISAs, interest and growth.
    • Their documentation should say how flexible-ISA replacements are treated.
  • A total isa_subscriptions that adds these to lifetime_isa_payments. Innovative Finance ISAs would be a third input if wanted; HMRC's tables leave them out.

3. Formulas

  • cash_isa_subscription_limit: the cash limit that applies to the person in the year, by age.
  • cash_isa_subscriptions_above_limit and isa_subscriptions_above_limit: how far the inputs exceed the limits in force.
    • Under a reform these are the amounts that must go somewhere else.
    • Under current law with reported data they should be zero; tests should hold that.

4. Where money above a limit goes (needs a decision)

The tax effect depends on behaviour. Three options:

  • (a) A behavioural parameter block, under gov.contrib or alongside the existing behavioural responses. It splits the excess cash into stocks-and-shares ISAs (no tax change), taxable savings, and other uses.
    • The taxable part earns interest, which adds to savings_interest_income above the personal savings allowance.
    • It needs an interest-rate assumption: for example, the person's own ISA interest yield, or an ONS rate.
  • (b) The engine reports only the excess. The analysis code applies the behaviour.
  • (c) Both: (b) by default, (a) as an opt-in.

A static annual model can't build up displaced balances across years by itself. Scoring 2028-29 onward would also need a supplied input for cash moved out of ISAs in earlier years. That is a question for the data and the analysis, not this issue.

5. Per-person balances (optional here, needed later)

cash_isa and stocks_and_shares_isa are household inputs. Per-person balances, with the household totals as sums, would follow the Lifetime ISA precedent:

  • lifetime_isa_balance per person;
  • household_lifetime_isa_balance with adds.

That change needs a coordinated Microcosm export.

6. Tests

YAML tests at the boundaries:

  • ages 64 and 65 at the end of the tax year;
  • 2026-27 against 2027-28;
  • subscriptions exactly at, and just above, each limit;
  • the excess under a reform that restores £20,000 for cash, and under one that lowers the overall limit.

Data dependency

Microcosm has no ISA subscriptions: the Wealth and Assets Survey records ISA values, not payments. Until there's an imputation, these inputs default to zero and population runs stay at £0. HMRC's ISA tables (September 2026) are the natural targets for one:

  • Table 9.7, individuals by income, size of subscription and ISA type, 2023-24;
  • Table 9.8 by age and type;
  • Table 9.9 by region and type;
  • the totals in Table 9.4.

A separate PolicyEngine/microcosm issue should cover that.

Out of scope

References

Activity

  1. juaristi22 commented on Oct 28, 2026

    @juaristi22
    CollaboratorAuthor

    Budget 2026 update

    The Budget on 28 October 2026 changes some of this issue's scope.

    The cash ISA limit stays at £20,000

    The government will "retain the cash ISA limit at £20,000 for all savers over 18 years old from April 2027" (OOTLAR para 2.5; Budget 2026 Table 6.1 line 11). Secondary legislation is to be laid in November 2026.

    • Section 1: keep gov.hmrc.isa.cash.subscription_limit and the age parameter, as levers for a reform that brings a lower cash limit back. Current law is £20,000 throughout. The £12,000 is a reform value, not a baseline step.
    • The 2027 charge on cash interest in non-cash ISAs came in the same instrument (SI 2026/1018 reg 15), and so did the transfer rules. The Budget documents don't say whether they survive.
      • gov.hmrc.isa.cash_interest_charge.in_effect is true from 6 April 2027.
      • Check the November instrument and end it if the charge is revoked.

    Lifetime ISA: 20% charge for purchases above the price cap (new item)

    From 29 October 2026, Lifetime ISA funds can be withdrawn for a first-home purchase above the £450,000 price cap, at a reduced charge of 20%. Other unauthorised withdrawals stay at 25% (OOTLAR para 2.4; Table 6.1 line 39). The secondary legislation was laid on 28 October 2026.

    lifetime_isa_withdrawal_charge treats a purchase above property_price_cap as non-qualifying, so it charges such a withdrawal at the full withdrawal_charge (25%). The fix:

    • A parameter: for example gov.hmrc.isa.lifetime.above_cap_purchase_withdrawal_charge, 0.2 from 29 October 2026, with the regulation as its reference once it is published.
    • A branch in the formula: a purchase that meets every other first-home condition, at a price above the cap, is charged at that rate on the amount used towards the home. Withdrawals other than for a home stay at withdrawal_charge.
    • A note on the date: 29 October is mid-year, so the parameter documentation should say how the model's fiscal-year sampling treats it.
    • YAML tests: at £450,000 and just above; before and after 29 October 2026; and a withdrawal not made for a home.

    First Time Buyer ISA from April 2029 (separate issue)

    A new First Time Buyer ISA will replace the Lifetime ISA for new savers from 6 April 2029 (OOTLAR para 2.3; Table 6.1 line 38). The documents give:

    • contributions of up to £4,000 a year;
    • "a 25% government bonus on the final account balance up to a maximum of £20,000, paid on withdrawal", for a first home of up to £450,000;
    • no upper age limit;
    • existing Lifetime ISAs carry on under the current rules.

    Primary and secondary legislation will come before the launch. This belongs in its own issue, opened when the legislation sets the rules; the bonus wording above can be read two ways until then.

    Section 4: decision

    Option (b): the engine reports the excess over each limit and no more. The model is static by year and the data has no ISA history, so two things are out of scope for now:

    • a behavioural block for where the excess goes;
    • balances displaced in earlier years.

    A population run then gives the first-year amount above a limit. The tax on money moved out of ISAs over several years would rest on the official costing.

    Related, not in this issue

    The Budget raises the savings income tax rates to 24%, 44% and 49% from 6 April 2027 (OOTLAR para 1.1; Table 6.1 line 62). gov.hmrc.income_tax.rates.savings holds 22%, 42% and 47% from that date, so it needs its own update. isa_cash_interest_flat_rate_charge reads savings.basic, so the charge would follow.

    Data

    PolicyEngine/microcosm#1415 covers the per-person subscriptions and balances this issue's inputs need, and it now adds Lifetime ISA payments (lifetime_isa_payments). If the 2027 charge survives, it also adds the interest on cash held in stocks-and-shares ISAs (non_cash_isa_cash_interest).

    Left out for now, on both sides:

    • first-time-buyer purchases and Lifetime ISA withdrawals towards a home;
    • behaviour;
    • amounts that build up over several years.

    The 20% above-cap charge and the First Time Buyer ISA will work in the household calculator. Population figures for them cite the official costings.

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