score a reform
What would this reform do?
A statutory tax or benefit change has two acts: the direct effect on budgets and households, and the economy-wide feedback that follows. The suite scores both — the same two-step workflow the official institutions use, run on open models.
Two steps: direct effect, then macro feedback.
Microsimulation supplies the direct Exchequer effect, the macro model supplies the economy-wide feedback. A static-costing bridge wires the two together so a statutory reform can be scored end to end.
Long-run incentive effects are a different question — that is the OLG model. For choosing between models, see the catalog and comparison.
1p on the basic rate, end to end.
Worked example — 1p on the basic rate of income tax from April 2026, scored 2026–2030. PolicyEngine puts the direct yield at £6.46bn in 2026, rising to £7.38bn by 2030; HMRC's June 2025 ready reckoner puts 1p at £6.9bn in 2026–27 rising to about £8.2bn by 2028–29, so the static costing sits inside the official range, toward its lower end. The bridge converts that yield into a quarterly revenue path and applies the corresponding held add-factor to household disposable income. Propagated through the consumption function, GDP falls 0.020% (−£0.14bn) on impact in 2026Q1, deepening to 0.058% (−£0.40bn) by 2027Q4 on the March 2026 baseline — the sign and order of magnitude the OBR's own indirect-effect conventions imply. The full mechanics are on the OBR emulator page; the microdata caveats on the microsimulation page.
Read the caveats before the headline.
Each half of the score carries different uncertainty. The direct costing rests on survey microdata: population aggregates inherit sampling error, imputation and ageing assumptions from the enhanced FRS, so a headline budgetary cost is an estimate in a way a household calculation is not.
Every result carries a common score block — model class,
horizon, provenance, per-quantity units and time basis, assumptions,
caveats, and a comparability label. Cross-class results are often
complementary rather than like-for-like and must not be averaged or
ranked. Suite-wide evidence: validation.
One reform vocabulary, three surfaces.
The score_reform MCP tool and the pe-macro
score CLI take the same PolicyEngine reform dict — a
{parameter_path: value} map — and a scoring model:
microsim (population costing, no macro feedback),
obr (the emulator via the static-costing bridge),
og (OG-UK steady state; slow, local-only), or
og+microsim (dynamic scoring).
pe-macro score --country uk --reform '{"gov.hmrc.income_tax.rates.uk[0].rate":0.21}' --model obr
In a connected assistant, ask in plain language — “Score raising
the UK basic rate of income tax to 21p.” — and the
score_reform tool runs the same pipeline. Setup for the
hosted MCP server, CLI, and Python API is on the
Use page.
Want a reform scored for your organisation, or a question the current adapters don't reach? Commission an analysis.