model 01 — tax-benefit microsimulation · pe-microsim · UK · US · hosted
Calculate taxes and benefits.
Compare current law with a reform for a UK or US household, or estimate population-wide revenue and distributional effects.
Checked rule by rule, not against a forecast.
No forecast error to report: the model applies published rules, and the worked £50,000 case on the code page can be checked with a pencil. That verifies the implemented rules — not that every area of legislation is covered by a test.
Population costings are a different kind of number: survey-weighted estimates (limits), published without an interval because the pipeline produces none. The one external comparison is a 1p rise in the UK basic rate, scored at £6.46bn in 2026 against HMRC's June 2025 ready reckoner of £6.9bn for 2026–27 — −6.4%. HMRC's estimate is post-behavioural on administrative SPI data where ours is static and survey-based, so this is a benchmark, not a validation. Our second published figure, £7.38bn in 2030, has no counterpart at all: the reckoner stops at 2028–29. Both endpoints have thin provenance — no scored run is committed for either, and the only executable check pins 2026 within ±5% of £6.46bn and is skipped without microdata access. Full account: the paper.
Scope and vintage.
| limit | detail |
|---|---|
| Static, no general equilibrium | Prices, wages and output do not move; behavioural responses are optional and post-hoc. |
| UK data vintage | enhanced_frs_2023_24; upstream's FRS 2024-25 vintage is not adopted here. |
| Survey-based aggregates | Population estimates carry sampling, imputation and ageing error, and no interval is computed for them. HMRC's costings use administrative Survey of Personal Incomes data and embed taxable-income elasticities, so a few hundred million of difference on a broad-based rate change is expected. |
| Gated UK microdata | Population runs need a HUGGING_FACE_TOKEN with access. Household calculations are unaffected. |
| Statute-vintage divergence with OLG | This package tracks the latest release; the OLG member is pinned to policyengine-uk==2.88.0, so baseline statute can disagree — a declared inconsistency. |
bridges into the macro members: OBR, OLG. Suite-wide evidence: validation.