Pick a preset shock, look at the agent profiles it generates, watch the simulation run, and read the thesis that comes out of it.
Free to run, and it takes a few minutes.
01
The problem
What macro models leave unexplained
When a shock disrupts a market, economic models attempt to account for the effects. They do reasonably well, though there is always unexplained 'noise' which is treated as randomness or error. But some of it may be explained by investor behaviour.
02
What is behind it
Where the noise comes from
Investors have different biases, mandates, time horizons and convictions, all reading the same event differently. In aggregate, the effect of these behaviours may move the market in unexpected ways that, while sensible for each investor, look irrational overall.
That is emergent market behaviour, pricing pressure that arises from how agents interact rather than any individual decision.
R1
R2
R3
R4
I1
I2
I3
I4
R1
R2
I2
I3
03
The method
Agent-based modelling, and what 'agent' means here
Agent-based modelling (ABM) is an established academic simulation framework, and it predates what is currently understood as 'AI agents' entirely. The word 'agent' here refers to a simulation construct, not an LLM-driven autonomous system.
emdola uses the framework unchanged and changes what populates it, applying LLMs to generate heterogeneous, behaviourally coherent investor types at a scale and fidelity that were not previously practical.
1990s
ABM framework
→
2024+
LLM-generated agents
04
Where the LLM is used
The LLM's job is generating coherent profiles
The approach creates internally consistent profiles across numerous behavioural dimensions at once: conviction threshold, herding sensitivity, recency bias, FOMO, memory window and others, calibrated across investor types.
The LLM is used to generate these profiles. Once they exist, the simulation runs without it, rapidly creating robust, simulated market data.
conviction threshold
0.78
herding sensitivity
0.34
recency bias
0.61
FOMO
0.22
memory window
0.55
05
How it is run
Many runs, a different population each time
The system runs multiple iterations, each drawing a different population composition. Taken together the runs cover the broad spectrum of plausible market compositions and outcomes, rather than one assumed static version of the market.
No single run needs to be right, because the finding sits in the distribution rather than in any one path, highlighting a consistent signal underneath the variation.
06
What comes out
What the engine produces
The output is a systematic mispricing signal, showing where aggregated investor responses push prices independently of macroeconomic forces. It measures pricing pressure rather than price direction. The two can differ and both can be right, and read together they give a fuller picture of market dynamics than either does alone.
Hormuz two-shock · materials finding
Across all runs, Materials ended the full closure–reopening cycle above baseline, outperforming Energy despite receiving identical shock inputs. Agents treated Materials as an energy proxy during closure, but the normalisation shock had no equivalent correction mechanism.