Skip to content

UK: the £1,000 personal allowance costing sits 13–14% above HMRC's ready reckoner while 1p on the basic rate is within 1% #1370

Closed

Description

@juaristi22

Follow-up from Vahid's review of #1344 (item 27).

What we see

On the pre-Budget arm at e399d21ef (policyengine-uk 2.147.2, signed with a throwaway key, not attested), the static 2025 costings compare with HMRC's 2025-26 ready reckoner (January 2025) like this:

Change Microcosm HMRC Gap
+1p on the basic rate £6.51bn £6.55bn −0.6%
+£1,000 personal allowance £8.81bn about £7.7–7.8bn (from £0.78bn for £100 and £9.65bn for 10%) +13–14%

#1344 moved the allowance cost the right way: it was 15–17% above HMRC before. The gap was there before that PR, so it is not a regression.

Why it points away from the basic-rate base

A 1p change reads the basic-rate base. An allowance rise is worth 20p, 40p or 45p per pound to each taxpayer, by their marginal rate, and it moves people in and out of tax and the £100,000 taper. With the base within 1%, the gap more probably comes from the number of taxpayers at each marginal rate, or from the taper zone.

Checks

  1. Taxpayers by marginal rate. Compare the model's 2025 taxpayer counts by marginal rate with HMRC's Income Tax liabilities statistics. The hmrc_itl_marginal_rate rows fit these counts on annual income (tax_band_annual), while the costing reads the engine's tax on current income, so compare both measures.
  2. The taper zone. Compare the number of people with adjusted net income between £100,000 and £125,140 with HMRC's, and their cost share in the reform.
  3. The reform definition. Confirm the model's reform holds what HMRC's holds: the basic-rate limit (so the higher-rate threshold moves with the allowance) and the £100,000 income limit.
  4. Scope. Note 1 of the January 2025 bulletin says its figures are the exchequer impact on the UK government. They include block-grant effects and exclude the devolved elements for Scotland and Wales. The model's cost counts every UK taxpayer's tax, including Scottish rates. Pin down a like-for-like scope before the gap is read as a model error.

Done when

The gap is split into scope, reform definition and model parts, with each part either explained or filed against the calibration rows or the engine. Use the first certified national build from main for the figures, not the throwaway-key arm.

🤖 Generated with Claude Code

Activity

  1. juaristi22 commented on Oct 23, 2026

    @juaristi22
    CollaboratorAuthor

    The gap, split

    Arm at e399d21ef (policyengine-uk 2.147.2, throwaway key) at 2025, static, on the engine's current income. These are weighted totals; HMRC's figures are from its January 2025 ready reckoner and Income Tax liabilities statistics. Most of the 13–14% is not the model's. HMRC's 2025-26 column is a first-year receipts figure on the UK government's scope; the model's is a full-year liability of every UK taxpayer.

    £1,000 on the personal allowance

    Part £bn Evidence
    Model, UK-wide full-year liability 8.81
    HMRC 2025-26 column 7.70 from the 1% (£0.98bn) and 10% (£9.65bn) rows; £0.78bn × 10 = £7.80bn is the linear upper end
    Gap +1.11
    Basis: HMRC's first-year column counts Self Assessment tax when it is paid +0.74 see below
    Scope: the UK government's exchequer impact (note 1) +0.27 see below
    Year: the model's 2025 is calendar 2025, a quarter-year before 2025-26 −0.06 HMRC's rows imply 2.4–3.8% a year
    Reform definition 0 both hold the basic rate limit, so the higher-rate threshold moves, and the £100,000 limit
    Behaviour ≈0 HMRC's figures include it, but an allowance rise moves few marginal rates
    Taxpayers by marginal rate and taper zone ≈0 see below
    Rest +0.16 (+1.9%) see below

    Basis. The reckoner's 2025-26, 2026-27 and 2027-28 columns follow the Self Assessment payment cycle (balancing payment plus first payment on account in the second year). Fitted to it, a full year is 9.0% (1% row) and 9.8% (10% row) above the first-year figure. That gives £8.40–8.46bn for £1,000. The same pattern shows on 1p on the basic rate (11%) and on the higher-rate and basic-rate-limit rows (about 20%), where Self Assessment is denser.

    Scope. HMRC's figure is E&NI income tax plus the change in Scotland's and Wales's block grants, without the devolved elements. In the model:

    • Scottish NSND tax (−£0.77bn) becomes the change in Scotland's block grant adjustment (−£0.55bn), which follows rUK NSND receipts in proportion.
    • The Welsh 10p element (−£0.16bn) becomes Wales's change (−£0.11bn).
    • At HMRC's scope the model's cost is £8.54bn.

    Counts.

    • Model taxpayers on current income: 38.8m; 30.6m basic (Scottish starter and intermediate included), 6.97m higher, 1.18m additional.
    • HMRC 2025-26: 39.1m; 30.8m (savers included), 7.08m, 1.23m.
    • HMRC's counts priced at £20, £40 and £45 per £100 give £0.878bn for a £100 rise at HMRC's scope; the model gives £0.872bn.
    • Taper zone: the model has 0.64m people with adjusted net income from £100,000 to £125,140, who bear £0.26bn of the cost, against HMRC's about 0.72m. That would raise the model's cost, not lower it.

    Rest. The same 3% sits between HMRC's own counts priced (£0.878bn per £100) and its full-year reckoner (£0.850bn). Its source is the reckoner's vintage, the basis fit or behaviour, not Microcosm's counts.

    On the annual-income measure that the calibration fits (39.5m taxpayers), the cost is £8.98bn (£8.71bn at HMRC's scope).

    1p on the basic rate

    Part £bn
    Model (rates.uk[0] only) 6.51
    HMRC 2025-26 column 6.55
    HMRC full year (basis fit) 7.28
    The model's reform misses rUK property income: policyengine-uk taxes it at its own rates in every year, though before April 2027 it is taxed at the main rates +0.10
    Scotland's block grant adjustment rises with rUK receipts (note 1 includes it) +0.46
    Year +0.07
    Model like for like 7.14 (−1.9%)

    On annual income the model like for like is £7.25bn (−0.4%). Moving the savings basic rate as well would add £0.04bn, if HMRC's row moves it; the row does not say. HMRC's figure is net of behaviour, so its static equivalent is higher.

    So the "within 1%" was two offsetting differences: the narrower reform and missing block-grant effect (−£0.56bn) against HMRC's receipts basis (−£0.73bn).

    Like for like, #1344 against #1338's build

    £1,000 allowance 1p with property
    #1338 build (829c1bc26) £8.71bn (+3.1%) £7.18bn (−1.3%)
    #1344 arm £8.54bn (+1.1%) £7.07bn (−2.9%)

    Both at HMRC's scope, in calendar 2025, against HMRC's 2025-26 full year. Moved to 2025-26, the arm costs about 1% more on both, which gives the +1.9% and −1.9% above.

    What follows

    🤖 Generated with Claude Code

  2. juaristi22 commented on Oct 23, 2026

    @juaristi22
    CollaboratorAuthor

    Decision: accept the definitions, no model change

    The two large parts of the gap are definitions, not model errors. HMRC's 2025-26 column is a first-year receipts figure on the UK government's scope; Microcosm's costing is a full-year liability of every UK taxpayer. Both are right for what they measure. Calibrating to the reckoner would make every full-year UK costing about 14% too low.

    The rest of about 2% (+1.9% on the allowance, −1.9% on 1p) is inside the uncertainty of the Self Assessment fit. HMRC's own counts show a similar gap against HMRC's own figure. Closing.

    Two checks, neither needing a build:

    • the split on the first certified build from main (about ten minutes);
    • a comparison with the June 2025 reckoner, on a newer forecast.

    Reopen if the rest moves above about 3–4%. The lead then is the income distribution just above the allowance: Microcosm's cost per pound falls faster than HMRC's as the allowance rises.

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