Add blog post: Comparing PolicyEngine and OBR salary sacrifice cap estimates#704
Add blog post: Comparing PolicyEngine and OBR salary sacrifice cap estimates#704vahid-ahmadi wants to merge 2 commits intomainfrom
Conversation
…imates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
MaxGhenis
left a comment
There was a problem hiding this comment.
Review of salary sacrifice OBR comparison blog post
Good post overall — the structure is clear, the OBR comparison methodology is sound, and the interactive charts are well-built. A few items to address:
High priority: Annual Allowance claim needs verification
Under salary sacrifice, contributions are classified as employer contributions, which are exempt from the pension Annual Allowance (AA) tax charge. When reclassified as employee contributions, they push some workers over the £40,000 AA limit, triggering additional tax.
This statement appears factually incorrect. Under HMRC rules, employer contributions do count toward the Annual Allowance — they are not exempt. The AA limit applies to total pension input amounts from all sources (employee + employer). See HMRC's guidance on pension Annual Allowance.
The actual mechanism that could generate income tax revenue here is likely the Tapered Annual Allowance: salary sacrifice lowers "adjusted income," which can keep high earners below the taper threshold (£260k). When contributions are reclassified as employee contributions with higher salary, adjusted income rises, potentially triggering the taper and reducing the AA from £60k down to as low as £10k.
If the underlying model also treats employer contributions as AA-exempt, that would be a code-level issue in policyengine-uk worth investigating. If the model is correct but the blog description is wrong, just the text needs updating.
This is the most important item since it affects the credibility of the £0.61bn income tax finding, which is the post's most novel claim.
Medium: Missing trailing newline
The markdown file is missing a trailing newline at the end (the diff shows \ No newline at end of file). Minor but should be fixed for consistency.
Low priority suggestions
- "Winners and losers" section heading: Since there are no winners (only losers and unaffected), consider renaming to something like "Share of people affected" to be more precise.
- Conclusion section: Fairly brief — could mention limitations (no bonus sacrifice modelling, FRS right-tail underrepresentation) as caveats alongside the findings.
- Missing comma: "depends on how the policy is implemented**,** for example whether HMRC..." — there should be a colon or em-dash rather than a comma before "for example".
Overall this is a strong analysis. The AA claim is the main thing to resolve before merging.
The post claimed employer contributions (including salary sacrifice) are "exempt from the pension Annual Allowance tax charge." Under HMRC rules, all contributions count toward the AA. policyengine-uk's AA calculation excludes employer contributions, which is a modeling limitation, not a feature of UK tax law. Reframed the income tax section to be transparent about this limitation and directed readers to the more reliable NICs comparison. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Closing this PR because the revenue estimates need to be re-run with the corrected The post's key finding — +£1.68bn in income tax from Annual Allowance constraints — was driven by a bug where employer pension contributions (including salary sacrifice) were excluded from the AA calculation. This was fixed in PolicyEngine/policyengine-uk#1503. With the fix:
The NICs comparison, baseline salary sacrifice stats, distributional analysis, and behavioural adjustments sections are still valid and can be reused. @vahid-ahmadi — please re-run the analysis with the latest |
Summary
Test plan
/uk/research/comparing-policyengine-and-obr-salary-sacrifice-cap-estimates🤖 Generated with Claude Code