Skip to content

UK CGT: translate the 2024-25 gains outturn to the 2025 calibration year (forestalling year; OBR CGT +44.2% signed on the stack register) #875

Description

@juaristi22

Why

The UK national calibration binds hmrc.cgt.gains_total and hmrc.cgt.taxpayers_total at the 2025 calibration period under the doctrine "latest fact not after the period". Since the Chronicle re-pin to 6fb700e (microcosm#874, I0) the latest fact is HMRC's 2024-25 outturn — £127.3bn of chargeable gains and 584k taxpayers, against £69.9bn / 403k in 2023-24. 2024-25 is the forestalling year ahead of the 30 October 2024 rate rise (10/20% → 18/24%). The engine uprates stored gains by ~5% a year (£72.1bn 2024 → £75.8bn 2025 at design weights), so the weights lift the 2025 gains to the spike level, and 2025-26 rates then apply to all of it: £31.4bn of liability (24.7% effective) against OBR's £21.8bn FY2025-26 receipts and HMRC's realised 19.0% on the same gains. obr.capital_gains_tax@2025 reads +44.2% at the composed calibration (microcosm#874 receipts, Part C L4 run 4); with 2023-24 gains it read −25%.

tax year chargeable gains taxpayers CGT liability OBR cash receipts, following FY
2022-23 £82.0bn 377k £14.7bn
2023-24 £69.9bn 403k £12.8bn FY2024-25 £13.7bn
2024-25 £127.3bn 584k £24.2bn FY2025-26 £21.8bn
2025-26 not published FY2026-27 £20.8bn (forecast)

Facts: HMRC CGT statistics (2026 release, Table 1) and OBR EFO March 2026 receipts, both on the pinned Chronicle feed (6ae49d7d…).

Disposition now (ruling 2026-09-05)

Option 1 of the receipts: keep every fact bound as published and sign the OBR miss on the publication stack's target-fit register (uk/target_fit_reviewed_exclusions.json, entry obr.capital_gains_tax@2025, adjudication this issue). The target stays bound in the solve; only the release fence is deferred. While the entry is in force the calibrated 2025-26 base carries ~40% more CGT liability than OBR expects, and any CGT costing on it overstates the base by that much — the publication's known issues must say so.

Deliverable (retires the deferral)

A declared translation of the 2024-25 gains outturn to the 2025 calibration year, under the WS-C reconciliation layer (#736 "CGT 2025 level"):

  1. The index ruling. The reference already carries uprating_from_period 2024 → uprating_to_period 2025 with uprating_index: None (the compile records the slot and applies the fact at face value). The only published series on the feed is OBR's CGT receipts, whose FY2026-27/FY2025-26 ratio (0.954) still leaves £121bn because it hides the rate rise. The honest translation is rate-adjusted (receipts ÷ an effective rate, ≈ £85–90bn), which is a derived series: it needs a declared computation and a Chronicle fact (facts belong in Chronicle), then the adjudication here.
  2. Apply the index in the compile step. compile_ledger_target_references records uprating_index in metadata today and does not scale the value; the monetary-binding receipt already carries the three uprating fields.
  3. Taxpayer count stays flat at 584k: the £3,000 annual exempt amount is the 2025-26 regime as well (uk-data also holds its count flat).
  4. Cash-lag mapping for self-assessed receipts (obr.capital_gains_tax at FY2025-26 is mostly 2024-25 liabilities; the engine's 2025-26 liability lands in FY2026-27) — a doctrine question for every SA-lagged OBR line, to rule alongside.
  5. Distribution follow-ups stay where they are: UK: banded CGT gains targets (by size of gain) to constrain the distribution, not just count + total #467 (banded gains), UK CGT top-tail age and geography joints inherit from incidence and look off — benchmark against HMRC marginals #725 (age/geography joints).

Not the deliverable

Re-vintaging the rows to 2023-24 (a stale £6,000 exempt-amount regime, OBR −25%) or signing the gains total out of the solve (dropping a published fact). Both were considered and rejected in the #874 receipts.

Refs: microcosm#874 (receipts experiments/834-childcare-tfc-receipts.md, Part C L4), #736, #796, #467, #725, #552 (closed), uk-data's hmrc_cgt.py (pins 2023-24, uprates gains, count flat).

Activity

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