Markdown for LLMs
OpenFisca
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# OpenFisca **In short:** OpenFisca computes who gets how much across millions of cases; Arxo establishes what one case is owed under which edition, with grounds. This page is for a reader who runs OpenFisca country models and wants to know where a per-case prover overlaps — and where the two must not be compared naively. ## What OpenFisca is for OpenFisca is a microsimulation framework: a core engine plus country packages written in a restricted Python, computing taxes and benefits for whole populations in batched array calls. Its strengths are dated parameters and formulas (a value per date, a formula per period), reforms as baseline-versus-modified comparisons, large YAML test banks with error margins, and computation logs that trace a single result. For reform work and population statistics it is the reference tool. ## Where it meets Arxo Both sides compute the same monthly French housing benefit for January 2021 from statute text, with staged derivations on each side — Arxo's proof against the tracer log. The comparison only works stage by stage: Arxo separates the post-reduction pre-deduction stage from the later stages, and each must meet the matching OpenFisca variable. Cross-stage equality is a false comparison, recorded up front. ## Key differences - **Scale versus standing.** OpenFisca answers millions of cases per call with a documented tolerance per test (one percent in the studied bank); Arxo answers one case exactly, refusing rather than approximating. The tolerance hides sub-percent systematics — acceptance on the Arxo side needs cent-level agreement, not the bank's margin. - **Rounding is an engine property.** The framework rounds with half-to-even banker's rounding, rents to whole euros, and resources up to hundreds. These are documented behaviors of the engine, not modelling choices, and the contract fixes them before comparison. - **Missing inputs get defaults.** An unset OpenFisca input falls back to its default and the computation proceeds; Arxo refuses on a missing parameter with a named outcome. Both are deliberate semantics for different jobs — batch statistics versus individual entitlement. - **Editions are the shared theme.** Dated formulas and reform objects are OpenFisca's native answer to legal change, and the strongest overlap with Arxo's dated editions. The prepared experiment re-runs one bank on two yearly scales to compare exactly that. ## A concrete scenario The prepared experiment takes twelve published housing-benefit cases for January 2021 plus a bank of two thousand synthetic households at the first computation stage, re-run on a later yearly scale with changed ceilings and thresholds, plus parameter edits. Exact-to-cent code replicas and text-derived expectations sit side by side; payment-threshold placement and rounding-basis questions stay open with named causes. Historical runs from mid-September 2026 informed the protocol; the frozen pins are France 176.0.9 at commit b2ab9943 with Core 44.7.1, and timings and counts from earlier runs are not facts about these pins. ## Choosing and combining Choose OpenFisca for population simulation, reform deltas, and any task where a documented statistical tolerance is acceptable. Look to Arxo for the individual decision with its grounds: which edition applied, which stage produced the figure, and what is refused rather than defaulted. The natural combination is a pipeline — OpenFisca for the population picture, Arxo for the contestable single case. ## Evidence and open questions - Sources checked: September 2026 (framework docs, core changelog, the France package at its pin, parameter files and the YAML bank re-read by hash; newer releases explicitly excluded). - Studied profile: France 176.0.9 at commit b2ab9943, Core 44.7.1, NumPy 2.3.5, Python 3.13; newer releases explicitly excluded. - Basis: confirmed by documentation plus historical runs plus a prepared protocol; current comparative run not performed. - Open: the legal basis of rent rounding and threshold placement, exact later-scale code numbers (only a run produces them), and error, conflict, and judgment semantics of the core, which the docs did not yield — recorded as unconfirmed, not denied. ## Sources and reproducible materials - Framework documentation (variables, parameters, periods, reforms, tracer): [openfisca.org/doc](https://openfisca.org/doc/) - France package at the studied pin: [github.com/openfisca/openfisca-france](https://github.com/openfisca/openfisca-france)