The Citizens Standard  ·  The methodology

Test the data

Every load-bearing number ties to a script that computes it, and every empirical claim runs on real, public data. This page maps each claim to its code.

The rest of this page explains how the replication layer is built and what it did and didn't establish. But you don't have to take any of it on trust — start here.

Verify it in your browser — no install, no trust required

Real CPython, compiled to WebAssembly, running the actual replication code in this tab. It fetches a package's own scripts, runs them, and checks every number against the values the paper published. Nothing is precomputed — if the code stops reproducing the paper, this page says so.

Give it a moment — some take 20+ seconds.

Python loads on first run (~15 MB, cached afterwards).

What a pass means. Expected values come from each package's published artifact (all_results.txt / results/*.json) — the numbers the papers cite — not from this run. A pass means every one of them was reproduced to a relative tolerance of 1e-6. Figures are drawn by the code as it runs; none are stored.



Prefer to run it locally? git clone the repo, then cd replication && python run_all.py — that covers the full suite and takes a few minutes. Add --report for an HTML report with every figure.

Two kinds of backing

The replication layer does two distinct jobs, and we label which is which so you are never left guessing whether a number is internally consistent or externally tested.

Verification

Code that reproduces a published figure straight from the framework’s own engine and spec. It proves the paper is internally consistent: the number it prints is the number the model actually yields.

Stress-test

A module that takes a contested claim out to real external data, or sweeps an uncertain parameter across its plausible range. It proves robustness, and in several cases it honestly qualifies the claim.

Across the paper series there are dedicated replication packages, each with a run_all that executes end to end. Everything is plain Python on public data, no API key, no private series.

What each package tests

One map, every package. Each names the claims it backs, the file that computes or tests them, and whether the backing is verification or a stress-test. Most packages reproduce a paper’s published figures; one is the stress-test hub that takes contested claims out to real external data.

architecture_replicationPapers 1, 4, 9
Launch issuance of $447B (2.0% of M2), with the floor figures that follow
code/run_all.py  (19/19 checks)
Verification
Stable Floors: Mode A $233K, Mode B $413K, Mode C $230K, and the Mode B return band
code/cs_engine.py
Verification
empirical_replicationPapers 2, 1, 3
Counterfactual realizable return of 4.26% on actual 1960-2025 data
code/ deterministic engine (historical CSV)
Verification
Outcomes under bad draws: 10,000-path bootstrap including the Depression and the Great Inflation, with P5/P10/P50 percentiles
code/mc_engine.py
Stress-test
macro_replicationPapers 5, 9
Propositions 4-9: price determinacy without a Taylor principle, dual-circuit separation, stability
code/verify_proposition_4.py9.py
Verification
Price-stability locus g·Mᵀ ≈ $229.7B (Mᵀ ≈ 51% of M2); coupling threshold ζ* ≈ 0.13
code/recompute_illustrations.py
Verification
Injection topology (§3.2b): the real-advantage gradient is set by where money enters, near-independent of scale and price-adjustment speed; the surviving gradient under instant prices is balance-dilution, not stale-price timing (exact identity)
code/injection_topology.py
Verification
The liquidation flow Lt — defined in Macro §3.3, never given a number in the papers. Computed: the circulating-pool ceiling is breached in 2048, κ_d must reach zero by 2087.
liquidation_flow_replication/code/run_all.py  (181/181 values)
Supplementary — postdates the papers
banking_replicationPaper 6
Propositions B1-B5: monetary control, lending cap, throttle, capital requirement, run-proof payments
code/paper6_model.py (run_all)
Verification
Collateral cap binds at σ ≈ 0.13 via the non-pledgeable lock
code/paper6_model.py (B2)
Verification
interoperability_replicationPaper 7
Zero is the uniquely robust common external anchor, across swept divergence shocks
code/equa_stress.py
Verification
Domestic launch figures reconcile to the dollar
code/cs_engine.py
Verification
structural_buyer_replicationPaper 8
Ownership plateau ψ* ≈ 0.10 via cohort decumulation (Prop 4)
code/verify_psi_plateau.py
Verification
Bounded premium (Prop 1), mirror-voting (Prop 7), leak (Prop 3)
code/verify_prop*.py
Verification
transition_replicationPaper 3
Debt-to-GDP 102% → 39% (Y30) → 15% (Y45) via Mode T
code/appendix_A2_debt_trajectory.py
Verification
The five-phase architecture and its phase milestones
code/phase_milestones.py
Verification
comparative_replicationPaper 13
Comparison against the Alaska PFD, Norway, Singapore, and LVT/UBI hybrids
src/compare.py, scenario_lvt_hybrid/lvt_hybrid.py
Verification
crisis_behaviour_replicationPaper 12
The procyclical dividend is the signature failure mode: the dividend falls to zero in a downturn
crisis_behaviour_replication/ + procyclicality/
Stress-test
empirical_validation_replicationPaper 10
Transactional-aggregate decomposition raced against Divisia and composition benchmarks on real FRED data
src/run_divisia_horserace.py, run_composition_horserace.py
Stress-test
M2 loses to the CS aggregate on RMSE; the analysis concedes the cases where it loses
src/ (robustness, Test A)
Stress-test
distribution_inequality_replicationThe stress-test hub · 14 sub-modules
Gini 0.830 → 0.743 (SCF 2022 microsimulation), with the floor-vs-dividend decomposition
src/channels.py; results/inequality_results.json
Verification
External anchor across the 2022 ~6pp spike and Japan’s ~17-year gap; floor survives a 40% drawdown; capture/override base rate from the IMF Fiscal Rules DB
anchor_real_shocks/, procyclicality/, capture_override_baserate/
Stress-test
The four claims the data qualified: transition timeline, issuance-neutrality mechanism, structural-buyer plateau range, and no welfare-optimal dividend (see below)
transition_debt_path/, credit_displacement/, dsge_twocircuit/, structural_buyer_endgame/, mode_choice_welfare/
Stress-test
Paper 14 second-order effects: rent-capitalization leak (~1.7%), demand impulse, crowd-out split (~79% net-new)
rent_capitalization/, mpc_demand_impulse/, crowdout_split/
Stress-test
Three papers carry no dedicated package by design, and the index says so plainly rather than implying code exists: Paper 4 (statutory text, its figures backed by the shared engine), Paper 9 (shares the verified engine; its central figure is self-stress-tested in its own Table 3 and swept in two modules), and Paper 11 (institutional design; its one empirical claim is backed by capture_override_baserate/). For the exhaustive map, every figure in every paper down to its file, see the full claim-to-code index.

What the tests qualified

The stress tests did not just confirm. In a few places they pushed back on the framework’s own first-pass claims, and the honest move is to lead with those rather than bury them. None of these sink the architecture; each one makes a specific number more truthful.

The transition timeline is optimistic

Paper 3 (Transition). The debt-to-GDP decline is real, but tested against current fiscal data the timeline leans fast. Most of the fall comes from nominal growth expanding the denominator, with the transition mode an assist rather than the main agent retiring the debt.

Issuance neutrality does not rest on credit displacement

Paper 5 (Macro Model). Getting neutrality from displacement alone would require roughly 73 to 89 percent of new issuance to displace bank credit; the literature supports only partial displacement. So neutrality is argued on other grounds, and the package says so instead of leaning on a mechanism that cannot carry the weight.

The ownership plateau is a range, not a point

Paper 8 (Structural Buyer). The structural buyer’s long-run ownership share is real and bounded, with a central estimate near 11 percent, but it is sensitive to holding-duration assumptions across roughly a 6 to 21 percent band. We report it as a range.

Full reserve sizes a credit gap it does not resolve

Paper 6 (Full-Reserve Banking). The model sizes the credit-supply gap full-reserve banking would remove (on the order of 3.3 percent of GDP per year). Whether less credit and less boom-bust is net-desirable is a value judgment the paper flags as open, not something the code can settle.

There is no welfare-optimal dividend share

Paper 1 (Architecture). We went looking for an optimal split between the locked floor and the cash dividend and did not find one: welfare moves monotonically with the dividend dial, with no interior peak. So which mode a polity runs is a values choice it makes for itself, not a number we can solve for. We report the null result rather than manufacture a sweet spot.

Or run it on your own machine

The browser now runs every package — Paper 10 was the last holdout, and only because it needed statsmodels, which cannot be installed in a browser. It is now backed by a pure-numpy equivalent that reproduces statsmodels to machine precision. To run the suite against the real statsmodels — which remains the source of truth — clone it:

git clone https://github.com/Neo-Solon/Citizens-Standard
cd Citizens-Standard/replication
python run_all.py # full suite, pass/fail table
python run_all.py --report # + an HTML report with every figure

Each package has its own run_all and a README stating its data sources and what it checks. Swap in your own assumptions and watch the figures move; that is the point.

Rigor you can run beats rigor you have to trust. That is the whole answer to “how do I know these numbers aren’t made up” — you don’t have to know, you can check. Here is the whole suite, and the papers it backs.

Download the replication suite

Prefer the writeups first? The papers and data page has the full series, free to read, each linked to the code above. The full claim-to-code index lives in the replication folder.

Audio Overview0:00 / 0:00