From a786085b37e485cae92e07ca7cf5ce15f979c2ae Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Mon, 23 Mar 2026 12:02:12 +0000 Subject: [PATCH 01/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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/37] 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.