Mark-0 — Anatomy of the model

What agents we simulate, the variables and defaults that drive them, and the feedback loops that produce inflation, unemployment and crises. The diagrams run on the actual in-browser engine (web/js/mark0.js) — press play to watch the loops move. Built as a base for extending or adding agents.

1The agents & how money flows

Mark-0 is a closed economy: every dollar that leaves one agent arrives at another (money is conserved). Five agent types interact. Firms are a heterogeneous population (~10,000); the household, central bank, bank and energy sector are each a single representative agent.

Firms (×N_F) Household Central Bank Bank Energy sector

2The feedback loops

The economy's behaviour comes from a handful of loops linking the agents' variables. R = reinforcing (amplifies), B = balancing (dampens). Select a loop to trace it; dashed arrows are negative links. Press play to overlay live values from a run.

month — ready

3Parameters & their defaults

Every modelling choice is a named parameter with the paper's Table-1 default. They live in config/params.yaml (Python) and mark0.js DEFAULTS (web). Grouped by the agent that uses them.

SymbolParameterDefaultEnters

4Extending the model — the sandbox plan

The engine routes everything through one contract: a firm-state array set plus a parameter object, advanced by a fixed sequence of per-agent update rules inside one monthly loop. That makes the model a sandbox — complexifying an agent is editing its rule; adding an agent is three steps.

To add a new agent (e.g. a government, a second sector, or a heterogeneous banking network): 1 · add its state arrays + parameters 2 · insert its update rule at the right slot in the monthly loop 3 · wire its money flows into the conservation identity — then expose its controls here. The faithful base lives in src/mark0/kernel.py; the COVID layer is an optional add-on in the same file (CovidConfig), which is exactly the pattern a new agent follows.