PolicyEngine / PolicyEngine/policyengine-scorecard
Decompose the OBR costings divergences: PE/OBR 1.40 on the PA/HRT freezes, 1.99 on the additional-rate cut
@vahid-ahmadi is already working on this.
Since Aug 17, 2026.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 6d 12h
- Merged PRs (30d)
- 32
Description
The mode-2 lane (#54/#56) now produces descriptive comparison rows, and its own smoke run shows the work this issue tracks: PE-UK's static costing of the PA/HRT freezes lands at 1.40× OBR (+£47.7bn vs +£34.0bn, FY2026-27) and the additional-rate threshold reduction at 1.96–1.99×. The comparison rows name the axes (static vs behavioural-adjusted, certified-world vs announcement baseline, CY-proxies-FY, head scope) and leave the remainder unexplained.
The US side has the precedent for what happens next: #30 decomposed the Yale-TPC tariff divergence into named components (weight year −1.34pp, residual ~0) and retired the gap. This is the UK sibling — and under the 2026-08-16 steer (model development centers on the Scorecard), the decomposition IS the PE-UK model-development queue: each named component either justifies the gap or becomes a fix.
Candidate components to size, per measure
- Behavioural adjustment: OBR's costings are post-behavioural; PE's are static. HMRC publishes static-vs-post-behavioural splits for some personal-tax measures (the ready reckoner's additional-rate rows carry large behavioural offsets — plausibly most of the 1.99). Where a published static leg exists, re-basis the comparison onto it and size the axis exactly.
- Baseline vintage: certified 2023-based world uprated to FY2026-27 vs OBR's announcement-time forecast baseline (earnings growth assumptions move fiscal-drag costings materially). The #13 baselines registry is where the alternative leg comes from.
- CY-proxies-FY: quantify by computing both adjacent CYs and interpolating.
- Head scope / population coverage: which heads PE aggregates vs the tax heads in the PMD row.
- Genuine model gaps: whatever remains after the named axes — the actual PE-UK development items (e.g. taxable-income composition at the top for the additional-rate measure).
Deliverable
Per-measure decomposition artifacts (the #30 pattern: one named component per row, signed, summing to the observed gap with a residual), landing next to results/uk/obr_costings/COMPARISON.md, plus assumptions-registry entries (#10) for each axis sized. Components that turn out to be model defects get filed against policyengine-uk with the Scorecard row as the evidence.
Depends on #56 (the lane), #13 (announcement-baseline legs). Feeds #55 (the behavioural components are exactly the published behavioural-effects population that issue harvests).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.