From a786085b37e485cae92e07ca7cf5ce15f979c2ae Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:02:12 +0000 Subject: [PATCH 01/65] Add JOSS paper and bibliography for submission Adds paper.md and paper.bib for submission to the Journal of Open Source Software (JOSS). Paper covers all 6 required JOSS sections and cites adoption by 10 Downing Street, HM Treasury, NIESR, INET Oxford, IEA, and House of Lords parliamentary debate. Co-Authored-By: Claude Opus 4.6 --- changelog.d/joss-paper.added.md | 1 + paper.bib | 121 ++++++++++++++++++++++++++++++++ paper.md | 89 +++++++++++++++++++++++ 3 files changed, 211 insertions(+) create mode 100644 changelog.d/joss-paper.added.md create mode 100644 paper.bib create mode 100644 paper.md diff --git a/changelog.d/joss-paper.added.md b/changelog.d/joss-paper.added.md new file mode 100644 index 00000000..95a2b9b2 --- /dev/null +++ b/changelog.d/joss-paper.added.md @@ -0,0 +1 @@ +Added JOSS paper (paper.md and paper.bib) for submission to the Journal of Open Source Software. diff --git a/paper.bib b/paper.bib new file mode 100644 index 00000000..fd84f83a --- /dev/null +++ b/paper.bib @@ -0,0 +1,121 @@ +@article{sutherland2014euromod, + title={{EUROMOD}: the {European Union} tax-benefit microsimulation model}, + author={Sutherland, Holly and Figari, Francesco}, + journal={International Journal of Microsimulation}, + volume={6}, + number={1}, + pages={4--26}, + year={2013}, + doi={10.34196/ijm.00075} +} + +@software{openfisca, + title={{OpenFisca}: Open Rules as Code for Tax-Benefit Systems}, + author={{OpenFisca Contributors}}, + url={https://openfisca.org}, + year={2024} +} + +@software{policyengine_core, + title={{PolicyEngine Core}: A Microsimulation Framework}, + author={Woodruff, Nikhil and Ghenis, Max and Volk, Anthony}, + url={https://github.com/PolicyEngine/policyengine-core}, + year={2024} +} + +@software{pe_uk_data, + title={{PolicyEngine UK Data}: Enhanced Microdata for UK Tax-Benefit Microsimulation}, + author={Woodruff, Nikhil and Ghenis, Max and Ahmadi, Vahid}, + url={https://github.com/PolicyEngine/policyengine-uk-data}, + year={2025} +} + +@misc{frs2020, + title={Family Resources Survey, 2019-2020}, + author={{Department for Work and Pensions} and {Office for National Statistics} and {NatCen Social Research}}, + year={2021}, + publisher={UK Data Service}, + note={SN: 8802}, + doi={10.5255/UKDA-SN-8802-1} +} + +@misc{hansard2026nic, + title={National Insurance Contributions (Employer Pensions Contributions) Bill -- Grand Committee}, + author={{House of Lords}}, + year={2026}, + month={2}, + day={24}, + note={Hansard, GC 371--372. Baroness Altmann citing PolicyEngine and its interactive dashboard for distributional analysis of pension contribution reforms}, + url={https://hansard.parliament.uk/Lords/2026-02-24/debates/A381F7D6-0A3C-48FD-8D9E-67751E25877A/NationalInsuranceContributions(EmployerPensionsContributions)Bill} +} + +@techreport{niesr2025living, + title={{UK} Living Standards Review 2025}, + author={Mosley, Max and Wattam, Ryan and Vincent, Carol}, + institution={National Institute of Economic and Social Research}, + year={2025}, + url={https://niesr.ac.uk/publications/uk-living-standards-review-2025} +} + +@online{ghenis2026no10, + title={{PolicyEngine} powers rapid policy analysis at {No 10 Downing Street}}, + author={Ghenis, Max}, + year={2026}, + month={1}, + day={20}, + url={https://policyengine.org/uk/research/policyengine-no-10-downing-street}, + urldate={2026-03-19} +} + +@misc{hmt2024atrs, + title={{HMT}: {PolicyEngine UK} -- Algorithmic Transparency Recording Standard}, + author={{HM Treasury}}, + year={2024}, + month={12}, + day={17}, + note={ATRS v3.0. HM Treasury Personal Tax, Welfare and Pensions team exploring PolicyEngine UK for advising policymakers on the impact of tax and welfare measures on households}, + url={https://www.gov.uk/algorithmic-transparency-records/hmt-modelling-policy-engine} +} + +@article{youngman2026carbon, + title={Agent-based macroeconomics for the {UK}'s {Seventh Carbon Budget}}, + author={Youngman, Tom and Lennox, Tim and Lopes Alves, M. and Palola, Pirta and Tankwa, Brendon and Bailey, Emma and Ravigne, Emilien and Ter Horst, Thijs and Wagenvoort, Benjamin and Lightfoot Brown, Harry and Moran, Jose and Farmer, Doyne}, + year={2026}, + eprint={2602.15607}, + archiveprefix={arXiv}, + primaryclass={econ.GN}, + url={https://arxiv.org/abs/2602.15607} +} + +@techreport{woodruff2024nic, + title={Raising employer {NIC} in the {Autumn Budget}}, + author={Woodruff, Nikhil}, + institution={Institute of Economic Affairs}, + year={2024}, + month={10}, + url={https://iea.org.uk/publications/raising-employer-nic-in-the-autumn-budget/} +} + +@techreport{woodruff2025tax, + title={Impact of Tax Changes 2025--2026}, + author={Woodruff, Nikhil}, + institution={Institute of Economic Affairs}, + year={2025}, + month={3}, + url={https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/} +} + +@software{claude2025, + title={Claude}, + author={{Anthropic}}, + year={2025}, + url={https://www.anthropic.com/claude} +} + +@misc{nuffield2024grant, + title={Enhancing, localising and democratising tax-benefit policy analysis}, + author={{Nuffield Foundation}}, + year={2024}, + note={General Election Analysis and Briefing Fund grant to PolicyEngine}, + url={https://www.nuffieldfoundation.org/project/enhancing-localising-and-democratising-tax-benefit-policy-analysis} +} diff --git a/paper.md b/paper.md new file mode 100644 index 00000000..7cfe0677 --- /dev/null +++ b/paper.md @@ -0,0 +1,89 @@ +--- +title: "PolicyEngine UK: An Open-Source Microsimulation Model of the UK Tax-Benefit System" +tags: + - Python + - microsimulation + - tax + - benefit + - public policy + - economic analysis +authors: + - name: Max Ghenis + orcid: 0000-0000-0000-0000 + affiliation: 1 + - name: Nikhil Woodruff + orcid: 0000-0000-0000-0000 + affiliation: 1 + - name: Vahid Ahmadi + orcid: 0009-0004-1093-6272 + affiliation: 1 + corresponding: true +affiliations: + - name: PolicyEngine + index: 1 +date: 19 March 2026 +bibliography: paper.bib +--- + +# Summary + +PolicyEngine UK is an open-source microsimulation model of the United Kingdom's tax-benefit system, implemented in Python. It calculates variable values over UK entities from given policy parameters and structures, supporting two primary uses: computing statistics under current tax and benefit law, and simulating the effects of potential legislative changes. The model covers over 37 programmes administered by UK government agencies including HM Revenue & Customs (HMRC), the Department for Work and Pensions (DWP), the Department for Education (DfE), Revenue Scotland, and Social Security Scotland. PolicyEngine UK supports both individual household simulations via the `Simulation` class and population-wide microsimulations via the `Microsimulation` class, which incorporates survey weights from the Enhanced Family Resources Survey, prepared and published in the companion `policyengine-uk-data` repository [@pe_uk_data], to generate population-level estimates. + +# Statement of Need + +Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. In the UK, existing microsimulation models such as UKMOD [@sutherland2014euromod] and the IPPR Tax-Benefit Model are either restricted-access or proprietary, limiting transparency and reproducibility in policy analysis. + +PolicyEngine UK addresses this gap by providing a fully open-source, publicly accessible microsimulation model. Researchers can install the package with `pip install policyengine-uk`, supply their own microdata, and compute the impact of current law or hypothetical policy reforms on any household or the full UK population. The `Simulation` class supports individual household analysis, while the `Microsimulation` class enables population-level aggregate analysis using Enhanced FRS datasets from the `policyengine-uk-data` repository [@pe_uk_data] with calibrated weights. The model's open development on GitHub enables external validation, community contributions, and reproducible policy analysis. + +# State of the Field + +The primary UK microsimulation models include UKMOD, maintained by the Centre for Microsimulation and Policy Analysis at the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and models maintained internally by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine UK originated as OpenFisca UK and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. The UKMOD team's published model descriptions accelerated the early development of the model. + +PolicyEngine UK differentiates itself in several ways: + +- **Fully open-source and pip-installable**: users can install and run the model without institutional access or licence fees. +- **Comprehensive programme coverage**: 37 modelled programmes spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. +- **Integration with the PolicyEngine web application**: the model powers an interactive web interface at [policyengine.org](https://policyengine.org) that allows non-technical users to explore policy reforms. +- **Programmatic reform and scenario API**: users can define hypothetical policy reforms as simple parameter dictionaries, compose multiple scenarios with the `+` operator, or implement structural changes via simulation modifiers — and evaluate their impact on any household or the full population. +- **Labour supply dynamics**: a behavioural response module implements the Office for Budget Responsibility's labour supply elasticity framework, modelling both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. +- **Enhanced microdata**: the model supports dataset fusion and calibration to align survey microdata with administrative totals across multiple dimensions. + +# Software Design + +PolicyEngine UK is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The model is organised into three main components: + +**Parameters** define the rates, thresholds, and other numeric values of the tax-benefit system. These are stored as YAML files organised by government department (e.g., `parameters/gov/hmrc/` for HMRC policies) and indexed by time period, enabling the model to represent legislative changes over time. Parameters are addressed via hierarchical paths such as `gov.hmrc.income_tax.rates.uk[0].rate` for the basic income tax rate or `gov.dwp.universal_credit.standard_allowance.single.OVER_25` for Universal Credit allowances. + +**Variables** define the formulas that compute tax liabilities, benefit entitlements, and other derived quantities. Each variable is implemented as a Python class that specifies its computation logic, the entity it applies to (person, benefit unit, or household), and its time period. The model contains over 700 variable definitions covering the full scope of the UK tax-benefit system. + +**Reforms and Scenarios** allow users to modify parameters or variable formulas to represent hypothetical policy changes. Simple reforms can be expressed as dictionaries mapping parameter paths to new values, while the `Scenario` class supports composable reforms, time-varying parameters for phased implementation across multiple years, and simulation modifiers for complex structural changes such as repealing the two-child benefit limit. Scenarios apply policy changes without modifying the original simulation, enabling straightforward baseline-versus-reform comparison. + +The model supports two input modes. The `Simulation` class accepts programmatically defined household situations — specifying ages, incomes, housing costs, and household composition — for individual-level analysis. The `Microsimulation` class loads population-level survey microdata from the `policyengine-uk-data` repository [@pe_uk_data] with calibrated weights, enabling computation of aggregate statistics including poverty rates, inequality metrics, and budgetary impacts. Revenue impacts are computed via the accounting identity: when household net income decreases under a reform, government revenue increases by the equivalent amount. + +The dynamics module extends the static microsimulation with labour supply behavioural responses. It applies group-specific substitution and income elasticities based on OBR estimates, computing individual-level employment income adjustments and aggregate full-time equivalent (FTE) employment changes. + +All code examples in the documentation are automatically re-executed with each new release to ensure correctness. + +# Research Impact Statement + +PolicyEngine UK has demonstrated research impact across government, academia, and policy research. + +**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine UK for government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine UK to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine UK in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. + +**Parliamentary citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. + +**Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero, noting that "the PolicyEngine microsimulation model addresses undersampling of rich households by using the Wealth and Assets Survey to impute additional wealth households into the Family Resources Survey." + +**Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyse employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. + +# Acknowledgements + +This work was supported by the Nuffield Foundation since September 2024 [@nuffield2024grant]. The Nuffield Foundation had no involvement in the design, development, or content of this software or paper. + +We acknowledge contributions from all PolicyEngine UK contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. We also acknowledge the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey. + +# AI Usage Disclosure + +Generative AI tools (Claude by Anthropic, 2024–2026 [@claude2025]) were used to assist with code refactoring, test scaffolding, and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modelling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. + +# References From 7fb0128228c0e4897cde44fff8810cff7fc31c9f Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:07:06 +0000 Subject: [PATCH 02/65] Add Pavel Makarchuk as author in JOSS paper Co-Authored-By: Claude Opus 4.6 --- paper.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/paper.md b/paper.md index 7cfe0677..85587c0c 100644 --- a/paper.md +++ b/paper.md @@ -18,6 +18,9 @@ authors: orcid: 0009-0004-1093-6272 affiliation: 1 corresponding: true + - name: Pavel Makarchuk + orcid: 0000-0000-0000-0000 + affiliation: 1 affiliations: - name: PolicyEngine index: 1 From 7aedc2f5c5c9ce8ce45b0c37c32ef921b15f1ec0 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:11:03 +0000 Subject: [PATCH 03/65] Adapt JOSS paper from UK-only to multi-country policyengine.py Rewrites paper.md to describe the policyengine package as a unified multi-country (UK + US) microsimulation framework rather than the UK-only policyengine-uk package. Updates title, summary, statement of need, state of the field, software design, and acknowledgements to reflect the country-agnostic architecture. Adds TAXSIM and US data references to paper.bib. Co-Authored-By: Claude Opus 4.6 --- paper.bib | 17 +++++++++++++++++ paper.md | 47 +++++++++++++++++++++++++---------------------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/paper.bib b/paper.bib index fd84f83a..7b4421be 100644 --- a/paper.bib +++ b/paper.bib @@ -30,6 +30,23 @@ @software{pe_uk_data year={2025} } +@software{pe_us_data, + title={{PolicyEngine US Data}: Enhanced Microdata for US Tax-Benefit Microsimulation}, + author={Ghenis, Max and Woodruff, Nikhil}, + url={https://github.com/PolicyEngine/policyengine-us-data}, + year={2025} +} + +@article{taxsim, + title={{TAXSIM}: A Tool for Calculating Federal and State Income Tax Liabilities}, + author={Feenberg, Daniel R. and Coutts, Elisabeth}, + journal={National Tax Journal}, + volume={46}, + number={3}, + pages={271--280}, + year={1993} +} + @misc{frs2020, title={Family Resources Survey, 2019-2020}, author={{Department for Work and Pensions} and {Office for National Statistics} and {NatCen Social Research}}, diff --git a/paper.md b/paper.md index 85587c0c..fdecc8ec 100644 --- a/paper.md +++ b/paper.md @@ -1,5 +1,5 @@ --- -title: "PolicyEngine UK: An Open-Source Microsimulation Model of the UK Tax-Benefit System" +title: "PolicyEngine: An Open-Source Multi-Country Tax-Benefit Microsimulation Framework" tags: - Python - microsimulation @@ -30,52 +30,55 @@ bibliography: paper.bib # Summary -PolicyEngine UK is an open-source microsimulation model of the United Kingdom's tax-benefit system, implemented in Python. It calculates variable values over UK entities from given policy parameters and structures, supporting two primary uses: computing statistics under current tax and benefit law, and simulating the effects of potential legislative changes. The model covers over 37 programmes administered by UK government agencies including HM Revenue & Customs (HMRC), the Department for Work and Pensions (DWP), the Department for Education (DfE), Revenue Scotland, and Social Security Scotland. PolicyEngine UK supports both individual household simulations via the `Simulation` class and population-wide microsimulations via the `Microsimulation` class, which incorporates survey weights from the Enhanced Family Resources Survey, prepared and published in the companion `policyengine-uk-data` repository [@pe_uk_data], to generate population-level estimates. +PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The `policyengine` package provides a unified interface for running policy simulations, analysing distributional impacts, and visualising results across multiple countries — currently the United Kingdom and the United States. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-uk` and `policyengine-us`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations via the `Simulation` class and population-wide microsimulations using representative survey microdata with calibrated weights — the Enhanced Family Resources Survey for the UK [@pe_uk_data] and the Current Population Survey for the US [@pe_us_data]. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. # Statement of Need -Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. In the UK, existing microsimulation models such as UKMOD [@sutherland2014euromod] and the IPPR Tax-Benefit Model are either restricted-access or proprietary, limiting transparency and reproducibility in policy analysis. +Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models — such as UKMOD [@sutherland2014euromod] in the UK and TAXSIM [@taxsim] in the US — are either restricted-access, proprietary, or limited to a single country, constraining transparency, reproducibility, and cross-country comparison. -PolicyEngine UK addresses this gap by providing a fully open-source, publicly accessible microsimulation model. Researchers can install the package with `pip install policyengine-uk`, supply their own microdata, and compute the impact of current law or hypothetical policy reforms on any household or the full UK population. The `Simulation` class supports individual household analysis, while the `Microsimulation` class enables population-level aggregate analysis using Enhanced FRS datasets from the `policyengine-uk-data` repository [@pe_uk_data] with calibrated weights. The model's open development on GitHub enables external validation, community contributions, and reproducible policy analysis. +PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the package with `pip install policyengine` (or selectively with `pip install policyengine[uk]` or `pip install policyengine[us]`), supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The `Simulation` class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field -The primary UK microsimulation models include UKMOD, maintained by the Centre for Microsimulation and Policy Analysis at the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and models maintained internally by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine UK originated as OpenFisca UK and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. The UKMOD team's published model descriptions accelerated the early development of the model. +In the UK, the primary microsimulation models include UKMOD, maintained by the Centre for Microsimulation and Policy Analysis at the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and models maintained internally by HM Treasury and the Institute for Fiscal Studies. In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides tax calculations, while the Tax Policy Center and Congressional Budget Office maintain proprietary models. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. -PolicyEngine UK differentiates itself in several ways: +PolicyEngine differentiates itself in several ways: +- **Multi-country, unified framework**: a single Python package supports the UK and US tax-benefit systems, enabling cross-country analysis with a consistent API. - **Fully open-source and pip-installable**: users can install and run the model without institutional access or licence fees. -- **Comprehensive programme coverage**: 37 modelled programmes spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. -- **Integration with the PolicyEngine web application**: the model powers an interactive web interface at [policyengine.org](https://policyengine.org) that allows non-technical users to explore policy reforms. -- **Programmatic reform and scenario API**: users can define hypothetical policy reforms as simple parameter dictionaries, compose multiple scenarios with the `+` operator, or implement structural changes via simulation modifiers — and evaluate their impact on any household or the full population. -- **Labour supply dynamics**: a behavioural response module implements the Office for Budget Responsibility's labour supply elasticity framework, modelling both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. -- **Enhanced microdata**: the model supports dataset fusion and calibration to align survey microdata with administrative totals across multiple dimensions. +- **Comprehensive programme coverage**: the UK model covers over 37 programmes spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales; the US model covers federal income tax, payroll taxes, SNAP, SSI, Medicaid, TANF, and state-level tax systems. +- **Integration with the PolicyEngine web application**: the models power an interactive web interface at [policyengine.org](https://policyengine.org) that allows non-technical users to explore policy reforms in both countries. +- **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. +- **Distributional analysis outputs**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (UK parliamentary constituencies, US congressional districts). +- **Labour supply dynamics**: behavioural response modules model both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. # Software Design -PolicyEngine UK is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The model is organised into three main components: +PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The `policyengine` package is organised as a country-agnostic layer with the following core components: -**Parameters** define the rates, thresholds, and other numeric values of the tax-benefit system. These are stored as YAML files organised by government department (e.g., `parameters/gov/hmrc/` for HMRC policies) and indexed by time period, enabling the model to represent legislative changes over time. Parameters are addressed via hierarchical paths such as `gov.hmrc.income_tax.rates.uk[0].rate` for the basic income tax rate or `gov.dwp.universal_credit.standard_allowance.single.OVER_25` for Universal Credit allowances. +**Simulation and Dataset** classes provide the primary interface. The `Simulation` class executes tax-benefit models on datasets, applying policy reforms and caching results. The `Dataset` class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Enhanced Family Resources Survey for the UK and the Current Population Survey for the US — are loaded from companion data repositories [@pe_uk_data; @pe_us_data]. -**Variables** define the formulas that compute tax liabilities, benefit entitlements, and other derived quantities. Each variable is implemented as a Python class that specifies its computation logic, the entity it applies to (person, benefit unit, or household), and its time period. The model contains over 700 variable definitions covering the full scope of the UK tax-benefit system. +**Policy and Parameter** classes define the reform system. The `Policy` class bundles parametric reforms that modify tax-benefit system parameters. The `Parameter` class represents system settings (tax rates, benefit thresholds, income limits), while `ParameterValue` supports time-bound values, enabling phased policy implementations across multiple years. -**Reforms and Scenarios** allow users to modify parameters or variable formulas to represent hypothetical policy changes. Simple reforms can be expressed as dictionaries mapping parameter paths to new values, while the `Scenario` class supports composable reforms, time-varying parameters for phased implementation across multiple years, and simulation modifiers for complex structural changes such as repealing the two-child benefit limit. Scenarios apply policy changes without modifying the original simulation, enabling straightforward baseline-versus-reform comparison. +**Variable and TaxBenefitModelVersion** classes encapsulate country-specific logic. Each `Variable` is a computed quantity (income tax, benefit entitlement) with entity mappings. The `TaxBenefitModelVersion` class represents a versioned country model, storing variables, parameters, and execution logic. The framework uses `importlib` to conditionally import country packages, allowing graceful operation when only one country is installed. -The model supports two input modes. The `Simulation` class accepts programmatically defined household situations — specifying ages, incomes, housing costs, and household composition — for individual-level analysis. The `Microsimulation` class loads population-level survey microdata from the `policyengine-uk-data` repository [@pe_uk_data] with calibrated weights, enabling computation of aggregate statistics including poverty rates, inequality metrics, and budgetary impacts. Revenue impacts are computed via the accounting identity: when household net income decreases under a reform, government revenue increases by the equivalent amount. +**Output classes** provide standardised analysis. These include `Aggregate` for sum, mean, and count statistics; `DecileImpact` and `IntraDecileImpact` for distributional analysis by income decile; `Poverty` and `Inequality` for welfare metrics; `ChangeAggregate` for baseline-versus-reform comparisons; and region-specific classes such as `ConstituencyImpact` (UK) and `CongressionalDistrictImpact` (US). All output classes produce PolicyEngine-branded Plotly visualisations. -The dynamics module extends the static microsimulation with labour supply behavioural responses. It applies group-specific substitution and income elasticities based on OBR estimates, computing individual-level employment income adjustments and aggregate full-time equivalent (FTE) employment changes. +**Region and RegionRegistry** classes manage geographic scope, enabling sub-national analysis for regions within each country. + +The country-specific models (`policyengine-uk` and `policyengine-us`) define parameters as YAML files organised by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programmes. All code examples in the documentation are automatically re-executed with each new release to ensure correctness. # Research Impact Statement -PolicyEngine UK has demonstrated research impact across government, academia, and policy research. +PolicyEngine has demonstrated research impact across government, academia, and policy research in both the UK and US. -**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine UK for government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine UK to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine UK in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. +**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. -**Parliamentary citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. +**Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. -**Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero, noting that "the PolicyEngine microsimulation model addresses undersampling of rich households by using the Wealth and Assets Survey to impute additional wealth households into the Family Resources Survey." +**Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine's methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero, noting that "the PolicyEngine microsimulation model addresses undersampling of rich households by using the Wealth and Assets Survey to impute additional wealth households into the Family Resources Survey." **Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyse employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. @@ -83,7 +86,7 @@ PolicyEngine UK has demonstrated research impact across government, academia, an This work was supported by the Nuffield Foundation since September 2024 [@nuffield2024grant]. The Nuffield Foundation had no involvement in the design, development, or content of this software or paper. -We acknowledge contributions from all PolicyEngine UK contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. We also acknowledge the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey. +We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. We also acknowledge the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey, and the US Census Bureau for the Current Population Survey. # AI Usage Disclosure From ac8a60281aa37efae25fc99f888557839302b018 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:19:30 +0000 Subject: [PATCH 04/65] Add US research impact citations to JOSS paper Adds congressional citation (Young Adult Tax Credit Act, H.R.7547), NBER partnership (TAXSIM emulator MOU), Niskanen Center CTC report, NTA conference presentation, and Georgetown Beeck Center collaboration to the Research Impact section. Adds corresponding BibTeX entries. Co-Authored-By: Claude Opus 4.6 --- paper.bib | 44 ++++++++++++++++++++++++++++++++++++++++++++ paper.md | 8 +++++--- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/paper.bib b/paper.bib index 7b4421be..7ef1d313 100644 --- a/paper.bib +++ b/paper.bib @@ -122,6 +122,50 @@ @techreport{woodruff2025tax url={https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/} } +@misc{mcgarvey2024yatc, + title={Congressman {Morgan McGarvey} Introduces {Young Adult Tax Credit Act}}, + author={{Office of Representative Morgan McGarvey}}, + year={2024}, + month={3}, + day={5}, + note={Press release citing PolicyEngine analysis of H.R.7547}, + url={https://mcgarvey.house.gov/media/press-releases/congressman-morgan-mcgarvey-introduces-young-adult-tax-credit-act} +} + +@online{pe_nber_mou, + title={{PolicyEngine} and {NBER} Sign {MOU} for {TAXSIM} Emulator Development}, + author={Ghenis, Max}, + year={2024}, + url={https://www.policyengine.org/us/research/policyengine-nber-mou-taxsim} +} + +@misc{ghenis2024nta, + title={Enhanced {Current Population Survey}: Integrating {IRS} Public Use File Data Using Quantile Regression Forests}, + author={Ghenis, Max and DeBacker, Jason}, + year={2024}, + month={11}, + note={Presented at the 117th Annual Conference on Taxation, National Tax Association, Detroit, Michigan}, + url={https://www.policyengine.org/us/research/nta-2024} +} + +@techreport{mccabe2024ctc, + title={Building a Stronger Foundation for {American} Families: Options for {Child Tax Credit} Reform}, + author={McCabe, Joshua and Sargeant, Leah}, + institution={Niskanen Center}, + year={2024}, + month={3}, + url={https://www.niskanencenter.org/building-a-stronger-foundation-for-american-families-options-for-child-tax-credit-reform/} +} + +@misc{beeck2024rac, + title={Rules as Code Community of Practice -- {Policy2Code} Demo Day}, + author={{Beeck Center for Social Impact and Innovation}}, + year={2024}, + month={9}, + note={Georgetown University. PolicyEngine presented at BenCon 2024 Policy2Code Prototyping Challenge}, + url={https://beeckcenter.georgetown.edu/rac-demo-day/} +} + @software{claude2025, title={Claude}, author={{Anthropic}}, diff --git a/paper.md b/paper.md index fdecc8ec..c8effbd1 100644 --- a/paper.md +++ b/paper.md @@ -74,13 +74,15 @@ All code examples in the documentation are automatically re-executed with each n PolicyEngine has demonstrated research impact across government, academia, and policy research in both the UK and US. -**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. +**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for UK government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. In the US, PolicyEngine collaborated with the Better Government Lab — a joint centre of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@beeck2024rac]. -**Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. +**Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. + +**Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. **Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine's methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero, noting that "the PolicyEngine microsimulation model addresses undersampling of rich households by using the Wealth and Assets Survey to impute additional wealth households into the Family Resources Survey." -**Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyse employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. +**Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyse employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, becoming the first external organisation to leverage PolicyEngine's enhanced US microdata [@mccabe2024ctc]. # Acknowledgements From 0e61eda1b58aac60f00dde888d39e3e9bc6952bb Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:27:40 +0000 Subject: [PATCH 05/65] Fix citations, convert to American spelling, and fix grammar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Convert all British spellings to American English (organised → organized, programme → program, labour → labor, behavioural → behavioral, modelling → modeling, licence → license, etc.) - Fix Beeck Center citation: was pointing to a 2022 event but labeled as 2024. Replace with correct Better Government Lab collaboration reference (pe_bgl) - Soften Youngman et al. claim: confirmed paper cites PolicyEngine UK data but removed unverifiable direct quote - Remove unused beeck2024rac bib entry Co-Authored-By: Claude Opus 4.6 --- paper.bib | 10 ++++------ paper.md | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/paper.bib b/paper.bib index 7ef1d313..5b586fd4 100644 --- a/paper.bib +++ b/paper.bib @@ -157,13 +157,11 @@ @techreport{mccabe2024ctc url={https://www.niskanencenter.org/building-a-stronger-foundation-for-american-families-options-for-child-tax-credit-reform/} } -@misc{beeck2024rac, - title={Rules as Code Community of Practice -- {Policy2Code} Demo Day}, - author={{Beeck Center for Social Impact and Innovation}}, +@online{pe_bgl, + title={{PolicyEngine} and {Better Government Lab} Collaboration}, + author={Ghenis, Max}, year={2024}, - month={9}, - note={Georgetown University. PolicyEngine presented at BenCon 2024 Policy2Code Prototyping Challenge}, - url={https://beeckcenter.georgetown.edu/rac-demo-day/} + url={https://www.policyengine.org/us/research/policyengine-better-government-lab-collaboration} } @software{claude2025, diff --git a/paper.md b/paper.md index c8effbd1..67b40033 100644 --- a/paper.md +++ b/paper.md @@ -30,7 +30,7 @@ bibliography: paper.bib # Summary -PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The `policyengine` package provides a unified interface for running policy simulations, analysing distributional impacts, and visualising results across multiple countries — currently the United Kingdom and the United States. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-uk` and `policyengine-us`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations via the `Simulation` class and population-wide microsimulations using representative survey microdata with calibrated weights — the Enhanced Family Resources Survey for the UK [@pe_uk_data] and the Current Population Survey for the US [@pe_us_data]. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. +PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The `policyengine` package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across multiple countries — currently the United Kingdom and the United States. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-uk` and `policyengine-us`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations via the `Simulation` class and population-wide microsimulations using representative survey microdata with calibrated weights — the Enhanced Family Resources Survey for the UK [@pe_uk_data] and the Current Population Survey for the US [@pe_us_data]. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. # Statement of Need @@ -45,16 +45,16 @@ In the UK, the primary microsimulation models include UKMOD, maintained by the C PolicyEngine differentiates itself in several ways: - **Multi-country, unified framework**: a single Python package supports the UK and US tax-benefit systems, enabling cross-country analysis with a consistent API. -- **Fully open-source and pip-installable**: users can install and run the model without institutional access or licence fees. -- **Comprehensive programme coverage**: the UK model covers over 37 programmes spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales; the US model covers federal income tax, payroll taxes, SNAP, SSI, Medicaid, TANF, and state-level tax systems. +- **Fully open-source and pip-installable**: users can install and run the model without institutional access or license fees. +- **Comprehensive program coverage**: the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales; the US model covers federal income tax, payroll taxes, SNAP, SSI, Medicaid, TANF, and state-level tax systems. - **Integration with the PolicyEngine web application**: the models power an interactive web interface at [policyengine.org](https://policyengine.org) that allows non-technical users to explore policy reforms in both countries. - **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. - **Distributional analysis outputs**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (UK parliamentary constituencies, US congressional districts). -- **Labour supply dynamics**: behavioural response modules model both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. +- **Labor supply dynamics**: behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. # Software Design -PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The `policyengine` package is organised as a country-agnostic layer with the following core components: +PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The `policyengine` package is organized as a country-agnostic layer with the following core components: **Simulation and Dataset** classes provide the primary interface. The `Simulation` class executes tax-benefit models on datasets, applying policy reforms and caching results. The `Dataset` class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Enhanced Family Resources Survey for the UK and the Current Population Survey for the US — are loaded from companion data repositories [@pe_uk_data; @pe_us_data]. @@ -62,11 +62,11 @@ PolicyEngine is built on the PolicyEngine Core framework, which extends the Open **Variable and TaxBenefitModelVersion** classes encapsulate country-specific logic. Each `Variable` is a computed quantity (income tax, benefit entitlement) with entity mappings. The `TaxBenefitModelVersion` class represents a versioned country model, storing variables, parameters, and execution logic. The framework uses `importlib` to conditionally import country packages, allowing graceful operation when only one country is installed. -**Output classes** provide standardised analysis. These include `Aggregate` for sum, mean, and count statistics; `DecileImpact` and `IntraDecileImpact` for distributional analysis by income decile; `Poverty` and `Inequality` for welfare metrics; `ChangeAggregate` for baseline-versus-reform comparisons; and region-specific classes such as `ConstituencyImpact` (UK) and `CongressionalDistrictImpact` (US). All output classes produce PolicyEngine-branded Plotly visualisations. +**Output classes** provide standardized analysis. These include `Aggregate` for sum, mean, and count statistics; `DecileImpact` and `IntraDecileImpact` for distributional analysis by income decile; `Poverty` and `Inequality` for welfare metrics; `ChangeAggregate` for baseline-versus-reform comparisons; and region-specific classes such as `ConstituencyImpact` (UK) and `CongressionalDistrictImpact` (US). All output classes produce PolicyEngine-branded Plotly visualizations. **Region and RegionRegistry** classes manage geographic scope, enabling sub-national analysis for regions within each country. -The country-specific models (`policyengine-uk` and `policyengine-us`) define parameters as YAML files organised by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programmes. +The country-specific models (`policyengine-uk` and `policyengine-us`) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programs. All code examples in the documentation are automatically re-executed with each new release to ensure correctness. @@ -74,15 +74,15 @@ All code examples in the documentation are automatically re-executed with each n PolicyEngine has demonstrated research impact across government, academia, and policy research in both the UK and US. -**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for UK government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. In the US, PolicyEngine collaborated with the Better Government Lab — a joint centre of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@beeck2024rac]. +**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for UK government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. In the US, PolicyEngine collaborated with the Better Government Lab — a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@pe_bgl]. **Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. **Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. -**Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine's methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero, noting that "the PolicyEngine microsimulation model addresses undersampling of rich households by using the Wealth and Assets Survey to impute additional wealth households into the Family Resources Survey." +**Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero. -**Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyse employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, becoming the first external organisation to leverage PolicyEngine's enhanced US microdata [@mccabe2024ctc]. +**Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyze employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, becoming the first external organization to leverage PolicyEngine's enhanced US microdata [@mccabe2024ctc]. # Acknowledgements @@ -92,6 +92,6 @@ We acknowledge contributions from all PolicyEngine contributors, and thank the O # AI Usage Disclosure -Generative AI tools (Claude by Anthropic, 2024–2026 [@claude2025]) were used to assist with code refactoring, test scaffolding, and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modelling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. +Generative AI tools (Claude by Anthropic, 2024–2026 [@claude2025]) were used to assist with code refactoring, test scaffolding, and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. # References From f893bd3fced2085221a91d9ab85c0464faa0b161 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:36:04 +0000 Subject: [PATCH 06/65] Reorder authors: Pavel Makarchuk before Vahid Ahmadi Co-Authored-By: Claude Opus 4.6 --- paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper.md b/paper.md index 67b40033..2b9039e3 100644 --- a/paper.md +++ b/paper.md @@ -14,13 +14,13 @@ authors: - name: Nikhil Woodruff orcid: 0000-0000-0000-0000 affiliation: 1 + - name: Pavel Makarchuk + orcid: 0000-0000-0000-0000 + affiliation: 1 - name: Vahid Ahmadi orcid: 0009-0004-1093-6272 affiliation: 1 corresponding: true - - name: Pavel Makarchuk - orcid: 0000-0000-0000-0000 - affiliation: 1 affiliations: - name: PolicyEngine index: 1 From 95e114c2e3cef0abd94bc3eb17e8c74e5f7af7c3 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:37:40 +0000 Subject: [PATCH 07/65] Edit Summary and Statement of Need per review feedback - Change country order to "the US and the UK" - Remove "via the Simulation class" from Summary - Remove inline dataset names (Enhanced FRS, CPS) from Summary - Make Statement of Need more specific about access barriers for existing models (UKMOD requires institutional application, TAXSIM covers only taxes not benefits, HMT/IFS/CBO/TPC are fully proprietary) Co-Authored-By: Claude Opus 4.6 --- paper.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/paper.md b/paper.md index 2b9039e3..8c4ddd12 100644 --- a/paper.md +++ b/paper.md @@ -30,11 +30,11 @@ bibliography: paper.bib # Summary -PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The `policyengine` package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across multiple countries — currently the United Kingdom and the United States. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-uk` and `policyengine-us`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations via the `Simulation` class and population-wide microsimulations using representative survey microdata with calibrated weights — the Enhanced Family Resources Survey for the UK [@pe_uk_data] and the Current Population Survey for the US [@pe_us_data]. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. +PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The `policyengine` package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-uk` and `policyengine-us`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. # Statement of Need -Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models — such as UKMOD [@sutherland2014euromod] in the UK and TAXSIM [@taxsim] in the US — are either restricted-access, proprietary, or limited to a single country, constraining transparency, reproducibility, and cross-country comparison. +Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by HM Treasury, the Institute for Fiscal Studies, the Congressional Budget Office, and the Tax Policy Center are fully proprietary and unavailable to external researchers. None of these tools provide a unified framework for cross-country comparison. PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the package with `pip install policyengine` (or selectively with `pip install policyengine[uk]` or `pip install policyengine[us]`), supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The `Simulation` class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. From fb1eb93e12e0f0ec857254a402594fa17d3f78a2 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:40:13 +0000 Subject: [PATCH 08/65] Update install docs, remove code styling, reorder US before UK - Update install instructions to match repo docs: pip install policyengine, policyengine[uk], policyengine[us], and uv pip install -e .[dev] for development - Remove backtick code styling from "Simulation class" in Statement of Need - Reorder State of the Field: US models first, then UK models Co-Authored-By: Claude Opus 4.6 --- paper.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/paper.md b/paper.md index 8c4ddd12..97cadd22 100644 --- a/paper.md +++ b/paper.md @@ -36,11 +36,11 @@ PolicyEngine is an open-source, multi-country microsimulation framework for tax- Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by HM Treasury, the Institute for Fiscal Studies, the Congressional Budget Office, and the Tax Policy Center are fully proprietary and unavailable to external researchers. None of these tools provide a unified framework for cross-country comparison. -PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the package with `pip install policyengine` (or selectively with `pip install policyengine[uk]` or `pip install policyengine[us]`), supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The `Simulation` class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with `pip install policyengine`, or install country-specific models individually with `pip install policyengine[uk]` or `pip install policyengine[us]`. For development, the repository supports installation from source via `uv pip install -e .[dev]`. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field -In the UK, the primary microsimulation models include UKMOD, maintained by the Centre for Microsimulation and Policy Analysis at the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and models maintained internally by HM Treasury and the Institute for Fiscal Studies. In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides tax calculations, while the Tax Policy Center and Congressional Budget Office maintain proprietary models. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. +In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides tax calculations, while the Tax Policy Center and Congressional Budget Office maintain proprietary models. In the UK, the primary microsimulation models include UKMOD, maintained by the Centre for Microsimulation and Policy Analysis at the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and models maintained internally by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. PolicyEngine differentiates itself in several ways: From 2c3ff23fa7201306510f992f0046041991e6e60b Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:42:24 +0000 Subject: [PATCH 09/65] Merge framework bullets, add US program count, remove web app bullet - Merge "Multi-country" and "Fully open-source" bullets into one - Add specific US program count (over 11) with full list: federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF - Remove "Integration with the PolicyEngine web application" bullet Co-Authored-By: Claude Opus 4.6 --- paper.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/paper.md b/paper.md index 97cadd22..f08f241f 100644 --- a/paper.md +++ b/paper.md @@ -44,10 +44,8 @@ In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides PolicyEngine differentiates itself in several ways: -- **Multi-country, unified framework**: a single Python package supports the UK and US tax-benefit systems, enabling cross-country analysis with a consistent API. -- **Fully open-source and pip-installable**: users can install and run the model without institutional access or license fees. -- **Comprehensive program coverage**: the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales; the US model covers federal income tax, payroll taxes, SNAP, SSI, Medicaid, TANF, and state-level tax systems. -- **Integration with the PolicyEngine web application**: the models power an interactive web interface at [policyengine.org](https://policyengine.org) that allows non-technical users to explore policy reforms in both countries. +- **Multi-country, open-source framework**: a single pip-installable Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. +- **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. - **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. - **Distributional analysis outputs**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (UK parliamentary constituencies, US congressional districts). - **Labor supply dynamics**: behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. From 06035476ea567d9f8577f20191e877b2e8cad26f Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:44:25 +0000 Subject: [PATCH 10/65] Merge analysis bullets, use .py package name, remove 10ds-microsim - Merge "Distributional analysis outputs" and "Labor supply dynamics" into single "Economic analysis" bullet - Change "policyengine package" to "policyengine.py package" - Delete "All code examples in the documentation are automatically re-executed" sentence - Remove "built 10ds-microsim on top of" reference, simplify to "used PolicyEngine" Co-Authored-By: Claude Opus 4.6 --- paper.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/paper.md b/paper.md index f08f241f..24bdf2f7 100644 --- a/paper.md +++ b/paper.md @@ -47,12 +47,11 @@ PolicyEngine differentiates itself in several ways: - **Multi-country, open-source framework**: a single pip-installable Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. - **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. -- **Distributional analysis outputs**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (UK parliamentary constituencies, US congressional districts). -- **Labor supply dynamics**: behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) responses to policy changes. +- **Economic analysis**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (UK parliamentary constituencies, US congressional districts). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. # Software Design -PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The `policyengine` package is organized as a country-agnostic layer with the following core components: +PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The `policyengine.py` package is organized as a country-agnostic layer with the following core components: **Simulation and Dataset** classes provide the primary interface. The `Simulation` class executes tax-benefit models on datasets, applying policy reforms and caching results. The `Dataset` class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Enhanced Family Resources Survey for the UK and the Current Population Survey for the US — are loaded from companion data repositories [@pe_uk_data; @pe_us_data]. @@ -66,13 +65,11 @@ PolicyEngine is built on the PolicyEngine Core framework, which extends the Open The country-specific models (`policyengine-uk` and `policyengine-us`) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programs. -All code examples in the documentation are automatically re-executed with each new release to ensure correctness. - # Research Impact Statement PolicyEngine has demonstrated research impact across government, academia, and policy research in both the UK and US. -**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for UK government use [@ghenis2026no10]. The 10DS team built `10ds-microsim` on top of PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. In the US, PolicyEngine collaborated with the Better Government Lab — a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@pe_bgl]. +**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for UK government use [@ghenis2026no10]. The 10DS team used PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. In the US, PolicyEngine collaborated with the Better Government Lab — a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@pe_bgl]. **Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. From 452862ebd95622a5dbec3f07f74ca9bced917cc6 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:53:47 +0000 Subject: [PATCH 11/65] Add US academic/policy citations and US funders Academic research: - USC/HHS collaboration on effective marginal tax rates (Unrath) - DeBacker behavioral response modeling (Arnold Ventures) - Beeck Center rules-as-code reports (2023, 2025) Policy research: - DC District Child Tax Credit (first local CTC in US history) - Senator Booker Keep Your Pay Act calculator on Senate website - Reorder US citations before UK in both sections Acknowledgements: - Add US funders: Arnold Ventures, NEO Philanthropy ($200K grant), Gerald Huff Fund for Humanity, NSF POSE program - Keep Nuffield Foundation for UK Co-Authored-By: Claude Opus 4.6 --- paper.bib | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ paper.md | 6 +++--- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/paper.bib b/paper.bib index 5b586fd4..2e1bf71c 100644 --- a/paper.bib +++ b/paper.bib @@ -164,6 +164,60 @@ @online{pe_bgl url={https://www.policyengine.org/us/research/policyengine-better-government-lab-collaboration} } +@online{pe_usc, + title={{PolicyEngine} and {USC} Collaboration on Effective Marginal Tax Rates}, + author={Ghenis, Max}, + year={2024}, + url={https://www.policyengine.org/us/research/policyengine-usc-collaboration} +} + +@techreport{beeck2023rac, + title={Exploring Rules Communication: Moving Beyond Static Documents to Standardized Code for {U.S.} Public Benefits Programs}, + author={Kennan, Ariel and Singh, Lisa and Dammholz, Bianca and Sengupta, Keya and Yi, Jason}, + institution={Beeck Center for Social Impact and Innovation, Georgetown University}, + year={2023}, + month={6}, + url={https://beeckcenter.georgetown.edu/report/exploring-rules-communication-moving-beyond-static-documents-to-standardized-code-for-u-s-public-benefits-programs/} +} + +@techreport{beeck2025ai, + title={{AI}-Powered Rules as Code: Experiments with Public Benefits Policy}, + author={Kennan, Ariel and Garcia Guevara, Alessandra and Goodman, Jason}, + institution={Beeck Center for Social Impact and Innovation, Georgetown University}, + year={2025}, + month={3}, + url={https://beeckcenter.georgetown.edu/report/ai-powered-rules-as-code-experiments-with-public-benefits-policy/} +} + +@online{pe_dctc, + title={The {District Child Tax Credit} Proposal}, + author={{PolicyEngine}}, + year={2023}, + url={https://blog.policyengine.org/the-district-child-tax-credit-proposal-5c70e72a4001} +} + +@online{pe_keepyourpay, + title={Senator {Booker}'s {Keep Your Pay Act}}, + author={{PolicyEngine}}, + year={2026}, + url={https://www.policyengine.org/us/keep-your-pay-act} +} + +@misc{arnold_ventures, + title={Public Finance Program}, + author={{Arnold Ventures}}, + year={2023}, + note={Grant to PolicyEngine for tax-benefit microsimulation development}, + url={https://www.arnoldventures.org/work/public-finance} +} + +@online{neo_philanthropy, + title={{NEO Philanthropy} Awards \$200,000 Grant to {PolicyEngine}}, + author={Ghenis, Max}, + year={2024}, + url={https://policyengine.org/us/research/neo-philanthropy} +} + @software{claude2025, title={Claude}, author={{Anthropic}}, diff --git a/paper.md b/paper.md index 24bdf2f7..0d8c93bc 100644 --- a/paper.md +++ b/paper.md @@ -75,13 +75,13 @@ PolicyEngine has demonstrated research impact across government, academia, and p **Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. -**Academic research.** Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero. +**Academic research.** In the US, Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for Research on Poverty [@pe_usc]. Jason DeBacker (University of South Carolina) has contributed to behavioral response modeling in PolicyEngine US with support from Arnold Ventures [@ghenis2024nta]. The Beeck Center for Social Impact and Innovation at Georgetown University featured PolicyEngine as a project spotlight in their research on rules-as-code for US public benefits programs [@beeck2023rac], and documented two Policy2Code challenge teams building on PolicyEngine in their 2025 report on AI-powered rules as code [@beeck2025ai]. In the UK, Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero. -**Policy research.** The National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyze employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, becoming the first external organization to leverage PolicyEngine's enhanced US microdata [@mccabe2024ctc]. +**Policy research.** In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, becoming the first external organization to leverage PolicyEngine's enhanced US microdata [@mccabe2024ctc]. DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023, which became the first local child tax credit in US history when it passed in September 2024 [@pe_dctc]. Senator Cory Booker's office embedded a PolicyEngine-built calculator on his official Senate website for constituents to model the impact of the Keep Your Pay Act on their household taxes [@pe_keepyourpay]. In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyze employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. # Acknowledgements -This work was supported by the Nuffield Foundation since September 2024 [@nuffield2024grant]. The Nuffield Foundation had no involvement in the design, development, or content of this software or paper. +This work was supported in the US by Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE program), and in the UK by the Nuffield Foundation since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. We also acknowledge the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey, and the US Census Bureau for the Current Population Survey. From 3dafc7e567eba54a436d6eab82b9b1e117d59f63 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:55:34 +0000 Subject: [PATCH 12/65] Remove all code-style backtick formatting from prose text Co-Authored-By: Claude Opus 4.6 --- paper.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/paper.md b/paper.md index 0d8c93bc..29222bd5 100644 --- a/paper.md +++ b/paper.md @@ -30,13 +30,13 @@ bibliography: paper.bib # Summary -PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The `policyengine` package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-uk` and `policyengine-us`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. +PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The policyengine package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-uk and policyengine-us) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. # Statement of Need Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by HM Treasury, the Institute for Fiscal Studies, the Congressional Budget Office, and the Tax Policy Center are fully proprietary and unavailable to external researchers. None of these tools provide a unified framework for cross-country comparison. -PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with `pip install policyengine`, or install country-specific models individually with `pip install policyengine[uk]` or `pip install policyengine[us]`. For development, the repository supports installation from source via `uv pip install -e .[dev]`. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[uk] or pip install policyengine[us]. For development, the repository supports installation from source via uv pip install -e .[dev]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field @@ -51,19 +51,19 @@ PolicyEngine differentiates itself in several ways: # Software Design -PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The `policyengine.py` package is organized as a country-agnostic layer with the following core components: +PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The policyengine.py package is organized as a country-agnostic layer with the following core components: -**Simulation and Dataset** classes provide the primary interface. The `Simulation` class executes tax-benefit models on datasets, applying policy reforms and caching results. The `Dataset` class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Enhanced Family Resources Survey for the UK and the Current Population Survey for the US — are loaded from companion data repositories [@pe_uk_data; @pe_us_data]. +**Simulation and Dataset** classes provide the primary interface. The Simulation class executes tax-benefit models on datasets, applying policy reforms and caching results. The Dataset class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Enhanced Family Resources Survey for the UK and the Current Population Survey for the US — are loaded from companion data repositories [@pe_uk_data; @pe_us_data]. -**Policy and Parameter** classes define the reform system. The `Policy` class bundles parametric reforms that modify tax-benefit system parameters. The `Parameter` class represents system settings (tax rates, benefit thresholds, income limits), while `ParameterValue` supports time-bound values, enabling phased policy implementations across multiple years. +**Policy and Parameter** classes define the reform system. The Policy class bundles parametric reforms that modify tax-benefit system parameters. The Parameter class represents system settings (tax rates, benefit thresholds, income limits), while ParameterValue supports time-bound values, enabling phased policy implementations across multiple years. -**Variable and TaxBenefitModelVersion** classes encapsulate country-specific logic. Each `Variable` is a computed quantity (income tax, benefit entitlement) with entity mappings. The `TaxBenefitModelVersion` class represents a versioned country model, storing variables, parameters, and execution logic. The framework uses `importlib` to conditionally import country packages, allowing graceful operation when only one country is installed. +**Variable and TaxBenefitModelVersion** classes encapsulate country-specific logic. Each Variable is a computed quantity (income tax, benefit entitlement) with entity mappings. The TaxBenefitModelVersion class represents a versioned country model, storing variables, parameters, and execution logic. The framework uses importlib to conditionally import country packages, allowing graceful operation when only one country is installed. -**Output classes** provide standardized analysis. These include `Aggregate` for sum, mean, and count statistics; `DecileImpact` and `IntraDecileImpact` for distributional analysis by income decile; `Poverty` and `Inequality` for welfare metrics; `ChangeAggregate` for baseline-versus-reform comparisons; and region-specific classes such as `ConstituencyImpact` (UK) and `CongressionalDistrictImpact` (US). All output classes produce PolicyEngine-branded Plotly visualizations. +**Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as ConstituencyImpact (UK) and CongressionalDistrictImpact (US). All output classes produce PolicyEngine-branded Plotly visualizations. **Region and RegionRegistry** classes manage geographic scope, enabling sub-national analysis for regions within each country. -The country-specific models (`policyengine-uk` and `policyengine-us`) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programs. +The country-specific models (policyengine-uk and policyengine-us) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programs. # Research Impact Statement From 51db607cba36e35be1038a313513f08bfc3d14f5 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:56:48 +0000 Subject: [PATCH 13/65] Remove 'Multi-Country' from paper title Co-Authored-By: Claude Opus 4.6 --- paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper.md b/paper.md index 29222bd5..40bbdf90 100644 --- a/paper.md +++ b/paper.md @@ -1,5 +1,5 @@ --- -title: "PolicyEngine: An Open-Source Multi-Country Tax-Benefit Microsimulation Framework" +title: "PolicyEngine: An Open-Source Tax-Benefit Microsimulation Framework" tags: - Python - microsimulation From 0964bd54857e578f8089ce137b7a90b73535a9d9 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:33:29 +0000 Subject: [PATCH 14/65] Remove 'Open-Source' from paper title Co-Authored-By: Claude Opus 4.6 --- paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper.md b/paper.md index 40bbdf90..9ff29ee4 100644 --- a/paper.md +++ b/paper.md @@ -1,5 +1,5 @@ --- -title: "PolicyEngine: An Open-Source Tax-Benefit Microsimulation Framework" +title: "PolicyEngine: A Tax-Benefit Microsimulation Framework" tags: - Python - microsimulation From ba4c1070a022af7dc21a9e827dd15faa0368b0eb Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:38:40 +0000 Subject: [PATCH 15/65] Remove dev install command from Statement of Need Co-Authored-By: Claude Opus 4.6 --- paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper.md b/paper.md index 9ff29ee4..8db0e328 100644 --- a/paper.md +++ b/paper.md @@ -36,7 +36,7 @@ PolicyEngine is an open-source, multi-country microsimulation framework for tax- Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by HM Treasury, the Institute for Fiscal Studies, the Congressional Budget Office, and the Tax Policy Center are fully proprietary and unavailable to external researchers. None of these tools provide a unified framework for cross-country comparison. -PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[uk] or pip install policyengine[us]. For development, the repository supports installation from source via uv pip install -e .[dev]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[uk] or pip install policyengine[us]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field From 7752427642b846b4b4f010969491e1a148f038fc Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:46:53 +0000 Subject: [PATCH 16/65] Add Atlanta Fed PRD, NSF POSE award; use external reference URLs - Add Atlanta Fed Policy Rules Database MOU for multi-model validation in Institutional partnership section - Add NSF POSE Phase I award (2518372, $299,974) with nsf.gov URL - Update NBER TAXSIM MOU reference to use taxsim.nber.org instead of policyengine.org link - Update Arnold Ventures note to mention congressional district focus - Use external/official URLs for all references where available Co-Authored-By: Claude Opus 4.6 --- paper.bib | 25 +++++++++++++++++++++---- paper.md | 4 ++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/paper.bib b/paper.bib index 2e1bf71c..ade0daca 100644 --- a/paper.bib +++ b/paper.bib @@ -133,10 +133,11 @@ @misc{mcgarvey2024yatc } @online{pe_nber_mou, - title={{PolicyEngine} and {NBER} Sign {MOU} for {TAXSIM} Emulator Development}, - author={Ghenis, Max}, + title={{TAXSIM} -- {National Bureau of Economic Research}}, + author={Feenberg, Daniel R.}, year={2024}, - url={https://www.policyengine.org/us/research/policyengine-nber-mou-taxsim} + note={References PolicyEngine as successor to TAXSIM under a formal memorandum of understanding}, + url={https://taxsim.nber.org/} } @misc{ghenis2024nta, @@ -207,10 +208,18 @@ @misc{arnold_ventures title={Public Finance Program}, author={{Arnold Ventures}}, year={2023}, - note={Grant to PolicyEngine for tax-benefit microsimulation development}, + note={Grant to PolicyEngine for congressional district-level policy analysis}, url={https://www.arnoldventures.org/work/public-finance} } +@misc{nsf_pose, + title={{POSE}: Phase {I}: {PolicyEngine} -- Advancing Public Policy Analysis}, + author={{National Science Foundation}}, + year={2025}, + note={Award 2518372. PI: Max Ghenis, PSL Foundation. \$299,974}, + url={https://www.nsf.gov/awardsearch/showAward?AWD_ID=2518372} +} + @online{neo_philanthropy, title={{NEO Philanthropy} Awards \$200,000 Grant to {PolicyEngine}}, author={Ghenis, Max}, @@ -218,6 +227,14 @@ @online{neo_philanthropy url={https://policyengine.org/us/research/neo-philanthropy} } +@misc{atlanta_fed_prd, + title={Policy Rules Database}, + author={{Federal Reserve Bank of Atlanta}}, + year={2021}, + note={Collaboration between the Atlanta Fed, National Center for Children in Poverty, and PolicyEngine for multi-model validation}, + url={https://www.atlantafed.org/economic-mobility-and-resilience/advancing-careers-for-low-income-families/policy-rules-database} +} + @software{claude2025, title={Claude}, author={{Anthropic}}, diff --git a/paper.md b/paper.md index 8db0e328..2c9b3f2b 100644 --- a/paper.md +++ b/paper.md @@ -73,7 +73,7 @@ PolicyEngine has demonstrated research impact across government, academia, and p **Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. -**Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. +**Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. The Federal Reserve Bank of Atlanta independently validates PolicyEngine's model through its Policy Rules Database, conducting three-way comparisons between PolicyEngine, TAXSIM, and the Fed's own models [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. **Academic research.** In the US, Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for Research on Poverty [@pe_usc]. Jason DeBacker (University of South Carolina) has contributed to behavioral response modeling in PolicyEngine US with support from Arnold Ventures [@ghenis2024nta]. The Beeck Center for Social Impact and Innovation at Georgetown University featured PolicyEngine as a project spotlight in their research on rules-as-code for US public benefits programs [@beeck2023rac], and documented two Policy2Code challenge teams building on PolicyEngine in their 2025 report on AI-powered rules as code [@beeck2025ai]. In the UK, Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero. @@ -81,7 +81,7 @@ PolicyEngine has demonstrated research impact across government, academia, and p # Acknowledgements -This work was supported in the US by Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE program), and in the UK by the Nuffield Foundation since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. +This work was supported in the US by Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) [@nsf_pose], and in the UK by the Nuffield Foundation since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. We also acknowledge the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey, and the US Census Bureau for the Current Population Survey. From e01d3ae472ac2037a4d6abb1f2d179899569dffd Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:49:15 +0000 Subject: [PATCH 17/65] Reorder all sections: US before UK throughout Consistently place US content before UK content in every section: Summary, Statement of Need, Software Design, Research Impact (Government adoption, Congressional/Parliamentary, Academic, Policy research), and Acknowledgements. Co-Authored-By: Claude Opus 4.6 --- paper.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/paper.md b/paper.md index 2c9b3f2b..0d69cadb 100644 --- a/paper.md +++ b/paper.md @@ -30,13 +30,13 @@ bibliography: paper.bib # Summary -PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The policyengine package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-uk and policyengine-us) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. +PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The policyengine package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-us and policyengine-uk) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. # Statement of Need -Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by HM Treasury, the Institute for Fiscal Studies, the Congressional Budget Office, and the Tax Policy Center are fully proprietary and unavailable to external researchers. None of these tools provide a unified framework for cross-country comparison. +Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. None of these tools provide a unified framework for cross-country comparison. -PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[uk] or pip install policyengine[us]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[us] or pip install policyengine[uk]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field @@ -47,31 +47,31 @@ PolicyEngine differentiates itself in several ways: - **Multi-country, open-source framework**: a single pip-installable Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. - **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. -- **Economic analysis**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (UK parliamentary constituencies, US congressional districts). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. +- **Economic analysis**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. # Software Design PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The policyengine.py package is organized as a country-agnostic layer with the following core components: -**Simulation and Dataset** classes provide the primary interface. The Simulation class executes tax-benefit models on datasets, applying policy reforms and caching results. The Dataset class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Enhanced Family Resources Survey for the UK and the Current Population Survey for the US — are loaded from companion data repositories [@pe_uk_data; @pe_us_data]. +**Simulation and Dataset** classes provide the primary interface. The Simulation class executes tax-benefit models on datasets, applying policy reforms and caching results. The Dataset class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Current Population Survey for the US and the Enhanced Family Resources Survey for the UK — are loaded from companion data repositories [@pe_us_data; @pe_uk_data]. **Policy and Parameter** classes define the reform system. The Policy class bundles parametric reforms that modify tax-benefit system parameters. The Parameter class represents system settings (tax rates, benefit thresholds, income limits), while ParameterValue supports time-bound values, enabling phased policy implementations across multiple years. **Variable and TaxBenefitModelVersion** classes encapsulate country-specific logic. Each Variable is a computed quantity (income tax, benefit entitlement) with entity mappings. The TaxBenefitModelVersion class represents a versioned country model, storing variables, parameters, and execution logic. The framework uses importlib to conditionally import country packages, allowing graceful operation when only one country is installed. -**Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as ConstituencyImpact (UK) and CongressionalDistrictImpact (US). All output classes produce PolicyEngine-branded Plotly visualizations. +**Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as CongressionalDistrictImpact (US) and ConstituencyImpact (UK). All output classes produce PolicyEngine-branded Plotly visualizations. **Region and RegionRegistry** classes manage geographic scope, enabling sub-national analysis for regions within each country. -The country-specific models (policyengine-uk and policyengine-us) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The UK model contains over 700 variable definitions and the US model covers federal and state-level tax and benefit programs. +The country-specific models (policyengine-us and policyengine-uk) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The US model covers federal and state-level tax and benefit programs and the UK model contains over 700 variable definitions. # Research Impact Statement -PolicyEngine has demonstrated research impact across government, academia, and policy research in both the UK and US. +PolicyEngine has demonstrated research impact across government, academia, and policy research in both the US and UK. -**Government adoption.** In 2025–2026, co-author Nikhil Woodruff served as an Innovation Fellow with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for UK government use [@ghenis2026no10]. The 10DS team used PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. In the US, PolicyEngine collaborated with the Better Government Lab — a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@pe_bgl]. +**Government adoption.** In the US, PolicyEngine collaborated with the Better Government Lab — a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@pe_bgl]. In the UK, co-author Nikhil Woodruff served as an Innovation Fellow in 2025–2026 with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for government use [@ghenis2026no10]. The 10DS team used PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. -**Parliamentary and congressional citation.** In February 2026, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. +**Congressional and parliamentary citation.** In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. In the UK, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill in February 2026, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. **Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. The Federal Reserve Bank of Atlanta independently validates PolicyEngine's model through its Policy Rules Database, conducting three-way comparisons between PolicyEngine, TAXSIM, and the Fed's own models [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. @@ -83,7 +83,7 @@ PolicyEngine has demonstrated research impact across government, academia, and p This work was supported in the US by Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) [@nsf_pose], and in the UK by the Nuffield Foundation since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. -We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. We also acknowledge the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey, and the US Census Bureau for the Current Population Survey. +We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. # AI Usage Disclosure From 190ebdcabbc11f2b168eb1bba89e037651fa62e1 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:50:41 +0000 Subject: [PATCH 18/65] Fix double parentheses in AI disclosure, remove test scaffolding, pip-installable to Python Co-Authored-By: Claude Opus 4.6 --- paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper.md b/paper.md index 0d69cadb..9a7a44d9 100644 --- a/paper.md +++ b/paper.md @@ -36,7 +36,7 @@ PolicyEngine is an open-source, multi-country microsimulation framework for tax- Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. None of these tools provide a unified framework for cross-country comparison. -PolicyEngine addresses these gaps by providing a fully open-source, pip-installable microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[us] or pip install policyengine[uk]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source, Python microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[us] or pip install policyengine[uk]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field @@ -44,7 +44,7 @@ In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides PolicyEngine differentiates itself in several ways: -- **Multi-country, open-source framework**: a single pip-installable Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. +- **Multi-country, open-source framework**: a single Python Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. - **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. - **Economic analysis**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. @@ -87,6 +87,6 @@ We acknowledge contributions from all PolicyEngine contributors, and thank the O # AI Usage Disclosure -Generative AI tools (Claude by Anthropic, 2024–2026 [@claude2025]) were used to assist with code refactoring, test scaffolding, and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. +Generative AI tools — Claude by Anthropic [@claude2025] — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. # References From d70aa4daae1123e0bf251341c57dcb39b4d32aed Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:52:15 +0000 Subject: [PATCH 19/65] Remove pip install commands from Statement of Need Co-Authored-By: Claude Opus 4.6 --- paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper.md b/paper.md index 9a7a44d9..07ac4b2e 100644 --- a/paper.md +++ b/paper.md @@ -36,7 +36,7 @@ PolicyEngine is an open-source, multi-country microsimulation framework for tax- Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. None of these tools provide a unified framework for cross-country comparison. -PolicyEngine addresses these gaps by providing a fully open-source, Python microsimulation framework that spans multiple countries under a consistent API. Researchers can install the full package with pip install policyengine, or install country-specific models individually with pip install policyengine[us] or pip install policyengine[uk]. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field From 018056d58a559a4be6862e43b757ae8a77c572b0 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:53:08 +0000 Subject: [PATCH 20/65] Consolidate to 3 bullets, delete cross-country comparison sentence - Remove "None of these tools provide a unified framework" sentence - Merge "Programmatic reform API" and "Economic analysis" into one bullet: "Programmatic reform and economic analysis" - Fix duplicate "Python Python" typo - Now 3 bullets: framework, program coverage, reform and analysis Co-Authored-By: Claude Opus 4.6 --- paper.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/paper.md b/paper.md index 07ac4b2e..6508c4ac 100644 --- a/paper.md +++ b/paper.md @@ -34,8 +34,7 @@ PolicyEngine is an open-source, multi-country microsimulation framework for tax- # Statement of Need -Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. None of these tools provide a unified framework for cross-country comparison. - +Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. PolicyEngine addresses these gaps by providing a fully open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field @@ -44,10 +43,9 @@ In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides PolicyEngine differentiates itself in several ways: -- **Multi-country, open-source framework**: a single Python Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. +- **Open-source, multi-country framework**: a single Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. -- **Programmatic reform API**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. -- **Economic analysis**: built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. +- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. Built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. # Software Design From 805fb0811fbb7c715290b998a87336c3a097fdf8 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 13:54:16 +0000 Subject: [PATCH 21/65] Remove TaxBenefitModelVersion and RegionRegistry from paper text Co-Authored-By: Claude Opus 4.6 --- paper.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/paper.md b/paper.md index 6508c4ac..f445c1e3 100644 --- a/paper.md +++ b/paper.md @@ -55,11 +55,11 @@ PolicyEngine is built on the PolicyEngine Core framework, which extends the Open **Policy and Parameter** classes define the reform system. The Policy class bundles parametric reforms that modify tax-benefit system parameters. The Parameter class represents system settings (tax rates, benefit thresholds, income limits), while ParameterValue supports time-bound values, enabling phased policy implementations across multiple years. -**Variable and TaxBenefitModelVersion** classes encapsulate country-specific logic. Each Variable is a computed quantity (income tax, benefit entitlement) with entity mappings. The TaxBenefitModelVersion class represents a versioned country model, storing variables, parameters, and execution logic. The framework uses importlib to conditionally import country packages, allowing graceful operation when only one country is installed. +**Variable** classes encapsulate country-specific logic. Each Variable is a computed quantity (income tax, benefit entitlement) with entity mappings. Versioned country models store variables, parameters, and execution logic. The framework conditionally imports country packages, allowing graceful operation when only one country is installed. **Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as CongressionalDistrictImpact (US) and ConstituencyImpact (UK). All output classes produce PolicyEngine-branded Plotly visualizations. -**Region and RegionRegistry** classes manage geographic scope, enabling sub-national analysis for regions within each country. +**Region** classes manage geographic scope, enabling sub-national analysis for regions within each country. The country-specific models (policyengine-us and policyengine-uk) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The US model covers federal and state-level tax and benefit programs and the UK model contains over 700 variable definitions. From d0571e0315186a5cdf51ca222eee30d753cff5d8 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 14:17:35 +0000 Subject: [PATCH 22/65] Replace PE self-links with external URLs, remove country model paragraph - Delete country-specific models paragraph from Software Design - ghenis2026no10: gov.uk Innovation Fellowship page - ghenis2024nta: ntanet.org conference page - pe_usc: irp.wisc.edu extramural grants page - pe_dctc: dccouncil.gov bill B25-0190 - pe_keepyourpay: booker.senate.gov press release - pe_bgl and neo_philanthropy kept as PE links (no external alt exists) Co-Authored-By: Claude Opus 4.6 --- paper.bib | 44 ++++++++++++++++++++++---------------------- paper.md | 2 -- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/paper.bib b/paper.bib index ade0daca..10283448 100644 --- a/paper.bib +++ b/paper.bib @@ -74,14 +74,11 @@ @techreport{niesr2025living url={https://niesr.ac.uk/publications/uk-living-standards-review-2025} } -@online{ghenis2026no10, - title={{PolicyEngine} powers rapid policy analysis at {No 10 Downing Street}}, - author={Ghenis, Max}, - year={2026}, - month={1}, - day={20}, - url={https://policyengine.org/uk/research/policyengine-no-10-downing-street}, - urldate={2026-03-19} +@misc{ghenis2026no10, + title={The {No10 Innovation Fellowship} Programme}, + author={{HM Government}}, + year={2025}, + url={https://www.gov.uk/government/publications/the-no10-innovation-fellowship-programme} } @misc{hmt2024atrs, @@ -146,7 +143,7 @@ @misc{ghenis2024nta year={2024}, month={11}, note={Presented at the 117th Annual Conference on Taxation, National Tax Association, Detroit, Michigan}, - url={https://www.policyengine.org/us/research/nta-2024} + url={https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/} } @techreport{mccabe2024ctc, @@ -165,11 +162,12 @@ @online{pe_bgl url={https://www.policyengine.org/us/research/policyengine-better-government-lab-collaboration} } -@online{pe_usc, - title={{PolicyEngine} and {USC} Collaboration on Effective Marginal Tax Rates}, - author={Ghenis, Max}, - year={2024}, - url={https://www.policyengine.org/us/research/policyengine-usc-collaboration} +@misc{pe_usc, + title={2025--2026 {IRP} Extramural Large Grants}, + author={{Institute for Research on Poverty}}, + year={2025}, + note={University of Wisconsin--Madison. Includes PolicyEngine collaboration with Matt Unrath (USC) on effective marginal tax rates}, + url={https://www.irp.wisc.edu/2025-2026-irp-extramural-large-grants/} } @techreport{beeck2023rac, @@ -190,18 +188,20 @@ @techreport{beeck2025ai url={https://beeckcenter.georgetown.edu/report/ai-powered-rules-as-code-experiments-with-public-benefits-policy/} } -@online{pe_dctc, - title={The {District Child Tax Credit} Proposal}, - author={{PolicyEngine}}, +@misc{pe_dctc, + title={{District Child Tax Credit Amendment Act} of 2023}, + author={{Council of the District of Columbia}}, year={2023}, - url={https://blog.policyengine.org/the-district-child-tax-credit-proposal-5c70e72a4001} + note={Bill B25-0190, introduced by Councilmember Zachary Parker}, + url={https://lims.dccouncil.gov/Legislation/B25-0190} } -@online{pe_keepyourpay, - title={Senator {Booker}'s {Keep Your Pay Act}}, - author={{PolicyEngine}}, +@misc{pe_keepyourpay, + title={Booker Announces {Keep Your Pay Act}}, + author={{Office of Senator Cory Booker}}, year={2026}, - url={https://www.policyengine.org/us/keep-your-pay-act} + month={3}, + url={https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act} } @misc{arnold_ventures, diff --git a/paper.md b/paper.md index f445c1e3..4b6e9063 100644 --- a/paper.md +++ b/paper.md @@ -61,8 +61,6 @@ PolicyEngine is built on the PolicyEngine Core framework, which extends the Open **Region** classes manage geographic scope, enabling sub-national analysis for regions within each country. -The country-specific models (policyengine-us and policyengine-uk) define parameters as YAML files organized by government department and indexed by time period, and implement variables as Python classes specifying computation logic, entity scope, and time period. The US model covers federal and state-level tax and benefit programs and the UK model contains over 700 variable definitions. - # Research Impact Statement PolicyEngine has demonstrated research impact across government, academia, and policy research in both the US and UK. From d0976d53c09525880ef1b55e615420e06acf3fe8 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 30 Mar 2026 18:28:24 +0100 Subject: [PATCH 23/65] Update Nikhil ORCID, reorder authors, quote affiliation values Co-Authored-By: Claude Opus 4.6 --- paper.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/paper.md b/paper.md index 4b6e9063..2b65ff80 100644 --- a/paper.md +++ b/paper.md @@ -10,20 +10,20 @@ tags: authors: - name: Max Ghenis orcid: 0000-0000-0000-0000 - affiliation: 1 + affiliation: '1' - name: Nikhil Woodruff - orcid: 0000-0000-0000-0000 - affiliation: 1 - - name: Pavel Makarchuk - orcid: 0000-0000-0000-0000 - affiliation: 1 + orcid: 0009-0009-5004-4910 + affiliation: '1' - name: Vahid Ahmadi orcid: 0009-0004-1093-6272 - affiliation: 1 + affiliation: '1' corresponding: true + - name: Pavel Makarchuk + orcid: 0000-0000-0000-0000 + affiliation: '1' affiliations: - name: PolicyEngine - index: 1 + index: '1' date: 19 March 2026 bibliography: paper.bib --- From e2b96b09a62ee4db9ae9a243ca989ff5f5009e65 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 30 Mar 2026 18:29:08 +0100 Subject: [PATCH 24/65] Add Pavel's ORCID Co-Authored-By: Claude Opus 4.6 --- paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper.md b/paper.md index 2b65ff80..fe70487c 100644 --- a/paper.md +++ b/paper.md @@ -19,7 +19,7 @@ authors: affiliation: '1' corresponding: true - name: Pavel Makarchuk - orcid: 0000-0000-0000-0000 + orcid: 0009-0003-4869-7409 affiliation: '1' affiliations: - name: PolicyEngine From f79aa073af9b458a9c965f076fb5e6ef476266df Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Tue, 31 Mar 2026 11:01:14 +0100 Subject: [PATCH 25/65] Tighten JOSS paper, add architecture diagram, code example, and align with docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Trim State of the Field, Academic/Policy research sections (~100 words saved) - Add architecture diagram (Policies + Households + Dynamics → Simulation → Outputs) - Add code example showing Policy/Simulation/economic_impact_analysis workflow - Add reproducibility sentence and scope/limitations statement - Align terminology with docs: run()/ensure(), entity hierarchy, LocalAuthorityImpact - Fix metadata: affiliation country, AI model version - Include paper-preview.html for review Co-Authored-By: Claude Opus 4.6 --- architecture.png | Bin 0 -> 130073 bytes architecture.svg | 48 +++ paper-preview.html | 798 +++++++++++++++++++++++++++++++++++++++++++++ paper.md | 60 +++- 4 files changed, 894 insertions(+), 12 deletions(-) create mode 100644 architecture.png create mode 100644 architecture.svg create mode 100644 paper-preview.html diff --git a/architecture.png b/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2c767b14381b194a0837e52d5ecf76dc690ca3 GIT binary patch literal 130073 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

QV?Zbfuzxhcd&OrmqKD@Vg!AuY5 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 VDQ* + + + + + + + + + + + + + Policies + Tax-benefit rules + & parameters + (US & UK country packages) + + + + Households + Survey microdata + with calibrated weights + (CPS, Family Resources Survey) + + + + Dynamics + Behavioural responses + to policy changes + (labour supply elasticities) + + + + + + + + + Simulation + + + + + + + Decile impacts · Poverty rates · Inequality metrics · Regional breakdowns · Budgetary impacts + diff --git a/paper-preview.html b/paper-preview.html new file mode 100644 index 00000000..c45ea1d2 --- /dev/null +++ b/paper-preview.html @@ -0,0 +1,798 @@ + + + + + + PolicyEngine: A Tax-Benefit Microsimulation Framework + + + + + +

+
+
JOSS Paper Preview
+

PolicyEngine: A Tax-Benefit Microsimulation +Framework

+
+ Max +Ghenis1 + Nikhil +Woodruff1 + Vahid +Ahmadi1 * + Pavel +Makarchuk1 +
+
1 PolicyEngine, Washington, +DC, United States
+ +
+ Python + microsimulation + tax + benefit + public policy + economic analysis +
+
+
+ + +
+ + +
+

Summary

+

PolicyEngine is an open-source, multi-country microsimulation +framework for tax-benefit policy analysis, implemented in Python. The +policyengine package provides a unified interface for running policy +simulations, analyzing distributional impacts, and visualizing results +across the US and the UK. It delegates country-specific tax-benefit +calculations to dedicated country packages (policyengine-us and +policyengine-uk) while providing shared abstractions for simulations, +datasets, parametric reforms, and output analysis. The framework +supports both individual household simulations and population-wide +microsimulations using representative survey microdata with calibrated +weights. PolicyEngine powers an interactive web application at policyengine.org that enables +non-technical users to explore policy reforms in both countries.

+

Statement of Need

+

Tax-benefit microsimulation models are essential tools for evaluating +the distributional impacts of fiscal policy. Governments, think tanks, +and researchers rely on such models to estimate how policy reforms +affect household incomes, poverty rates, and government budgets. +Existing microsimulation models face significant access barriers. TAXSIM +(Feenberg and Coutts +1993) at NBER computes only tax liabilities and omits the benefit +side of the ledger entirely. The models maintained by the Congressional +Budget Office and the Tax Policy Center are fully proprietary and +unavailable to external researchers. In the UK, UKMOD (Sutherland and +Figari 2013), maintained by the University of Essex, requires a +formal application and institutional affiliation to access, and the +models maintained by HM Treasury and the Institute for Fiscal Studies +are similarly proprietary. PolicyEngine addresses these gaps by +providing a fully open-source Python microsimulation framework that +spans multiple countries under a consistent API. Users can supply their +own microdata or use built-in datasets, and compute the impact of +current law or hypothetical policy reforms on any household or a full +national population. The Simulation class supports individual household +analysis, while population-level aggregate analysis uses representative +survey datasets with calibrated weights. Because existing proprietary +models cannot be independently verified, PolicyEngine enables fully +reproducible and transparent policy analysis. The framework’s open +development on GitHub enables external validation, community +contributions, and reproducible policy analysis across countries.

+

State of the Field

+

The primary UK microsimulation models include UKMOD, maintained by +the Institute for Social and Economic Research (ISER), University of +Essex, as part of the EUROMOD family (Sutherland and Figari 2013), +and proprietary models maintained by HM Treasury and the Institute for +Fiscal Studies. OpenFisca (OpenFisca Contributors 2024) pioneered +the open-source approach to tax-benefit microsimulation in France. +PolicyEngine originated from OpenFisca and builds on this foundation +through the PolicyEngine Core framework (Woodruff et al. 2024).

+

PolicyEngine differentiates itself in several ways:

+
    +
  • Open-source, multi-country framework: a single +Python package supports the US and UK tax-benefit systems under a +consistent API, with no institutional access or license fees +required.
  • +
  • Comprehensive program coverage: the US model covers +over 11 programs including federal income tax, payroll taxes, state +income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, +and TANF; the UK model covers over 37 programs spanning income tax, +National Insurance, Universal Credit, Child Benefit, Council Tax, and +devolved policies in Scotland and Wales.
  • +
  • Programmatic reform and economic analysis: users +can define hypothetical policy reforms as date-bound parameter values, +compose multiple reforms with the + operator, or implement +structural changes via simulation modifiers — and evaluate their impact +on any household or the full population. Built-in output classes compute +decile impacts, intra-decile distributions, poverty rates, inequality +metrics (Gini coefficients), budgetary impacts, and regional breakdowns +(US congressional districts, UK parliamentary constituencies and local +authorities). Behavioral response modules model both intensive margin +(hours adjustment) and extensive margin (participation) labor supply +responses to policy changes.
  • +
+

Software Design

+
+ + +
+

PolicyEngine is built on the PolicyEngine Core framework, which +extends the OpenFisca microsimulation engine. The policyengine.py +package is organized as a country-agnostic layer with the following core +components.

+

A minimal example demonstrates the API:

+
import datetime
+from policyengine.core import (
+    Parameter, ParameterValue, Policy, Simulation,
+)
+from policyengine.tax_benefit_models.uk import (
+    economic_impact_analysis, uk_latest,
+)
+
+param = Parameter(
+    name="gov.hmrc.income_tax.allowances.personal_allowance.amount",
+    tax_benefit_model_version=uk_latest,
+)
+reform = Policy(
+    name="Zero personal allowance",
+    parameter_values=[
+        ParameterValue(
+            parameter=param,
+            start_date=datetime.date(2026, 1, 1),
+            end_date=datetime.date(2026, 12, 31),
+            value=0,
+        ),
+    ],
+)
+
+baseline = Simulation(tax_benefit_model_version=uk_latest)
+reformed = Simulation(
+    tax_benefit_model_version=uk_latest, policy=reform,
+)
+analysis = economic_impact_analysis(baseline, reformed)
+

Simulation and Dataset classes provide the primary +interface. The Simulation class executes tax-benefit models on datasets +and applies policy reforms; run() always recomputes while +ensure() uses an LRU cache with disk persistence. The +Dataset class represents microdata containing entity-level data +(persons, households, benefit units, tax units) with survey weights and +entity relationships. Country-specific datasets — the Current Population +Survey for the US and the Enhanced Family Resources Survey for the UK — +are loaded from companion data repositories (Ghenis and Woodruff 2025; Woodruff +et al. 2025).

+

Policy and Parameter classes define the reform +system. The Policy class bundles parametric reforms that modify +tax-benefit system parameters. The Parameter class represents system +settings (tax rates, benefit thresholds, income limits), while +ParameterValue supports time-bound values, enabling phased policy +implementations across multiple years.

+

Variable classes encapsulate country-specific logic. +Each Variable is a computed quantity (income tax, benefit entitlement) +with entity mappings. Versioned country models store variables, +parameters, and execution logic. The framework conditionally imports +country packages, allowing graceful operation when only one country is +installed.

+

Output classes provide standardized analysis. These +include Aggregate for sum, mean, and count statistics; DecileImpact and +IntraDecileImpact for distributional analysis by income decile; Poverty +and Inequality for welfare metrics; ChangeAggregate for +baseline-versus-reform comparisons; and region-specific classes such as +CongressionalDistrictImpact (US), ConstituencyImpact, and +LocalAuthorityImpact (UK). Visualisation utilities produce +PolicyEngine-branded Plotly charts.

+

PolicyEngine models static fiscal impacts; it does not model +macroeconomic feedback effects or general equilibrium responses.

+

Research Impact Statement

+

PolicyEngine has demonstrated research impact across government, +academia, and policy research in both the US and UK.

+

Government adoption. In the US, PolicyEngine +collaborated with the Better Government Lab — a joint center of the +Georgetown McCourt School of Public Policy and the University of +Michigan Ford School of Public Policy — on benefits eligibility research +(Ghenis 2024b). In the +UK, co-author Nikhil Woodruff served as an Innovation Fellow in +2025–2026 with 10DS — the data science team at 10 Downing Street — +adapting PolicyEngine for government use (HM Government 2025). The 10DS team +used PolicyEngine to rapidly estimate the impacts of policy reforms on +living standards, local area incomes, and distributional outcomes. HM +Treasury has also formally documented PolicyEngine in the UK Algorithmic +Transparency Recording Standard, describing it as a model their Personal +Tax, Welfare and Pensions team is exploring for “advising policymakers +on the impact of tax and welfare measures on households” (HM Treasury 2024).

+

Congressional and parliamentary citation. In the US, +Representatives Morgan McGarvey and Bonnie Watson Coleman cited +PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act +(H.R.7547), stating that “according to the model at PolicyEngine, 22% of +all Americans would see an increase in their household income under this +program, and it would lift over 4 million Americans out of poverty” +(Office of +Representative Morgan McGarvey 2024). In the UK, Baroness Altmann +referenced PolicyEngine and its interactive dashboard during House of +Lords Grand Committee debate on the National Insurance Contributions +(Employer Pensions Contributions) Bill in February 2026, noting that +Commons Library research using PolicyEngine provided “a useful picture +of the distributional effects of raising the contribution limit” across +income deciles (House +of Lords 2026).

+

Institutional partnership. PolicyEngine and the +National Bureau of Economic Research (NBER) signed a formal memorandum +of understanding for PolicyEngine to develop an open-source TAXSIM +emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s +microsimulation engine, with support for Python, R, Stata, SAS, and +Julia (Feenberg +2024). The Federal Reserve Bank of Atlanta independently +validates PolicyEngine’s model through its Policy Rules Database, +conducting three-way comparisons between PolicyEngine, TAXSIM, and the +Fed’s own models (Federal Reserve Bank of Atlanta +2021). Co-author Max Ghenis and Jason DeBacker (University of +South Carolina) presented the Enhanced Current Population Survey +methodology at the 117th Annual Conference on Taxation of the National +Tax Association (Ghenis and DeBacker 2024).

+

Academic research. Matt Unrath (University of +Southern California) is using PolicyEngine in a study of effective +marginal and average tax rates facing American families, funded by the +US Department of Health and Human Services through the Institute for +Research on Poverty (Institute for Research on Poverty 2025). The +Beeck Center at Georgetown University featured PolicyEngine in research +on rules-as-code for US public benefits (Kennan et al. 2023, 2025). +Youngman et al. (Youngman et al. 2026) cite +PolicyEngine UK’s microdata methodology in their agent-based +macroeconomic model for the UK’s Seventh Carbon Budget at the Institute +for New Economic Thinking, Oxford.

+

Policy research. In the US, the Niskanen Center used +PolicyEngine to estimate the cost and distributional impacts of Child +Tax Credit reform options (McCabe and Sargeant 2024). DC +Councilmember Zachary Parker cited PolicyEngine’s analysis when +introducing the District Child Tax Credit Amendment Act of 2023, the +first local child tax credit in US history (Council of the District of Columbia 2023). +Senator Cory Booker’s office embedded a PolicyEngine-built calculator on +his official Senate website for the Keep Your Pay Act (Office of Senator Cory +Booker 2026). In the UK, the National Institute of Economic and +Social Research (NIESR) used PolicyEngine in their UK Living Standards +Review 2025 (Mosley +et al. 2025), and the Institute of Economic Affairs has published +PolicyEngine-based analyses of employer National Insurance contributions +and 2025–2026 tax changes (Woodruff 2024, +2025).

+

Acknowledgements

+

This work was supported in the US by Arnold Ventures (Arnold Ventures +2023), NEO Philanthropy (Ghenis 2024a), the Gerald Huff +Fund for Humanity, and the National Science Foundation (NSF POSE Phase +I, Award 2518372) (National +Science Foundation 2025), and in the UK by the Nuffield +Foundation since September 2024 (Nuffield Foundation 2024). These +funders had no involvement in the design, development, or content of +this software or paper.

+

We acknowledge contributions from all PolicyEngine contributors, and +thank the OpenFisca community for the foundational microsimulation +framework (OpenFisca +Contributors 2024). We acknowledge the US Census Bureau for +providing access to the Current Population Survey, and the UK Data +Service and the Department for Work and Pensions for providing access to +the Family Resources Survey. We acknowledge the UKMOD team at the +Institute for Social and Economic Research (ISER), University of Essex, +for their contributions to model descriptions (Sutherland and Figari +2013).

+

AI Usage Disclosure

+

Generative AI tools — Claude Opus 4 by Anthropic (Anthropic 2025) — were +used to assist with code refactoring and drafting of this paper. All +AI-assisted outputs were reviewed, edited, and validated by human +authors, who made all core design decisions regarding software +architecture, policy modeling, and parameter implementation. The authors +remain fully responsible for the accuracy, originality, and correctness +of all submitted materials.

+

References

+
+
+Anthropic. 2025. Claude. Released. https://www.anthropic.com/claude. +
+
+Arnold Ventures. 2023. Public Finance Program. https://www.arnoldventures.org/work/public-finance. +
+
+Council of the District of Columbia. 2023. District Child Tax +Credit Amendment Act of 2023. https://lims.dccouncil.gov/Legislation/B25-0190. +
+
+Federal Reserve Bank of Atlanta. 2021. Policy Rules Database. +https://www.atlantafed.org/economic-mobility-and-resilience/advancing-careers-for-low-income-families/policy-rules-database. +
+
+Feenberg, Daniel R. 2024. TAXSIMNational Bureau of Economic Research.” https://taxsim.nber.org/. +
+
+Feenberg, Daniel R., and Elisabeth Coutts. 1993. +TAXSIM: A Tool for Calculating Federal and State +Income Tax Liabilities.” National Tax Journal 46 (3): +271–80. +
+
+Ghenis, Max. 2024a. NEO Philanthropy Awards $200,000 +Grant to PolicyEngine.” https://policyengine.org/us/research/neo-philanthropy. +
+
+Ghenis, Max. 2024b. PolicyEngine and Better +Government Lab Collaboration.” https://www.policyengine.org/us/research/policyengine-better-government-lab-collaboration. +
+
+Ghenis, Max, and Jason DeBacker. 2024. Enhanced Current +Population Survey: Integrating IRS Public Use File +Data Using Quantile Regression Forests. https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/. +
+
+Ghenis, Max, and Nikhil Woodruff. 2025. PolicyEngine US +Data: Enhanced Microdata for US Tax-Benefit Microsimulation. +Released. https://github.com/PolicyEngine/policyengine-us-data. +
+
+HM Government. 2025. The No10 Innovation Fellowship +Programme. https://www.gov.uk/government/publications/the-no10-innovation-fellowship-programme. +
+
+HM Treasury. 2024. HMT: PolicyEngine UK – +Algorithmic Transparency Recording Standard. https://www.gov.uk/algorithmic-transparency-records/hmt-modelling-policy-engine. +
+
+House of Lords. 2026. National Insurance Contributions (Employer +Pensions Contributions) Bill – Grand Committee. https://hansard.parliament.uk/Lords/2026-02-24/debates/A381F7D6-0A3C-48FD-8D9E-67751E25877A/NationalInsuranceContributions(EmployerPensionsContributions)Bill. +
+
+Institute for Research on Poverty. 2025. 2025–2026 IRP +Extramural Large Grants. https://www.irp.wisc.edu/2025-2026-irp-extramural-large-grants/. +
+
+Kennan, Ariel, Alessandra Garcia Guevara, and Jason Goodman. 2025. +AI-Powered Rules as Code: Experiments with Public +Benefits Policy. Beeck Center for Social Impact; Innovation, +Georgetown University. https://beeckcenter.georgetown.edu/report/ai-powered-rules-as-code-experiments-with-public-benefits-policy/. +
+
+Kennan, Ariel, Lisa Singh, Bianca Dammholz, Keya Sengupta, and Jason Yi. +2023. Exploring Rules Communication: Moving Beyond Static Documents +to Standardized Code for U.S. Public Benefits +Programs. Beeck Center for Social Impact; Innovation, Georgetown +University. https://beeckcenter.georgetown.edu/report/exploring-rules-communication-moving-beyond-static-documents-to-standardized-code-for-u-s-public-benefits-programs/. +
+
+McCabe, Joshua, and Leah Sargeant. 2024. Building a Stronger +Foundation for American Families: Options for Child +Tax Credit Reform. Niskanen Center. https://www.niskanencenter.org/building-a-stronger-foundation-for-american-families-options-for-child-tax-credit-reform/. +
+
+Mosley, Max, Ryan Wattam, and Carol Vincent. 2025. UK +Living Standards Review 2025. National Institute of Economic; +Social Research. https://niesr.ac.uk/publications/uk-living-standards-review-2025. +
+
+National Science Foundation. 2025. POSE: Phase +I: PolicyEngine – Advancing Public Policy +Analysis. https://www.nsf.gov/awardsearch/showAward?AWD_ID=2518372. +
+
+Nuffield Foundation. 2024. Enhancing, Localising and Democratising +Tax-Benefit Policy Analysis. https://www.nuffieldfoundation.org/project/enhancing-localising-and-democratising-tax-benefit-policy-analysis. +
+
+Office of Representative Morgan McGarvey. 2024. Congressman +Morgan McGarvey Introduces Young Adult Tax Credit +Act. https://mcgarvey.house.gov/media/press-releases/congressman-morgan-mcgarvey-introduces-young-adult-tax-credit-act. +
+
+Office of Senator Cory Booker. 2026. Booker Announces Keep +Your Pay Act. https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act. +
+
+OpenFisca Contributors. 2024. OpenFisca: Open Rules as +Code for Tax-Benefit Systems. Released. https://openfisca.org. +
+
+Sutherland, Holly, and Francesco Figari. 2013. +EUROMOD: The European Union Tax-Benefit +Microsimulation Model.” International Journal of +Microsimulation 6 (1): 4–26. https://doi.org/10.34196/ijm.00075. +
+
+Woodruff, Nikhil. 2024. Raising Employer NIC in the +Autumn Budget. Institute of Economic Affairs. https://iea.org.uk/publications/raising-employer-nic-in-the-autumn-budget/. +
+
+Woodruff, Nikhil. 2025. Impact of Tax Changes 2025–2026. +Institute of Economic Affairs. https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/. +
+
+Woodruff, Nikhil, Max Ghenis, and Vahid Ahmadi. 2025. +PolicyEngine UK Data: Enhanced Microdata for UK +Tax-Benefit Microsimulation. Released. https://github.com/PolicyEngine/policyengine-uk-data. +
+
+Woodruff, Nikhil, Max Ghenis, and Anthony Volk. 2024. +PolicyEngine Core: A Microsimulation Framework. +Released. https://github.com/PolicyEngine/policyengine-core. +
+
+Youngman, Tom, Tim Lennox, M. Lopes Alves, et al. 2026. Agent-Based +Macroeconomics for the UK’s Seventh Carbon +Budget. https://arxiv.org/abs/2602.15607. +
+
+
+
+ + + + + diff --git a/paper.md b/paper.md index fe70487c..41793c9b 100644 --- a/paper.md +++ b/paper.md @@ -22,7 +22,7 @@ authors: orcid: 0009-0003-4869-7409 affiliation: '1' affiliations: - - name: PolicyEngine + - name: PolicyEngine, Washington, DC, United States index: '1' date: 19 March 2026 bibliography: paper.bib @@ -35,31 +35,67 @@ PolicyEngine is an open-source, multi-country microsimulation framework for tax- # Statement of Need Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. -PolicyEngine addresses these gaps by providing a fully open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing a fully open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. Because existing proprietary models cannot be independently verified, PolicyEngine enables fully reproducible and transparent policy analysis. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field -In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides tax calculations, while the Tax Policy Center and Congressional Budget Office maintain proprietary models. In the UK, the primary microsimulation models include UKMOD, maintained by the Centre for Microsimulation and Policy Analysis at the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and models maintained internally by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. +The primary UK microsimulation models include UKMOD, maintained by the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and proprietary models maintained by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. PolicyEngine differentiates itself in several ways: - **Open-source, multi-country framework**: a single Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. -- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural changes — and evaluate their impact on any household or the full population. Built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. +- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms with the `+` operator, or implement structural changes via simulation modifiers — and evaluate their impact on any household or the full population. Built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies and local authorities). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. # Software Design -PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The policyengine.py package is organized as a country-agnostic layer with the following core components: - -**Simulation and Dataset** classes provide the primary interface. The Simulation class executes tax-benefit models on datasets, applying policy reforms and caching results. The Dataset class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. Country-specific datasets — the Current Population Survey for the US and the Enhanced Family Resources Survey for the UK — are loaded from companion data repositories [@pe_us_data; @pe_uk_data]. +![PolicyEngine architecture. Country packages provide tax-benefit rules and parameters; the core framework runs simulations on microdata and produces standardized analytical outputs.](architecture.png){width="100%"} + +PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The policyengine.py package is organized as a country-agnostic layer with the following core components. + +A minimal example demonstrates the API: + +```python +import datetime +from policyengine.core import ( + Parameter, ParameterValue, Policy, Simulation, +) +from policyengine.tax_benefit_models.uk import ( + economic_impact_analysis, uk_latest, +) + +param = Parameter( + name="gov.hmrc.income_tax.allowances.personal_allowance.amount", + tax_benefit_model_version=uk_latest, +) +reform = Policy( + name="Zero personal allowance", + parameter_values=[ + ParameterValue( + parameter=param, + start_date=datetime.date(2026, 1, 1), + end_date=datetime.date(2026, 12, 31), + value=0, + ), + ], +) + +baseline = Simulation(tax_benefit_model_version=uk_latest) +reformed = Simulation( + tax_benefit_model_version=uk_latest, policy=reform, +) +analysis = economic_impact_analysis(baseline, reformed) +``` + +**Simulation and Dataset** classes provide the primary interface. The Simulation class executes tax-benefit models on datasets and applies policy reforms; `run()` always recomputes while `ensure()` uses an LRU cache with disk persistence. The Dataset class represents microdata containing entity-level data (persons, households, benefit units, tax units) with survey weights and entity relationships. Country-specific datasets — the Current Population Survey for the US and the Enhanced Family Resources Survey for the UK — are loaded from companion data repositories [@pe_us_data; @pe_uk_data]. **Policy and Parameter** classes define the reform system. The Policy class bundles parametric reforms that modify tax-benefit system parameters. The Parameter class represents system settings (tax rates, benefit thresholds, income limits), while ParameterValue supports time-bound values, enabling phased policy implementations across multiple years. **Variable** classes encapsulate country-specific logic. Each Variable is a computed quantity (income tax, benefit entitlement) with entity mappings. Versioned country models store variables, parameters, and execution logic. The framework conditionally imports country packages, allowing graceful operation when only one country is installed. -**Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as CongressionalDistrictImpact (US) and ConstituencyImpact (UK). All output classes produce PolicyEngine-branded Plotly visualizations. +**Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as CongressionalDistrictImpact (US), ConstituencyImpact, and LocalAuthorityImpact (UK). Visualisation utilities produce PolicyEngine-branded Plotly charts. -**Region** classes manage geographic scope, enabling sub-national analysis for regions within each country. +PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses. # Research Impact Statement @@ -71,9 +107,9 @@ PolicyEngine has demonstrated research impact across government, academia, and p **Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. The Federal Reserve Bank of Atlanta independently validates PolicyEngine's model through its Policy Rules Database, conducting three-way comparisons between PolicyEngine, TAXSIM, and the Fed's own models [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. -**Academic research.** In the US, Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for Research on Poverty [@pe_usc]. Jason DeBacker (University of South Carolina) has contributed to behavioral response modeling in PolicyEngine US with support from Arnold Ventures [@ghenis2024nta]. The Beeck Center for Social Impact and Innovation at Georgetown University featured PolicyEngine as a project spotlight in their research on rules-as-code for US public benefits programs [@beeck2023rac], and documented two Policy2Code challenge teams building on PolicyEngine in their 2025 report on AI-powered rules as code [@beeck2025ai]. In the UK, Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the Department for Energy Security and Net Zero. +**Academic research.** Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for Research on Poverty [@pe_usc]. The Beeck Center at Georgetown University featured PolicyEngine in research on rules-as-code for US public benefits [@beeck2023rac; @beeck2025ai]. Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget at the Institute for New Economic Thinking, Oxford. -**Policy research.** In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, becoming the first external organization to leverage PolicyEngine's enhanced US microdata [@mccabe2024ctc]. DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023, which became the first local child tax credit in US history when it passed in September 2024 [@pe_dctc]. Senator Cory Booker's office embedded a PolicyEngine-built calculator on his official Senate website for constituents to model the impact of the Keep Your Pay Act on their household taxes [@pe_keepyourpay]. In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025, acknowledging "the expertise and generosity of Nikhil Woodruff and Vahid Ahmadi in helping us maximise the benefits of using PolicyEngine" [@niesr2025living]. The Institute of Economic Affairs has published reports using PolicyEngine's microsimulation model to analyze employer National Insurance contributions [@woodruff2024nic] and the distributional impact of 2025–2026 tax changes on UK households [@woodruff2025tax]. +**Policy research.** In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options [@mccabe2024ctc]. DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023, the first local child tax credit in US history [@pe_dctc]. Senator Cory Booker's office embedded a PolicyEngine-built calculator on his official Senate website for the Keep Your Pay Act [@pe_keepyourpay]. In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025 [@niesr2025living], and the Institute of Economic Affairs has published PolicyEngine-based analyses of employer National Insurance contributions and 2025–2026 tax changes [@woodruff2024nic; @woodruff2025tax]. # Acknowledgements @@ -83,6 +119,6 @@ We acknowledge contributions from all PolicyEngine contributors, and thank the O # AI Usage Disclosure -Generative AI tools — Claude by Anthropic [@claude2025] — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. +Generative AI tools — Claude Opus 4 by Anthropic [@claude2025] — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. # References From e8e4af4030856887c72a4eb3d0e305b034fefdc8 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 1 Apr 2026 14:12:42 -0400 Subject: [PATCH 26/65] Revise JOSS paper rationale and preview --- paper-preview.html | 705 +++++++++++++++++---------------------------- paper.bib | 7 + paper.md | 57 +--- 3 files changed, 280 insertions(+), 489 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index c45ea1d2..19bbab29 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -1,371 +1,216 @@ - + - + + + PolicyEngine: A Tax-Benefit Microsimulation Framework + html { + background-color: white; + } + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + svg { + height: auto; + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + white-space: pre-wrap; + font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace; + font-size: 85%; + margin: 0; + hyphens: manual; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + overflow-wrap: normal; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + border: none; + border-top: 1px solid #1a1a1a; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC ul { + padding-left: 1.3em; + } + #TOC > ul { + padding-left: 0; + } + #TOC a:not(:hover) { + text-decoration: none; + } + span.smallcaps{font-variant: small-caps;} + div.columns{display: flex; gap: min(4vw, 1.5em);} + div.column{flex: auto; overflow-x: auto;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + /* The extra [class] is a hack that increases specificity enough to + override a similar rule in reveal.js */ + ul.task-list[class]{list-style: none;} + ul.task-list li input[type="checkbox"] { + font-size: inherit; + width: 0.8em; + margin: 0 0.8em 0.2em -1.6em; + vertical-align: middle; + } + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + /* CSS for citations */ + div.csl-bib-body { } + div.csl-entry { + clear: both; + } + .hanging-indent div.csl-entry { + margin-left:2em; + text-indent:-2em; + } + div.csl-left-margin { + min-width:2em; + float:left; + } + div.csl-right-inline { + margin-left:2em; + padding-left:1em; + } + div.csl-indent { + margin-left: 2em; + } - - -
-
-
JOSS Paper Preview
-

PolicyEngine: A Tax-Benefit Microsimulation +
+

PolicyEngine: A Tax-Benefit Microsimulation Framework

-
- Max -Ghenis1 - Nikhil -Woodruff1 - Vahid -Ahmadi1 * - Pavel -Makarchuk1 -
-
1 PolicyEngine, Washington, -DC, United States
- -
- Python - microsimulation - tax - benefit - public policy - economic analysis -
-

-
- - -
- - -
+

19 March 2026

+

Summary

-

PolicyEngine is an open-source, multi-country microsimulation -framework for tax-benefit policy analysis, implemented in Python. The -policyengine package provides a unified interface for running policy -simulations, analyzing distributional impacts, and visualizing results -across the US and the UK. It delegates country-specific tax-benefit -calculations to dedicated country packages (policyengine-us and -policyengine-uk) while providing shared abstractions for simulations, -datasets, parametric reforms, and output analysis. The framework -supports both individual household simulations and population-wide -microsimulations using representative survey microdata with calibrated -weights. PolicyEngine powers an interactive web application at PolicyEngine.py (PolicyEngine Contributors 2026) is +an open-source, multi-country microsimulation framework for tax-benefit +policy analysis, implemented in Python. The package provides a unified +interface for running policy simulations, analyzing distributional +impacts, and visualizing results across the US and the UK. It delegates +country-specific tax-benefit calculations to dedicated country packages +(policyengine-us and policyengine-uk) while providing shared +abstractions for simulations, datasets, parametric reforms, and output +analysis. The framework supports both individual household simulations +and population-wide microsimulations using representative survey +microdata with calibrated weights. PolicyEngine powers an interactive +web application at policyengine.org that enables non-technical users to explore policy reforms in both countries.

Statement of Need

@@ -384,17 +229,17 @@

Statement of Need

formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. PolicyEngine addresses these gaps by -providing a fully open-source Python microsimulation framework that -spans multiple countries under a consistent API. Users can supply their -own microdata or use built-in datasets, and compute the impact of -current law or hypothetical policy reforms on any household or a full -national population. The Simulation class supports individual household -analysis, while population-level aggregate analysis uses representative -survey datasets with calibrated weights. Because existing proprietary -models cannot be independently verified, PolicyEngine enables fully -reproducible and transparent policy analysis. The framework’s open -development on GitHub enables external validation, community -contributions, and reproducible policy analysis across countries.

+providing an open-source Python microsimulation framework that spans +multiple countries under a consistent API. Users can supply their own +microdata or use built-in datasets, and compute the impact of current +law or hypothetical policy reforms on any household or a national +population. The Simulation class supports individual household analysis, +while population-level aggregate analysis uses representative survey +datasets with calibrated weights. Because existing proprietary models +cannot be independently verified, PolicyEngine enables reproducible and +transparent policy analysis. The framework’s open development on GitHub +enables external validation, community contributions, and reproducible +policy analysis across countries.

State of the Field

The primary UK microsimulation models include UKMOD, maintained by the Institute for Social and Economic Research (ISER), University of @@ -407,6 +252,14 @@

State of the Field

PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework (Woodruff et al. 2024).

+

Rather than contributing these features directly to OpenFisca, +PolicyEngine introduced a separate analyst-facing layer because the +project required capabilities that cut across countries and sit +downstream of legislative modeling: harmonized dataset handling, a +stable reform API, standardized distributional outputs, and integration +with a public-facing web application. This design lets country model +packages focus on statutory rules while shared analysis workflows evolve +independently.

PolicyEngine differentiates itself in several ways:

  • Open-source, multi-country framework: a single @@ -419,17 +272,23 @@

    State of the Field

    and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales.
  • +
  • Separated modeling, analysis, and data layers: the +project splits reusable engine logic into PolicyEngine Core, +country-agnostic analysis workflows into PolicyEngine.py, country +legislation into policyengine-us and policyengine-uk, and enhanced +survey microdata into companion repositories (Woodruff et al. +2024, 2025; Ghenis and Woodruff 2025). This separation allows +each layer to be versioned and updated independently as legislation, +methodology, and microdata change.
  • Programmatic reform and economic analysis: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms with the + operator, or implement -structural changes via simulation modifiers — and evaluate their impact -on any household or the full population. Built-in output classes compute -decile impacts, intra-decile distributions, poverty rates, inequality -metrics (Gini coefficients), budgetary impacts, and regional breakdowns -(US congressional districts, UK parliamentary constituencies and local -authorities). Behavioral response modules model both intensive margin -(hours adjustment) and extensive margin (participation) labor supply -responses to policy changes.
  • +structural changes via simulation modifiers, then evaluate impacts on +households, poverty, inequality, government budgets, and subnational +regions. Behavioral response modules model both intensive-margin (hours +adjustment) and extensive-margin (participation) labor supply responses +to policy changes.

Software Design

@@ -440,72 +299,34 @@

Software Design

runs simulations on microdata and produces standardized analytical outputs.
-

PolicyEngine is built on the PolicyEngine Core framework, which -extends the OpenFisca microsimulation engine. The policyengine.py -package is organized as a country-agnostic layer with the following core -components.

-

A minimal example demonstrates the API:

-
import datetime
-from policyengine.core import (
-    Parameter, ParameterValue, Policy, Simulation,
-)
-from policyengine.tax_benefit_models.uk import (
-    economic_impact_analysis, uk_latest,
-)
-
-param = Parameter(
-    name="gov.hmrc.income_tax.allowances.personal_allowance.amount",
-    tax_benefit_model_version=uk_latest,
-)
-reform = Policy(
-    name="Zero personal allowance",
-    parameter_values=[
-        ParameterValue(
-            parameter=param,
-            start_date=datetime.date(2026, 1, 1),
-            end_date=datetime.date(2026, 12, 31),
-            value=0,
-        ),
-    ],
-)
-
-baseline = Simulation(tax_benefit_model_version=uk_latest)
-reformed = Simulation(
-    tax_benefit_model_version=uk_latest, policy=reform,
-)
-analysis = economic_impact_analysis(baseline, reformed)
-

Simulation and Dataset classes provide the primary -interface. The Simulation class executes tax-benefit models on datasets -and applies policy reforms; run() always recomputes while -ensure() uses an LRU cache with disk persistence. The -Dataset class represents microdata containing entity-level data -(persons, households, benefit units, tax units) with survey weights and -entity relationships. Country-specific datasets — the Current Population -Survey for the US and the Enhanced Family Resources Survey for the UK — -are loaded from companion data repositories PolicyEngine is built as a four-layer architecture. PolicyEngine Core +extends the OpenFisca engine with reusable simulation abstractions, +versioned parameters, and dataset interfaces shared across countries +(Woodruff et al. +2024). PolicyEngine.py adds country-agnostic analyst workflows, +including baseline-versus-reform comparisons, standardized output types, +and visualization helpers. The policyengine-us and policyengine-uk +packages contain statutory logic, variables, and entity structures +specific to each tax-benefit system. Companion data repositories hold +enhanced survey microdata and calibration pipelines for the CPS and +Family Resources Survey (Ghenis and Woodruff 2025; Woodruff et al. 2025).

-

Policy and Parameter classes define the reform -system. The Policy class bundles parametric reforms that modify -tax-benefit system parameters. The Parameter class represents system -settings (tax rates, benefit thresholds, income limits), while -ParameterValue supports time-bound values, enabling phased policy -implementations across multiple years.

-

Variable classes encapsulate country-specific logic. -Each Variable is a computed quantity (income tax, benefit entitlement) -with entity mappings. Versioned country models store variables, -parameters, and execution logic. The framework conditionally imports -country packages, allowing graceful operation when only one country is -installed.

-

Output classes provide standardized analysis. These -include Aggregate for sum, mean, and count statistics; DecileImpact and -IntraDecileImpact for distributional analysis by income decile; Poverty -and Inequality for welfare metrics; ChangeAggregate for -baseline-versus-reform comparisons; and region-specific classes such as -CongressionalDistrictImpact (US), ConstituencyImpact, and -LocalAuthorityImpact (UK). Visualisation utilities produce -PolicyEngine-branded Plotly charts.

+

This split trades some packaging complexity for clearer ownership and +release independence. Legislative changes in a country package do not +require duplicating shared output logic; methodological changes to +distributional analysis do not require modifying statutory formulas; and +microdata refreshes can be versioned separately from the modeling +libraries. It also supports different contributor workflows, since legal +rules, data calibration, and analyst-facing outputs are maintained by +overlapping but distinct groups.

+

At runtime, a simulation combines a country model version, a +microdataset, and optional reform or behavioral modifiers. +PolicyEngine.py then applies a consistent analysis layer across +countries, producing decile tables, poverty and inequality metrics, +aggregate program statistics, and regional breakdowns from the resulting +entity-level outputs. The repository documentation includes runnable +examples for both household-level and population-level analyses.

PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses.

Research Impact Statement

@@ -751,6 +572,11 @@

References

Code for Tax-Benefit Systems. Released. https://openfisca.org.
+
+PolicyEngine Contributors. 2026. PolicyEngine.py. Released. https://github.com/PolicyEngine/policyengine.py. +
Sutherland, Holly, and Francesco Figari. 2013. EUROMOD: The European Union Tax-Benefit @@ -787,12 +613,5 @@

References

href="https://arxiv.org/abs/2602.15607">https://arxiv.org/abs/2602.15607.
- - - - - diff --git a/paper.bib b/paper.bib index 10283448..6a94c10e 100644 --- a/paper.bib +++ b/paper.bib @@ -23,6 +23,13 @@ @software{policyengine_core year={2024} } +@software{policyengine_py, + title={{PolicyEngine.py}}, + author={{PolicyEngine Contributors}}, + url={https://github.com/PolicyEngine/policyengine.py}, + year={2026} +} + @software{pe_uk_data, title={{PolicyEngine UK Data}: Enhanced Microdata for UK Tax-Benefit Microsimulation}, author={Woodruff, Nikhil and Ghenis, Max and Ahmadi, Vahid}, diff --git a/paper.md b/paper.md index 41793c9b..dbe03bea 100644 --- a/paper.md +++ b/paper.md @@ -30,70 +30,35 @@ bibliography: paper.bib # Summary -PolicyEngine is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The policyengine package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-us and policyengine-uk) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. +PolicyEngine.py [@policyengine_py] is an open-source, multi-country microsimulation framework for tax-benefit policy analysis, implemented in Python. The package provides a unified interface for running policy simulations, analyzing distributional impacts, and visualizing results across the US and the UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-us and policyengine-uk) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. The framework supports both individual household simulations and population-wide microsimulations using representative survey microdata with calibrated weights. PolicyEngine powers an interactive web application at [policyengine.org](https://policyengine.org) that enables non-technical users to explore policy reforms in both countries. # Statement of Need Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. -PolicyEngine addresses these gaps by providing a fully open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a full national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. Because existing proprietary models cannot be independently verified, PolicyEngine enables fully reproducible and transparent policy analysis. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +PolicyEngine addresses these gaps by providing an open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. Because existing proprietary models cannot be independently verified, PolicyEngine enables reproducible and transparent policy analysis. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field The primary UK microsimulation models include UKMOD, maintained by the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and proprietary models maintained by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. +Rather than contributing these features directly to OpenFisca, PolicyEngine introduced a separate analyst-facing layer because the project required capabilities that cut across countries and sit downstream of legislative modeling: harmonized dataset handling, a stable reform API, standardized distributional outputs, and integration with a public-facing web application. This design lets country model packages focus on statutory rules while shared analysis workflows evolve independently. + PolicyEngine differentiates itself in several ways: - **Open-source, multi-country framework**: a single Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. -- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms with the `+` operator, or implement structural changes via simulation modifiers — and evaluate their impact on any household or the full population. Built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, UK parliamentary constituencies and local authorities). Behavioral response modules model both intensive margin (hours adjustment) and extensive margin (participation) labor supply responses to policy changes. +- **Separated modeling, analysis, and data layers**: the project splits reusable engine logic into PolicyEngine Core, country-agnostic analysis workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories [@policyengine_core; @pe_us_data; @pe_uk_data]. This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change. +- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms with the `+` operator, or implement structural changes via simulation modifiers, then evaluate impacts on households, poverty, inequality, government budgets, and subnational regions. Behavioral response modules model both intensive-margin (hours adjustment) and extensive-margin (participation) labor supply responses to policy changes. # Software Design ![PolicyEngine architecture. Country packages provide tax-benefit rules and parameters; the core framework runs simulations on microdata and produces standardized analytical outputs.](architecture.png){width="100%"} -PolicyEngine is built on the PolicyEngine Core framework, which extends the OpenFisca microsimulation engine. The policyengine.py package is organized as a country-agnostic layer with the following core components. - -A minimal example demonstrates the API: - -```python -import datetime -from policyengine.core import ( - Parameter, ParameterValue, Policy, Simulation, -) -from policyengine.tax_benefit_models.uk import ( - economic_impact_analysis, uk_latest, -) - -param = Parameter( - name="gov.hmrc.income_tax.allowances.personal_allowance.amount", - tax_benefit_model_version=uk_latest, -) -reform = Policy( - name="Zero personal allowance", - parameter_values=[ - ParameterValue( - parameter=param, - start_date=datetime.date(2026, 1, 1), - end_date=datetime.date(2026, 12, 31), - value=0, - ), - ], -) - -baseline = Simulation(tax_benefit_model_version=uk_latest) -reformed = Simulation( - tax_benefit_model_version=uk_latest, policy=reform, -) -analysis = economic_impact_analysis(baseline, reformed) -``` - -**Simulation and Dataset** classes provide the primary interface. The Simulation class executes tax-benefit models on datasets and applies policy reforms; `run()` always recomputes while `ensure()` uses an LRU cache with disk persistence. The Dataset class represents microdata containing entity-level data (persons, households, benefit units, tax units) with survey weights and entity relationships. Country-specific datasets — the Current Population Survey for the US and the Enhanced Family Resources Survey for the UK — are loaded from companion data repositories [@pe_us_data; @pe_uk_data]. - -**Policy and Parameter** classes define the reform system. The Policy class bundles parametric reforms that modify tax-benefit system parameters. The Parameter class represents system settings (tax rates, benefit thresholds, income limits), while ParameterValue supports time-bound values, enabling phased policy implementations across multiple years. - -**Variable** classes encapsulate country-specific logic. Each Variable is a computed quantity (income tax, benefit entitlement) with entity mappings. Versioned country models store variables, parameters, and execution logic. The framework conditionally imports country packages, allowing graceful operation when only one country is installed. - -**Output classes** provide standardized analysis. These include Aggregate for sum, mean, and count statistics; DecileImpact and IntraDecileImpact for distributional analysis by income decile; Poverty and Inequality for welfare metrics; ChangeAggregate for baseline-versus-reform comparisons; and region-specific classes such as CongressionalDistrictImpact (US), ConstituencyImpact, and LocalAuthorityImpact (UK). Visualisation utilities produce PolicyEngine-branded Plotly charts. +PolicyEngine is built as a four-layer architecture. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS and Family Resources Survey [@pe_us_data; @pe_uk_data]. + +This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. + +At runtime, a simulation combines a country model version, a microdataset, and optional reform or behavioral modifiers. PolicyEngine.py then applies a consistent analysis layer across countries, producing decile tables, poverty and inequality metrics, aggregate program statistics, and regional breakdowns from the resulting entity-level outputs. The repository documentation includes runnable examples for both household-level and population-level analyses. PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses. From 675ac4f201f9f563ed5a988477fa881f343e5374 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 2 Apr 2026 07:27:00 -0400 Subject: [PATCH 27/65] Restore styled JOSS preview --- paper-preview.html | 534 +++++++++++++++++++++++++++++---------------- 1 file changed, 349 insertions(+), 185 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 19bbab29..446a7c0d 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -1,202 +1,359 @@ - + - - - + PolicyEngine: A Tax-Benefit Microsimulation Framework + + @media print { + body { background: white; } + .paper-header { background: none !important; color: var(--text); padding: 1rem 0; } + .tag { border-color: var(--border); color: var(--text-secondary); } + .sidebar { display: none; } + .container { grid-template-columns: 1fr; } + .paper-body { box-shadow: none; padding: 0; } + } + -
-

PolicyEngine: A Tax-Benefit Microsimulation + + +
+
+
JOSS Paper Preview
+

PolicyEngine: A Tax-Benefit Microsimulation Framework

-

19 March 2026

-

+
+ Max +Ghenis1 + Nikhil +Woodruff1 + Vahid +Ahmadi1 * + Pavel +Makarchuk1 +
+
1 PolicyEngine, Washington, +DC, United States
+ +
+ Python + microsimulation + tax + benefit + public policy + economic analysis +
+ + + + +
+ + +

Summary

PolicyEngine.py (PolicyEngine Contributors 2026) is @@ -613,5 +770,12 @@

References

href="https://arxiv.org/abs/2602.15607">https://arxiv.org/abs/2602.15607.
+ + + + + From e02e9112fcde3ca4d77c2aeb1748e28706a4a53e Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 12:43:03 +0100 Subject: [PATCH 28/65] Replace fake data repo citations with real Enhanced CPS paper Remove pe_uk_data (no paper exists) and replace pe_us_data with Woodruff & Ghenis 2024 working paper from policyengine-us-data/paper. Co-Authored-By: Claude Opus 4.6 --- paper.bib | 18 ++++++------------ paper.md | 4 ++-- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/paper.bib b/paper.bib index 6a94c10e..1ba77164 100644 --- a/paper.bib +++ b/paper.bib @@ -30,18 +30,12 @@ @software{policyengine_py year={2026} } -@software{pe_uk_data, - title={{PolicyEngine UK Data}: Enhanced Microdata for UK Tax-Benefit Microsimulation}, - author={Woodruff, Nikhil and Ghenis, Max and Ahmadi, Vahid}, - url={https://github.com/PolicyEngine/policyengine-uk-data}, - year={2025} -} - -@software{pe_us_data, - title={{PolicyEngine US Data}: Enhanced Microdata for US Tax-Benefit Microsimulation}, - author={Ghenis, Max and Woodruff, Nikhil}, - url={https://github.com/PolicyEngine/policyengine-us-data}, - year={2025} +@unpublished{woodruff2024enhanced_cps, + title={Enhancing Survey Microdata with Administrative Records: A Novel Approach to Microsimulation Dataset Construction}, + author={Woodruff, Nikhil and Ghenis, Max}, + year={2024}, + note={PolicyEngine working paper}, + url={https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper} } @article{taxsim, diff --git a/paper.md b/paper.md index dbe03bea..025a76d3 100644 --- a/paper.md +++ b/paper.md @@ -47,14 +47,14 @@ PolicyEngine differentiates itself in several ways: - **Open-source, multi-country framework**: a single Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. -- **Separated modeling, analysis, and data layers**: the project splits reusable engine logic into PolicyEngine Core, country-agnostic analysis workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories [@policyengine_core; @pe_us_data; @pe_uk_data]. This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change. +- **Separated modeling, analysis, and data layers**: the project splits reusable engine logic into PolicyEngine Core, country-agnostic analysis workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories [@policyengine_core; @woodruff2024enhanced_cps]. This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change. - **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms with the `+` operator, or implement structural changes via simulation modifiers, then evaluate impacts on households, poverty, inequality, government budgets, and subnational regions. Behavioral response modules model both intensive-margin (hours adjustment) and extensive-margin (participation) labor supply responses to policy changes. # Software Design ![PolicyEngine architecture. Country packages provide tax-benefit rules and parameters; the core framework runs simulations on microdata and produces standardized analytical outputs.](architecture.png){width="100%"} -PolicyEngine is built as a four-layer architecture. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS and Family Resources Survey [@pe_us_data; @pe_uk_data]. +PolicyEngine is built as a four-layer architecture. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. From 915e553d4e0c7c2d9612ceb403f0ec35eb30a7a3 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 12:51:32 +0100 Subject: [PATCH 29/65] Add proper figure reference for architecture diagram in paper Update caption to match actual diagram content and add explicit Figure 1 references in the Software Design text, following JOSS conventions. Co-Authored-By: Claude Opus 4.6 --- paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper.md b/paper.md index 025a76d3..5121238b 100644 --- a/paper.md +++ b/paper.md @@ -52,13 +52,13 @@ PolicyEngine differentiates itself in several ways: # Software Design -![PolicyEngine architecture. Country packages provide tax-benefit rules and parameters; the core framework runs simulations on microdata and produces standardized analytical outputs.](architecture.png){width="100%"} +![PolicyEngine architecture. Three inputs — policies (tax-benefit rules and parameters from country packages), households (survey microdata with calibrated weights), and dynamics (behavioural response elasticities) — feed into the Simulation engine, which produces standardized analytical outputs including decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts.](architecture.png){width="100%"} -PolicyEngine is built as a four-layer architecture. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. +Figure 1 illustrates the high-level architecture. PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. -At runtime, a simulation combines a country model version, a microdataset, and optional reform or behavioral modifiers. PolicyEngine.py then applies a consistent analysis layer across countries, producing decile tables, poverty and inequality metrics, aggregate program statistics, and regional breakdowns from the resulting entity-level outputs. The repository documentation includes runnable examples for both household-level and population-level analyses. +At runtime, as shown in Figure 1, a simulation combines a country model version, a microdataset, and optional reform or behavioral modifiers. PolicyEngine.py then applies a consistent analysis layer across countries, producing decile tables, poverty and inequality metrics, aggregate program statistics, and regional breakdowns from the resulting entity-level outputs. The repository documentation includes runnable examples for both household-level and population-level analyses. PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses. From 4ac4206a7d012be80ee958677f2a4600eac2d666 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 12:53:37 +0100 Subject: [PATCH 30/65] Update HTML previews to match paper.md citation and figure changes - Replace pe_us_data/pe_uk_data citations with woodruff2024enhanced_cps - Update architecture figure caption and add Figure 1 text references - Remove pe_uk_data reference entry Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 43 ++- paper.html | 780 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 799 insertions(+), 24 deletions(-) create mode 100644 paper.html diff --git a/paper-preview.html b/paper-preview.html index 446a7c0d..7bf08427 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -434,8 +434,8 @@

State of the Field

country-agnostic analysis workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories (Woodruff et al. -2024, 2025; Ghenis and Woodruff 2025). This separation allows +data-cites="policyengine_core woodruff2024enhanced_cps">(Woodruff et al. +2024; Woodruff and Ghenis 2024). This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change.
  • Programmatic reform and economic analysis: users @@ -450,13 +450,15 @@

    State of the Field

    Software Design

    - +alt="PolicyEngine architecture. Three inputs — policies (tax-benefit rules and parameters from country packages), households (survey microdata with calibrated weights), and dynamics (behavioural response elasticities) — feed into the Simulation engine, which produces standardized analytical outputs including decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts." /> +
    -

    PolicyEngine is built as a four-layer architecture. PolicyEngine Core +

    Figure 1 illustrates the high-level architecture. PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries (Woodruff et al. @@ -465,10 +467,9 @@

    Software Design

    and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold -enhanced survey microdata and calibration pipelines for the CPS and -Family Resources Survey (Ghenis and Woodruff 2025; Woodruff -et al. 2025).

    +enhanced survey microdata and calibration pipelines for the CPS (Woodruff and Ghenis 2024) +and Family Resources Survey.

    This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to @@ -477,7 +478,7 @@

    Software Design

    libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups.

    -

    At runtime, a simulation combines a country model version, a +

    At runtime, as shown in Figure 1, a simulation combines a country model version, a microdataset, and optional reform or behavioral modifiers. PolicyEngine.py then applies a consistent analysis layer across countries, producing decile tables, poverty and inequality metrics, @@ -649,11 +650,11 @@

    References

    Data Using Quantile Regression Forests. https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/. -
    -Ghenis, Max, and Nikhil Woodruff. 2025. PolicyEngine US -Data: Enhanced Microdata for US Tax-Benefit Microsimulation. -Released. https://github.com/PolicyEngine/policyengine-us-data. +
    +Woodruff, Nikhil, and Max Ghenis. 2024. Enhancing Survey Microdata +with Administrative Records: A Novel Approach to Microsimulation Dataset +Construction. PolicyEngine working paper. https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper.
    HM Government. 2025. The No10 Innovation Fellowship @@ -751,12 +752,6 @@

    References

    Institute of Economic Affairs. https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/.
    -
    -Woodruff, Nikhil, Max Ghenis, and Vahid Ahmadi. 2025. -PolicyEngine UK Data: Enhanced Microdata for UK -Tax-Benefit Microsimulation. Released. https://github.com/PolicyEngine/policyengine-uk-data. -
    Woodruff, Nikhil, Max Ghenis, and Anthony Volk. 2024. PolicyEngine Core: A Microsimulation Framework. diff --git a/paper.html b/paper.html new file mode 100644 index 00000000..a148dc1b --- /dev/null +++ b/paper.html @@ -0,0 +1,780 @@ + + + + + +PolicyEngine: A Tax-Benefit Microsimulation Framework + + + + + +
    +
    +
    JOSS Paper Preview
    +

    PolicyEngine: A Tax-Benefit Microsimulation Framework

    +
    + Max Ghenis1 + Nikhil Woodruff1 + Pavel Makarchuk1 + Vahid Ahmadi1 * +
    +
    1 PolicyEngine
    + +
    + Python + microsimulation + tax + benefit + public policy + economic analysis +
    +
    +
    + + +
    + + +
    +

    Summary

    +

    PolicyEngine is an open-source, multi-country microsimulation +framework for tax-benefit policy analysis, implemented in Python. The +policyengine package provides a unified interface for running policy +simulations, analyzing distributional impacts, and visualizing results +across the US and the UK. It delegates country-specific tax-benefit +calculations to dedicated country packages (policyengine-us and +policyengine-uk) while providing shared abstractions for simulations, +datasets, parametric reforms, and output analysis. The framework +supports both individual household simulations and population-wide +microsimulations using representative survey microdata with calibrated +weights. PolicyEngine powers an interactive web application at policyengine.org that enables +non-technical users to explore policy reforms in both countries.

    +

    Statement of Need

    +

    Tax-benefit microsimulation models are essential tools for evaluating +the distributional impacts of fiscal policy. Governments, think tanks, +and researchers rely on such models to estimate how policy reforms +affect household incomes, poverty rates, and government budgets. +Existing microsimulation models face significant access barriers. TAXSIM +(Feenberg and Coutts +1993) at NBER computes only tax liabilities and omits the benefit +side of the ledger entirely. The models maintained by the Congressional +Budget Office and the Tax Policy Center are fully proprietary and +unavailable to external researchers. In the UK, UKMOD (Sutherland and +Figari 2013), maintained by the University of Essex, requires a +formal application and institutional affiliation to access, and the +models maintained by HM Treasury and the Institute for Fiscal Studies +are similarly proprietary. PolicyEngine addresses these gaps by +providing a fully open-source Python microsimulation framework that +spans multiple countries under a consistent API. Users can supply their +own microdata or use built-in datasets, and compute the impact of +current law or hypothetical policy reforms on any household or a full +national population. The Simulation class supports individual household +analysis, while population-level aggregate analysis uses representative +survey datasets with calibrated weights. The framework’s open +development on GitHub enables external validation, community +contributions, and reproducible policy analysis across countries.

    +

    State of the Field

    +

    In the US, TAXSIM (Feenberg and Coutts 1993) at the National +Bureau of Economic Research provides tax calculations, while the Tax +Policy Center and Congressional Budget Office maintain proprietary +models. In the UK, the primary microsimulation models include UKMOD, +maintained by the Centre for Microsimulation and Policy Analysis at the +Institute for Social and Economic Research (ISER), University of Essex, +as part of the EUROMOD family (Sutherland and Figari 2013), +and models maintained internally by HM Treasury and the Institute for +Fiscal Studies. OpenFisca (OpenFisca Contributors 2024) pioneered +the open-source approach to tax-benefit microsimulation in France. +PolicyEngine originated from OpenFisca and builds on this foundation +through the PolicyEngine Core framework (Woodruff et al. 2024).

    +

    PolicyEngine differentiates itself in several ways:

    +
      +
    • Open-source, multi-country framework: a single +Python package supports the US and UK tax-benefit systems under a +consistent API, with no institutional access or license fees +required.
    • +
    • Comprehensive program coverage: the US model covers +over 11 programs including federal income tax, payroll taxes, state +income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, +and TANF; the UK model covers over 37 programs spanning income tax, +National Insurance, Universal Credit, Child Benefit, Council Tax, and +devolved policies in Scotland and Wales.
    • +
    • Programmatic reform and economic analysis: users +can define hypothetical policy reforms as parameter dictionaries with +date-bound values, compose multiple reforms, or implement structural +changes — and evaluate their impact on any household or the full +population. Built-in output classes compute decile impacts, intra-decile +distributions, poverty rates, inequality metrics (Gini coefficients), +budgetary impacts, and regional breakdowns (US congressional districts, +UK parliamentary constituencies). Behavioral response modules model both +intensive margin (hours adjustment) and extensive margin (participation) +labor supply responses to policy changes.
    • +
    +

    Software Design

    +

    PolicyEngine is built on the PolicyEngine Core framework, which +extends the OpenFisca microsimulation engine. The policyengine.py +package is organized as a country-agnostic layer with the following core +components:

    +

    Simulation and Dataset classes provide the primary +interface. The Simulation class executes tax-benefit models on datasets, +applying policy reforms and caching results. The Dataset class +represents microdata containing entity-level data (persons, households, +tax units) with survey weights and entity relationships. +Country-specific datasets — the Current Population Survey for the US and +the Enhanced Family Resources Survey for the UK — are loaded from +companion data repositories (Woodruff and Ghenis 2024).

    +

    Policy and Parameter classes define the reform +system. The Policy class bundles parametric reforms that modify +tax-benefit system parameters. The Parameter class represents system +settings (tax rates, benefit thresholds, income limits), while +ParameterValue supports time-bound values, enabling phased policy +implementations across multiple years.

    +

    Variable classes encapsulate country-specific logic. +Each Variable is a computed quantity (income tax, benefit entitlement) +with entity mappings. Versioned country models store variables, +parameters, and execution logic. The framework conditionally imports +country packages, allowing graceful operation when only one country is +installed.

    +

    Output classes provide standardized analysis. These +include Aggregate for sum, mean, and count statistics; DecileImpact and +IntraDecileImpact for distributional analysis by income decile; Poverty +and Inequality for welfare metrics; ChangeAggregate for +baseline-versus-reform comparisons; and region-specific classes such as +CongressionalDistrictImpact (US) and ConstituencyImpact (UK). All output +classes produce PolicyEngine-branded Plotly visualizations.

    +

    Region classes manage geographic scope, enabling +sub-national analysis for regions within each country.

    +

    Research Impact Statement

    +

    PolicyEngine has demonstrated research impact across government, +academia, and policy research in both the US and UK.

    +

    Government adoption. In the US, PolicyEngine +collaborated with the Better Government Lab — a joint center of the +Georgetown McCourt School of Public Policy and the University of +Michigan Ford School of Public Policy — on benefits eligibility research +(Ghenis 2024b). In the +UK, co-author Nikhil Woodruff served as an Innovation Fellow in +2025–2026 with 10DS — the data science team at 10 Downing Street — +adapting PolicyEngine for government use (HM Government 2025). The 10DS team +used PolicyEngine to rapidly estimate the impacts of policy reforms on +living standards, local area incomes, and distributional outcomes. HM +Treasury has also formally documented PolicyEngine in the UK Algorithmic +Transparency Recording Standard, describing it as a model their Personal +Tax, Welfare and Pensions team is exploring for “advising policymakers +on the impact of tax and welfare measures on households” (HM Treasury 2024).

    +

    Congressional and parliamentary citation. In the US, +Representatives Morgan McGarvey and Bonnie Watson Coleman cited +PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act +(H.R.7547), stating that “according to the model at PolicyEngine, 22% of +all Americans would see an increase in their household income under this +program, and it would lift over 4 million Americans out of poverty” +(Office of +Representative Morgan McGarvey 2024). In the UK, Baroness Altmann +referenced PolicyEngine and its interactive dashboard during House of +Lords Grand Committee debate on the National Insurance Contributions +(Employer Pensions Contributions) Bill in February 2026, noting that +Commons Library research using PolicyEngine provided “a useful picture +of the distributional effects of raising the contribution limit” across +income deciles (House +of Lords 2026).

    +

    Institutional partnership. PolicyEngine and the +National Bureau of Economic Research (NBER) signed a formal memorandum +of understanding for PolicyEngine to develop an open-source TAXSIM +emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s +microsimulation engine, with support for Python, R, Stata, SAS, and +Julia (Feenberg +2024). The Federal Reserve Bank of Atlanta independently +validates PolicyEngine’s model through its Policy Rules Database, +conducting three-way comparisons between PolicyEngine, TAXSIM, and the +Fed’s own models (Federal Reserve Bank of Atlanta +2021). Co-author Max Ghenis and Jason DeBacker (University of +South Carolina) presented the Enhanced Current Population Survey +methodology at the 117th Annual Conference on Taxation of the National +Tax Association (Ghenis and DeBacker 2024).

    +

    Academic research. In the US, Matt Unrath +(University of Southern California) is using PolicyEngine in a study of +effective marginal and average tax rates facing American families, +funded by the US Department of Health and Human Services through the +Institute for Research on Poverty (Institute for Research on Poverty 2025). +Jason DeBacker (University of South Carolina) has contributed to +behavioral response modeling in PolicyEngine US with support from Arnold +Ventures (Ghenis and +DeBacker 2024). The Beeck Center for Social Impact and Innovation +at Georgetown University featured PolicyEngine as a project spotlight in +their research on rules-as-code for US public benefits programs (Kennan et al. 2023), +and documented two Policy2Code challenge teams building on PolicyEngine +in their 2025 report on AI-powered rules as code (Kennan et al. 2025). In the UK, +Youngman et al. (Youngman et al. 2026) cite +PolicyEngine UK’s microdata methodology in their agent-based +macroeconomic model for the UK’s Seventh Carbon Budget, developed at the +Institute for New Economic Thinking at Oxford in partnership with the +Department for Energy Security and Net Zero.

    +

    Policy research. In the US, the Niskanen Center used +PolicyEngine to estimate the cost and distributional impacts of Child +Tax Credit reform options, becoming the first external organization to +leverage PolicyEngine’s enhanced US microdata (McCabe and Sargeant 2024). DC +Councilmember Zachary Parker cited PolicyEngine’s analysis when +introducing the District Child Tax Credit Amendment Act of 2023, which +became the first local child tax credit in US history when it passed in +September 2024 (Council of +the District of Columbia 2023). Senator Cory Booker’s office +embedded a PolicyEngine-built calculator on his official Senate website +for constituents to model the impact of the Keep Your Pay Act on their +household taxes (Office of Senator Cory Booker 2026). +In the UK, the National Institute of Economic and Social Research +(NIESR) used PolicyEngine in their UK Living Standards Review 2025, +acknowledging “the expertise and generosity of Nikhil Woodruff and Vahid +Ahmadi in helping us maximise the benefits of using PolicyEngine” (Mosley et al. +2025). The Institute of Economic Affairs has published reports +using PolicyEngine’s microsimulation model to analyze employer National +Insurance contributions (Woodruff 2024) and the +distributional impact of 2025–2026 tax changes on UK households (Woodruff +2025).

    +

    Acknowledgements

    +

    This work was supported in the US by Arnold Ventures (Arnold Ventures +2023), NEO Philanthropy (Ghenis 2024a), the Gerald Huff +Fund for Humanity, and the National Science Foundation (NSF POSE Phase +I, Award 2518372) (National +Science Foundation 2025), and in the UK by the Nuffield +Foundation since September 2024 (Nuffield Foundation 2024). These +funders had no involvement in the design, development, or content of +this software or paper.

    +

    We acknowledge contributions from all PolicyEngine contributors, and +thank the OpenFisca community for the foundational microsimulation +framework (OpenFisca +Contributors 2024). We acknowledge the US Census Bureau for +providing access to the Current Population Survey, and the UK Data +Service and the Department for Work and Pensions for providing access to +the Family Resources Survey. We acknowledge the UKMOD team at the +Institute for Social and Economic Research (ISER), University of Essex, +for their contributions to model descriptions (Sutherland and Figari +2013).

    +

    AI Usage Disclosure

    +

    Generative AI tools — Claude by Anthropic (Anthropic 2025) — were used to assist +with code refactoring and drafting of this paper. All AI-assisted +outputs were reviewed, edited, and validated by human authors, who made +all core design decisions regarding software architecture, policy +modeling, and parameter implementation. The authors remain fully +responsible for the accuracy, originality, and correctness of all +submitted materials.

    +

    References

    +
    +
    +Anthropic. 2025. Claude. Released. https://www.anthropic.com/claude. +
    +
    +Arnold Ventures. 2023. Public Finance Program. https://www.arnoldventures.org/work/public-finance. +
    +
    +Council of the District of Columbia. 2023. District Child Tax +Credit Amendment Act of 2023. https://lims.dccouncil.gov/Legislation/B25-0190. +
    +
    +Federal Reserve Bank of Atlanta. 2021. Policy Rules Database. +https://www.atlantafed.org/economic-mobility-and-resilience/advancing-careers-for-low-income-families/policy-rules-database. +
    +
    +Feenberg, Daniel R. 2024. TAXSIMNational Bureau of Economic Research.” https://taxsim.nber.org/. +
    +
    +Feenberg, Daniel R., and Elisabeth Coutts. 1993. +TAXSIM: A Tool for Calculating Federal and State +Income Tax Liabilities.” National Tax Journal 46 (3): +271–80. +
    +
    +Ghenis, Max. 2024a. NEO Philanthropy Awards $200,000 +Grant to PolicyEngine.” https://policyengine.org/us/research/neo-philanthropy. +
    +
    +Ghenis, Max. 2024b. PolicyEngine and Better +Government Lab Collaboration.” https://www.policyengine.org/us/research/policyengine-better-government-lab-collaboration. +
    +
    +Ghenis, Max, and Jason DeBacker. 2024. Enhanced Current +Population Survey: Integrating IRS Public Use File +Data Using Quantile Regression Forests. https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/. +
    +
    +Woodruff, Nikhil, and Max Ghenis. 2024. Enhancing Survey Microdata +with Administrative Records: A Novel Approach to Microsimulation Dataset +Construction. PolicyEngine working paper. https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper. +
    +
    +HM Government. 2025. The No10 Innovation Fellowship +Programme. https://www.gov.uk/government/publications/the-no10-innovation-fellowship-programme. +
    +
    +HM Treasury. 2024. HMT: PolicyEngine UK – +Algorithmic Transparency Recording Standard. https://www.gov.uk/algorithmic-transparency-records/hmt-modelling-policy-engine. +
    +
    +House of Lords. 2026. National Insurance Contributions (Employer +Pensions Contributions) Bill – Grand Committee. https://hansard.parliament.uk/Lords/2026-02-24/debates/A381F7D6-0A3C-48FD-8D9E-67751E25877A/NationalInsuranceContributions(EmployerPensionsContributions)Bill. +
    +
    +Institute for Research on Poverty. 2025. 2025–2026 IRP +Extramural Large Grants. https://www.irp.wisc.edu/2025-2026-irp-extramural-large-grants/. +
    +
    +Kennan, Ariel, Alessandra Garcia Guevara, and Jason Goodman. 2025. +AI-Powered Rules as Code: Experiments with Public +Benefits Policy. Beeck Center for Social Impact; Innovation, +Georgetown University. https://beeckcenter.georgetown.edu/report/ai-powered-rules-as-code-experiments-with-public-benefits-policy/. +
    +
    +Kennan, Ariel, Lisa Singh, Bianca Dammholz, Keya Sengupta, and Jason Yi. +2023. Exploring Rules Communication: Moving Beyond Static Documents +to Standardized Code for U.S. Public Benefits +Programs. Beeck Center for Social Impact; Innovation, Georgetown +University. https://beeckcenter.georgetown.edu/report/exploring-rules-communication-moving-beyond-static-documents-to-standardized-code-for-u-s-public-benefits-programs/. +
    +
    +McCabe, Joshua, and Leah Sargeant. 2024. Building a Stronger +Foundation for American Families: Options for Child +Tax Credit Reform. Niskanen Center. https://www.niskanencenter.org/building-a-stronger-foundation-for-american-families-options-for-child-tax-credit-reform/. +
    +
    +Mosley, Max, Ryan Wattam, and Carol Vincent. 2025. UK +Living Standards Review 2025. National Institute of Economic; +Social Research. https://niesr.ac.uk/publications/uk-living-standards-review-2025. +
    +
    +National Science Foundation. 2025. POSE: Phase +I: PolicyEngine – Advancing Public Policy +Analysis. https://www.nsf.gov/awardsearch/showAward?AWD_ID=2518372. +
    +
    +Nuffield Foundation. 2024. Enhancing, Localising and Democratising +Tax-Benefit Policy Analysis. https://www.nuffieldfoundation.org/project/enhancing-localising-and-democratising-tax-benefit-policy-analysis. +
    +
    +Office of Representative Morgan McGarvey. 2024. Congressman +Morgan McGarvey Introduces Young Adult Tax Credit +Act. https://mcgarvey.house.gov/media/press-releases/congressman-morgan-mcgarvey-introduces-young-adult-tax-credit-act. +
    +
    +Office of Senator Cory Booker. 2026. Booker Announces Keep +Your Pay Act. https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act. +
    +
    +OpenFisca Contributors. 2024. OpenFisca: Open Rules as +Code for Tax-Benefit Systems. Released. https://openfisca.org. +
    +
    +Sutherland, Holly, and Francesco Figari. 2013. +EUROMOD: The European Union Tax-Benefit +Microsimulation Model.” International Journal of +Microsimulation 6 (1): 4–26. https://doi.org/10.34196/ijm.00075. +
    +
    +Woodruff, Nikhil. 2024. Raising Employer NIC in the +Autumn Budget. Institute of Economic Affairs. https://iea.org.uk/publications/raising-employer-nic-in-the-autumn-budget/. +
    +
    +Woodruff, Nikhil. 2025. Impact of Tax Changes 2025–2026. +Institute of Economic Affairs. https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/. +
    +
    +Woodruff, Nikhil, Max Ghenis, and Anthony Volk. 2024. +PolicyEngine Core: A Microsimulation Framework. +Released. https://github.com/PolicyEngine/policyengine-core. +
    +
    +Youngman, Tom, Tim Lennox, M. Lopes Alves, et al. 2026. Agent-Based +Macroeconomics for the UK’s Seventh Carbon +Budget. https://arxiv.org/abs/2602.15607. +
    +
    + +
    +
    + + + + + From b88f0675b2b7aa7351c0e8e88bd1798b678648ef Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 2 Apr 2026 07:59:28 -0400 Subject: [PATCH 31/65] Populate Max Ghenis ORCID --- paper-preview.html | 2 +- paper.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 7bf08427..2c88cd2f 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -315,7 +315,7 @@

    PolicyEngine: A Tax-Benefit Microsimulation Framework

    Max -Ghenis1 +Ghenis1 Nikhil Woodruff1 Vahid diff --git a/paper.md b/paper.md index 5121238b..65eb2e33 100644 --- a/paper.md +++ b/paper.md @@ -9,7 +9,7 @@ tags: - economic analysis authors: - name: Max Ghenis - orcid: 0000-0000-0000-0000 + orcid: 0000-0002-1335-8277 affiliation: '1' - name: Nikhil Woodruff orcid: 0009-0009-5004-4910 From 1f13b812e21763b5e6d905226edb3346c417ceaf Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 13:05:07 +0100 Subject: [PATCH 32/65] Fix Claude year to 2026, move figure position, fix Atlanta Fed URL - Update claude2025 -> claude2026 (Anthropic 2026) - Move architecture figure after intro paragraph in Software Design - Rewrite "At runtime" paragraph to better reference Figure 1 inputs - Replace broken Atlanta Fed URL with stable GitHub repo link Co-Authored-By: Claude Opus 4.6 --- paper.bib | 6 +++--- paper.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/paper.bib b/paper.bib index 1ba77164..5de4fd26 100644 --- a/paper.bib +++ b/paper.bib @@ -233,13 +233,13 @@ @misc{atlanta_fed_prd author={{Federal Reserve Bank of Atlanta}}, year={2021}, note={Collaboration between the Atlanta Fed, National Center for Children in Poverty, and PolicyEngine for multi-model validation}, - url={https://www.atlantafed.org/economic-mobility-and-resilience/advancing-careers-for-low-income-families/policy-rules-database} + url={https://github.com/Research-Division/policy-rules-database} } -@software{claude2025, +@software{claude2026, title={Claude}, author={{Anthropic}}, - year={2025}, + year={2026}, url={https://www.anthropic.com/claude} } diff --git a/paper.md b/paper.md index 65eb2e33..41fa181f 100644 --- a/paper.md +++ b/paper.md @@ -52,13 +52,13 @@ PolicyEngine differentiates itself in several ways: # Software Design -![PolicyEngine architecture. Three inputs — policies (tax-benefit rules and parameters from country packages), households (survey microdata with calibrated weights), and dynamics (behavioural response elasticities) — feed into the Simulation engine, which produces standardized analytical outputs including decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts.](architecture.png){width="100%"} +PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. -Figure 1 illustrates the high-level architecture. PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. +![PolicyEngine architecture. Three inputs — policies (tax-benefit rules and parameters from country packages), households (survey microdata with calibrated weights), and dynamics (behavioural response elasticities) — feed into the Simulation engine, which produces standardized analytical outputs including decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts.](architecture.png){width="100%"} This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. -At runtime, as shown in Figure 1, a simulation combines a country model version, a microdataset, and optional reform or behavioral modifiers. PolicyEngine.py then applies a consistent analysis layer across countries, producing decile tables, poverty and inequality metrics, aggregate program statistics, and regional breakdowns from the resulting entity-level outputs. The repository documentation includes runnable examples for both household-level and population-level analyses. +As shown in Figure 1, at runtime a simulation combines three inputs: policies from a country model version, household microdata, and optional behavioral response parameters. PolicyEngine.py then applies a consistent analysis layer across countries, producing decile tables, poverty and inequality metrics, aggregate program statistics, and regional breakdowns from the resulting entity-level outputs. PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses. @@ -84,6 +84,6 @@ We acknowledge contributions from all PolicyEngine contributors, and thank the O # AI Usage Disclosure -Generative AI tools — Claude Opus 4 by Anthropic [@claude2025] — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. +Generative AI tools — Claude Opus 4 by Anthropic [@claude2026] — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. # References From 6e21a8a89738906f64f4d9bbff9e92765a72bf4a Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 13:06:43 +0100 Subject: [PATCH 33/65] Sync HTML previews with paper.md changes - Move figure after intro paragraph in Software Design - Update Claude citation year to 2026 - Replace broken Atlanta Fed URL with GitHub repo - Update "At runtime" paragraph to match paper.md Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 43 +++++++++++++++++++++---------------------- paper.html | 8 ++++---- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 2c88cd2f..dd126a9b 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -448,17 +448,7 @@

    State of the Field

    to policy changes.
  • Software Design

    -
    - - -
    -

    Figure 1 illustrates the high-level architecture. PolicyEngine is built as a four-layer system. PolicyEngine Core +

    PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries (Woodruff et al. @@ -470,6 +460,16 @@

    Software Design

    enhanced survey microdata and calibration pipelines for the CPS (Woodruff and Ghenis 2024) and Family Resources Survey.

    +
    + + +

    This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to @@ -478,13 +478,12 @@

    Software Design

    libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups.

    -

    At runtime, as shown in Figure 1, a simulation combines a country model version, a -microdataset, and optional reform or behavioral modifiers. -PolicyEngine.py then applies a consistent analysis layer across -countries, producing decile tables, poverty and inequality metrics, -aggregate program statistics, and regional breakdowns from the resulting -entity-level outputs. The repository documentation includes runnable -examples for both household-level and population-level analyses.

    +

    As shown in Figure 1, at runtime a simulation combines three inputs: +policies from a country model version, household microdata, and optional +behavioral response parameters. PolicyEngine.py then applies a +consistent analysis layer across countries, producing decile tables, +poverty and inequality metrics, aggregate program statistics, and +regional breakdowns from the resulting entity-level outputs.

    PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses.

    Research Impact Statement

    @@ -595,7 +594,7 @@

    Acknowledgements

    2013).

    AI Usage Disclosure

    Generative AI tools — Claude Opus 4 by Anthropic (Anthropic 2025) — were +class="citation" data-cites="claude2026">(Anthropic 2026) — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software @@ -605,8 +604,8 @@

    AI Usage Disclosure

    References

    -
    -Anthropic. 2025. Claude. Released. +Anthropic. 2026. Claude. Released. https://www.anthropic.com/claude.
    @@ -621,7 +620,7 @@

    References

    Federal Reserve Bank of Atlanta. 2021. Policy Rules Database. https://www.atlantafed.org/economic-mobility-and-resilience/advancing-careers-for-low-income-families/policy-rules-database. +href="https://github.com/Research-Division/policy-rules-database">https://github.com/Research-Division/policy-rules-database.
    Feenberg, Daniel R. 2024. TAXSIMAcknowledgements 2013).

    AI Usage Disclosure

    Generative AI tools — Claude by Anthropic (Anthropic 2025) — were used to assist +data-cites="claude2026">(Anthropic 2026) — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy @@ -613,8 +613,8 @@

    AI Usage Disclosure

    References

    -
    -Anthropic. 2025. Claude. Released. +Anthropic. 2026. Claude. Released. https://www.anthropic.com/claude.
    @@ -629,7 +629,7 @@

    References

    Federal Reserve Bank of Atlanta. 2021. Policy Rules Database. https://www.atlantafed.org/economic-mobility-and-resilience/advancing-careers-for-low-income-families/policy-rules-database. +href="https://github.com/Research-Division/policy-rules-database">https://github.com/Research-Division/policy-rules-database.
    Feenberg, Daniel R. 2024. TAXSIM Date: Thu, 2 Apr 2026 13:38:12 +0100 Subject: [PATCH 34/65] Add code example and foundational microsimulation references - Add US reform code example in Software Design (QuantEcon-style) - Add Orcutt 1957 and Bourguignon & Spadaro 2006 to State of the Field - Word count: 1,665 / 1,750 JOSS limit Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 65 +++++++++++++++++++++++++++++++++++++++------- paper.bib | 21 +++++++++++++++ paper.md | 33 +++++++++++++++++++++-- 3 files changed, 107 insertions(+), 12 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index dd126a9b..42777766 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -398,12 +398,16 @@

    Statement of Need

    enables external validation, community contributions, and reproducible policy analysis across countries.

    State of the Field

    -

    The primary UK microsimulation models include UKMOD, maintained by -the Institute for Social and Economic Research (ISER), University of -Essex, as part of the EUROMOD family (Sutherland and Figari 2013), -and proprietary models maintained by HM Treasury and the Institute for -Fiscal Studies. OpenFisca Tax-benefit microsimulation — pioneered by Orcutt (1957) and surveyed by Bourguignon and +Spadaro (2006) — underpins much of modern +fiscal policy evaluation. The primary UK microsimulation models include +UKMOD, maintained by the Institute for Social and Economic Research +(ISER), University of Essex, as part of the EUROMOD family (Sutherland and +Figari 2013), and proprietary models maintained by HM Treasury +and the Institute for Fiscal Studies. OpenFisca (OpenFisca Contributors 2024) pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation @@ -480,10 +484,38 @@

    Software Design

    overlapping but distinct groups.

    As shown in Figure 1, at runtime a simulation combines three inputs: policies from a country model version, household microdata, and optional -behavioral response parameters. PolicyEngine.py then applies a -consistent analysis layer across countries, producing decile tables, -poverty and inequality metrics, aggregate program statistics, and -regional breakdowns from the resulting entity-level outputs.

    +behavioral response parameters. The following example doubles the US +federal standard deduction for single filers and runs a full +distributional analysis:

    +
    import datetime
    +from policyengine.core import Parameter, ParameterValue, Policy, Simulation
    +from policyengine.tax_benefit_models.us import (
    +    economic_impact_analysis, us_latest,
    +)
    +
    +param = Parameter(
    +    name="gov.irs.deductions.standard.amount.SINGLE",
    +    tax_benefit_model_version=us_latest,
    +)
    +reform = Policy(
    +    name="Double standard deduction",
    +    parameter_values=[
    +        ParameterValue(
    +            parameter=param,
    +            start_date=datetime.date(2026, 1, 1),
    +            end_date=datetime.date(2026, 12, 31),
    +            value=30_950,
    +        ),
    +    ],
    +)
    +baseline = Simulation(tax_benefit_model_version=us_latest)
    +reformed = Simulation(tax_benefit_model_version=us_latest, policy=reform)
    +analysis = economic_impact_analysis(baseline, reformed)
    +

    The analysis object contains decile impacts, +program-by-program statistics, poverty rates, and inequality metrics. +PolicyEngine.py then applies a consistent analysis layer across +countries, producing these outputs from the resulting entity-level +data.

    PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses.

    Research Impact Statement

    @@ -612,6 +644,13 @@

    References

    Arnold Ventures. 2023. Public Finance Program. https://www.arnoldventures.org/work/public-finance.
    +
    +Bourguignon, François, and Amedeo Spadaro. 2006. +"Microsimulation as a Tool for Evaluating Redistribution +Policies." The Journal of Economic Inequality 4: +77–106. https://doi.org/10.1007/s10888-005-9012-6. +
    Council of the District of Columbia. 2023. District Child Tax Credit Amendment Act of 2023. References Your Pay Act. https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act.
    +
    +Orcutt, Guy H. 1957. "A New Type of Socio-Economic +System." Review of Economics and Statistics 39 (2): +116–23. https://doi.org/10.2307/1928528. +
    OpenFisca Contributors. 2024. OpenFisca: Open Rules as Code for Tax-Benefit Systems. Released. Date: Thu, 2 Apr 2026 13:40:57 +0100 Subject: [PATCH 35/65] Update paper date to 2 April 2026 Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 2 +- paper.html | 2 +- paper.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 42777766..510e67b3 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -325,7 +325,7 @@

    PolicyEngine: A Tax-Benefit Microsimulation

    1 PolicyEngine, Washington, DC, United States
    - +
    Python microsimulation diff --git a/paper.html b/paper.html index c4ed3b03..29a03cc0 100644 --- a/paper.html +++ b/paper.html @@ -337,7 +337,7 @@

    PolicyEngine: A Tax-Benefit Microsimulation FrameworkVahid Ahmadi1 *

    1 PolicyEngine
    - +
    Python microsimulation diff --git a/paper.md b/paper.md index 2acbe40a..98ade00e 100644 --- a/paper.md +++ b/paper.md @@ -24,7 +24,7 @@ authors: affiliations: - name: PolicyEngine, Washington, DC, United States index: '1' -date: 19 March 2026 +date: 2 April 2026 bibliography: paper.bib --- From 7e2f556944251dca8203b75f4ff872b8d372d0df Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 13:42:01 +0100 Subject: [PATCH 36/65] Remove 'and drafting of this paper' from AI disclosure Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 2 +- paper.html | 2 +- paper.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 510e67b3..7a026223 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -627,7 +627,7 @@

    Acknowledgements

    AI Usage Disclosure

    Generative AI tools — Claude Opus 4 by Anthropic (Anthropic 2026) — were -used to assist with code refactoring and drafting of this paper. All +used to assist with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors diff --git a/paper.html b/paper.html index 29a03cc0..477a62db 100644 --- a/paper.html +++ b/paper.html @@ -604,7 +604,7 @@

    Acknowledgements

    AI Usage Disclosure

    Generative AI tools — Claude by Anthropic (Anthropic 2026) — were used to assist -with code refactoring and drafting of this paper. All AI-assisted +with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully diff --git a/paper.md b/paper.md index 98ade00e..2add0b97 100644 --- a/paper.md +++ b/paper.md @@ -113,6 +113,6 @@ We acknowledge contributions from all PolicyEngine contributors, and thank the O # AI Usage Disclosure -Generative AI tools — Claude Opus 4 by Anthropic [@claude2026] — were used to assist with code refactoring and drafting of this paper. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. +Generative AI tools — Claude Opus 4 by Anthropic [@claude2026] — were used to assist with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. # References From b5d0810f4b26c75c3e235ac93edbe1d2175ebf56 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 2 Apr 2026 13:43:18 +0100 Subject: [PATCH 37/65] Shorten architecture figure caption Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 12 +++++------- paper.md | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 7a026223..950ace42 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -466,13 +466,11 @@

    Software Design

    and Family Resources Survey.

    - +alt="PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts." /> +

    This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not diff --git a/paper.md b/paper.md index 2add0b97..deb215d1 100644 --- a/paper.md +++ b/paper.md @@ -54,7 +54,7 @@ PolicyEngine differentiates itself in several ways: PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. -![PolicyEngine architecture. Three inputs — policies (tax-benefit rules and parameters from country packages), households (survey microdata with calibrated weights), and dynamics (behavioural response elasticities) — feed into the Simulation engine, which produces standardized analytical outputs including decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts.](architecture.png){width="100%"} +![PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts.](architecture.png){width="100%"} This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. From f781c8d62cfb0d179a686e79ba2245a8f022c022 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Tue, 7 Apr 2026 10:40:47 +0100 Subject: [PATCH 38/65] Polish paper: reorder authors, fix figure, update output labels, grammar edits - Reorder authors: Max, Vahid, Nikhil, Pavel - Update date to 7 April 2026 - Restore UKMOD access sentence in Statement of Need - Add US models (TAXSIM, CBO, TPC) to State of the Field - Replace em dashes with commas throughout - Fix behavioral response description (income/substitution/capital gains elasticities) - Remove OpenFisca mention from Software Design first sentence - Move Better Government Lab from Government adoption to Academic research - Remove UKMOD acknowledgement - Update figure: center text in boxes, equalize arrow lengths, new output labels - Trim architecture.png whitespace - Update figure caption to match new output labels - Fix Youngman citation rendering - Add parametric/structural reform language to Statement of Need - Delete "+ operator" reference - Update macroeconomic limitation sentence - Fix missing blank line before AI Usage Disclosure Co-Authored-By: Claude Opus 4.6 --- architecture.png | Bin 130073 -> 99793 bytes architecture.svg | 38 +++++++-------- paper-preview.html | 113 +++++++++++++++++++++++---------------------- paper.html | 87 +++++++++++++++++----------------- paper.md | 35 +++++++------- 5 files changed, 137 insertions(+), 136 deletions(-) diff --git a/architecture.png b/architecture.png index cc2c767b14381b194a0837e52d5ecf76dc690ca3..735404bb2a5d80c1e6f558395227366eb83adaff 100644 GIT binary patch literal 99793 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%0Dpa<;SfPN}$-(y&Ag4v@X6m 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 vp!&tQ4?%ag3b9ds%!H268AaF&!RXYBqDajWx2 literal 130073 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

    QV?Zbfuzxhcd&OrmqKD@Vg!AuY5 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 VDQ* - + + @@ -11,26 +11,26 @@ - Policies - Tax-benefit rules - & parameters - (US & UK country packages) + Policies + Tax-benefit rules + & parameters + (US & UK country packages) - Households - Survey microdata - with calibrated weights - (CPS, Family Resources Survey) + Households + Survey microdata + with calibrated weights + (CPS, Family Resources Survey) - Dynamics - Behavioural responses - to policy changes - (labour supply elasticities) + Dynamics + Behavioural responses + to policy changes + (labour supply elasticities) - + @@ -39,10 +39,10 @@ Simulation - - + + - - Decile impacts · Poverty rates · Inequality metrics · Regional breakdowns · Budgetary impacts + + Distributional impacts · Fiscal impacts · Regional breakdowns · Poverty rates · Inequality metrics diff --git a/paper-preview.html b/paper-preview.html index 950ace42..b1478728 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -316,16 +316,16 @@

    PolicyEngine: A Tax-Benefit Microsimulation
    Max Ghenis1 - Nikhil -Woodruff1 Vahid Ahmadi1 * + Nikhil +Woodruff1 Pavel Makarchuk1
    1 PolicyEngine, Washington, DC, United States
    - +
    Python microsimulation @@ -375,35 +375,40 @@

    Statement of Need

    the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. -Existing microsimulation models face significant access barriers. TAXSIM +However, existing models face significant access barriers. TAXSIM (Feenberg and Coutts 1993) at NBER computes only tax liabilities and omits the benefit -side of the ledger entirely. The models maintained by the Congressional -Budget Office and the Tax Policy Center are fully proprietary and -unavailable to external researchers. In the UK, UKMOD (Sutherland and +side of the ledger entirely. The models maintained by the +Congressional Budget Office and the Tax Policy Center are fully +proprietary and unavailable to external researchers. In the UK, UKMOD +(Sutherland and Figari 2013), maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies -are similarly proprietary. PolicyEngine addresses these gaps by +are similarly proprietary.

    +

    PolicyEngine addresses these gaps by providing an open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current -law or hypothetical policy reforms on any household or a national +law or hypothetical reforms, including parametric changes to existing +policy parameters and structural modifications to the tax-benefit +system, on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey -datasets with calibrated weights. Because existing proprietary models -cannot be independently verified, PolicyEngine enables reproducible and -transparent policy analysis. The framework’s open development on GitHub +datasets with calibrated weights. The framework’s open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries.

    State of the Field

    -

    Tax-benefit microsimulation — pioneered by Orcutt Tax-benefit microsimulation, pioneered by Orcutt (1957) and surveyed by Bourguignon and Spadaro (2006) — underpins much of modern -fiscal policy evaluation. The primary UK microsimulation models include -UKMOD, maintained by the Institute for Social and Economic Research +data-cites="bourguignon2006">(2006), underpins much of modern +fiscal policy evaluation. In the US, TAXSIM (Feenberg and Coutts 1993) at the National +Bureau of Economic Research provides tax calculations, while the +Congressional Budget Office and Tax Policy Center maintain proprietary +models. In the UK, the primary microsimulation models include UKMOD, +maintained by the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family (Sutherland and Figari 2013), and proprietary models maintained by HM Treasury @@ -444,16 +449,16 @@

    State of the Field

    methodology, and microdata change.
  • Programmatic reform and economic analysis: users can define hypothetical policy reforms as date-bound parameter values, -compose multiple reforms with the + operator, or implement +compose multiple reforms, or implement structural changes via simulation modifiers, then evaluate impacts on households, poverty, inequality, government budgets, and subnational -regions. Behavioral response modules model both intensive-margin (hours -adjustment) and extensive-margin (participation) labor supply responses -to policy changes.
  • +regions. Behavioral response modules model labor supply responses +through income and substitution elasticities, as well as capital gains +tax responses.

    Software Design

    PolicyEngine is built as a four-layer system. PolicyEngine Core -extends the OpenFisca engine with reusable simulation abstractions, +provides reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries (Woodruff et al. 2024). PolicyEngine.py adds country-agnostic analyst workflows, @@ -463,14 +468,14 @@

    Software Design

    specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS (Woodruff and Ghenis 2024) -and Family Resources Survey.

    +and Family Resources Survey. Figure 1 illustrates this architecture.

    +alt="PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics." /> +producing distributional impacts, fiscal impacts, regional breakdowns, +poverty rates, and inequality metrics.

    This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not @@ -514,27 +519,23 @@

    Software Design

    PolicyEngine.py then applies a consistent analysis layer across countries, producing these outputs from the resulting entity-level data.

    -

    PolicyEngine models static fiscal impacts; it does not model -macroeconomic feedback effects or general equilibrium responses.

    +

    PolicyEngine does not include an underlying macroeconomic model in its +microsimulation analysis and does not capture general equilibrium effects.

    Research Impact Statement

    PolicyEngine has demonstrated research impact across government, -academia, and policy research in both the US and UK.

    -

    Government adoption. In the US, PolicyEngine -collaborated with the Better Government Lab — a joint center of the -Georgetown McCourt School of Public Policy and the University of -Michigan Ford School of Public Policy — on benefits eligibility research -(Ghenis 2024b). In the -UK, co-author Nikhil Woodruff served as an Innovation Fellow in -2025–2026 with 10DS — the data science team at 10 Downing Street — -adapting PolicyEngine for government use (HM Government 2025). The 10DS team -used PolicyEngine to rapidly estimate the impacts of policy reforms on -living standards, local area incomes, and distributional outcomes. HM -Treasury has also formally documented PolicyEngine in the UK Algorithmic -Transparency Recording Standard, describing it as a model their Personal -Tax, Welfare and Pensions team is exploring for “advising policymakers -on the impact of tax and welfare measures on households” (HM Treasury 2024).

    +academia, and policy research in both the US and the UK.

    +

    Government adoption. In the UK, co-author Nikhil +Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the +data science team at 10 Downing Street, adapting PolicyEngine for +government use (HM +Government 2025). The 10DS team used PolicyEngine to estimate the +impacts of policy reforms on living standards, local area incomes, and +distributional outcomes. HM Treasury has formally documented PolicyEngine +in the UK Algorithmic Transparency Recording Standard, describing it as +a model their Personal Tax, Welfare and Pensions team is exploring for +“advising policymakers on the impact of tax and welfare measures on +households” (HM Treasury +2024).

    Congressional and parliamentary citation. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act @@ -553,8 +554,8 @@

    Research Impact Statement

    Institutional partnership. PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM -emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s -microsimulation engine, with support for Python, R, Stata, SAS, and +emulator, a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s +microsimulation engine with support for Python, R, Stata, SAS, and Julia (Feenberg 2024). The Federal Reserve Bank of Atlanta independently validates PolicyEngine’s model through its Policy Rules Database, @@ -566,7 +567,11 @@

    Research Impact Statement

    methodology at the 117th Annual Conference on Taxation of the National Tax Association (Ghenis and DeBacker 2024).

    -

    Academic research. Matt Unrath (University of +

    Academic research. The Better Government Lab, a joint +center of the Georgetown McCourt School of Public Policy and the +University of Michigan Ford School of Public Policy, collaborated with +PolicyEngine on benefits eligibility research (Ghenis 2024b). Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for @@ -576,7 +581,7 @@

    Research Impact Statement

    on rules-as-code for US public benefits (Kennan et al. 2023, 2025). Youngman et al. (Youngman et al. 2026) cite +data-cites="youngman2026carbon">(2026)
    cite PolicyEngine UK’s microdata methodology in their agent-based macroeconomic model for the UK’s Seventh Carbon Budget at the Institute for New Economic Thinking, Oxford.

    @@ -617,14 +622,10 @@

    Acknowledgements

    Contributors 2024). We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to -the Family Resources Survey. We acknowledge the UKMOD team at the -Institute for Social and Economic Research (ISER), University of Essex, -for their contributions to model descriptions (Sutherland and Figari -2013).

    +the Family Resources Survey.

    AI Usage Disclosure

    -

    Generative AI tools — Claude Opus 4 by Anthropic (Anthropic 2026) — were +

    Generative AI tools, specifically Claude Opus 4 by Anthropic (Anthropic 2026), were used to assist with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software diff --git a/paper.html b/paper.html index 477a62db..b20ac002 100644 --- a/paper.html +++ b/paper.html @@ -332,12 +332,12 @@

    PolicyEngine: A Tax-Benefit Microsimulation Framework

    Max Ghenis1 + Vahid Ahmadi1 * Nikhil Woodruff1 Pavel Makarchuk1 - Vahid Ahmadi1 *
    1 PolicyEngine
    - +
    Python microsimulation @@ -385,22 +385,25 @@

    Statement of Need

    the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. -Existing microsimulation models face significant access barriers. TAXSIM +However, existing models face significant access barriers. TAXSIM (Feenberg and Coutts 1993) at NBER computes only tax liabilities and omits the benefit -side of the ledger entirely. The models maintained by the Congressional -Budget Office and the Tax Policy Center are fully proprietary and -unavailable to external researchers. In the UK, UKMOD (Sutherland and +side of the ledger entirely. The models maintained by the +Congressional Budget Office and the Tax Policy Center are fully +proprietary and unavailable to external researchers. In the UK, UKMOD +(Sutherland and Figari 2013), maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies -are similarly proprietary. PolicyEngine addresses these gaps by -providing a fully open-source Python microsimulation framework that +are similarly proprietary.

    +

    PolicyEngine addresses these gaps by +providing an open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of -current law or hypothetical policy reforms on any household or a full -national population. The Simulation class supports individual household +current law or hypothetical reforms, including parametric changes to +existing policy parameters and structural modifications to the tax-benefit +system, on any household or a national +population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework’s open development on GitHub enables external validation, community @@ -437,13 +440,13 @@

    State of the Field

  • Programmatic reform and economic analysis: users can define hypothetical policy reforms as parameter dictionaries with date-bound values, compose multiple reforms, or implement structural -changes — and evaluate their impact on any household or the full +changes, and evaluate their impact on any household or the full population. Built-in output classes compute decile impacts, intra-decile distributions, poverty rates, inequality metrics (Gini coefficients), budgetary impacts, and regional breakdowns (US congressional districts, -UK parliamentary constituencies). Behavioral response modules model both -intensive margin (hours adjustment) and extensive margin (participation) -labor supply responses to policy changes.
  • +UK parliamentary constituencies). Behavioral response modules model labor supply responses +through income and substitution elasticities, as well as capital gains +tax responses.

    Software Design

    PolicyEngine is built on the PolicyEngine Core framework, which @@ -455,8 +458,8 @@

    Software Design

    applying policy reforms and caching results. The Dataset class represents microdata containing entity-level data (persons, households, tax units) with survey weights and entity relationships. -Country-specific datasets — the Current Population Survey for the US and -the Enhanced Family Resources Survey for the UK — are loaded from +Country-specific datasets, the Current Population Survey for the US and +the Enhanced Family Resources Survey for the UK, are loaded from companion data repositories (Woodruff and Ghenis 2024).

    Policy and Parameter classes define the reform @@ -482,23 +485,19 @@

    Software Design

    sub-national analysis for regions within each country.

    Research Impact Statement

    PolicyEngine has demonstrated research impact across government, -academia, and policy research in both the US and UK.

    -

    Government adoption. In the US, PolicyEngine -collaborated with the Better Government Lab — a joint center of the -Georgetown McCourt School of Public Policy and the University of -Michigan Ford School of Public Policy — on benefits eligibility research -(Ghenis 2024b). In the -UK, co-author Nikhil Woodruff served as an Innovation Fellow in -2025–2026 with 10DS — the data science team at 10 Downing Street — -adapting PolicyEngine for government use (HM Government 2025). The 10DS team -used PolicyEngine to rapidly estimate the impacts of policy reforms on -living standards, local area incomes, and distributional outcomes. HM -Treasury has also formally documented PolicyEngine in the UK Algorithmic -Transparency Recording Standard, describing it as a model their Personal -Tax, Welfare and Pensions team is exploring for “advising policymakers -on the impact of tax and welfare measures on households” (HM Treasury 2024).

    +academia, and policy research in both the US and the UK.

    +

    Government adoption. In the UK, co-author Nikhil +Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the +data science team at 10 Downing Street, adapting PolicyEngine for +government use (HM +Government 2025). The 10DS team used PolicyEngine to estimate the +impacts of policy reforms on living standards, local area incomes, and +distributional outcomes. HM Treasury has formally documented PolicyEngine +in the UK Algorithmic Transparency Recording Standard, describing it as +a model their Personal Tax, Welfare and Pensions team is exploring for +“advising policymakers on the impact of tax and welfare measures on +households” (HM Treasury +2024).

    Congressional and parliamentary citation. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act @@ -517,7 +516,7 @@

    Research Impact Statement

    Institutional partnership. PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM -emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s +emulator, a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s microsimulation engine, with support for Python, R, Stata, SAS, and Julia (Feenberg 2024). The Federal Reserve Bank of Atlanta independently @@ -530,7 +529,11 @@

    Research Impact Statement

    methodology at the 117th Annual Conference on Taxation of the National Tax Association (Ghenis and DeBacker 2024).

    -

    Academic research. In the US, Matt Unrath +

    Academic research. The Better Government Lab, a joint +center of the Georgetown McCourt School of Public Policy and the +University of Michigan Ford School of Public Policy, collaborated with +PolicyEngine on benefits eligibility research (Ghenis 2024b). In the US, Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the @@ -547,7 +550,7 @@

    Research Impact Statement

    in their 2025 report on AI-powered rules as code (Kennan et al. 2025). In the UK, Youngman et al. (Youngman et al. 2026) cite +data-cites="youngman2026carbon">(2026)
    cite PolicyEngine UK’s microdata methodology in their agent-based macroeconomic model for the UK’s Seventh Carbon Budget, developed at the Institute for New Economic Thinking at Oxford in partnership with the @@ -596,14 +599,10 @@

    Acknowledgements

    Contributors 2024). We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to -the Family Resources Survey. We acknowledge the UKMOD team at the -Institute for Social and Economic Research (ISER), University of Essex, -for their contributions to model descriptions (Sutherland and Figari -2013).

    +the Family Resources Survey.

    AI Usage Disclosure

    -

    Generative AI tools — Claude by Anthropic (Anthropic 2026) — were used to assist +

    Generative AI tools, specifically Claude Opus 4 by Anthropic (Anthropic 2026), were used to assist with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy diff --git a/paper.md b/paper.md index deb215d1..e8370d23 100644 --- a/paper.md +++ b/paper.md @@ -11,20 +11,20 @@ authors: - name: Max Ghenis orcid: 0000-0002-1335-8277 affiliation: '1' - - name: Nikhil Woodruff - orcid: 0009-0009-5004-4910 - affiliation: '1' - name: Vahid Ahmadi orcid: 0009-0004-1093-6272 affiliation: '1' corresponding: true + - name: Nikhil Woodruff + orcid: 0009-0009-5004-4910 + affiliation: '1' - name: Pavel Makarchuk orcid: 0009-0003-4869-7409 affiliation: '1' affiliations: - name: PolicyEngine, Washington, DC, United States index: '1' -date: 2 April 2026 +date: 7 April 2026 bibliography: paper.bib --- @@ -34,12 +34,13 @@ PolicyEngine.py [@policyengine_py] is an open-source, multi-country microsimulat # Statement of Need -Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. Existing microsimulation models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. -PolicyEngine addresses these gaps by providing an open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical policy reforms on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. Because existing proprietary models cannot be independently verified, PolicyEngine enables reproducible and transparent policy analysis. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. +Tax-benefit microsimulation models are essential tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. However, existing models face significant access barriers. TAXSIM [@taxsim] at NBER computes only tax liabilities and omits the benefit side of the ledger entirely. The models maintained by the Congressional Budget Office and the Tax Policy Center are fully proprietary and unavailable to external researchers. In the UK, UKMOD [@sutherland2014euromod], maintained by the University of Essex, requires a formal application and institutional affiliation to access, and the models maintained by HM Treasury and the Institute for Fiscal Studies are similarly proprietary. + +PolicyEngine addresses these gaps by providing an open-source Python microsimulation framework that spans multiple countries under a consistent API. Users can supply their own microdata or use built-in datasets, and compute the impact of current law or hypothetical reforms, including parametric changes to existing policy parameters and structural modifications to the tax-benefit system, on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. The framework's open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries. # State of the Field -Tax-benefit microsimulation — pioneered by Orcutt [-@orcutt1957] and surveyed by Bourguignon and Spadaro [-@bourguignon2006] — underpins much of modern fiscal policy evaluation. The primary UK microsimulation models include UKMOD, maintained by the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and proprietary models maintained by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. +Tax-benefit microsimulation, pioneered by Orcutt [-@orcutt1957] and surveyed by Bourguignon and Spadaro [-@bourguignon2006], underpins much of modern fiscal policy evaluation. In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides tax calculations, while the Congressional Budget Office and Tax Policy Center maintain proprietary models. In the UK, the primary microsimulation models include UKMOD, maintained by the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and proprietary models maintained by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. Rather than contributing these features directly to OpenFisca, PolicyEngine introduced a separate analyst-facing layer because the project required capabilities that cut across countries and sit downstream of legislative modeling: harmonized dataset handling, a stable reform API, standardized distributional outputs, and integration with a public-facing web application. This design lets country model packages focus on statutory rules while shared analysis workflows evolve independently. @@ -48,13 +49,13 @@ PolicyEngine differentiates itself in several ways: - **Open-source, multi-country framework**: a single Python package supports the US and UK tax-benefit systems under a consistent API, with no institutional access or license fees required. - **Comprehensive program coverage**: the US model covers over 11 programs including federal income tax, payroll taxes, state income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales. - **Separated modeling, analysis, and data layers**: the project splits reusable engine logic into PolicyEngine Core, country-agnostic analysis workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories [@policyengine_core; @woodruff2024enhanced_cps]. This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change. -- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms with the `+` operator, or implement structural changes via simulation modifiers, then evaluate impacts on households, poverty, inequality, government budgets, and subnational regions. Behavioral response modules model both intensive-margin (hours adjustment) and extensive-margin (participation) labor supply responses to policy changes. +- **Programmatic reform and economic analysis**: users can define hypothetical policy reforms as date-bound parameter values, compose multiple reforms, or implement structural changes via simulation modifiers, then evaluate impacts on households, poverty, inequality, government budgets, and subnational regions. Behavioral response modules model labor supply responses through income and substitution elasticities, as well as capital gains tax responses. # Software Design -PolicyEngine is built as a four-layer system. PolicyEngine Core extends the OpenFisca engine with reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. +PolicyEngine is built as a four-layer system. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries [@policyengine_core]. PolicyEngine.py adds country-agnostic analyst workflows, including baseline-versus-reform comparisons, standardized output types, and visualization helpers. The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. Companion data repositories hold enhanced survey microdata and calibration pipelines for the CPS [@woodruff2024enhanced_cps] and Family Resources Survey. Figure 1 illustrates this architecture. -![PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing decile impacts, poverty rates, inequality metrics, regional breakdowns, and budgetary impacts.](architecture.png){width="100%"} +![PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.](architecture.png){width="100%"} This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. @@ -89,19 +90,19 @@ analysis = economic_impact_analysis(baseline, reformed) The `analysis` object contains decile impacts, program-by-program statistics, poverty rates, and inequality metrics. PolicyEngine.py then applies a consistent analysis layer across countries, producing these outputs from the resulting entity-level data. -PolicyEngine models static fiscal impacts; it does not model macroeconomic feedback effects or general equilibrium responses. +PolicyEngine does not include an underlying macroeconomic model in its microsimulation analysis and does not capture general equilibrium effects. # Research Impact Statement -PolicyEngine has demonstrated research impact across government, academia, and policy research in both the US and UK. +PolicyEngine has demonstrated research impact across government, academia, and policy research in both the US and the UK. -**Government adoption.** In the US, PolicyEngine collaborated with the Better Government Lab — a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy — on benefits eligibility research [@pe_bgl]. In the UK, co-author Nikhil Woodruff served as an Innovation Fellow in 2025–2026 with 10DS — the data science team at 10 Downing Street — adapting PolicyEngine for government use [@ghenis2026no10]. The 10DS team used PolicyEngine to rapidly estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has also formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. +**Government adoption.** In the UK, co-author Nikhil Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the data science team at 10 Downing Street, adapting PolicyEngine for government use [@ghenis2026no10]. The 10DS team used PolicyEngine to estimate the impacts of policy reforms on living standards, local area incomes, and distributional outcomes. HM Treasury has formally documented PolicyEngine in the UK Algorithmic Transparency Recording Standard, describing it as a model their Personal Tax, Welfare and Pensions team is exploring for "advising policymakers on the impact of tax and welfare measures on households" [@hmt2024atrs]. **Congressional and parliamentary citation.** In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine's analysis in introducing the Young Adult Tax Credit Act (H.R.7547), stating that "according to the model at PolicyEngine, 22% of all Americans would see an increase in their household income under this program, and it would lift over 4 million Americans out of poverty" [@mcgarvey2024yatc]. In the UK, Baroness Altmann referenced PolicyEngine and its interactive dashboard during House of Lords Grand Committee debate on the National Insurance Contributions (Employer Pensions Contributions) Bill in February 2026, noting that Commons Library research using PolicyEngine provided "a useful picture of the distributional effects of raising the contribution limit" across income deciles [@hansard2026nic]. -**Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator — a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine, with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. The Federal Reserve Bank of Atlanta independently validates PolicyEngine's model through its Policy Rules Database, conducting three-way comparisons between PolicyEngine, TAXSIM, and the Fed's own models [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. +**Institutional partnership.** PolicyEngine and the National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator, a drop-in replacement for TAXSIM-35 powered by PolicyEngine's microsimulation engine with support for Python, R, Stata, SAS, and Julia [@pe_nber_mou]. The Federal Reserve Bank of Atlanta independently validates PolicyEngine's model through its Policy Rules Database, conducting three-way comparisons between PolicyEngine, TAXSIM, and the Fed's own models [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced Current Population Survey methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. -**Academic research.** Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for Research on Poverty [@pe_usc]. The Beeck Center at Georgetown University featured PolicyEngine in research on rules-as-code for US public benefits [@beeck2023rac; @beeck2025ai]. Youngman et al. [@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget at the Institute for New Economic Thinking, Oxford. +**Academic research.** The Better Government Lab, a joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy, collaborated with PolicyEngine on benefits eligibility research [@pe_bgl]. Matt Unrath (University of Southern California) is using PolicyEngine in a study of effective marginal and average tax rates facing American families, funded by the US Department of Health and Human Services through the Institute for Research on Poverty [@pe_usc]. The Beeck Center at Georgetown University featured PolicyEngine in research on rules-as-code for US public benefits [@beeck2023rac; @beeck2025ai]. Youngman et al. [-@youngman2026carbon] cite PolicyEngine UK's microdata methodology in their agent-based macroeconomic model for the UK's Seventh Carbon Budget at the Institute for New Economic Thinking, Oxford. **Policy research.** In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options [@mccabe2024ctc]. DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023, the first local child tax credit in US history [@pe_dctc]. Senator Cory Booker's office embedded a PolicyEngine-built calculator on his official Senate website for the Keep Your Pay Act [@pe_keepyourpay]. In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025 [@niesr2025living], and the Institute of Economic Affairs has published PolicyEngine-based analyses of employer National Insurance contributions and 2025–2026 tax changes [@woodruff2024nic; @woodruff2025tax]. @@ -109,10 +110,10 @@ PolicyEngine has demonstrated research impact across government, academia, and p This work was supported in the US by Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) [@nsf_pose], and in the UK by the Nuffield Foundation since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. -We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey. We acknowledge the UKMOD team at the Institute for Social and Economic Research (ISER), University of Essex, for their contributions to model descriptions [@sutherland2014euromod]. +We acknowledge contributions from all PolicyEngine contributors, and thank the OpenFisca community for the foundational microsimulation framework [@openfisca]. We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey. # AI Usage Disclosure -Generative AI tools — Claude Opus 4 by Anthropic [@claude2026] — were used to assist with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. +Generative AI tools, specifically Claude Opus 4 by Anthropic [@claude2026], were used to assist with code refactoring. All AI-assisted outputs were reviewed, edited, and validated by human authors, who made all core design decisions regarding software architecture, policy modeling, and parameter implementation. The authors remain fully responsible for the accuracy, originality, and correctness of all submitted materials. # References From e62c46dd20d7131d1801605193db6c1ca7171684 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 7 Apr 2026 07:29:35 -0400 Subject: [PATCH 39/65] Remove non-runnable paper example --- paper-preview.html | 241 ++++++------ paper.html | 921 +++++++++++++++++++-------------------------- paper.md | 33 +- 3 files changed, 493 insertions(+), 702 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index b1478728..7029d42e 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -375,41 +375,40 @@

    Statement of Need

    the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. -However, existing models face significant access barriers. TAXSIM -(Feenberg and Coutts -1993) at NBER computes only tax liabilities and omits the benefit -side of the ledger entirely. The models maintained by the -Congressional Budget Office and the Tax Policy Center are fully -proprietary and unavailable to external researchers. In the UK, UKMOD -(Sutherland and -Figari 2013), maintained by the University of Essex, requires a -formal application and institutional affiliation to access, and the -models maintained by HM Treasury and the Institute for Fiscal Studies -are similarly proprietary.

    -

    PolicyEngine addresses these gaps by -providing an open-source Python microsimulation framework that spans -multiple countries under a consistent API. Users can supply their own -microdata or use built-in datasets, and compute the impact of current -law or hypothetical reforms, including parametric changes to existing -policy parameters and structural modifications to the tax-benefit -system, on any household or a national -population. The Simulation class supports individual household analysis, -while population-level aggregate analysis uses representative survey -datasets with calibrated weights. The framework’s open development on GitHub -enables external validation, community contributions, and reproducible -policy analysis across countries.

    +However, existing models face significant access barriers. TAXSIM (Feenberg and Coutts 1993) +at NBER computes only tax liabilities and omits the benefit side of the +ledger entirely. The models maintained by the Congressional Budget +Office and the Tax Policy Center are fully proprietary and unavailable +to external researchers. In the UK, UKMOD (Sutherland and Figari 2013), +maintained by the University of Essex, requires a formal application and +institutional affiliation to access, and the models maintained by HM +Treasury and the Institute for Fiscal Studies are similarly +proprietary.

    +

    PolicyEngine addresses these gaps by providing an open-source Python +microsimulation framework that spans multiple countries under a +consistent API. Users can supply their own microdata or use built-in +datasets, and compute the impact of current law or hypothetical reforms, +including parametric changes to existing policy parameters and +structural modifications to the tax-benefit system, on any household or +a national population. The Simulation class supports individual +household analysis, while population-level aggregate analysis uses +representative survey datasets with calibrated weights. The framework’s +open development on GitHub enables external validation, community +contributions, and reproducible policy analysis across countries.

    State of the Field

    -

    Tax-benefit microsimulation, pioneered by Orcutt (1957) and surveyed by Bourguignon and -Spadaro Tax-benefit microsimulation, pioneered by Orcutt (1957) and surveyed by +Bourguignon and Spadaro (2006), underpins much of modern fiscal policy evaluation. In the US, TAXSIM (Feenberg and Coutts 1993) at the National Bureau of Economic Research provides tax calculations, while the Congressional Budget Office and Tax Policy Center maintain proprietary models. In the UK, the primary microsimulation models include UKMOD, -maintained by the Institute for Social and Economic Research -(ISER), University of Essex, as part of the EUROMOD family (Sutherland and Figari 2013), and proprietary models maintained by HM Treasury and the Institute for Fiscal Studies. OpenFisca State of the Field

    legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories (Woodruff et al. -2024; Woodruff and Ghenis 2024). This separation allows -each layer to be versioned and updated independently as legislation, +2024; Woodruff and Ghenis 2024). This separation allows each +layer to be versioned and updated independently as legislation, methodology, and microdata change.
  • Programmatic reform and economic analysis: users can define hypothetical policy reforms as date-bound parameter values, -compose multiple reforms, or implement -structural changes via simulation modifiers, then evaluate impacts on -households, poverty, inequality, government budgets, and subnational -regions. Behavioral response modules model labor supply responses -through income and substitution elasticities, as well as capital gains -tax responses.
  • +compose multiple reforms, or implement structural changes via simulation +modifiers, then evaluate impacts on households, poverty, inequality, +government budgets, and subnational regions. Behavioral response modules +model labor supply responses through income and substitution +elasticities, as well as capital gains tax responses.

    Software Design

    PolicyEngine is built as a four-layer system. PolicyEngine Core -provides reusable simulation abstractions, -versioned parameters, and dataset interfaces shared across countries -(Woodruff et al. -2024). PolicyEngine.py adds country-agnostic analyst workflows, -including baseline-versus-reform comparisons, standardized output types, -and visualization helpers. The policyengine-us and policyengine-uk -packages contain statutory logic, variables, and entity structures -specific to each tax-benefit system. Companion data repositories hold -enhanced survey microdata and calibration pipelines for the CPS (Woodruff and Ghenis 2024) -and Family Resources Survey. Figure 1 illustrates this architecture.

    +provides reusable simulation abstractions, versioned parameters, and +dataset interfaces shared across countries (Woodruff et al. 2024). +PolicyEngine.py adds country-agnostic analyst workflows, including +baseline-versus-reform comparisons, standardized output types, and +visualization helpers. The policyengine-us and policyengine-uk packages +contain statutory logic, variables, and entity structures specific to +each tax-benefit system. Companion data repositories hold enhanced +survey microdata and calibration pipelines for the CPS (Woodruff and +Ghenis 2024) and Family Resources Survey. Figure 1 illustrates +this architecture.

    PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics. - +

    This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not @@ -487,55 +486,30 @@

    Software Design

    overlapping but distinct groups.

    As shown in Figure 1, at runtime a simulation combines three inputs: policies from a country model version, household microdata, and optional -behavioral response parameters. The following example doubles the US -federal standard deduction for single filers and runs a full -distributional analysis:

    -
    import datetime
    -from policyengine.core import Parameter, ParameterValue, Policy, Simulation
    -from policyengine.tax_benefit_models.us import (
    -    economic_impact_analysis, us_latest,
    -)
    -
    -param = Parameter(
    -    name="gov.irs.deductions.standard.amount.SINGLE",
    -    tax_benefit_model_version=us_latest,
    -)
    -reform = Policy(
    -    name="Double standard deduction",
    -    parameter_values=[
    -        ParameterValue(
    -            parameter=param,
    -            start_date=datetime.date(2026, 1, 1),
    -            end_date=datetime.date(2026, 12, 31),
    -            value=30_950,
    -        ),
    -    ],
    -)
    -baseline = Simulation(tax_benefit_model_version=us_latest)
    -reformed = Simulation(tax_benefit_model_version=us_latest, policy=reform)
    -analysis = economic_impact_analysis(baseline, reformed)
    -

    The analysis object contains decile impacts, -program-by-program statistics, poverty rates, and inequality metrics. -PolicyEngine.py then applies a consistent analysis layer across -countries, producing these outputs from the resulting entity-level -data.

    -

    PolicyEngine does not include an underlying macroeconomic model in its -microsimulation analysis and does not capture general equilibrium effects.

    +behavioral response parameters. The repository documentation and +examples/ directory include runnable household-level and +population-level analyses using this architecture.

    +

    These examples produce decile impacts, program-by-program statistics, +and inequality metrics using the same country-agnostic analysis layer +described above.

    +

    PolicyEngine does not include an underlying macroeconomic model in +its microsimulation analysis and does not capture general equilibrium +effects.

    Research Impact Statement

    PolicyEngine has demonstrated research impact across government, academia, and policy research in both the US and the UK.

    Government adoption. In the UK, co-author Nikhil -Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the -data science team at 10 Downing Street, adapting PolicyEngine for -government use (HM -Government 2025). The 10DS team used PolicyEngine to estimate the -impacts of policy reforms on living standards, local area incomes, and -distributional outcomes. HM Treasury has formally documented PolicyEngine -in the UK Algorithmic Transparency Recording Standard, describing it as -a model their Personal Tax, Welfare and Pensions team is exploring for -“advising policymakers on the impact of tax and welfare measures on -households” (HM Treasury -2024).

    +Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the data +science team at 10 Downing Street, adapting PolicyEngine for government +use (HM Government +2025). The 10DS team used PolicyEngine to estimate the impacts of +policy reforms on living standards, local area incomes, and +distributional outcomes. HM Treasury has formally documented +PolicyEngine in the UK Algorithmic Transparency Recording Standard, +describing it as a model their Personal Tax, Welfare and Pensions team +is exploring for “advising policymakers on the impact of tax and welfare +measures on households” (HM Treasury 2024).

    Congressional and parliamentary citation. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act @@ -555,20 +529,19 @@

    Research Impact Statement

    National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator, a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s -microsimulation engine with support for Python, R, Stata, SAS, and -Julia (Feenberg -2024). The Federal Reserve Bank of Atlanta independently -validates PolicyEngine’s model through its Policy Rules Database, -conducting three-way comparisons between PolicyEngine, TAXSIM, and the -Fed’s own models (Federal Reserve Bank of Atlanta -2021). Co-author Max Ghenis and Jason DeBacker (University of -South Carolina) presented the Enhanced Current Population Survey -methodology at the 117th Annual Conference on Taxation of the National -Tax Association (Feenberg 2024). +The Federal Reserve Bank of Atlanta independently validates +PolicyEngine’s model through its Policy Rules Database, conducting +three-way comparisons between PolicyEngine, TAXSIM, and the Fed’s own +models (Federal +Reserve Bank of Atlanta 2021). Co-author Max Ghenis and Jason +DeBacker (University of South Carolina) presented the Enhanced Current +Population Survey methodology at the 117th Annual Conference on Taxation +of the National Tax Association (Ghenis and DeBacker 2024).

    -

    Academic research. The Better Government Lab, a joint -center of the Georgetown McCourt School of Public Policy and the +

    Academic research. The Better Government Lab, a +joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy, collaborated with PolicyEngine on benefits eligibility research (Ghenis 2024b). Matt Unrath (University of @@ -581,10 +554,10 @@

    Research Impact Statement

    on rules-as-code for US public benefits (Kennan et al. 2023, 2025). Youngman et al. (2026) cite -PolicyEngine UK’s microdata methodology in their agent-based -macroeconomic model for the UK’s Seventh Carbon Budget at the Institute -for New Economic Thinking, Oxford.

    +data-cites="youngman2026carbon">(2026) cite PolicyEngine UK’s +microdata methodology in their agent-based macroeconomic model for the +UK’s Seventh Carbon Budget at the Institute for New Economic Thinking, +Oxford.

    Policy research. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options Acknowledgements

    AI Usage Disclosure

    Generative AI tools, specifically Claude Opus 4 by Anthropic (Anthropic 2026), were -used to assist with code refactoring. All -AI-assisted outputs were reviewed, edited, and validated by human -authors, who made all core design decisions regarding software -architecture, policy modeling, and parameter implementation. The authors -remain fully responsible for the accuracy, originality, and correctness -of all submitted materials.

    +used to assist with code refactoring. All AI-assisted outputs were +reviewed, edited, and validated by human authors, who made all core +design decisions regarding software architecture, policy modeling, and +parameter implementation. The authors remain fully responsible for the +accuracy, originality, and correctness of all submitted materials.

    References

    @@ -644,10 +616,9 @@

    References

    href="https://www.arnoldventures.org/work/public-finance">https://www.arnoldventures.org/work/public-finance.
    -Bourguignon, François, and Amedeo Spadaro. 2006. -"Microsimulation as a Tool for Evaluating Redistribution -Policies." The Journal of Economic Inequality 4: -77–106. “Microsimulation +as a Tool for Evaluating Redistribution Policies.” The +Journal of Economic Inequality 4: 77–106. https://doi.org/10.1007/s10888-005-9012-6.
    @@ -687,12 +658,6 @@

    References

    Data Using Quantile Regression Forests. https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/.
    -
    -Woodruff, Nikhil, and Max Ghenis. 2024. Enhancing Survey Microdata -with Administrative Records: A Novel Approach to Microsimulation Dataset -Construction. PolicyEngine working paper. https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper. -
    HM Government. 2025. The No10 Innovation Fellowship Programme. References Your Pay Act. https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act.
    -
    -Orcutt, Guy H. 1957. "A New Type of Socio-Economic -System." Review of Economics and Statistics 39 (2): -116–23. https://doi.org/10.2307/1928528. -
    OpenFisca Contributors. 2024. OpenFisca: Open Rules as Code for Tax-Benefit Systems. Released. https://openfisca.org.
    +
    +Orcutt, Guy H. 1957. “A New Type of Socio-Economic System.” +Review of Economics and Statistics 39 (2): 116–23. https://doi.org/10.2307/1928528. +
    PolicyEngine Contributors. 2026. PolicyEngine.py. Released. References Institute of Economic Affairs. https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/.
    +
    +Woodruff, Nikhil, and Max Ghenis. 2024. “Enhancing Survey +Microdata with Administrative Records: A Novel Approach to +Microsimulation Dataset Construction.” https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper. +
    Woodruff, Nikhil, Max Ghenis, and Anthony Volk. 2024. PolicyEngine Core: A Microsimulation Framework. diff --git a/paper.html b/paper.html index b20ac002..7e6365f7 100644 --- a/paper.html +++ b/paper.html @@ -1,383 +1,216 @@ - + - - -PolicyEngine: A Tax-Benefit Microsimulation Framework - + + + + + PolicyEngine: A Tax-Benefit Microsimulation Framework + - - -
    -
    -
    JOSS Paper Preview
    -

    PolicyEngine: A Tax-Benefit Microsimulation Framework

    -
    - Max Ghenis1 - Vahid Ahmadi1 * - Nikhil Woodruff1 - Pavel Makarchuk1 -
    -
    1 PolicyEngine
    - -
    - Python - microsimulation - tax - benefit - public policy - economic analysis -
    -
    -
    - - -
    - - -
    +
    +

    PolicyEngine: A Tax-Benefit Microsimulation +Framework

    +

    7 April 2026

    +

    Summary

    -

    PolicyEngine is an open-source, multi-country microsimulation -framework for tax-benefit policy analysis, implemented in Python. The -policyengine package provides a unified interface for running policy -simulations, analyzing distributional impacts, and visualizing results -across the US and the UK. It delegates country-specific tax-benefit -calculations to dedicated country packages (policyengine-us and -policyengine-uk) while providing shared abstractions for simulations, -datasets, parametric reforms, and output analysis. The framework -supports both individual household simulations and population-wide -microsimulations using representative survey microdata with calibrated -weights. PolicyEngine powers an interactive web application at PolicyEngine.py (PolicyEngine Contributors 2026) is +an open-source, multi-country microsimulation framework for tax-benefit +policy analysis, implemented in Python. The package provides a unified +interface for running policy simulations, analyzing distributional +impacts, and visualizing results across the US and the UK. It delegates +country-specific tax-benefit calculations to dedicated country packages +(policyengine-us and policyengine-uk) while providing shared +abstractions for simulations, datasets, parametric reforms, and output +analysis. The framework supports both individual household simulations +and population-wide microsimulations using representative survey +microdata with calibrated weights. PolicyEngine powers an interactive +web application at policyengine.org that enables non-technical users to explore policy reforms in both countries.

    Statement of Need

    @@ -385,46 +218,56 @@

    Statement of Need

    the distributional impacts of fiscal policy. Governments, think tanks, and researchers rely on such models to estimate how policy reforms affect household incomes, poverty rates, and government budgets. -However, existing models face significant access barriers. TAXSIM -(Feenberg and Coutts -1993) at NBER computes only tax liabilities and omits the benefit -side of the ledger entirely. The models maintained by the -Congressional Budget Office and the Tax Policy Center are fully -proprietary and unavailable to external researchers. In the UK, UKMOD -(Sutherland and -Figari 2013), maintained by the University of Essex, requires a -formal application and institutional affiliation to access, and the -models maintained by HM Treasury and the Institute for Fiscal Studies -are similarly proprietary.

    -

    PolicyEngine addresses these gaps by -providing an open-source Python microsimulation framework that -spans multiple countries under a consistent API. Users can supply their -own microdata or use built-in datasets, and compute the impact of -current law or hypothetical reforms, including parametric changes to -existing policy parameters and structural modifications to the tax-benefit -system, on any household or a national -population. The Simulation class supports individual household -analysis, while population-level aggregate analysis uses representative -survey datasets with calibrated weights. The framework’s open -development on GitHub enables external validation, community +However, existing models face significant access barriers. TAXSIM (Feenberg and Coutts 1993) +at NBER computes only tax liabilities and omits the benefit side of the +ledger entirely. The models maintained by the Congressional Budget +Office and the Tax Policy Center are fully proprietary and unavailable +to external researchers. In the UK, UKMOD (Sutherland and Figari 2013), +maintained by the University of Essex, requires a formal application and +institutional affiliation to access, and the models maintained by HM +Treasury and the Institute for Fiscal Studies are similarly +proprietary.

    +

    PolicyEngine addresses these gaps by providing an open-source Python +microsimulation framework that spans multiple countries under a +consistent API. Users can supply their own microdata or use built-in +datasets, and compute the impact of current law or hypothetical reforms, +including parametric changes to existing policy parameters and +structural modifications to the tax-benefit system, on any household or +a national population. The Simulation class supports individual +household analysis, while population-level aggregate analysis uses +representative survey datasets with calibrated weights. The framework’s +open development on GitHub enables external validation, community contributions, and reproducible policy analysis across countries.

    State of the Field

    -

    In the US, TAXSIM Tax-benefit microsimulation, pioneered by Orcutt (1957) and surveyed by +Bourguignon and Spadaro (2006), underpins much of modern +fiscal policy evaluation. In the US, TAXSIM (Feenberg and Coutts 1993) at the National -Bureau of Economic Research provides tax calculations, while the Tax -Policy Center and Congressional Budget Office maintain proprietary +Bureau of Economic Research provides tax calculations, while the +Congressional Budget Office and Tax Policy Center maintain proprietary models. In the UK, the primary microsimulation models include UKMOD, -maintained by the Centre for Microsimulation and Policy Analysis at the -Institute for Social and Economic Research (ISER), University of Essex, -as part of the EUROMOD family (Sutherland and Figari 2013), -and models maintained internally by HM Treasury and the Institute for -Fiscal Studies. OpenFisca (Sutherland and +Figari 2013), and proprietary models maintained by HM Treasury +and the Institute for Fiscal Studies. OpenFisca (OpenFisca Contributors 2024) pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework (Woodruff et al. 2024).

    +

    Rather than contributing these features directly to OpenFisca, +PolicyEngine introduced a separate analyst-facing layer because the +project required capabilities that cut across countries and sit +downstream of legislative modeling: harmonized dataset handling, a +stable reform API, standardized distributional outputs, and integration +with a public-facing web application. This design lets country model +packages focus on statutory rules while shared analysis workflows evolve +independently.

    PolicyEngine differentiates itself in several ways:

    • Open-source, multi-country framework: a single @@ -437,67 +280,79 @@

      State of the Field

      and TANF; the UK model covers over 37 programs spanning income tax, National Insurance, Universal Credit, Child Benefit, Council Tax, and devolved policies in Scotland and Wales.
    • +
    • Separated modeling, analysis, and data layers: the +project splits reusable engine logic into PolicyEngine Core, +country-agnostic analysis workflows into PolicyEngine.py, country +legislation into policyengine-us and policyengine-uk, and enhanced +survey microdata into companion repositories (Woodruff et al. +2024; Woodruff and Ghenis 2024). This separation allows each +layer to be versioned and updated independently as legislation, +methodology, and microdata change.
    • Programmatic reform and economic analysis: users -can define hypothetical policy reforms as parameter dictionaries with -date-bound values, compose multiple reforms, or implement structural -changes, and evaluate their impact on any household or the full -population. Built-in output classes compute decile impacts, intra-decile -distributions, poverty rates, inequality metrics (Gini coefficients), -budgetary impacts, and regional breakdowns (US congressional districts, -UK parliamentary constituencies). Behavioral response modules model labor supply responses -through income and substitution elasticities, as well as capital gains -tax responses.
    • +can define hypothetical policy reforms as date-bound parameter values, +compose multiple reforms, or implement structural changes via simulation +modifiers, then evaluate impacts on households, poverty, inequality, +government budgets, and subnational regions. Behavioral response modules +model labor supply responses through income and substitution +elasticities, as well as capital gains tax responses.

    Software Design

    -

    PolicyEngine is built on the PolicyEngine Core framework, which -extends the OpenFisca microsimulation engine. The policyengine.py -package is organized as a country-agnostic layer with the following core -components:

    -

    Simulation and Dataset classes provide the primary -interface. The Simulation class executes tax-benefit models on datasets, -applying policy reforms and caching results. The Dataset class -represents microdata containing entity-level data (persons, households, -tax units) with survey weights and entity relationships. -Country-specific datasets, the Current Population Survey for the US and -the Enhanced Family Resources Survey for the UK, are loaded from -companion data repositories (Woodruff and Ghenis 2024).

    -

    Policy and Parameter classes define the reform -system. The Policy class bundles parametric reforms that modify -tax-benefit system parameters. The Parameter class represents system -settings (tax rates, benefit thresholds, income limits), while -ParameterValue supports time-bound values, enabling phased policy -implementations across multiple years.

    -

    Variable classes encapsulate country-specific logic. -Each Variable is a computed quantity (income tax, benefit entitlement) -with entity mappings. Versioned country models store variables, -parameters, and execution logic. The framework conditionally imports -country packages, allowing graceful operation when only one country is -installed.

    -

    Output classes provide standardized analysis. These -include Aggregate for sum, mean, and count statistics; DecileImpact and -IntraDecileImpact for distributional analysis by income decile; Poverty -and Inequality for welfare metrics; ChangeAggregate for -baseline-versus-reform comparisons; and region-specific classes such as -CongressionalDistrictImpact (US) and ConstituencyImpact (UK). All output -classes produce PolicyEngine-branded Plotly visualizations.

    -

    Region classes manage geographic scope, enabling -sub-national analysis for regions within each country.

    +

    PolicyEngine is built as a four-layer system. PolicyEngine Core +provides reusable simulation abstractions, versioned parameters, and +dataset interfaces shared across countries (Woodruff et al. 2024). +PolicyEngine.py adds country-agnostic analyst workflows, including +baseline-versus-reform comparisons, standardized output types, and +visualization helpers. The policyengine-us and policyengine-uk packages +contain statutory logic, variables, and entity structures specific to +each tax-benefit system. Companion data repositories hold enhanced +survey microdata and calibration pipelines for the CPS (Woodruff and +Ghenis 2024) and Family Resources Survey. Figure 1 illustrates +this architecture.

    +
    + + +
    +

    This split trades some packaging complexity for clearer ownership and +release independence. Legislative changes in a country package do not +require duplicating shared output logic; methodological changes to +distributional analysis do not require modifying statutory formulas; and +microdata refreshes can be versioned separately from the modeling +libraries. It also supports different contributor workflows, since legal +rules, data calibration, and analyst-facing outputs are maintained by +overlapping but distinct groups.

    +

    As shown in Figure 1, at runtime a simulation combines three inputs: +policies from a country model version, household microdata, and optional +behavioral response parameters. The repository documentation and +examples/ directory include runnable household-level and +population-level analyses using this architecture.

    +

    These examples produce decile impacts, program-by-program statistics, +and inequality metrics using the same country-agnostic analysis layer +described above.

    +

    PolicyEngine does not include an underlying macroeconomic model in +its microsimulation analysis and does not capture general equilibrium +effects.

    Research Impact Statement

    PolicyEngine has demonstrated research impact across government, academia, and policy research in both the US and the UK.

    Government adoption. In the UK, co-author Nikhil -Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the -data science team at 10 Downing Street, adapting PolicyEngine for -government use (HM -Government 2025). The 10DS team used PolicyEngine to estimate the -impacts of policy reforms on living standards, local area incomes, and -distributional outcomes. HM Treasury has formally documented PolicyEngine -in the UK Algorithmic Transparency Recording Standard, describing it as -a model their Personal Tax, Welfare and Pensions team is exploring for -“advising policymakers on the impact of tax and welfare measures on -households” (HM Treasury -2024).

    +Woodruff served as an Innovation Fellow in 2025–2026 with 10DS, the data +science team at 10 Downing Street, adapting PolicyEngine for government +use (HM Government +2025). The 10DS team used PolicyEngine to estimate the impacts of +policy reforms on living standards, local area incomes, and +distributional outcomes. HM Treasury has formally documented +PolicyEngine in the UK Algorithmic Transparency Recording Standard, +describing it as a model their Personal Tax, Welfare and Pensions team +is exploring for “advising policymakers on the impact of tax and welfare +measures on households” (HM Treasury 2024).

    Congressional and parliamentary citation. In the US, Representatives Morgan McGarvey and Bonnie Watson Coleman cited PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act @@ -517,69 +372,53 @@

    Research Impact Statement

    National Bureau of Economic Research (NBER) signed a formal memorandum of understanding for PolicyEngine to develop an open-source TAXSIM emulator, a drop-in replacement for TAXSIM-35 powered by PolicyEngine’s -microsimulation engine, with support for Python, R, Stata, SAS, and -Julia (Feenberg -2024). The Federal Reserve Bank of Atlanta independently -validates PolicyEngine’s model through its Policy Rules Database, -conducting three-way comparisons between PolicyEngine, TAXSIM, and the -Fed’s own models (Federal Reserve Bank of Atlanta -2021). Co-author Max Ghenis and Jason DeBacker (University of -South Carolina) presented the Enhanced Current Population Survey -methodology at the 117th Annual Conference on Taxation of the National -Tax Association (Feenberg 2024). +The Federal Reserve Bank of Atlanta independently validates +PolicyEngine’s model through its Policy Rules Database, conducting +three-way comparisons between PolicyEngine, TAXSIM, and the Fed’s own +models (Federal +Reserve Bank of Atlanta 2021). Co-author Max Ghenis and Jason +DeBacker (University of South Carolina) presented the Enhanced Current +Population Survey methodology at the 117th Annual Conference on Taxation +of the National Tax Association (Ghenis and DeBacker 2024).

    -

    Academic research. The Better Government Lab, a joint -center of the Georgetown McCourt School of Public Policy and the +

    Academic research. The Better Government Lab, a +joint center of the Georgetown McCourt School of Public Policy and the University of Michigan Ford School of Public Policy, collaborated with PolicyEngine on benefits eligibility research (Ghenis 2024b). In the US, Matt Unrath -(University of Southern California) is using PolicyEngine in a study of -effective marginal and average tax rates facing American families, -funded by the US Department of Health and Human Services through the -Institute for Research on Poverty (Institute for Research on Poverty 2025). -Jason DeBacker (University of South Carolina) has contributed to -behavioral response modeling in PolicyEngine US with support from Arnold -Ventures (Ghenis and -DeBacker 2024). The Beeck Center for Social Impact and Innovation -at Georgetown University featured PolicyEngine as a project spotlight in -their research on rules-as-code for US public benefits programs (Kennan et al. 2023), -and documented two Policy2Code challenge teams building on PolicyEngine -in their 2025 report on AI-powered rules as code (Kennan et al. 2025). In the UK, +data-cites="pe_bgl">(Ghenis 2024b). Matt Unrath (University of +Southern California) is using PolicyEngine in a study of effective +marginal and average tax rates facing American families, funded by the +US Department of Health and Human Services through the Institute for +Research on Poverty (Institute for Research on Poverty 2025). The +Beeck Center at Georgetown University featured PolicyEngine in research +on rules-as-code for US public benefits (Kennan et al. 2023, 2025). Youngman et al. (2026) cite -PolicyEngine UK’s microdata methodology in their agent-based -macroeconomic model for the UK’s Seventh Carbon Budget, developed at the -Institute for New Economic Thinking at Oxford in partnership with the -Department for Energy Security and Net Zero.

    +data-cites="youngman2026carbon">(2026) cite PolicyEngine UK’s +microdata methodology in their agent-based macroeconomic model for the +UK’s Seventh Carbon Budget at the Institute for New Economic Thinking, +Oxford.

    Policy research. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child -Tax Credit reform options, becoming the first external organization to -leverage PolicyEngine’s enhanced US microdata (McCabe and Sargeant 2024). DC Councilmember Zachary Parker cited PolicyEngine’s analysis when -introducing the District Child Tax Credit Amendment Act of 2023, which -became the first local child tax credit in US history when it passed in -September 2024 (Council of -the District of Columbia 2023). Senator Cory Booker’s office -embedded a PolicyEngine-built calculator on his official Senate website -for constituents to model the impact of the Keep Your Pay Act on their -household taxes (Office of Senator Cory Booker 2026). -In the UK, the National Institute of Economic and Social Research -(NIESR) used PolicyEngine in their UK Living Standards Review 2025, -acknowledging “the expertise and generosity of Nikhil Woodruff and Vahid -Ahmadi in helping us maximise the benefits of using PolicyEngine” (Mosley et al. -2025). The Institute of Economic Affairs has published reports -using PolicyEngine’s microsimulation model to analyze employer National -Insurance contributions (Woodruff 2024) and the -distributional impact of 2025–2026 tax changes on UK households (Woodruff +introducing the District Child Tax Credit Amendment Act of 2023, the +first local child tax credit in US history (Council of the District of Columbia 2023). +Senator Cory Booker’s office embedded a PolicyEngine-built calculator on +his official Senate website for the Keep Your Pay Act (Office of Senator Cory +Booker 2026). In the UK, the National Institute of Economic and +Social Research (NIESR) used PolicyEngine in their UK Living Standards +Review 2025 (Mosley +et al. 2025), and the Institute of Economic Affairs has published +PolicyEngine-based analyses of employer National Insurance contributions +and 2025–2026 tax changes (Woodruff 2024, 2025).

    Acknowledgements

    This work was supported in the US by Arnold Ventures Acknowledgements Service and the Department for Work and Pensions for providing access to the Family Resources Survey.

    AI Usage Disclosure

    -

    Generative AI tools, specifically Claude Opus 4 by Anthropic (Anthropic 2026), were used to assist -with code refactoring. All AI-assisted -outputs were reviewed, edited, and validated by human authors, who made -all core design decisions regarding software architecture, policy -modeling, and parameter implementation. The authors remain fully -responsible for the accuracy, originality, and correctness of all -submitted materials.

    +

    Generative AI tools, specifically Claude Opus 4 by Anthropic (Anthropic 2026), were +used to assist with code refactoring. All AI-assisted outputs were +reviewed, edited, and validated by human authors, who made all core +design decisions regarding software architecture, policy modeling, and +parameter implementation. The authors remain fully responsible for the +accuracy, originality, and correctness of all submitted materials.

    References

    @@ -620,6 +458,12 @@

    References

    Arnold Ventures. 2023. Public Finance Program. https://www.arnoldventures.org/work/public-finance.
    +
    +Bourguignon, François, and Amedeo Spadaro. 2006. “Microsimulation +as a Tool for Evaluating Redistribution Policies.” The +Journal of Economic Inequality 4: 77–106. https://doi.org/10.1007/s10888-005-9012-6. +
    Council of the District of Columbia. 2023. District Child Tax Credit Amendment Act of 2023. References Data Using Quantile Regression Forests. https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/.
    -
    -Woodruff, Nikhil, and Max Ghenis. 2024. Enhancing Survey Microdata -with Administrative Records: A Novel Approach to Microsimulation Dataset -Construction. PolicyEngine working paper. https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper. -
    HM Government. 2025. The No10 Innovation Fellowship Programme. References Code for Tax-Benefit Systems. Released. https://openfisca.org.
    +
    +Orcutt, Guy H. 1957. “A New Type of Socio-Economic System.” +Review of Economics and Statistics 39 (2): 116–23. https://doi.org/10.2307/1928528. +
    +
    +PolicyEngine Contributors. 2026. PolicyEngine.py. Released. https://github.com/PolicyEngine/policyengine.py. +
    Sutherland, Holly, and Francesco Figari. 2013. EUROMOD: The European Union Tax-Benefit @@ -754,6 +602,13 @@

    References

    Institute of Economic Affairs. https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/.
    +
    +Woodruff, Nikhil, and Max Ghenis. 2024. “Enhancing Survey +Microdata with Administrative Records: A Novel Approach to +Microsimulation Dataset Construction.” https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper. +
    Woodruff, Nikhil, Max Ghenis, and Anthony Volk. 2024. PolicyEngine Core: A Microsimulation Framework. @@ -767,13 +622,5 @@

    References

    href="https://arxiv.org/abs/2602.15607">https://arxiv.org/abs/2602.15607.
    - - -
    - - - diff --git a/paper.md b/paper.md index e8370d23..6769258e 100644 --- a/paper.md +++ b/paper.md @@ -59,36 +59,9 @@ PolicyEngine is built as a four-layer system. PolicyEngine Core provides reusabl This split trades some packaging complexity for clearer ownership and release independence. Legislative changes in a country package do not require duplicating shared output logic; methodological changes to distributional analysis do not require modifying statutory formulas; and microdata refreshes can be versioned separately from the modeling libraries. It also supports different contributor workflows, since legal rules, data calibration, and analyst-facing outputs are maintained by overlapping but distinct groups. -As shown in Figure 1, at runtime a simulation combines three inputs: policies from a country model version, household microdata, and optional behavioral response parameters. The following example doubles the US federal standard deduction for single filers and runs a full distributional analysis: - -```python -import datetime -from policyengine.core import Parameter, ParameterValue, Policy, Simulation -from policyengine.tax_benefit_models.us import ( - economic_impact_analysis, us_latest, -) - -param = Parameter( - name="gov.irs.deductions.standard.amount.SINGLE", - tax_benefit_model_version=us_latest, -) -reform = Policy( - name="Double standard deduction", - parameter_values=[ - ParameterValue( - parameter=param, - start_date=datetime.date(2026, 1, 1), - end_date=datetime.date(2026, 12, 31), - value=30_950, - ), - ], -) -baseline = Simulation(tax_benefit_model_version=us_latest) -reformed = Simulation(tax_benefit_model_version=us_latest, policy=reform) -analysis = economic_impact_analysis(baseline, reformed) -``` - -The `analysis` object contains decile impacts, program-by-program statistics, poverty rates, and inequality metrics. PolicyEngine.py then applies a consistent analysis layer across countries, producing these outputs from the resulting entity-level data. +As shown in Figure 1, at runtime a simulation combines three inputs: policies from a country model version, household microdata, and optional behavioral response parameters. The repository documentation and `examples/` directory include runnable household-level and population-level analyses using this architecture. + +These examples produce decile impacts, program-by-program statistics, and inequality metrics using the same country-agnostic analysis layer described above. PolicyEngine does not include an underlying macroeconomic model in its microsimulation analysis and does not capture general equilibrium effects. From 0f075dc51d789f6ef0149f5b06db3bae83e81c86 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 7 Apr 2026 08:38:53 -0400 Subject: [PATCH 40/65] Clarify policyengine.py JOSS positioning --- paper-preview.html | 105 +++++++++++++++++++++------------------------ paper.html | 103 +++++++++++++++++++++----------------------- paper.md | 19 ++++---- 3 files changed, 105 insertions(+), 122 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 7029d42e..724a586c 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -417,57 +417,52 @@

    State of the Field

    PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework (Woodruff et al. 2024).

    -

    Rather than contributing these features directly to OpenFisca, -PolicyEngine introduced a separate analyst-facing layer because the -project required capabilities that cut across countries and sit -downstream of legislative modeling: harmonized dataset handling, a -stable reform API, standardized distributional outputs, and integration -with a public-facing web application. This design lets country model -packages focus on statutory rules while shared analysis workflows evolve +

    The country packages already support direct microsimulation analysis, +and many one-off weighted calculations can be written against those APIs +alone. PolicyEngine.py was introduced for a different need: a reusable +analyst-facing layer for workflows that recur across projects and +countries. In practice, these include harmonized dataset management, a +stable baseline-versus-reform pattern, structured output types for +distributional and regional analysis, and interfaces suitable for +downstream dashboards and reports. This design lets country model +packages focus on statutory rules while shared analysis methods evolve independently.

    -

    PolicyEngine differentiates itself in several ways:

    +

    PolicyEngine.py differentiates itself in several ways:

      -
    • Open-source, multi-country framework: a single -Python package supports the US and UK tax-benefit systems under a -consistent API, with no institutional access or license fees -required.
    • -
    • Comprehensive program coverage: the US model covers -over 11 programs including federal income tax, payroll taxes, state -income taxes, SNAP, SSI, Social Security, Medicare, Medicaid, EITC, CTC, -and TANF; the UK model covers over 37 programs spanning income tax, -National Insurance, Universal Credit, Child Benefit, Council Tax, and -devolved policies in Scotland and Wales.
    • +
    • Cross-country analyst workflow: a single package +provides shared Simulation, Policy, and +dataset-management patterns for analogous UK and US analyses, despite +differences in the lower-level country-package APIs.
    • +
    • Standardized reform-analysis outputs: reusable +functions and objects such as economic_impact_analysis(), +ChangeAggregate, poverty and inequality metrics, and +geographic impact outputs replace repeated project-specific grouping and +weighting code.
    • Separated modeling, analysis, and data layers: the -project splits reusable engine logic into PolicyEngine Core, -country-agnostic analysis workflows into PolicyEngine.py, country -legislation into policyengine-us and policyengine-uk, and enhanced -survey microdata into companion repositories (Woodruff et al. 2024; Woodruff and Ghenis 2024). This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change.
    • -
    • Programmatic reform and economic analysis: users -can define hypothetical policy reforms as date-bound parameter values, -compose multiple reforms, or implement structural changes via simulation -modifiers, then evaluate impacts on households, poverty, inequality, -government budgets, and subnational regions. Behavioral response modules -model labor supply responses through income and substitution -elasticities, as well as capital gains tax responses.

    Software Design

    PolicyEngine is built as a four-layer system. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces shared across countries (Woodruff et al. 2024). -PolicyEngine.py adds country-agnostic analyst workflows, including -baseline-versus-reform comparisons, standardized output types, and -visualization helpers. The policyengine-us and policyengine-uk packages -contain statutory logic, variables, and entity structures specific to -each tax-benefit system. Companion data repositories hold enhanced -survey microdata and calibration pipelines for the CPS (Woodruff and -Ghenis 2024) and Family Resources Survey. Figure 1 illustrates -this architecture.

    +data-cites="policyengine_core">(Woodruff et al. 2024). The +policyengine-us and policyengine-uk packages contain statutory logic, +variables, and entity structures specific to each tax-benefit system. +PolicyEngine.py sits above them as the analysis layer: it defines shared +simulation orchestration, structured output types, and canonical +baseline-versus-reform workflows such as +economic_impact_analysis(). Companion data repositories +hold enhanced survey microdata and calibration pipelines for the CPS +(Woodruff +and Ghenis 2024) and Family Resources Survey. Figure 1 +illustrates this architecture.

    PolicyEngine architecture. Policies, household microdata, and behavioral response parameters feed into the Simulation engine, producing distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics. @@ -476,22 +471,20 @@

    Software Design

    Simulation engine, producing distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.
    -

    This split trades some packaging complexity for clearer ownership and -release independence. Legislative changes in a country package do not -require duplicating shared output logic; methodological changes to -distributional analysis do not require modifying statutory formulas; and -microdata refreshes can be versioned separately from the modeling -libraries. It also supports different contributor workflows, since legal -rules, data calibration, and analyst-facing outputs are maintained by -overlapping but distinct groups.

    -

    As shown in Figure 1, at runtime a simulation combines three inputs: -policies from a country model version, household microdata, and optional -behavioral response parameters. The repository documentation and -examples/ directory include runnable household-level and -population-level analyses using this architecture.

    -

    These examples produce decile impacts, program-by-program statistics, -and inequality metrics using the same country-agnostic analysis layer -described above.

    +

    This split reflects a deliberate trade-off. The project could have +kept analysis code inside each country package or inside downstream +application repositories, but that would duplicate methodology and make +cross-country work harder to keep aligned. By extracting repeated +analyst tasks into PolicyEngine.py, the project centralizes +distributional methods while leaving legislative implementation in the +country packages. The cost is added package coordination and a clearer +interface boundary across repositories.

    +

    As shown in Figure 1, at runtime a simulation combines a country +model version, household microdata, and optional reform or +dynamic-response inputs. The same layer then exposes reusable outputs +for decile changes, program statistics, poverty, inequality, and +regional impacts, which are consumed by examples, research scripts, and +the public web application.

    PolicyEngine does not include an underlying macroeconomic model in its microsimulation analysis and does not capture general equilibrium effects.

    @@ -779,8 +772,8 @@

    References

    href="https://arxiv.org/abs/2602.15607">https://arxiv.org/abs/2602.15607.
    + -
    - diff --git a/paper.html b/paper.html index 9bac2d45..3e6b692a 100644 --- a/paper.html +++ b/paper.html @@ -260,37 +260,77 @@

    State of the Field

    PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework (Woodruff et al. 2024).

    -

    The country packages already support direct microsimulation analysis, -and many one-off weighted calculations can be written against those APIs -alone. PolicyEngine.py was introduced for a different need: a reusable -analyst-facing layer for workflows that recur across projects and -countries. In practice, these include harmonized dataset management, a -stable baseline-versus-reform pattern, structured output types for -distributional and regional analysis, and interfaces suitable for -downstream dashboards and reports. This design lets country model -packages focus on statutory rules while shared analysis methods evolve -independently.

    -

    PolicyEngine.py differentiates itself in several ways:

    -
      -
    • Cross-country analyst workflow: a single package -provides shared Simulation, Policy, and -dataset-management patterns for analogous UK and US analyses, despite -differences in the lower-level country-package APIs.
    • -
    • Standardized reform-analysis outputs: reusable -functions and objects such as economic_impact_analysis(), -ChangeAggregate, poverty and inequality metrics, and -geographic impact outputs replace repeated project-specific grouping and -weighting code.
    • -
    • Separated modeling, analysis, and data layers: the -project splits reusable engine logic into PolicyEngine Core, analyst +

      The country packages already support direct microsimulation analysis +and one-off weighted calculations. PolicyEngine.py was introduced for a +different need: a reusable analyst-facing layer for workflows that recur +across projects and countries. In practice, these include harmonized +dataset management, a stable baseline-versus-reform pattern, structured +output types for distributional and regional analysis, and interfaces +suitable for downstream dashboards and reports. This design lets country +model packages focus on statutory rules while shared analysis methods +evolve independently.

      +

      Several practical differences motivate a separate analyst layer:

      + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DimensionPolicyEngine.pyTAXSIMUKMODOpenFisca
      Open sourceYesPartialNoYes
      Main supported workflowUS and UKUSUKFrance, with additional country packages and forks
      Tax and benefit analysisYesTax onlyYesYes
      Shared analyst-facing reform and output workflow across supported +countriesYesNoNoCountry-specific
      +

      Compared with these tools, PolicyEngine.py’s contribution is not a +new legislative engine for a single country. It is a shared analysis +layer that sits above country models and makes repeated reform-analysis +workflows portable across supported countries. The project also +separates reusable engine logic into PolicyEngine Core, analyst workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories (Woodruff et al. 2024; Woodruff and Ghenis 2024). This separation allows each layer to be versioned and updated independently as legislation, -methodology, and microdata change.

    • -
    +methodology, and microdata change.

    Software Design

    PolicyEngine is built as a four-layer system. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and diff --git a/paper.md b/paper.md index ba219f37..a7ca051c 100644 --- a/paper.md +++ b/paper.md @@ -42,13 +42,18 @@ PolicyEngine addresses these gaps by providing an open-source Python microsimula Tax-benefit microsimulation, pioneered by Orcutt [-@orcutt1957] and surveyed by Bourguignon and Spadaro [-@bourguignon2006], underpins much of modern fiscal policy evaluation. In the US, TAXSIM [@taxsim] at the National Bureau of Economic Research provides tax calculations, while the Congressional Budget Office and Tax Policy Center maintain proprietary models. In the UK, the primary microsimulation models include UKMOD, maintained by the Institute for Social and Economic Research (ISER), University of Essex, as part of the EUROMOD family [@sutherland2014euromod], and proprietary models maintained by HM Treasury and the Institute for Fiscal Studies. OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. PolicyEngine originated from OpenFisca and builds on this foundation through the PolicyEngine Core framework [@policyengine_core]. -The country packages already support direct microsimulation analysis, and many one-off weighted calculations can be written against those APIs alone. PolicyEngine.py was introduced for a different need: a reusable analyst-facing layer for workflows that recur across projects and countries. In practice, these include harmonized dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces suitable for downstream dashboards and reports. This design lets country model packages focus on statutory rules while shared analysis methods evolve independently. +The country packages already support direct microsimulation analysis and one-off weighted calculations. PolicyEngine.py was introduced for a different need: a reusable analyst-facing layer for workflows that recur across projects and countries. In practice, these include harmonized dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces suitable for downstream dashboards and reports. This design lets country model packages focus on statutory rules while shared analysis methods evolve independently. -PolicyEngine.py differentiates itself in several ways: +Several practical differences motivate a separate analyst layer: -- **Cross-country analyst workflow**: a single package provides shared `Simulation`, `Policy`, and dataset-management patterns for analogous UK and US analyses, despite differences in the lower-level country-package APIs. -- **Standardized reform-analysis outputs**: reusable functions and objects such as `economic_impact_analysis()`, `ChangeAggregate`, poverty and inequality metrics, and geographic impact outputs replace repeated project-specific grouping and weighting code. -- **Separated modeling, analysis, and data layers**: the project splits reusable engine logic into PolicyEngine Core, analyst workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories [@policyengine_core; @woodruff2024enhanced_cps]. This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change. +| Dimension | PolicyEngine.py | TAXSIM | UKMOD | OpenFisca | +|---|---|---|---|---| +| Open source | Yes | Partial | No | Yes | +| Main supported workflow | US and UK | US | UK | France, with additional country packages and forks | +| Tax and benefit analysis | Yes | Tax only | Yes | Yes | +| Shared analyst-facing reform and output workflow across supported countries | Yes | No | No | Country-specific | + +Compared with these tools, PolicyEngine.py's contribution is not a new legislative engine for a single country. It is a shared analysis layer that sits above country models and makes repeated reform-analysis workflows portable across supported countries. The project also separates reusable engine logic into PolicyEngine Core, analyst workflows into PolicyEngine.py, country legislation into policyengine-us and policyengine-uk, and enhanced survey microdata into companion repositories [@policyengine_core; @woodruff2024enhanced_cps]. This separation allows each layer to be versioned and updated independently as legislation, methodology, and microdata change. # Software Design From bc48c4e8a7e10395e444e4ced83418caa2390ac1 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 7 Apr 2026 09:31:46 -0400 Subject: [PATCH 42/65] Tighten JOSS reviewer path and scope --- .github/CONTRIBUTING.md | 5 +- Makefile | 6 +- README.md | 38 ++++++++---- docs/dev.md | 9 +-- paper-preview.html | 126 ++++++++++++++++++---------------------- paper.html | 124 ++++++++++++++++++--------------------- paper.md | 14 ++--- 7 files changed, 159 insertions(+), 163 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index a22aa690..d7760a01 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -13,7 +13,7 @@ Thanks for contributing to PolicyEngine.py. ```bash git clone https://github.com/PolicyEngine/policyengine.py.git cd policyengine.py -uv pip install -e .[dev] +uv pip install -e ".[dev]" ``` This installs the package, both country models, and the development tools used in CI. @@ -32,8 +32,7 @@ make test Documentation changes can be checked with: ```bash -cd docs -myst build --html +make docs ``` Tests that download representative datasets require a `HUGGING_FACE_TOKEN`: diff --git a/Makefile b/Makefile index f5028d39..f379c098 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,10 @@ all: build-package docs: - cd docs && jupyter book start + cd docs && npx mystmd build --html install: - uv pip install -e .[dev] + uv pip install -e ".[dev]" format: ruff format . @@ -27,4 +27,4 @@ build-package: python -m build test: - pytest tests --cov=policyengine --cov-report=term-missing \ No newline at end of file + pytest tests --cov=policyengine --cov-report=term-missing diff --git a/README.md b/README.md index 595ff800..cc24a546 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ A Python package for tax-benefit microsimulation analysis. Run policy simulation ## Quick start +Install the UK country model first: + +```bash +pip install "policyengine[uk]" +``` + ```python from policyengine.core import Simulation from policyengine.outputs.aggregate import Aggregate, AggregateType @@ -35,6 +41,15 @@ agg.run() print(f"Total UC spending: £{agg.result / 1e9:.1f}bn") ``` +## Smoke test + +To verify a fresh install without downloading representative datasets: + +```bash +pip install "policyengine[uk,us]" +python examples/household_impact_example.py +``` + ## Documentation **Core concepts:** @@ -55,11 +70,13 @@ print(f"Total UC spending: £{agg.result / 1e9:.1f}bn") pip install policyengine ``` -This installs both UK and US country models. To install only one: +This installs the shared analysis layer only. Add country model extras for the +systems you want to analyze: ```bash -pip install policyengine[uk] # UK model only -pip install policyengine[us] # US model only +pip install "policyengine[uk]" # shared layer + UK model +pip install "policyengine[us]" # shared layer + US model +pip install "policyengine[uk,us]" # shared layer + both country models ``` ### For development @@ -67,7 +84,7 @@ pip install policyengine[us] # US model only ```bash git clone https://github.com/PolicyEngine/policyengine.py.git cd policyengine.py -uv pip install -e .[dev] # install with dev dependencies (pytest, ruff, mypy, etc.) +uv pip install -e ".[dev]" # install with dev dependencies (pytest, ruff, mypy, etc.) ``` ## Development @@ -76,17 +93,18 @@ uv pip install -e .[dev] # install with dev dependencies (pytest, ruff, m | Configuration | Install | Use case | |---------------|---------|----------| -| **Library user** | `pip install policyengine` | Using the package in your own code | -| **UK only** | `pip install policyengine[uk]` | Only need UK simulations | -| **US only** | `pip install policyengine[us]` | Only need US simulations | -| **Developer** | `uv pip install -e .[dev]` | Contributing to the package | +| **Library user** | `pip install policyengine` | Shared analysis layer only | +| **UK only** | `pip install "policyengine[uk]"` | Shared layer plus UK simulations | +| **US only** | `pip install "policyengine[us]"` | Shared layer plus US simulations | +| **Both countries** | `pip install "policyengine[uk,us]"` | Shared layer plus UK and US simulations | +| **Developer** | `uv pip install -e ".[dev]"` | Contributing to the package | ### Common commands ```bash make format # ruff format make test # pytest with coverage -make docs # build Jupyter Book documentation +make docs # run the MyST docs build used in CI via npx make clean # remove caches, build artifacts, .h5 files ``` @@ -124,7 +142,7 @@ PRs trigger the following checks: | Tests (Python 3.13) | Required | `make test` | | Tests (Python 3.14) | Required | `make test` | | Mypy | Informational | `mypy src/policyengine` | -| Docs build | Required | Jupyter Book build | +| Docs build | Required | `make docs` | ### Versioning and releases diff --git a/docs/dev.md b/docs/dev.md index 5ae84682..8078354f 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -12,17 +12,18 @@ ```bash git clone https://github.com/PolicyEngine/policyengine.py.git cd policyengine.py -uv pip install -e .[dev] +uv pip install -e ".[dev]" ``` -This installs both UK and US country models plus dev dependencies (pytest, ruff, mypy, towncrier). +This installs the shared analysis layer, both country model extras, and the dev +dependencies used in CI (pytest, ruff, mypy, towncrier). ## Common commands ```bash make format # ruff format make test # pytest with coverage -make docs # build documentation site +make docs # run the MyST docs build used in CI via npx make clean # remove caches, build artifacts, .h5 files ``` @@ -60,7 +61,7 @@ PRs trigger the following checks: | Tests (Python 3.13) | Required | `make test` | | Tests (Python 3.14) | Required | `make test` | | Mypy | Informational | `mypy src/policyengine` | -| Docs build | Required | MyST build | +| Docs build | Required | `make docs` | ## Versioning and releases diff --git a/paper-preview.html b/paper-preview.html index 05abf8ec..38235014 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -3,7 +3,7 @@ - PolicyEngine: A Tax-Benefit Microsimulation Framework + PolicyEngine.py: An Analyst Layer for Tax-Benefit Microsimulation - - -

    -

    policyengine: An Analyst Layer for Tax-Benefit -Microsimulation

    -

    13 April 2026

    -
    -

    Summary

    -

    The policyengine Python package (PolicyEngine Contributors 2026) is -an open-source analysis layer for tax-benefit microsimulation. The -package provides a unified interface for running policy simulations, -analyzing distributional impacts, and visualizing results across the US -and the UK. It delegates country-specific tax-benefit calculations to -dedicated country packages (policyengine-us and policyengine-uk) while -providing shared abstractions for simulations, datasets, parametric -reforms, and output analysis. The framework supports both individual -household simulations and population-wide microsimulations using -representative survey microdata with calibrated weights. These workflows -also power an interactive web application at policyengine.org that enables -non-technical users to explore policy reforms in both countries.

    -

    Statement of Need

    -

    Tax-benefit microsimulation models are essential tools for evaluating -the distributional impacts of fiscal policy. Governments, think tanks, -and researchers rely on such models to estimate how policy reforms -affect household incomes, poverty rates, and government budgets. In -practice, however, analysts often work across fragmented layers: -statutory rules, representative microdata, reform definitions, and -distributional outputs are managed in different tools and with different -interfaces. Reproducing a baseline-versus-reform workflow, or carrying -the same analysis pattern from one country model to another, therefore -often requires bespoke scripts and project-specific conventions.

    -

    The policyengine package provides an analyst layer that -works across multiple country models under a consistent API. Users can -supply their own microdata or use companion representative datasets, and -compute the impact of current law or hypothetical reforms, including -parametric changes to existing policy parameters and structural -modifications to the tax-benefit system, on any household or a national -population. The Simulation class supports individual household analysis, -while population-level aggregate analysis uses representative survey -datasets with calibrated weights. The framework’s open development on -GitHub supports external validation, community contributions, and -reproducible policy analysis across countries.

    -

    State of the Field

    -

    Tax-benefit microsimulation, pioneered by Orcutt (1957) and surveyed by -Bourguignon and Spadaro (2006), underpins much of modern -fiscal policy evaluation. In the US, TAXSIM (Feenberg and Coutts 1993) at the National -Bureau of Economic Research provides tax calculations, while the -Congressional Budget Office and Tax Policy Center maintain -microsimulation tax models (Congressional Budget -Office 2018; Tax Policy Center 2022). In the UK, the primary -microsimulation models include UKMOD, maintained by the Institute for -Social and Economic Research (ISER), University of Essex, as part of the -EUROMOD family (Sutherland and -Figari 2013; EUROMOD 2026), HM Treasury’s Intra-Governmental Tax -and Benefit Microsimulation model (IGOTM) (HM Treasury 2025), and TAXBEN, -maintained by the Institute for Fiscal Studies (Waters 2017). OpenFisca (OpenFisca Contributors -2024) pioneered the open-source approach to tax-benefit -microsimulation in France. Other open-source efforts include the Policy -Simulation Library, a collection of policy models and data-preparation -routines (Policy Simulation -Library 2026), and The Budget Lab’s public US tax-model -codebases, including Tax-Simulator and Cost-Recovery-Simulator (The -Budget Lab at Yale 2024, 2025). PolicyEngine originated from -OpenFisca and builds on this foundation through the PolicyEngine Core -framework (Woodruff et al. 2024).

    -

    The country packages already support direct microsimulation analysis -and one-off weighted calculations. The policyengine package -groups a different layer of functionality: harmonized dataset -management, a stable baseline-versus-reform pattern, structured output -types for distributional and regional analysis, and interfaces suitable -for downstream dashboards and reports. Concretely, the package -contributes reusable outputs such as Aggregate, -ChangeAggregate, and IntraDecileImpact, -together with bundled analyses such as -economic_impact_analysis(). This separation lets country -model packages focus on statutory rules while shared analysis methods -evolve independently.

    -

    Table 1 summarizes where policyengine sits relative to -selected tools:

    - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    DimensionpolicyengineTAXSIMUKMODOpenFisca
    Open sourceYesPartialYesYes
    Main supported workflowUS and UKUSUKFrance, with additional country packages and forks
    Tax and benefit analysisYesTax onlyYesYes
    Distributed as a native Python packageYesNoNoNo
    Shared analyst-facing reform and output workflow across supported -countriesYesNoNoCountry-specific
    -

    Within this landscape, policyengine serves as a shared -analysis layer above country models. It makes repeated reform-analysis -workflows portable across supported countries, while leaving reusable -engine logic in PolicyEngine Core, country legislation in -policyengine-us and policyengine-uk, and enhanced survey microdata in -companion repositories (Woodruff et al. -2024; Woodruff and Ghenis 2024). This separation allows each -layer to be versioned and updated independently as legislation, -methodology, and microdata change.

    -

    Software Design

    -

    The broader PolicyEngine software stack is built as a four-layer -system. PolicyEngine Core provides reusable simulation abstractions, -versioned parameters, and dataset interfaces shared across countries -(Woodruff et al. -2024). The policyengine-us and policyengine-uk packages contain -statutory logic, variables, and entity structures specific to each -tax-benefit system. The policyengine package sits above -them as the analysis layer: it defines shared simulation orchestration, -structured output types, and canonical baseline-versus-reform workflows -such as economic_impact_analysis(). Companion data -repositories hold enhanced survey microdata derived from the CPS (Woodruff and -Ghenis 2024) and Family Resources Survey (Department for Work and Pensions et al. -2021). Figure 1 illustrates this architecture.

    -
    - - -
    -

    This split reflects a deliberate trade-off. The project could have -kept analysis code inside each country package or inside downstream -application repositories, but that would duplicate methodology and make -cross-country work harder to keep aligned. By extracting repeated -analyst tasks into policyengine, the project centralizes -distributional methods while leaving legislative implementation in the -country packages. The cost is added package coordination and a clearer -interface boundary across repositories.

    -

    As shown in Figure 1, at runtime a simulation combines a country -model version, household microdata, and optional reform or -dynamic-response inputs. The same layer then exposes reusable outputs -for decile changes, program statistics, poverty, inequality, and -regional impacts, which are consumed by examples, research scripts, and -the public web application.

    -

    The policyengine package does not include an underlying -macroeconomic model in its microsimulation analysis and does not capture -general equilibrium effects.

    -

    Research Impact Statement

    -

    PolicyEngine has demonstrated research impact across government, -academia, and policy research in both the US and the UK.

    -

    Government adoption. HM Treasury has formally -documented PolicyEngine in the UK Algorithmic Transparency Recording -Standard, describing it as a model their Personal Tax, Welfare and -Pensions team is exploring for “advising policymakers on the impact of -tax and welfare measures on households” (HM Treasury 2024).

    -

    Congressional and parliamentary citation. In the US, -Representatives Morgan McGarvey and Bonnie Watson Coleman cited -PolicyEngine’s analysis in introducing the Young Adult Tax Credit Act -(H.R.7547), stating that “according to the model at PolicyEngine, 22% of -all Americans would see an increase in their household income under this -program, and it would lift over 4 million Americans out of poverty” -(Office of -Representative Morgan McGarvey 2024). In the UK, Baroness Altmann -referenced PolicyEngine and its interactive dashboard during House of -Lords Grand Committee debate on the National Insurance Contributions -(Employer Pensions Contributions) Bill in February 2026, noting that -Commons Library research using PolicyEngine provided “a useful picture -of the distributional effects of raising the contribution limit” across -income deciles (House -of Lords 2026).

    -

    Institutional use and validation. The Federal -Reserve Bank of Atlanta independently validates PolicyEngine’s model -through its Policy Rules Database, conducting three-way comparisons -between PolicyEngine, TAXSIM, and the Fed’s own models (Federal Reserve Bank of -Atlanta 2021). Co-author Max Ghenis and Jason DeBacker -(University of South Carolina) presented the Enhanced Current Population -Survey methodology at the 117th Annual Conference on Taxation of the -National Tax Association (Ghenis and DeBacker 2024).

    -

    Academic research. The Better Government Lab, a -joint center of the Georgetown McCourt School of Public Policy and the -University of Michigan Ford School of Public Policy, collaborated with -PolicyEngine on benefits eligibility research (Ghenis 2024b). Matt Unrath (University of -Southern California) is using PolicyEngine in a study of effective -marginal and average tax rates facing American families, funded by the -US Department of Health and Human Services through the Institute for -Research on Poverty (Institute for Research on Poverty 2025). The -Beeck Center at Georgetown University featured PolicyEngine in research -on rules-as-code for US public benefits (Kennan et al. 2023, 2025). -Youngman et al. (2026) cite PolicyEngine UK’s -microdata methodology in their agent-based macroeconomic model for the -UK’s Seventh Carbon Budget at the Institute for New Economic Thinking, -Oxford.

    -

    Policy research. In the US, the Niskanen Center used -PolicyEngine to estimate the cost and distributional impacts of Child -Tax Credit reform options (McCabe and Sargeant 2024). DC -Councilmember Zachary Parker cited PolicyEngine’s analysis when -introducing the District Child Tax Credit Amendment Act of 2023, the -first local child tax credit in US history (Council of the District of Columbia 2023). -Senator Cory Booker’s office embedded a PolicyEngine-built calculator on -his official Senate website for the Keep Your Pay Act (Office of Senator Cory -Booker 2026). In the UK, the National Institute of Economic and -Social Research (NIESR) used PolicyEngine in their UK Living Standards -Review 2025 (Mosley -et al. 2025), and the Institute of Economic Affairs has published -PolicyEngine-based analyses of employer National Insurance contributions -and 2025–2026 tax changes (Woodruff 2024, -2025).

    -

    Acknowledgements

    -

    This work was supported in the US by Arnold Ventures (Arnold Ventures -2023), NEO Philanthropy (Ghenis 2024a), the Gerald Huff -Fund for Humanity, and the National Science Foundation (NSF POSE Phase -I, Award 2518372) (National -Science Foundation 2025), and in the UK by the Nuffield -Foundation since September 2024 (Nuffield Foundation 2024). These -funders had no involvement in the design, development, or content of -this software or paper.

    -

    We acknowledge contributions from all PolicyEngine contributors, and -thank the OpenFisca community for the foundational microsimulation -framework (OpenFisca -Contributors 2024). We acknowledge the US Census Bureau for -providing access to the Current Population Survey, and the UK Data -Service and the Department for Work and Pensions for providing access to -the Family Resources Survey.

    -

    AI Usage Disclosure

    -

    Generative AI tools, specifically Claude Opus 4 by Anthropic (Anthropic 2026), were -used to assist with code refactoring. All AI-assisted outputs were -reviewed, edited, and validated by human authors, who made all core -design decisions regarding software architecture, policy modeling, and -parameter implementation. The authors remain fully responsible for the -accuracy, originality, and correctness of all submitted materials.

    -

    References

    -
    -
    -Anthropic. 2026. Claude. Released. https://www.anthropic.com/claude. -
    -
    -Arnold Ventures. 2023. Public Finance Program. https://www.arnoldventures.org/work/public-finance. -
    -
    -Bourguignon, François, and Amedeo Spadaro. 2006. “Microsimulation -as a Tool for Evaluating Redistribution Policies.” The -Journal of Economic Inequality 4: 77–106. https://doi.org/10.1007/s10888-005-9012-6. -
    -
    -Congressional Budget Office. 2018. An Overview of CBO’s -Microsimulation Tax Model. https://www.cbo.gov/system/files/2018-06/54096-taxmodel.pdf. -
    -
    -Council of the District of Columbia. 2023. District Child Tax -Credit Amendment Act of 2023. https://lims.dccouncil.gov/Legislation/B25-0190. -
    -
    -Department for Work and Pensions, Office for National Statistics, and -NatCen Social Research. 2021. Family Resources Survey, -2019-2020. UK Data Service. https://doi.org/10.5255/UKDA-SN-8802-1. -
    -
    -EUROMOD. 2026. Download. https://euromod-web.jrc.ec.europa.eu/download-euromod. -
    -
    -Federal Reserve Bank of Atlanta. 2021. Policy Rules Database. -https://github.com/Research-Division/policy-rules-database. -
    -
    -Feenberg, Daniel R., and Elisabeth Coutts. 1993. -TAXSIM: A Tool for Calculating Federal and State -Income Tax Liabilities.” National Tax Journal 46 (3): -271–80. -
    -
    -Ghenis, Max. 2024a. NEO Philanthropy Awards $200,000 -Grant to PolicyEngine.” https://policyengine.org/us/research/neo-philanthropy. -
    -
    -Ghenis, Max. 2024b. PolicyEngine and Better -Government Lab Collaboration.” https://www.policyengine.org/us/research/policyengine-better-government-lab-collaboration. -
    -
    -Ghenis, Max, and Jason DeBacker. 2024. Enhanced Current -Population Survey: Integrating IRS Public Use File -Data Using Quantile Regression Forests. https://ntanet.org/2024/07/117th-annual-conference-on-taxation-full/. -
    -
    -HM Treasury. 2024. HMT: PolicyEngine UK – -Algorithmic Transparency Recording Standard. https://www.gov.uk/algorithmic-transparency-records/hmt-modelling-policy-engine. -
    -
    -HM Treasury. 2025. Impact on Households: Distributional Analysis to -Accompany Spring Statement 2025. https://www.gov.uk/government/publications/supporting-documents-for-spring-statement-2025/impact-on-households-distributional-analysis-to-accompany-spring-statement-2025. -
    -
    -House of Lords. 2026. National Insurance Contributions (Employer -Pensions Contributions) Bill – Grand Committee. https://hansard.parliament.uk/Lords/2026-02-24/debates/A381F7D6-0A3C-48FD-8D9E-67751E25877A/NationalInsuranceContributions(EmployerPensionsContributions)Bill. -
    -
    -Institute for Research on Poverty. 2025. 2025–2026 IRP -Extramural Large Grants. https://www.irp.wisc.edu/2025-2026-irp-extramural-large-grants/. -
    -
    -Kennan, Ariel, Alessandra Garcia Guevara, and Jason Goodman. 2025. -AI-Powered Rules as Code: Experiments with Public -Benefits Policy. Beeck Center for Social Impact; Innovation, -Georgetown University. https://beeckcenter.georgetown.edu/report/ai-powered-rules-as-code-experiments-with-public-benefits-policy/. -
    -
    -Kennan, Ariel, Lisa Singh, Bianca Dammholz, Keya Sengupta, and Jason Yi. -2023. Exploring Rules Communication: Moving Beyond Static Documents -to Standardized Code for U.S. Public Benefits -Programs. Beeck Center for Social Impact; Innovation, Georgetown -University. https://beeckcenter.georgetown.edu/report/exploring-rules-communication-moving-beyond-static-documents-to-standardized-code-for-u-s-public-benefits-programs/. -
    -
    -McCabe, Joshua, and Leah Sargeant. 2024. Building a Stronger -Foundation for American Families: Options for Child -Tax Credit Reform. Niskanen Center. https://www.niskanencenter.org/building-a-stronger-foundation-for-american-families-options-for-child-tax-credit-reform/. -
    -
    -Mosley, Max, Ryan Wattam, and Carol Vincent. 2025. UK -Living Standards Review 2025. National Institute of Economic; -Social Research. https://niesr.ac.uk/publications/uk-living-standards-review-2025. -
    -
    -National Science Foundation. 2025. POSE: Phase -I: PolicyEngine – Advancing Public Policy -Analysis. https://www.nsf.gov/awardsearch/showAward?AWD_ID=2518372. -
    -
    -Nuffield Foundation. 2024. Enhancing, Localising and Democratising -Tax-Benefit Policy Analysis. https://www.nuffieldfoundation.org/project/enhancing-localising-and-democratising-tax-benefit-policy-analysis. -
    -
    -Office of Representative Morgan McGarvey. 2024. Congressman -Morgan McGarvey Introduces Young Adult Tax Credit -Act. https://mcgarvey.house.gov/media/press-releases/congressman-morgan-mcgarvey-introduces-young-adult-tax-credit-act. -
    -
    -Office of Senator Cory Booker. 2026. Booker Announces Keep -Your Pay Act. https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act. -
    -
    -OpenFisca Contributors. 2024. OpenFisca: Open Rules as -Code for Tax-Benefit Systems. Released. https://openfisca.org. -
    -
    -Orcutt, Guy H. 1957. “A New Type of Socio-Economic System.” -Review of Economics and Statistics 39 (2): 116–23. https://doi.org/10.2307/1928528. -
    -
    -Policy Simulation Library. 2026. PSL. https://pslmodels.org/. -
    -
    -PolicyEngine Contributors. 2026. policyengine. Released. https://github.com/PolicyEngine/policyengine.py. -
    -
    -Sutherland, Holly, and Francesco Figari. 2013. -EUROMOD: The European Union Tax-Benefit -Microsimulation Model.” International Journal of -Microsimulation 6 (1): 4–26. https://doi.org/10.34196/ijm.00075. -
    -
    -Tax Policy Center. 2022. Brief Description of the Tax Model. https://taxpolicycenter.org/resources/brief-description-tax-model. -
    -
    -The Budget Lab at Yale. 2024. Tax Microsimulation at the Budget -Lab. https://budgetlab.yale.edu/research/tax-microsimulation-budget-lab. -
    -
    -The Budget Lab at Yale. 2025. The Budget Lab’s Model for Tax -Depreciation. https://budgetlab.yale.edu/research/budget-labs-model-tax-depreciation. -
    -
    -Waters, Tom. 2017. TAXBEN: The IFS Tax and Benefit Microsimulation -Model. The IFS. https://ifs.org.uk/publications/taxben-ifs-tax-and-benefit-microsimulation-model. -
    -
    -Woodruff, Nikhil. 2024. Raising Employer NIC in the -Autumn Budget. Institute of Economic Affairs. https://iea.org.uk/publications/raising-employer-nic-in-the-autumn-budget/. -
    -
    -Woodruff, Nikhil. 2025. Impact of Tax Changes 2025–2026. -Institute of Economic Affairs. https://iea.org.uk/publications/impact-of-tax-changes-2025-2026/. -
    -
    -Woodruff, Nikhil, and Max Ghenis. 2024. “Enhancing Survey -Microdata with Administrative Records: A Novel Approach to -Microsimulation Dataset Construction.” https://github.com/PolicyEngine/policyengine-us-data/tree/main/paper. -
    -
    -Woodruff, Nikhil, Max Ghenis, and Anthony Volk. 2024. -PolicyEngine Core: A Microsimulation Framework. -Released. https://github.com/PolicyEngine/policyengine-core. -
    -
    -Youngman, Tom, Tim Lennox, M. Lopes Alves, et al. 2026. Agent-Based -Macroeconomics for the UK’s Seventh Carbon -Budget. https://arxiv.org/abs/2602.15607. -
    -
    - - From 12680ae2aaad1f24048618b9f7044cded60bd40b Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 13 Apr 2026 12:04:39 +0100 Subject: [PATCH 59/65] Polish paper layout: figure placement, captions, merge paragraphs - Move Figure 1 directly after its reference sentence - Add "Figure 1:" prefix to figure caption - Add Table 1 caption - Remove code formatting from policyengine in table header - Merge 3 paragraphs into 2 in Software Design - Move macroeconomic limitation into first Software Design paragraph Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 11 +++++------ paper.md | 13 ++++++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 235638b1..c963db25 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -405,11 +405,12 @@

    State of the Field

    OpenFisca (OpenFisca Contributors 2024) pioneered the open-source approach to tax-benefit microsimulation in France. Other open-source efforts include the Policy Simulation Library, a collection of policy models and data-preparation routines (Policy Simulation Library 2026), and The Budget Lab's public US tax-model codebases, including Tax-Simulator and Cost-Recovery-Simulator (The Budget Lab at Yale 2024, 2025). The PolicyEngine developers originally forked the codebase from OpenFisca and built it on the PolicyEngine Core framework (Woodruff et al. 2024).

    The country packages already support direct microsimulation analysis and one-off weighted calculations. The policyengine package provides a different layer of functionality: shared dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces that downstream dashboards and reports use. Concretely, the package provides reusable outputs such as Aggregate, ChangeAggregate, and IntraDecileImpact, together with bundled analyses such as economic_impact_analysis(). This separation lets country model packages focus on statutory rules while shared analysis methods evolve independently.

    Table 1 summarizes where policyengine sits relative to selected tools:

    +

    Table 1: Comparison of policyengine with selected tax-benefit microsimulation tools.

    - + @@ -456,14 +457,13 @@

    State of the Field

    The policyengine layer leaves reusable engine logic in PolicyEngine Core, country legislation in policyengine-us and policyengine-uk, and enhanced survey microdata in companion repositories (Woodruff et al. 2024; Woodruff and Ghenis 2024). Teams can update each layer separately, while policyengine certifies the combinations exposed to users.

    Software Design

    -

    The PolicyEngine software stack has four layers. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces that country packages share (Woodruff et al. 2024). The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. The policyengine package sits above them as the analysis layer: it defines shared simulation orchestration, structured output types, and canonical baseline-versus-reform workflows such as economic_impact_analysis(). Companion data repositories hold enhanced survey microdata derived from the Current Population Survey (CPS) (Woodruff and Ghenis 2024) and Family Resources Survey (Department for Work and Pensions et al. 2021). Figure 1 illustrates the runtime workflow: inputs flow into the Simulation layer, which produces the structured outputs.

    -

    For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in policyengine then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as enhanced_frs_2023_24, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance.

    +

    The PolicyEngine software stack has four layers. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces that country packages share (Woodruff et al. 2024). The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. The policyengine package sits above them as the analysis layer: it defines shared simulation orchestration, structured output types, and canonical baseline-versus-reform workflows such as economic_impact_analysis(). Companion data repositories hold enhanced survey microdata derived from the Current Population Survey (CPS) (Woodruff and Ghenis 2024) and Family Resources Survey (Department for Work and Pensions et al. 2021). Figure 1 illustrates the runtime workflow: inputs flow into the Simulation layer, which produces the structured outputs. The package does not include a macroeconomic model and does not capture general equilibrium effects.

    PolicyEngine architecture. A microsimulation combines three input concepts (tax-benefit rules and parameters, survey microdata, and behavioral responses) in the Simulation layer, which produces distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics. - +
    Figure 1: PolicyEngine architecture. A microsimulation combines three input concepts (tax-benefit rules and parameters, survey microdata, and behavioral responses) in the Simulation layer, which produces distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.
    -

    The policyengine package centralizes distributional methods; legislative implementation remains in the country packages.

    +

    For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in policyengine then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as enhanced_frs_2023_24, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. The policyengine package centralizes distributional methods; legislative implementation remains in the country packages.

    At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The Dynamic class represents behavioral responses such as labor supply elasticities; the country packages define the relevant parameters, and the simulation pipeline applies them after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific policyengine release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version.

    The following basic household API example computes a household's net income under baseline law and under a reform that doubles the US standard deduction for single filers:

    import datetime
    @@ -497,7 +497,6 @@ 

    Software Design

    reformed = calculate_household_impact(household, policy=reform) # Results for California: baseline net income $40,702, reform $42,634

    A UK reproduction script that runs a population-level analysis is available at examples/paper_repro_uk.py.

    -

    The policyengine package does not include an underlying macroeconomic model in its microsimulation analysis and does not capture general equilibrium effects.

    Research Impact Statement

    Government use. Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis (Woodruff 2026). HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as an algorithmic tool their Personal Tax, Welfare and Pensions team evaluates (HM Treasury 2024). The U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator using PolicyEngine's microsimulation model (Joint Economic Committee 2026).

    diff --git a/paper.md b/paper.md index 0e1fed2a..379ee7f3 100644 --- a/paper.md +++ b/paper.md @@ -48,7 +48,9 @@ The country packages already support direct microsimulation analysis and one-off Table 1 summarizes where `policyengine` sits relative to selected tools: -| Dimension | `policyengine` | TAXSIM | UKMOD | OpenFisca | +Table 1: Comparison of policyengine with selected tax-benefit microsimulation tools. + +| Dimension | policyengine | TAXSIM | UKMOD | OpenFisca | |---|---|---|---|---| | Open source | Yes | Partial | Yes | Yes | | Country coverage | US and UK | US | UK and EU member states | France, Tunisia, and other jurisdictions | @@ -60,13 +62,11 @@ The `policyengine` layer leaves reusable engine logic in PolicyEngine Core, coun # Software Design -The PolicyEngine software stack has four layers. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces that country packages share [@policyengine_core]. The `policyengine-us` and `policyengine-uk` packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. The `policyengine` package sits above them as the analysis layer: it defines shared simulation orchestration, structured output types, and canonical baseline-versus-reform workflows such as `economic_impact_analysis()`. Companion data repositories hold enhanced survey microdata derived from the Current Population Survey (CPS) [@woodruff2024enhanced_cps] and Family Resources Survey [@frs2020]. Figure 1 illustrates the runtime workflow: inputs flow into the Simulation layer, which produces the structured outputs. - -For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in `policyengine` then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as `enhanced_frs_2023_24`, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. +The PolicyEngine software stack has four layers. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces that country packages share [@policyengine_core]. The `policyengine-us` and `policyengine-uk` packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. The `policyengine` package sits above them as the analysis layer: it defines shared simulation orchestration, structured output types, and canonical baseline-versus-reform workflows such as `economic_impact_analysis()`. Companion data repositories hold enhanced survey microdata derived from the Current Population Survey (CPS) [@woodruff2024enhanced_cps] and Family Resources Survey [@frs2020]. Figure 1 illustrates the runtime workflow: inputs flow into the Simulation layer, which produces the structured outputs. The package does not include a macroeconomic model and does not capture general equilibrium effects. -![PolicyEngine architecture. A microsimulation combines three input concepts (tax-benefit rules and parameters, survey microdata, and behavioral responses) in the Simulation layer, which produces distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.](architecture.png){width="100%"} +![Figure 1: PolicyEngine architecture. A microsimulation combines three input concepts (tax-benefit rules and parameters, survey microdata, and behavioral responses) in the Simulation layer, which produces distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.](architecture.png){width="100%"} -The `policyengine` package centralizes distributional methods; legislative implementation remains in the country packages. +For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in `policyengine` then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as `enhanced_frs_2023_24`, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. The `policyengine` package centralizes distributional methods; legislative implementation remains in the country packages. At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The `Dynamic` class represents behavioral responses such as labor supply elasticities; the country packages define the relevant parameters, and the simulation pipeline applies them after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific `policyengine` release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version. @@ -107,7 +107,6 @@ reformed = calculate_household_impact(household, policy=reform) A UK reproduction script that runs a population-level analysis is available at `examples/paper_repro_uk.py`. -The `policyengine` package does not include an underlying macroeconomic model in its microsimulation analysis and does not capture general equilibrium effects. # Research Impact Statement From 3acfb70678a917a72cbd00be72a509f06b861c0f Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 13 Apr 2026 12:24:56 +0100 Subject: [PATCH 60/65] Address reviewer feedback: reduce redundancy, fix citations, trim captions - Remove Dynamic class mention (not demonstrated in paper) - Reduce ~150 words of redundant certification/reproducibility detail across Summary, Statement of Need, State of the Field, Software Design - Fix tlaib bib entry: rename key to tlaib2023, correct date to April 6, 2023 - Fix NSF POSE URL to use .jsp format - Remove redundant table intro sentence before Table 1 - Shorten Figure 1 caption - Sync all changes to paper-preview.html Co-Authored-By: Claude Opus 4.6 --- paper-preview.html | 25 ++++++++++++------------- paper.bib | 10 +++++----- paper.md | 18 ++++++++---------- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index c963db25..31be5db7 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -394,17 +394,16 @@

    Contents

    Summary

    -

    The policyengine Python package (PolicyEngine Contributors 2026) is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-us and policyengine-uk) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also treat the top-level policyengine version as a reproducibility boundary: country data repositories publish immutable dataset artifacts with build-time provenance, and policyengine certifies runtime bundles that pin the country-model version, microdata-package version, dataset artifact, and compatibility record. The package also powers an interactive web application at policyengine.org.

    +

    The policyengine Python package (PolicyEngine Contributors 2026) is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-us and policyengine-uk) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also provide version-pinned reproducibility by certifying compatible combinations of country models, microdata, and dataset artifacts. The package also powers an interactive web application at policyengine.org.

    Statement of Need

    Tax-benefit microsimulation models are standard tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers use them to estimate how policy reforms affect household incomes, poverty rates, and government budgets. In practice, however, analysts often work across separate layers: statutory rules, representative microdata, reform definitions, and distributional outputs live in different tools and interfaces. Reproducing a baseline-versus-reform workflow, or carrying the same analysis pattern from one country model to another, therefore often requires bespoke scripts and project-specific conventions. Historical replication is especially difficult when policy rules, the analysis layer, and representative microdata are versioned independently and the analyst must reconstruct which combination produced a published estimate.

    -

    The policyengine package provides an analyst layer that works across multiple country models under a consistent API. Users can supply their own microdata or use companion representative datasets, then compute the impact of current law or hypothetical reforms, including parametric changes to existing policy parameters and structural modifications to the tax-benefit system, on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. A single top-level release can identify the runtime country-model version, microdata-package version, immutable dataset artifact, and certification record used in an analysis, while the data release records the build-time model provenance for that artifact. This reduces bookkeeping for replication.

    +

    The policyengine package provides an analyst layer that works across multiple country models under a consistent API. Users can supply their own microdata or use companion representative datasets, then compute the impact of current law or hypothetical reforms, including parametric changes to existing policy parameters and structural modifications to the tax-benefit system, on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. Version-pinned releases reduce the bookkeeping needed for replication.

    State of the Field

    Tax-benefit microsimulation, which Orcutt (1957) pioneered and Bourguignon and Spadaro (2006) surveyed, underpins much of modern fiscal policy evaluation. In the US, TAXSIM (Feenberg and Coutts 1993) at the National Bureau of Economic Research provides tax calculations, while the Congressional Budget Office and Tax Policy Center maintain microsimulation tax models (Congressional Budget Office 2018; Tax Policy Center 2022). In the UK, the primary microsimulation models are UKMOD, which the Institute for Social and Economic Research (ISER) at the University of Essex maintains as part of the EUROMOD family (Sutherland and Figari 2013; EUROMOD 2026); HM Treasury's Intra-Governmental Tax and Benefit Microsimulation model (IGOTM) (HM Treasury 2025); and TAXBEN, which the Institute for Fiscal Studies maintains (Waters 2017).

    OpenFisca (OpenFisca Contributors 2024) pioneered the open-source approach to tax-benefit microsimulation in France. Other open-source efforts include the Policy Simulation Library, a collection of policy models and data-preparation routines (Policy Simulation Library 2026), and The Budget Lab's public US tax-model codebases, including Tax-Simulator and Cost-Recovery-Simulator (The Budget Lab at Yale 2024, 2025). The PolicyEngine developers originally forked the codebase from OpenFisca and built it on the PolicyEngine Core framework (Woodruff et al. 2024).

    -

    The country packages already support direct microsimulation analysis and one-off weighted calculations. The policyengine package provides a different layer of functionality: shared dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces that downstream dashboards and reports use. Concretely, the package provides reusable outputs such as Aggregate, ChangeAggregate, and IntraDecileImpact, together with bundled analyses such as economic_impact_analysis(). This separation lets country model packages focus on statutory rules while shared analysis methods evolve independently.

    -

    Table 1 summarizes where policyengine sits relative to selected tools:

    +

    The policyengine package adds shared dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces for downstream dashboards and reports. Concretely, the package provides reusable outputs such as Aggregate, ChangeAggregate, and IntraDecileImpact, together with bundled analyses such as economic_impact_analysis(). This separation lets country model packages focus on statutory rules while shared analysis methods evolve independently.

    Table 1: Comparison of policyengine with selected tax-benefit microsimulation tools.

    Dimensionpolicyenginepolicyengine TAXSIM UKMOD OpenFisca
    @@ -454,17 +453,17 @@

    State of the Field

    -

    The policyengine layer leaves reusable engine logic in PolicyEngine Core, country legislation in policyengine-us and policyengine-uk, and enhanced survey microdata in companion repositories (Woodruff et al. 2024; Woodruff and Ghenis 2024). Teams can update each layer separately, while policyengine certifies the combinations exposed to users.

    +

    Teams can update each layer independently, while policyengine certifies the combinations exposed to users.

    Software Design

    The PolicyEngine software stack has four layers. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces that country packages share (Woodruff et al. 2024). The policyengine-us and policyengine-uk packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. The policyengine package sits above them as the analysis layer: it defines shared simulation orchestration, structured output types, and canonical baseline-versus-reform workflows such as economic_impact_analysis(). Companion data repositories hold enhanced survey microdata derived from the Current Population Survey (CPS) (Woodruff and Ghenis 2024) and Family Resources Survey (Department for Work and Pensions et al. 2021). Figure 1 illustrates the runtime workflow: inputs flow into the Simulation layer, which produces the structured outputs. The package does not include a macroeconomic model and does not capture general equilibrium effects.

    -
    Figure 1: PolicyEngine architecture. A microsimulation combines three input concepts (tax-benefit rules and parameters, survey microdata, and behavioral responses) in the Simulation layer, which produces distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.
    +alt="PolicyEngine runtime architecture. Inputs (rules, microdata, and behavioral responses) flow through the Simulation layer to produce structured outputs." /> +
    Figure 1: PolicyEngine runtime architecture. Inputs (rules, microdata, and behavioral responses) flow through the Simulation layer to produce structured outputs.
    -

    For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in policyengine then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as enhanced_frs_2023_24, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. The policyengine package centralizes distributional methods; legislative implementation remains in the country packages.

    -

    At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The Dynamic class represents behavioral responses such as labor supply elasticities; the country packages define the relevant parameters, and the simulation pipeline applies them after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific policyengine release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version.

    +

    For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in policyengine then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as enhanced_frs_2023_24, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance.

    +

    At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The simulation pipeline also supports behavioral responses such as labor supply elasticities, which the country packages define and apply after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific policyengine release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version.

    The following basic household API example computes a household's net income under baseline law and under a reform that doubles the US standard deduction for single filers:

    import datetime
     from policyengine.core import Parameter, ParameterValue, Policy
    @@ -500,7 +499,7 @@ 

    Software Design

    Research Impact Statement

    Government use. Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis (Woodruff 2026). HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as an algorithmic tool their Personal Tax, Welfare and Pensions team evaluates (HM Treasury 2024). The U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator using PolicyEngine's microsimulation model (Joint Economic Committee 2026).

    -

    Congressional and parliamentary citation. In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act (Office of Representative Morgan McGarvey 2024), the End Child Poverty Act (Office of Representative Rashida Tlaib 2024), and the Keep Your Pay Act (Office of Senator Cory Booker 2026). In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on the National Insurance Contributions (Employer Pensions Contributions) Bill (House of Lords 2026).

    +

    Congressional and parliamentary citation. In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act (Office of Representative Morgan McGarvey 2024), the End Child Poverty Act (Office of Representative Rashida Tlaib 2023), and the Keep Your Pay Act (Office of Senator Cory Booker 2026). In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on the National Insurance Contributions (Employer Pensions Contributions) Bill (House of Lords 2026).

    Institutional use. Under a memorandum of understanding with the Federal Reserve Bank of Atlanta, PolicyEngine runs three-way comparisons of its calculations against TAXSIM and the Atlanta Fed's Policy Rules Database (Federal Reserve Bank of Atlanta 2021). Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced CPS methodology at the 117th Annual Conference on Taxation of the National Tax Association (Ghenis and DeBacker 2024).

    Academic research. The Better Government Lab (Georgetown McCourt School / University of Michigan Ford School) collaborated with PolicyEngine on benefits eligibility research (Ghenis 2024b). Matt Unrath (University of Southern California) uses PolicyEngine in a study of effective marginal and average tax rates facing American families, which the US Department of Health and Human Services funds through the Institute for Research on Poverty (Institute for Research on Poverty 2025). The Beeck Center at Georgetown University featured PolicyEngine in research on rules-as-code for US public benefits (Kennan et al. 2023, 2025). Youngman et al. (2026), at the Institute for New Economic Thinking, Oxford, cite PolicyEngine UK's microdata methodology in an agent-based macroeconomic model for the UK's Seventh Carbon Budget.

    Policy research. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options (McCabe and Sargeant 2024). DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023 (Council of the District of Columbia 2023). In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025 (Mosley et al. 2025), and the Institute of Economic Affairs published PolicyEngine-based analyses of employer National Insurance contributions and 2025–2026 tax changes (Woodruff 2024, 2025).

    @@ -578,7 +577,7 @@

    References

    Mosley, Max, Ryan Wattam, and Carol Vincent. 2025. UK Living Standards Review 2025. National Institute of Economic and Social Research. https://niesr.ac.uk/publications/uk-living-standards-review-2025.
    -National Science Foundation. 2025. POSE: Phase I: PolicyEngine – Advancing Public Policy Analysis. https://www.nsf.gov/awardsearch/showAward?AWD_ID=2518372. +National Science Foundation. 2025. POSE: Phase I: PolicyEngine – Advancing Public Policy Analysis. https://www.nsf.gov/awardsearch/showAward.jsp?AWD_ID=2518372.
    Nuffield Foundation. 2024. Enhancing, Localising and Democratising Tax-Benefit Policy Analysis. https://www.nuffieldfoundation.org/project/enhancing-localising-and-democratising-tax-benefit-policy-analysis. @@ -586,8 +585,8 @@

    References

    Office of Representative Morgan McGarvey. 2024. Congressman Morgan McGarvey Introduces Young Adult Tax Credit Act. https://mcgarvey.house.gov/media/press-releases/congressman-morgan-mcgarvey-introduces-young-adult-tax-credit-act.
    -
    -Office of Representative Rashida Tlaib. 2024. Tlaib Re-Introduces the End Child Poverty Act to Cut Child Poverty by Nearly Two-Thirds. https://tlaib.house.gov/posts/tlaib-re-introduces-the-end-child-poverty-act-to-cut-child-poverty-by-nearly-two-thirds. +
    +Office of Representative Rashida Tlaib. 2023. Tlaib Re-Introduces the End Child Poverty Act to Cut Child Poverty by Nearly Two-Thirds. https://tlaib.house.gov/posts/tlaib-re-introduces-the-end-child-poverty-act-to-cut-child-poverty-by-nearly-two-thirds.
    Office of Senator Cory Booker. 2026. Booker Announces Keep Your Pay Act. https://www.booker.senate.gov/news/press/booker-announces-keep-your-pay-act. diff --git a/paper.bib b/paper.bib index d443cc6f..f92b7df8 100644 --- a/paper.bib +++ b/paper.bib @@ -301,7 +301,7 @@ @misc{nsf_pose author={{National Science Foundation}}, year={2025}, note={Award 2518372. PI: Max Ghenis, PSL Foundation. \$299,974}, - url={https://www.nsf.gov/awardsearch/showAward?AWD_ID=2518372} + url={https://www.nsf.gov/awardsearch/showAward.jsp?AWD_ID=2518372} } @online{neo_philanthropy, @@ -327,12 +327,12 @@ @misc{jec2026immigration url={https://www.jec.senate.gov/public/index.cfm/republicans/2026/3/immigration-fiscal-impact-calculator} } -@misc{tlaib2024endchildpoverty, +@misc{tlaib2023endchildpoverty, title={Tlaib Re-Introduces the {End Child Poverty Act} to Cut Child Poverty by Nearly Two-Thirds}, author={{Office of Representative Rashida Tlaib}}, - year={2024}, - month={1}, - day={30}, + year={2023}, + month={4}, + day={6}, note={Press release citing PolicyEngine analysis}, url={https://tlaib.house.gov/posts/tlaib-re-introduces-the-end-child-poverty-act-to-cut-child-poverty-by-nearly-two-thirds} } diff --git a/paper.md b/paper.md index 379ee7f3..8a3e021b 100644 --- a/paper.md +++ b/paper.md @@ -30,13 +30,13 @@ bibliography: paper.bib # Summary -The `policyengine` Python package [@policyengine_py] is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-us` and `policyengine-uk`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also treat the top-level `policyengine` version as a reproducibility boundary: country data repositories publish immutable dataset artifacts with build-time provenance, and `policyengine` certifies runtime bundles that pin the country-model version, microdata-package version, dataset artifact, and compatibility record. The package also powers an interactive web application at [policyengine.org](https://policyengine.org). +The `policyengine` Python package [@policyengine_py] is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-us` and `policyengine-uk`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also provide version-pinned reproducibility by certifying compatible combinations of country models, microdata, and dataset artifacts. The package also powers an interactive web application at [policyengine.org](https://policyengine.org). # Statement of Need Tax-benefit microsimulation models are standard tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers use them to estimate how policy reforms affect household incomes, poverty rates, and government budgets. In practice, however, analysts often work across separate layers: statutory rules, representative microdata, reform definitions, and distributional outputs live in different tools and interfaces. Reproducing a baseline-versus-reform workflow, or carrying the same analysis pattern from one country model to another, therefore often requires bespoke scripts and project-specific conventions. Historical replication is especially difficult when policy rules, the analysis layer, and representative microdata are versioned independently and the analyst must reconstruct which combination produced a published estimate. -The `policyengine` package provides an analyst layer that works across multiple country models under a consistent API. Users can supply their own microdata or use companion representative datasets, then compute the impact of current law or hypothetical reforms, including parametric changes to existing policy parameters and structural modifications to the tax-benefit system, on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. A single top-level release can identify the runtime country-model version, microdata-package version, immutable dataset artifact, and certification record used in an analysis, while the data release records the build-time model provenance for that artifact. This reduces bookkeeping for replication. +The `policyengine` package provides an analyst layer that works across multiple country models under a consistent API. Users can supply their own microdata or use companion representative datasets, then compute the impact of current law or hypothetical reforms, including parametric changes to existing policy parameters and structural modifications to the tax-benefit system, on any household or a national population. The Simulation class supports individual household analysis, while population-level aggregate analysis uses representative survey datasets with calibrated weights. Version-pinned releases reduce the bookkeeping needed for replication. # State of the Field @@ -44,9 +44,7 @@ Tax-benefit microsimulation, which Orcutt [-@orcutt1957] pioneered and Bourguign OpenFisca [@openfisca] pioneered the open-source approach to tax-benefit microsimulation in France. Other open-source efforts include the Policy Simulation Library, a collection of policy models and data-preparation routines [@psl2026], and The Budget Lab's public US tax-model codebases, including Tax-Simulator and Cost-Recovery-Simulator [@budgetlab_taxsim_2024; @budgetlab_costrecovery_2025]. The PolicyEngine developers originally forked the codebase from OpenFisca and built it on the PolicyEngine Core framework [@policyengine_core]. -The country packages already support direct microsimulation analysis and one-off weighted calculations. The `policyengine` package provides a different layer of functionality: shared dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces that downstream dashboards and reports use. Concretely, the package provides reusable outputs such as `Aggregate`, `ChangeAggregate`, and `IntraDecileImpact`, together with bundled analyses such as `economic_impact_analysis()`. This separation lets country model packages focus on statutory rules while shared analysis methods evolve independently. - -Table 1 summarizes where `policyengine` sits relative to selected tools: +The `policyengine` package adds shared dataset management, a stable baseline-versus-reform pattern, structured output types for distributional and regional analysis, and interfaces for downstream dashboards and reports. Concretely, the package provides reusable outputs such as `Aggregate`, `ChangeAggregate`, and `IntraDecileImpact`, together with bundled analyses such as `economic_impact_analysis()`. This separation lets country model packages focus on statutory rules while shared analysis methods evolve independently. Table 1: Comparison of policyengine with selected tax-benefit microsimulation tools. @@ -58,17 +56,17 @@ Table 1: Comparison of policyengine with selected tax-benefit microsimulation to | Python package (pip install) | Yes | No | Yes (connector) | Yes | | Shared reform and output API across countries | Yes | No | No | Shared core, country-specific parameters | -The `policyengine` layer leaves reusable engine logic in PolicyEngine Core, country legislation in `policyengine-us` and `policyengine-uk`, and enhanced survey microdata in companion repositories [@policyengine_core; @woodruff2024enhanced_cps]. Teams can update each layer separately, while `policyengine` certifies the combinations exposed to users. +Teams can update each layer independently, while `policyengine` certifies the combinations exposed to users. # Software Design The PolicyEngine software stack has four layers. PolicyEngine Core provides reusable simulation abstractions, versioned parameters, and dataset interfaces that country packages share [@policyengine_core]. The `policyengine-us` and `policyengine-uk` packages contain statutory logic, variables, and entity structures specific to each tax-benefit system. The `policyengine` package sits above them as the analysis layer: it defines shared simulation orchestration, structured output types, and canonical baseline-versus-reform workflows such as `economic_impact_analysis()`. Companion data repositories hold enhanced survey microdata derived from the Current Population Survey (CPS) [@woodruff2024enhanced_cps] and Family Resources Survey [@frs2020]. Figure 1 illustrates the runtime workflow: inputs flow into the Simulation layer, which produces the structured outputs. The package does not include a macroeconomic model and does not capture general equilibrium effects. -![Figure 1: PolicyEngine architecture. A microsimulation combines three input concepts (tax-benefit rules and parameters, survey microdata, and behavioral responses) in the Simulation layer, which produces distributional impacts, fiscal impacts, regional breakdowns, poverty rates, and inequality metrics.](architecture.png){width="100%"} +![Figure 1: PolicyEngine runtime architecture. Inputs (rules, microdata, and behavioral responses) flow through the Simulation layer to produce structured outputs.](architecture.png){width="100%"} -For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in `policyengine` then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as `enhanced_frs_2023_24`, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. The `policyengine` package centralizes distributional methods; legislative implementation remains in the country packages. +For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in `policyengine` then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as `enhanced_frs_2023_24`, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. -At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The `Dynamic` class represents behavioral responses such as labor supply elasticities; the country packages define the relevant parameters, and the simulation pipeline applies them after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific `policyengine` release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version. +At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The simulation pipeline also supports behavioral responses such as labor supply elasticities, which the country packages define and apply after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific `policyengine` release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version. The following basic household API example computes a household's net income under baseline law and under a reform that doubles the US standard deduction for single filers: @@ -112,7 +110,7 @@ A UK reproduction script that runs a population-level analysis is available at ` **Government use.** Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis [@no10fellowship2026]. HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as an algorithmic tool their Personal Tax, Welfare and Pensions team evaluates [@hmt2024atrs]. The U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator using PolicyEngine's microsimulation model [@jec2026immigration]. -**Congressional and parliamentary citation.** In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act [@mcgarvey2024yatc], the End Child Poverty Act [@tlaib2024endchildpoverty], and the Keep Your Pay Act [@pe_keepyourpay]. In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on the National Insurance Contributions (Employer Pensions Contributions) Bill [@hansard2026nic]. +**Congressional and parliamentary citation.** In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act [@mcgarvey2024yatc], the End Child Poverty Act [@tlaib2023endchildpoverty], and the Keep Your Pay Act [@pe_keepyourpay]. In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on the National Insurance Contributions (Employer Pensions Contributions) Bill [@hansard2026nic]. **Institutional use.** Under a memorandum of understanding with the Federal Reserve Bank of Atlanta, PolicyEngine runs three-way comparisons of its calculations against TAXSIM and the Atlanta Fed's Policy Rules Database [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced CPS methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. From 626edfc2f316ba272ea09f4909c6508e710aa2f7 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 13 Apr 2026 19:13:29 -0400 Subject: [PATCH 61/65] Document TRACE provenance in paper --- paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper.md b/paper.md index 8a3e021b..40a7848f 100644 --- a/paper.md +++ b/paper.md @@ -30,7 +30,7 @@ bibliography: paper.bib # Summary -The `policyengine` Python package [@policyengine_py] is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-us` and `policyengine-uk`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also provide version-pinned reproducibility by certifying compatible combinations of country models, microdata, and dataset artifacts. The package also powers an interactive web application at [policyengine.org](https://policyengine.org). +The `policyengine` Python package [@policyengine_py] is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-us` and `policyengine-uk`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also treat the top-level `policyengine` version as a reproducibility boundary: country data repositories publish immutable dataset artifacts with build-time provenance, and `policyengine` certifies runtime bundles that pin the country-model version, microdata-package version, dataset artifact, and compatibility record. These internal records can also be exported as TRACE-compliant Transparent Research Object declarations, giving a standards-based provenance layer for external sharing and audit. The package also powers an interactive web application at [policyengine.org](https://policyengine.org). # Statement of Need @@ -56,7 +56,7 @@ Table 1: Comparison of policyengine with selected tax-benefit microsimulation to | Python package (pip install) | Yes | No | Yes (connector) | Yes | | Shared reform and output API across countries | Yes | No | No | Shared core, country-specific parameters | -Teams can update each layer independently, while `policyengine` certifies the combinations exposed to users. +Each layer can evolve separately, while `policyengine` certifies the combinations exposed to users. # Software Design @@ -64,7 +64,7 @@ The PolicyEngine software stack has four layers. PolicyEngine Core provides reus ![Figure 1: PolicyEngine runtime architecture. Inputs (rules, microdata, and behavioral responses) flow through the Simulation layer to produce structured outputs.](architecture.png){width="100%"} -For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in `policyengine` then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as `enhanced_frs_2023_24`, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. +For reproducibility, the top-level package now acts as a certification boundary across these layers. Country data repositories build immutable microdata artifacts and publish release manifests with checksums and the country-model version used during data construction. Bundled country manifests in `policyengine` then certify the runtime bundle: the runtime country-model version, the microdata-package release, the dataset artifact, and the compatibility basis linking that runtime model to the build-time data provenance. Analysts can request a dataset such as `enhanced_frs_2023_24`, while the runtime resolves it to a specific versioned artifact and records both runtime and build-time provenance. The same certification record can be emitted as a TRACE Transparent Research Object declaration, so the internal bundle and data manifests remain the operational source of truth while a standardized signed provenance document is available for external exchange. At runtime, a simulation combines a country model version, household microdata, and optional reform or behavioral-response inputs. The simulation pipeline also supports behavioral responses such as labor supply elasticities, which the country packages define and apply after the static policy reform. The analysis layer then produces reusable outputs for decile changes, program statistics, poverty, inequality, and regional impacts. Because the runtime exposes the resolved certified bundle and compatibility basis, results can be traced to a specific `policyengine` release, runtime country-model release, microdata release, versioned dataset artifact, and build-time country-model version. From d28f343d2cbcb397205ac52c0439f413a5b0a8d4 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 16 Apr 2026 11:20:43 +0100 Subject: [PATCH 62/65] Update JOSS citation metadata to 3.4.4 --- CITATION.cff | 4 ++-- paper.bib | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 8a1181f8..254f35f3 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,8 +2,8 @@ cff-version: 1.2.0 message: "If you use this software, please cite it as below." type: software title: policyengine -version: 3.4.0 -date-released: "2026-04-09" +version: 3.4.4 +date-released: "2026-04-13" url: "https://github.com/PolicyEngine/policyengine.py" abstract: "An open-source Python package that provides a common analysis layer for tax-benefit microsimulation across the US and the UK." license: AGPL-3.0 diff --git a/paper.bib b/paper.bib index f92b7df8..541f2ed6 100644 --- a/paper.bib +++ b/paper.bib @@ -55,7 +55,7 @@ @software{policyengine_core @software{policyengine_py, title={{policyengine}}, author={{PolicyEngine Contributors}}, - version={3.4.0}, + version={3.4.4}, url={https://github.com/PolicyEngine/policyengine.py}, year={2026} } From 165ed7dd65db122af69cd210c9d99aa80b9df18e Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 16 Apr 2026 11:21:20 +0100 Subject: [PATCH 63/65] Update JOSS paper date --- paper-preview.html | 2 +- paper.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 31be5db7..73f26092 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -364,7 +364,7 @@

    policyengine: An Analyst Layer for Tax-Benefit Microsimu Pavel Makarchuk1

    1 PolicyEngine, Washington, DC, United States
    - +
    Python microsimulation diff --git a/paper.md b/paper.md index 40a7848f..69d5fb22 100644 --- a/paper.md +++ b/paper.md @@ -24,7 +24,7 @@ authors: affiliations: - name: PolicyEngine, Washington, DC, United States index: '1' -date: 13 April 2026 +date: 16 April 2026 bibliography: paper.bib --- From 463b328f180be5a37754d797b42dd4bd96a197bc Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 16 Apr 2026 11:48:06 +0100 Subject: [PATCH 64/65] Tighten JOSS paper summary and impact section --- paper-preview.html | 12 +++++------- paper.md | 14 +++++--------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index 73f26092..a5e61d3b 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -394,7 +394,7 @@

    Contents

    Summary

    -

    The policyengine Python package (PolicyEngine Contributors 2026) is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (policyengine-us and policyengine-uk) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also provide version-pinned reproducibility by certifying compatible combinations of country models, microdata, and dataset artifacts. The package also powers an interactive web application at policyengine.org.

    +

    The policyengine Python package (PolicyEngine Contributors 2026) is open-source software for analyzing how tax and benefit policies affect household incomes and government budgets in the US and UK. It gives analysts a common workflow for running simulations on representative microdata or custom households and for comparing current law with proposed reforms. Country-specific rules live in dedicated packages (policyengine-us and policyengine-uk), while policyengine provides shared tools for datasets, reforms, outputs, and reproducible release bundles. The package also powers the interactive web application at policyengine.org.

    Statement of Need

    Tax-benefit microsimulation models are standard tools for evaluating the distributional impacts of fiscal policy. Governments, think tanks, and researchers use them to estimate how policy reforms affect household incomes, poverty rates, and government budgets. In practice, however, analysts often work across separate layers: statutory rules, representative microdata, reform definitions, and distributional outputs live in different tools and interfaces. Reproducing a baseline-versus-reform workflow, or carrying the same analysis pattern from one country model to another, therefore often requires bespoke scripts and project-specific conventions. Historical replication is especially difficult when policy rules, the analysis layer, and representative microdata are versioned independently and the analyst must reconstruct which combination produced a published estimate.

    @@ -498,14 +498,12 @@

    Software Design

    A UK reproduction script that runs a population-level analysis is available at examples/paper_repro_uk.py.

    Research Impact Statement

    -

    Government use. Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis (Woodruff 2026). HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as an algorithmic tool their Personal Tax, Welfare and Pensions team evaluates (HM Treasury 2024). The U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator using PolicyEngine's microsimulation model (Joint Economic Committee 2026).

    -

    Congressional and parliamentary citation. In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act (Office of Representative Morgan McGarvey 2024), the End Child Poverty Act (Office of Representative Rashida Tlaib 2023), and the Keep Your Pay Act (Office of Senator Cory Booker 2026). In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on the National Insurance Contributions (Employer Pensions Contributions) Bill (House of Lords 2026).

    -

    Institutional use. Under a memorandum of understanding with the Federal Reserve Bank of Atlanta, PolicyEngine runs three-way comparisons of its calculations against TAXSIM and the Atlanta Fed's Policy Rules Database (Federal Reserve Bank of Atlanta 2021). Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced CPS methodology at the 117th Annual Conference on Taxation of the National Tax Association (Ghenis and DeBacker 2024).

    -

    Academic research. The Better Government Lab (Georgetown McCourt School / University of Michigan Ford School) collaborated with PolicyEngine on benefits eligibility research (Ghenis 2024b). Matt Unrath (University of Southern California) uses PolicyEngine in a study of effective marginal and average tax rates facing American families, which the US Department of Health and Human Services funds through the Institute for Research on Poverty (Institute for Research on Poverty 2025). The Beeck Center at Georgetown University featured PolicyEngine in research on rules-as-code for US public benefits (Kennan et al. 2023, 2025). Youngman et al. (2026), at the Institute for New Economic Thinking, Oxford, cite PolicyEngine UK's microdata methodology in an agent-based macroeconomic model for the UK's Seventh Carbon Budget.

    -

    Policy research. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options (McCabe and Sargeant 2024). DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023 (Council of the District of Columbia 2023). In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025 (Mosley et al. 2025), and the Institute of Economic Affairs published PolicyEngine-based analyses of employer National Insurance contributions and 2025–2026 tax changes (Woodruff 2024, 2025).

    +

    Government and legislative use. Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis (Woodruff 2026). HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as a tool their Personal Tax, Welfare and Pensions team evaluates (HM Treasury 2024), and the U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator on top of PolicyEngine's microsimulation model (Joint Economic Committee 2026). In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act, the End Child Poverty Act, and the Keep Your Pay Act (Office of Representative Morgan McGarvey 2024; Office of Representative Rashida Tlaib 2023; Office of Senator Cory Booker 2026). In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on employer pension contributions (House of Lords 2026).

    +

    Institutional and academic use. Under a memorandum of understanding with the Federal Reserve Bank of Atlanta, PolicyEngine runs three-way comparisons against TAXSIM and the Atlanta Fed's Policy Rules Database (Federal Reserve Bank of Atlanta 2021). Co-author Max Ghenis and Jason DeBacker presented the Enhanced CPS methodology at the 117th Annual Conference on Taxation of the National Tax Association (Ghenis and DeBacker 2024). PolicyEngine has also been used or discussed in work by the Better Government Lab, the Beeck Center at Georgetown University, Matt Unrath at the University of Southern California, and Youngman et al. at the Institute for New Economic Thinking, Oxford (Ghenis 2024b; Kennan et al. 2023, 2025; Institute for Research on Poverty 2025; Youngman et al. 2026).

    +

    Policy research use. In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, and DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023 (McCabe and Sargeant 2024; Council of the District of Columbia 2023). In the UK, the National Institute of Economic and Social Research used PolicyEngine in their UK Living Standards Review 2025, and the Institute of Economic Affairs published PolicyEngine-based analyses of employer National Insurance contributions and 2025–2026 tax changes (Mosley et al. 2025; Woodruff 2024, 2025).

    Acknowledgements

    -

    Arnold Ventures (Arnold Ventures 2023), NEO Philanthropy (Ghenis 2024a), the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) (National Science Foundation 2025) funded this work in the US. The Nuffield Foundation has funded the UK work since September 2024 (Nuffield Foundation 2024). These funders had no involvement in the design, development, or content of this software or paper.

    +

    Arnold Ventures (Arnold Ventures 2023), NEO Philanthropy (Ghenis 2024a), the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) (National Science Foundation 2025) funded this work in the US. The Nuffield Foundation has funded the UK work since September 2024 (Nuffield Foundation 2024). These funders had no involvement in the design, development, or content of this software or paper. All authors are employed by PolicyEngine and may benefit reputationally from the software's adoption; this relationship is disclosed here as a potential conflict of interest.

    We thank all PolicyEngine contributors and the OpenFisca community for the microsimulation framework from which PolicyEngine was forked (OpenFisca Contributors 2024). We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey.

    AI Usage Disclosure

    diff --git a/paper.md b/paper.md index 69d5fb22..a73aff37 100644 --- a/paper.md +++ b/paper.md @@ -30,7 +30,7 @@ bibliography: paper.bib # Summary -The `policyengine` Python package [@policyengine_py] is an open-source analysis layer for tax-benefit microsimulation. It provides a common interface for running policy simulations and analyzing distributional impacts across the US and UK. It delegates country-specific tax-benefit calculations to dedicated country packages (`policyengine-us` and `policyengine-uk`) while providing shared abstractions for simulations, datasets, parametric reforms, and output analysis. Recent releases also treat the top-level `policyengine` version as a reproducibility boundary: country data repositories publish immutable dataset artifacts with build-time provenance, and `policyengine` certifies runtime bundles that pin the country-model version, microdata-package version, dataset artifact, and compatibility record. These internal records can also be exported as TRACE-compliant Transparent Research Object declarations, giving a standards-based provenance layer for external sharing and audit. The package also powers an interactive web application at [policyengine.org](https://policyengine.org). +The `policyengine` Python package [@policyengine_py] is open-source software for analyzing how tax and benefit policies affect household incomes and government budgets in the US and UK. It gives analysts a common workflow for running simulations on representative microdata or custom households and for comparing current law with proposed reforms. Country-specific rules live in dedicated packages (`policyengine-us` and `policyengine-uk`), while `policyengine` provides shared tools for datasets, reforms, outputs, and reproducible release bundles. The package also powers the interactive web application at [policyengine.org](https://policyengine.org). # Statement of Need @@ -108,19 +108,15 @@ A UK reproduction script that runs a population-level analysis is available at ` # Research Impact Statement -**Government use.** Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis [@no10fellowship2026]. HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as an algorithmic tool their Personal Tax, Welfare and Pensions team evaluates [@hmt2024atrs]. The U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator using PolicyEngine's microsimulation model [@jec2026immigration]. +**Government and legislative use.** Co-author Nikhil Woodruff served as an Innovation Fellow with the 10DS data science team at 10 Downing Street, adapting PolicyEngine for government policy analysis [@no10fellowship2026]. HM Treasury registered PolicyEngine in the UK Algorithmic Transparency Recording Standard as a tool their Personal Tax, Welfare and Pensions team evaluates [@hmt2024atrs], and the U.S. Congress Joint Economic Committee built an immigration fiscal impact calculator on top of PolicyEngine's microsimulation model [@jec2026immigration]. In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act, the End Child Poverty Act, and the Keep Your Pay Act [@mcgarvey2024yatc; @tlaib2023endchildpoverty; @pe_keepyourpay]. In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on employer pension contributions [@hansard2026nic]. -**Congressional and parliamentary citation.** In the US, members of Congress cited PolicyEngine analyses when introducing the Young Adult Tax Credit Act [@mcgarvey2024yatc], the End Child Poverty Act [@tlaib2023endchildpoverty], and the Keep Your Pay Act [@pe_keepyourpay]. In the UK, Baroness Altmann cited Commons Library research using PolicyEngine during House of Lords debate on the National Insurance Contributions (Employer Pensions Contributions) Bill [@hansard2026nic]. +**Institutional and academic use.** Under a memorandum of understanding with the Federal Reserve Bank of Atlanta, PolicyEngine runs three-way comparisons against TAXSIM and the Atlanta Fed's Policy Rules Database [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker presented the Enhanced CPS methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. PolicyEngine has also been used or discussed in work by the Better Government Lab, the Beeck Center at Georgetown University, Matt Unrath at the University of Southern California, and Youngman et al. at the Institute for New Economic Thinking, Oxford [@pe_bgl; @beeck2023rac; @beeck2025ai; @pe_usc; -@youngman2026carbon]. -**Institutional use.** Under a memorandum of understanding with the Federal Reserve Bank of Atlanta, PolicyEngine runs three-way comparisons of its calculations against TAXSIM and the Atlanta Fed's Policy Rules Database [@atlanta_fed_prd]. Co-author Max Ghenis and Jason DeBacker (University of South Carolina) presented the Enhanced CPS methodology at the 117th Annual Conference on Taxation of the National Tax Association [@ghenis2024nta]. - -**Academic research.** The Better Government Lab (Georgetown McCourt School / University of Michigan Ford School) collaborated with PolicyEngine on benefits eligibility research [@pe_bgl]. Matt Unrath (University of Southern California) uses PolicyEngine in a study of effective marginal and average tax rates facing American families, which the US Department of Health and Human Services funds through the Institute for Research on Poverty [@pe_usc]. The Beeck Center at Georgetown University featured PolicyEngine in research on rules-as-code for US public benefits [@beeck2023rac; @beeck2025ai]. Youngman et al. [-@youngman2026carbon], at the Institute for New Economic Thinking, Oxford, cite PolicyEngine UK's microdata methodology in an agent-based macroeconomic model for the UK's Seventh Carbon Budget. - -**Policy research.** In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options [@mccabe2024ctc]. DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023 [@pe_dctc]. In the UK, the National Institute of Economic and Social Research (NIESR) used PolicyEngine in their UK Living Standards Review 2025 [@niesr2025living], and the Institute of Economic Affairs published PolicyEngine-based analyses of employer National Insurance contributions and 2025–2026 tax changes [@woodruff2024nic; @woodruff2025tax]. +**Policy research use.** In the US, the Niskanen Center used PolicyEngine to estimate the cost and distributional impacts of Child Tax Credit reform options, and DC Councilmember Zachary Parker cited PolicyEngine's analysis when introducing the District Child Tax Credit Amendment Act of 2023 [@mccabe2024ctc; @pe_dctc]. In the UK, the National Institute of Economic and Social Research used PolicyEngine in their UK Living Standards Review 2025, and the Institute of Economic Affairs published PolicyEngine-based analyses of employer National Insurance contributions and 2025--2026 tax changes [@niesr2025living; @woodruff2024nic; @woodruff2025tax]. # Acknowledgements -Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) [@nsf_pose] funded this work in the US. The Nuffield Foundation has funded the UK work since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. +Arnold Ventures [@arnold_ventures], NEO Philanthropy [@neo_philanthropy], the Gerald Huff Fund for Humanity, and the National Science Foundation (NSF POSE Phase I, Award 2518372) [@nsf_pose] funded this work in the US. The Nuffield Foundation has funded the UK work since September 2024 [@nuffield2024grant]. These funders had no involvement in the design, development, or content of this software or paper. All authors are employed by PolicyEngine and may benefit reputationally from the software's adoption; this relationship is disclosed here as a potential conflict of interest. We thank all PolicyEngine contributors and the OpenFisca community for the microsimulation framework from which PolicyEngine was forked [@openfisca]. We acknowledge the US Census Bureau for providing access to the Current Population Survey, and the UK Data Service and the Department for Work and Pensions for providing access to the Family Resources Survey. From 66769125f477e7b92c55bf4f61c4a820b7841acd Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Fri, 17 Apr 2026 11:27:34 +0100 Subject: [PATCH 65/65] Revise JOSS paper for review - Retitle to "A Microsimulation Tool for Tax-Benefit Policy Analysis" - Set Vahid Ahmadi as first (corresponding) author - Add explicit build-vs-contribute framing and design trade-offs for JOSS criteria - Correct API description: calculate_household_impact vs Simulation class - Fix comparison table: UKMOD coverage (UK only), OpenFisca coverage (multi-jurisdiction) - Rename table row to "Python-native implementation" - Normalize package names in backticks (policyengine-core) - Unify to US English; add TRACE TROV citation; bump date to 17 April 2026 Co-Authored-By: Claude Opus 4.7 (1M context) --- paper-preview.html | 517 ++++++++++++++++++++++++++++++++++----------- paper.bib | 13 +- paper.md | 51 +++-- 3 files changed, 429 insertions(+), 152 deletions(-) diff --git a/paper-preview.html b/paper-preview.html index a5e61d3b..7b44931b 100644 --- a/paper-preview.html +++ b/paper-preview.html @@ -3,7 +3,7 @@ - policyengine: An Analyst Layer for Tax-Benefit Microsimulation + policyengine: A Microsimulation Tool for Tax-Benefit Policy Analysis