PolicyEngine logo
menu
Research
About
Donate
Learn ▼

From OpenFisca to PolicyEngine

OpenFisca has catapulted our progress, and now we've forked it into our own microsimulation framework.

By nikhil woodruff

10 November 2022

3 min read

From OpenFisca to PolicyEngine

Contents

Our PolicyEngine journey traces to 2020, when Max Ghenis and I sought to build a microsimulation model of the UK tax and benefit system. Matt Jensen, then the director of the American Enterprise Institute’s Open Source Policy Center, pointed us to OpenFisca, a framework developed initially by the French administration and since then grown and maintained by contributors from several governments, research centres, private companies and individuals. We were quickly won over by OpenFisca’s modernness, flexibility and excellent documentation.

As we started building the UK system, and then the US system, our appreciation for the framework grew. An intuitive model of storing parameters over time made it easy to handle monthly benefits and yearly taxes. Strong modularisation patterns meant that diving into any one area of the tax-benefit system didn’t need any knowledge about the implementation for other systems. It was no wonder 10 other countries made the same choice we did. We even adopted their Slack workspace for PolicyEngine communications.

Over time, we needed additional features, mostly due to (a) our web app, and (b) the unprecedented complexity of the US tax and benefit system. For example, US taxpayers can choose to itemise their deductions or not, mostly choosing the option that minimises their tax liability, but there’s no straightforward way to model this in the original framework without duplicating code. And parameters often rise automatically with inflation, or duplicate across 50 states: manual adjustments can enable this, but standardised interfaces improve maintainability.

OpenFisca understandably prioritised the stability of the framework for their existing users, which includes prominent web apps for policymakers in France and other countries. As a result, we pushed many of these features into our own software — especially our openfisca-tools package. As our needs grew, openfisca-tools grew with it, and this sharding started to slow our development.

To ensure we can most responsively meet our users’ needs, we decided last month to fork openfisca-core into our own microsimulation framework that unifies it with our openfisca-tools package. We completed that transition last week. We now use policyengine-core, which our country models (policyengine-us and policyengine-uk) now use instead of openfisca-core.

We’re extraordinarily grateful to the OpenFisca team, with whom we will continue to work closely. As we develop policyengine-core, we will contribute backwards-compatible changes to openfisca-core wherever possible, and we’ll watch their repo for opportunities to improve our software. We view this as a success of the open source paradigm.

This change doesn’t affect anything on our web app. Users of our US and UK Python packages will notice that they’ve been renamed from openfisca-us and openfisca-uk to policyengine-us and policyengine-uk, respectively, in GitHub and PyPI. We’ve built our own documentation for policyengine-core (policyengine.github.io/policyengine-core), though users may still find the OpenFisca core documentation (openfisca.org/doc) useful for some tasks. We also invite users and developers to join us in our new Slack workspace.

We look forward to growing the open source policy and Rules as Code communities with you all and OpenFisca.

PolicyEngine logo

Subscribe to PolicyEngine

Get the latests posts delivered right to your inbox.


PolicyEngine is a registered charity with the Charity Commission of England and Wales (no. 1210532) and as a private company limited by guarantee with Companies House (no. 15023806).

© 2025 PolicyEngine. All rights reserved.