Correct the capital gains rate effective date and annualise the split year#1806
Open
MaxGhenis wants to merge 1 commit into
Open
Correct the capital gains rate effective date and annualise the split year#1806MaxGhenis wants to merge 1 commit into
MaxGhenis wants to merge 1 commit into
Conversation
… year Finance Act 2025 s.7 has effect for disposals made on or after 30 October 2024, but the rate parameters cited that section while dating the rise to 6 April 2025, placing a change the legislation makes in 2024-25 into the following year. Re-dating alone changes nothing, because fiscal year conversion samples each parameter at 30 April and writes that value across the year, so any change taking effect later in the year is dropped. Add opt-in day-weighted annualisation for parameters where a within-year average is the right annual figure, and apply it to the capital gains rates: 2024-25 becomes 207 days at the old rates and 158 days at the new. Blending stays opt-in because it is wrong for much of the model. A tax charged on a transaction applies at the rate in force on the date of the transaction, so stamp duty thresholds that changed mid-year must not be averaged. 93 parameters carry values in the dropped window and each needs its own decision. Rate mechanics move to 2025-26, where one schedule applies to the whole year, with the blended year covered by its own cases. CGT revenue on the enhanced FRS moves from £15.72bn to £17.34bn for 2024; 2023 and 2025 are unchanged, as is the rest of the YAML policy suite. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Finance Act 2025 s.7 states that its amendments "have effect in relation to disposals made on or after 30 October 2024" (https://www.legislation.gov.uk/ukpga/2025/8/section/7). The CGT rate parameters cite that section but date the rise to
2025-04-06, so 2024-25 is modelled entirely at 10%/20% for a tax year in which 18%/24% applied to disposals over its final five months. Raised as B2 in #1775.Why re-dating alone does not fix it
convert_to_fiscal_year_parameterssamples every parameter at 30 April and writes that one value across the whole year. A value dated2024-10-30is sampled at2024-04-30, so it never reaches the year it belongs to. Correcting the date on its own would leave the model unchanged while making the file look right.The same mechanism silently drops other mid-year changes. National Insurance carries
2022-11-06: 0.12for the Health and Social Care Levy repeal, and the model returns 0.1325 for every date in 2022, including 31 December.What changed
2024-10-30on the basic, higher and additional rates.fiscal_year_blend: true, and applied it to those three rates. 2024-25 becomes 207 days at 10%/20% and 158 days at 18%/24%: 13.463% and 21.732%.Why opt-in rather than model-wide
Day-weighting is the right annual figure for a rate applied to a flow spread across the year — it reproduces HMRC's own blended 2022-23 NI primary threshold, for instance. It is wrong for a tax charged on a transaction, which applies at the rate in force on the transaction date: averaging the stamp duty thresholds that changed on 8 July 2020 would tax every purchase at a rate no purchase faced.
93 parameters carry 205 values in the dropped window, including the private rent index, minimum wage, energy price cap and land transaction tax. Each needs its own decision, so this PR adds the mechanism and applies it only where the answer is clear. Blending an annual average is also an approximation for CGT, since disposals were not spread evenly across 2024-25 — forestalling ahead of the Budget pulled them forward — and it is closer to the law than either schedule applied to the whole year.
Effect
CGT on the enhanced FRS: 2024 £15.72bn → £17.34bn. 2023 and 2025 unchanged.
Tests
policyengine-core test policyengine_uk/tests/policy: 1112 passed, so nothing outside CGT moved.pytest -m "not microsimulation": 126 passed, 15 skipped.test_fiscal_year_parameters.pycover the blend, the statutory dates read before conversion, and that a parameter without the flag keeps a single sampled value.Depends on #1804 for Lint, which is red on
mainfor unrelated formatting drift.🤖 Generated with Claude Code