Capital gains tax is the single most-reported broad-based option for the 28 October Budget, with the "big three" (income tax, NI, VAT rates) ruled out by the manifesto pledge. Aligning CGT rates with income tax bands is reported at around £14bn.
PolicyEngine-UK can express it cleanly, verified against an installed 2.89.2:
| parameter |
today (2026) |
aligned |
gov.hmrc.cgt.basic_rate |
0.18 |
0.20 |
gov.hmrc.cgt.higher_rate |
0.24 |
0.40 |
gov.hmrc.cgt.additional_rate |
0.24 |
0.45 |
The scorecard already carries HMRC capital_gains_tax level claims, but no CGT reform scoring at all.
Why this one is worth doing properly rather than quickly
The behavioural response IS the disagreement. Published CGT estimates differ mostly about how far realisations fall when the rate rises, not about the arithmetic — reported receipts have ranged £12–22bn historically on a broadly stable rate structure. PolicyEngine-UK carries a real response module (capital_gains_behavioural_response, relative_capital_gains_mtr_change, elasticity at gov.simulation.capital_gains_responses.elasticity), so this lane can do something the reckoner lanes cannot: score the same measure static AND post-behavioural, and publish the wedge between them.
That wedge is the interesting number. A static-only PE figure is not comparable to a behavioural OBR costing, and #67 already found that pretending otherwise produces an undecomposed divergence nobody can attribute.
Steps
Blocked on #51 merging and #77-style run capacity. Registry entry already exists: ab2026__cgt_align_with_income_tax_rates in #96.
Capital gains tax is the single most-reported broad-based option for the 28 October Budget, with the "big three" (income tax, NI, VAT rates) ruled out by the manifesto pledge. Aligning CGT rates with income tax bands is reported at around £14bn.
PolicyEngine-UK can express it cleanly, verified against an installed 2.89.2:
gov.hmrc.cgt.basic_rategov.hmrc.cgt.higher_rategov.hmrc.cgt.additional_rateThe scorecard already carries HMRC
capital_gains_taxlevel claims, but no CGT reform scoring at all.Why this one is worth doing properly rather than quickly
The behavioural response IS the disagreement. Published CGT estimates differ mostly about how far realisations fall when the rate rises, not about the arithmetic — reported receipts have ranged £12–22bn historically on a broadly stable rate structure. PolicyEngine-UK carries a real response module (
capital_gains_behavioural_response,relative_capital_gains_mtr_change, elasticity atgov.simulation.capital_gains_responses.elasticity), so this lane can do something the reckoner lanes cannot: score the same measure static AND post-behavioural, and publish the wedge between them.That wedge is the interesting number. A static-only PE figure is not comparable to a behavioural OBR costing, and #67 already found that pretending otherwise produces an undecomposed divergence nobody can attribute.
Steps
behavioural_elasticityaxis for this family, sized by the paired static/behavioural runs rather than left as a recipe (OBR costings divergence decomposition: axes registry + identity-checked pipeline (#59) #67's rule: recipes are executed, not asserted)Blocked on #51 merging and #77-style run capacity. Registry entry already exists:
ab2026__cgt_align_with_income_tax_ratesin #96.