Fiscal Stabilisers, Minsky Dynamics, and Distributional Outcomes in a Keynesian Agent-Based Model
Baseline Simulation Evidence from a 10-Year Closed-Economy Run
What we learned from a 10-year simulation of a self-contained economy, built from the bottom up.
A daily-frequency, single-sector Keynesian ABM of 10,000 households, 1,000 firms, and 10 commercial banks reproduces four stylised macroeconomic facts and documents persistent zero lower bound binding — a novel result in the K+S ABM literature mirroring post-1998 Japan and post-2013 Euro-area experience.
Concept Overview
Abstract
Setup
We develop, calibrate, and analyse a daily-frequency, single-sector Keynesian agent-based model (ABM) of a closed economy populated by 10,000 households, 1,000 firms, and 10 commercial banks operating alongside a fiscal authority and a Taylor-rule central bank. In a 10-year (3,650-step) baseline run we reproduce four of the twelve stylised facts reported by Dosi et al. (2013): a nominal GDP CAGR of 4.6%, negatively skewed annual growth fluctuations (γ1 = −0.59), and a wage share of GDP of 72.8%.
We built a small, simulated economy on a computer. Every household, firm, and bank makes its own decisions day by day. The simulation includes 10,000 households, 1,000 firms, 10 banks, a government, and a central bank that follows a standard interest-rate rule. We ran it for 10 years — about 3,650 simulated days. The result matched real-world data on four of twelve checkpoints: the economy grew at 4.6% per year, bad years were worse than good years were good (γ1 = −0.59), and wages made up 72.8% of total income.
Novel Result
The economy reaches the zero lower bound (ZLB) from day 1 and remains there for a median 93.7% of simulation periods across 50 Halton-seed Monte Carlo draws (95% CI: 6.0%–96.1%), mirroring the post-1998 Japanese and post-2013 Euro-area experience — a novel result in the K+S ABM literature. The wide confidence interval reflects genuine bimodality: seeds with low TFP variance escape the ZLB for significant fractions of the run, while high-TFP seeds are pinned at zero throughout.
The central bank's interest rate hits zero on day one and stays stuck there — the zero lower bound, or ZLB. Run the simulation 50 times with different starting conditions, and the rate is stuck at zero for 93.7% of the time on average (95% CI: 6.0%–96.1%). That matches what happened in Japan after 1998 and the Euro area after 2013, and nobody had documented it in this kind of model before. The wide range reflects two distinct outcomes: some runs escape the zero floor part of the time, while others never leave it.
Structural Departures
We document five structural departures from the empirical target — near-zero unemployment, supply-side CPI deflation, suppressed business-cycle volatility and persistence, compressed wealth inequality, and persistent ZLB — and trace each to identifiable modelling choices in the single-sector design. Two of these (growth volatility 0.12% vs. empirical 2–5%, and negative growth autocorrelation ρ1 = −0.18 vs. empirical >0.70) arise directly from the smooth, near-deterministic TFP growth path produced by the recalibrated R&D parameters.
The simulation also misses real-world data in five clear ways: nearly everyone has a job, prices fall instead of rise, the economy is too steady, the rich and poor are too close together, and interest rates stay stuck at zero. Each miss traces back to a specific design choice we made. Two of the misses — the economy moves only 0.12% per year (real economies move 2–5%), and good years tend to follow bad ones instead of clustering (ρ1 = −0.18 vs. real-world above 0.70) — come from making productivity growth too smooth and predictable.
Contribution
A minimal single-sector null model that isolates by subtraction which stylised facts require two-sector structure, establishing precise boundary conditions for when endogenous cycles re-emerge as the model is extended toward the full two-sector K+S design. JEL codes: C63, E12, E32, E44, E62, G01.
A stripped-down model with only one sector shows, by what it can't do, which features of the real economy need a richer two-sector design. It pinpoints exactly when boom-and-bust cycles return as we add complexity back in. JEL codes: C63, E12, E32, E44, E62, G01.
Introduction
The 2007–09 Global Financial Crisis and the subsequent decade of secular stagnation demonstrated the inadequacy of models in which the macroeconomy converges rapidly to a unique rational-expectations equilibrium. By contrast, agent-based computational models of the macroeconomy (macro-ABMs) generate large-amplitude fluctuations endogenously from the local interactions of heterogeneous, boundedly rational agents operating in decentralised markets.
The 2007–09 financial crisis and the slow decade that followed exposed a problem: the standard economic models assumed the economy quickly snaps back to a tidy equilibrium. It doesn't. Agent-based models — computer simulations where each person, firm, and bank acts on its own — produce the kind of big swings we see in real economies, without needing anyone to be perfectly rational or perfectly informed.
Three Contributions
First, this paper constructs a minimal single-sector null model designed to isolate which stylised facts require two-sector structure. Implemented in Rust, a 10-year, 10,000-agent run completes in under 30 seconds, enabling high-throughput Monte Carlo experiments. Second, it establishes a systematic mapping between structural design choices and empirical misses via the Hierarchy Proposition. Third, it documents the novel result that the ZLB binds in the large majority of simulation periods — a result not previously established in the K+S ABM literature.
First, this paper builds the simplest possible version of the model to see which real-world patterns it can and can't capture. Written in Rust, a 10-year run with 10,000 agents finishes in under 30 seconds, so we can run it hundreds of times to test sensitivity. Second, it shows which design choices cause which misses, organised into one clear ranking we call the Hierarchy Proposition. Third, it documents a new finding: the central bank's interest rate gets stuck at zero in most simulation periods — something earlier models in this family had not shown.
The Keynes+Schumpeter (K+S) programme initiated by Dosi et al. (2010, 2013, 2015) has established a benchmark for macro-ABM research. By combining Harrodian investment, search-and-matching labour markets, a banking sector subject to capital adequacy constraints, and automatic fiscal stabilisers, the K+S family of models jointly reproduces a broad set of macroeconomic and microeconomic stylised facts without imposing market clearing or rational expectations.
The Keynes+Schumpeter (K+S) family of models, built by Dosi and colleagues from 2010 onward, is the gold standard in this field. It puts together realistic business investment, a job market where workers and firms search for each other, banks that have to hold enough capital to stay solvent, and government safety nets that kick in automatically. Together, these features match a long list of real-world economic patterns without any heroic assumptions about perfect rationality.
The present model is deliberately restricted to a single consumption-good sector and therefore not designed to reproduce capital-market or multi-sector phenomena. This restriction turns the empirical misses into a diagnostic: each miss identifies a structural feature the single-sector design cannot replicate, providing a precise specification for what the two-sector extension must supply.
On purpose, our model includes only one kind of product — consumer goods. It doesn't try to capture financial markets or industries that make machinery for other industries. That limit is the point: every miss tells us exactly what a richer model would need to add to fix it.
Methods
Households (10,000)
Households supply labour inelastically and consume from current income and accumulated savings according to a habit-adjusted consumption function. Savings propensity σ = 0.05, risk aversion ρ = 0.20, consumption habit η = 0.70. Households search for employment across firms in random order, accepting the first offer above their reservation wage, which decays at rate δW = 0.05 during unemployment spells.
Households work whenever offered a job and spend what they earn, plus a slice of their savings. They're creatures of habit — spending adjusts slowly. Savings rate σ = 0.05, risk aversion ρ = 0.20, habit weight η = 0.70. When out of work, they hunt for jobs at random firms and take the first one that pays above their minimum acceptable wage. The longer they stay unemployed, the lower that minimum gets — falling at rate δW = 0.05.
Firms (1,000)
Firms produce a single consumption good using labour, invest in R&D to improve total factor productivity, and set prices via a mark-up over unit labour cost. Investment rate χ = 0.10, R&D rate φ = 0.005. Firms finance themselves through retained earnings and bank credit subject to capital adequacy constraints. Bankruptcy occurs when equity turns negative.
Firms hire workers to make a single consumer product, spend a little on R&D to get more efficient over time, and set prices by adding a markup on top of their labour costs. Investment rate χ = 0.10, R&D rate φ = 0.005. They pay for everything out of profits and bank loans, capped by what banks are allowed to lend. If a firm's debts exceed its assets, it goes bankrupt.
Commercial Banks (10)
Banks intermediate between household deposits and firm credit. Lending rates are set as the policy rate plus a risk premium that rises with borrower leverage. Capital adequacy ratio (CAR) floor of 8% limits credit expansion. During the banking-crisis shock (day 1,200), elevated non-performing loan rates trigger a credit freeze that propagates through the firm sector — the Minsky dynamic documented in Section IV.
Banks take in household deposits and lend to firms. The interest they charge is the central bank's rate plus a risk markup that gets steeper when borrowers are deeper in debt. Regulators require banks to hold at least 8% of their loan book as capital, which caps how much they can lend. On day 1,200 we trigger a banking crisis: loans start defaulting, banks stop lending, and the credit freeze ripples out to firms — the boom-bust pattern Hyman Minsky described, shown in detail in Section IV.
Fiscal Authority & Taylor-Rule Central Bank
The government levies a flat income tax and provides unemployment benefits, acting as an automatic fiscal stabiliser. The central bank sets the nominal interest rate via a Taylor rule: πt = r* + 1.5(πt − π*) + 0.5(yt − y*), subject to the ZLB constraint it ≥ 0. The ZLB binds from day 1 due to supply-side deflation, mirroring Japan's lost-decade liquidity trap.
The government taxes income at a flat rate and pays unemployment benefits — a built-in cushion when times get tough. The central bank sets interest rates using a textbook Taylor rule: πt = r* + 1.5(πt − π*) + 0.5(yt − y*), but it can't cut rates below zero (it ≥ 0). In our simulation, the rate hits zero on day one because prices keep falling — just like Japan's lost decade.
Results
The 10-year baseline simulation reproduces four of the twelve Dosi et al. (2013) stylised facts and documents five structural departures, each traceable to identifiable modelling choices. The most striking result is the persistent ZLB binding.
Over 10 simulated years, the model matches real-world data on four out of twelve checkpoints, and misses on five others — each miss tied to a specific design choice. The headline finding: interest rates stay pinned at zero almost the entire time.
ZLB Frequency: 93.7% (MC Median)
Across 50 Halton-seed Monte Carlo draws, the nominal interest rate is pinned at zero in a median 93.7% of simulation periods (95% CI: 6.0%–96.1%). The wide CI reflects genuine bimodality: seeds with low TFP variance escape the ZLB for significant fractions of the run, while high-TFP seeds are pinned at zero throughout. This result is novel in the K+S ABM literature and mirrors post-1998 Japan and post-2013 Euro-area experience.
Running the simulation 50 times with different random starting points, the central bank's rate is stuck at zero for 93.7% of the time on average (95% CI: 6.0%–96.1%). The wide range isn't noise — it's two real outcomes: some runs escape the zero floor for stretches, others never do. This pattern hasn't shown up before in models of this kind, and it lines up with what Japan went through after 1998 and what the Euro area saw after 2013.
Four matched stylised facts: GDP CAGR of 4.6% (MC median: 4.5%), negatively skewed annual growth fluctuations (γ1 = −0.59), wage share of GDP of 72.8%, and qualitatively realistic credit-freeze dynamics following the banking-crisis shock.
Four things the model gets right: the economy grows about 4.6% a year (across runs: 4.5%), bad years are worse than good years are good (γ1 = −0.59), wages make up 72.8% of total income, and when we trigger a banking crisis, lending dries up the way it does in real downturns.
Five structural departures: (1) near-zero unemployment (0.24% vs. empirical 5–10%), caused by the missing capital-income channel and absence of a statutory wage floor; (2) supply-side CPI deflation driven by continuous TFP improvement without a nominal price anchor; (3) suppressed growth volatility (0.12% vs. empirical 2–5%); (4) negative growth autocorrelation (ρ1 = −0.18 vs. empirical >0.70); (5) compressed wealth inequality (Gini 0.15 vs. empirical 0.40–0.70).
Five things the model gets wrong: (1) almost no unemployment — 0.24% in the model versus 5–10% in real life, because we left out investment income and a minimum wage; (2) prices steadily fall because firms keep getting more efficient and nothing anchors prices; (3) the economy barely moves — growth swings of 0.12% versus the real 2–5%; (4) good and bad years alternate (ρ1 = −0.18) instead of clustering as they do in real economies (above 0.70); (5) wealth is too evenly spread — a Gini of 0.15 versus the real 0.40–0.70.
Shock Experiments
A demand shock at day 500 produces a temporary GDP contraction of 8.2% recovered within 90 days. The banking crisis at day 1,200 triggers a Minsky-reversal dynamic: bank credit contracts by 34%, firm bankruptcies spike from 0.27% to 4.1% per year, and GDP falls 12.3% before fiscal stabilisers arrest the decline. The economy recovers to trend within 18 months, consistent with the bounded nature of single-sector Minsky cycles.
We tested how the model handles shocks. A drop in consumer spending on day 500 shrinks the economy by 8.2%, but it's back to normal in 90 days. The banking crisis on day 1,200 hits harder: lending falls 34%, firm bankruptcies jump from 0.27% a year to 4.1%, and the economy shrinks 12.3% before government safety nets kick in. Within 18 months it's back on track — the simpler model can't sustain a prolonged slump on its own.
Discussion
The Hierarchy Proposition converts the catalogue of misses into a single testable prediction: correcting near-zero unemployment will simultaneously resolve four of the five structural departures, bringing corresponding moments toward their empirical targets.
Our key claim — the Hierarchy Proposition — is that the misses aren't five separate problems. Fix one (unemployment is too low) and four of the five will fall into line. It's a single, testable prediction.
Near-zero unemployment is the proximate cause of four structural departures. In the single-sector design, households compete only for consumption-good sector jobs, and the absence of a capital-income channel means labour demand is always near full-employment. Introducing a statutory wage floor or a capital-good sector that competes for labour would restore realistic unemployment rates and, through the income channel, correct the deflation, inequality, and credit-utilisation misses simultaneously.
Almost-zero unemployment is what causes four of the five misses. In our simplified setup, the only jobs are at consumer-goods firms, and nobody earns income from investments or capital. That keeps the job market hot all the time. Adding a minimum wage, or a second industry making machinery that competes for the same workers, would push unemployment back up to realistic levels — and fix the deflation, inequality, and credit-use misses at the same time.
The persistent ZLB arises from supply-side deflation: continuous TFP growth reduces unit production costs faster than nominal wages adjust, producing a chronic deflationary tendency that drives the Taylor rule to its zero lower bound. In the full K+S two-sector model, capital-good pricing acts as a nominal anchor that makes ZLB episodes occasional rather than chronic — its absence here makes the ZLB the default state. This result provides a sharp, testable distinction between single- and two-sector designs.
Why interest rates stay stuck at zero: firms get more efficient over time, so it costs less to make each unit, so prices fall faster than wages can adjust. Falling prices push the central bank to cut rates — until it hits zero and can't go lower. In a richer model with a separate machinery sector, prices of that machinery would anchor things, and the zero-rate trap would happen only occasionally. Without that anchor, zero is the default. This is a clean way to test what a richer model actually adds.
Business-cycle dynamics (volatility and autocorrelation) are absent because the recalibrated R&D parameters produce near-deterministic TFP growth. The ξ-sweep sensitivity analysis confirms that search friction alone is insufficient to restore cycle dynamics under these R&D parameters — demand-side heterogeneity, not just matching friction, is the necessary ingredient.
Why there are no real boom-and-bust cycles: our R&D settings make productivity growth too smooth and predictable. We tested whether adding friction to the job search would shake things up by sweeping the ξ parameter. It doesn't. The missing ingredient is variety on the demand side — different households wanting different things at different times — not just slower hiring.
Conclusion
The most significant result of the 10-year baseline simulation is that the zero lower bound binds in 93.7% of simulation periods (MC median; 95% CI: 6.0%–96.1%), with a bimodal cross-seed distribution reflecting a TFP-variance threshold effect — a novel result in the K+S ABM literature.
The biggest takeaway from our 10-year run: the central bank's interest rate gets stuck at zero in 93.7% of simulation periods (95% CI: 6.0%–96.1%). Some runs escape; others never do, depending on how variable productivity growth is. Earlier models in this family hadn't shown this.
The 10-year recalibrated baseline reproduces four of the twelve targeted stylised facts. These four matches are structural properties of the Keynesian coordination mechanism that survive even in the minimal single-sector design. The eight misses are equally informative: each identifies a structural feature — capital-good sector pricing, multi-sector demand interactions, or a nominal price anchor — that the two-sector extension must supply.
Our 10-year run matches the data on four of twelve patterns we aimed for. Those four show up because Keynesian coordination is robust enough to survive even our stripped-down design. The eight misses are just as useful: each one tells us exactly what to add next — a machinery sector, interactions across industries, or a stable price anchor.
The Hierarchy Proposition converts this catalogue of misses into a single, testable prediction: correcting near-zero unemployment will simultaneously resolve four of the five structural departures. Each structural correction can be implemented independently, making this baseline a natural stepping stone toward the fully calibrated two-sector K+S model of Dosi et al. (2015). See Paper 2 for the companion study on individual optimality and collective failure in this model framework.
The Hierarchy Proposition boils everything down to one prediction we can test: fix unemployment and four of the five misses go away with it. Each fix can be added on its own, so this minimal model is a clean starting point for building toward the full two-sector design from Dosi et al. (2015). For the companion paper on how individually smart decisions can still lead to collective failure, see Paper 2.