MicroWorld predicts a denoised price by modelling who is holding the wedge up
A multi-agent world model of US equity markets — simulating institutional players, information asymmetry, and emergent price dynamics
At a glance
- What is it?
- A Python research codebase that casts institutions, regulators and retail cohorts as agents on a network and solves for an equilibrium price, then reports the gap between that and the tape. It ships one command for a synthetic demo and one for a hindcast on vendored memory-sector prices, and it is explicit about which half of its own signal is still a research experiment.
- Who is it for?
- MicroWorld is worth reading if you are interested in agent-based market simulation rather than copying it as a trading signal, because the two halves of its own claim are separated honestly: the equilibrium track and the instability detector are demonstrated, while reconstructing the institutional rotation field from real 13F and COT positioning is still labelled experiment E7. Nobody should trade it.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 17 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 6, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The MVP predicts a denoised price, not tomorrow's tick
The framing is unusual enough to state plainly. Rather than forecasting the next price, the model takes an observed price, strips the behavioural component out of it, and treats what remains as the equilibrium, defined as what the asset is worth once every player has played their strategy. That denoised track is the thing being predicted, and the intended holder is a mid to long horizon retail investor, not an intraday trader. The stated reason is Theorem 1, described as a dual Cramer-Rao bound, which the authors say proves that no volume of data can out-model behavioural noise at short horizons. At horizons of weeks to months the equilibrium component dominates, and that is where the model is built to work. One command runs the concept demo:
python demo/denoised_price_2026.pyIt is labelled a synthetic concept demo, needs no API keys, and is shaped on the July 2026 memory sector unwind, where the SOX fell 19 percent, described as its worst month since 2008.
Blue is equilibrium, black is equilibrium plus a behavioral wedge
The demo plots two tracks. The blue line is the product, the equilibrium track P^eq that the world model solves for. The black line is the market, meaning equilibrium plus a behavioural wedge that inflates as institutions crowd in and what the authors call LLM-homogenised retail chases the tape. The signal itself is the divergence D_t = P_t/P^eq_t minus one crossing a threshold while the institutional mean field is rotating out, and the reported behaviour is that it fires 11 trading days, roughly two weeks, before the unwind accelerates. Retail capitulates at the lows, institutions buy them, and the price rejoins its denoised track. The intended reading is that this is a research signal rather than investment advice, and that the real-data version of the same signal is a separate experiment, E7, run under the same no-look-ahead rules as the authors' 2008 hindcast.
The October 2025 alarm came 232 trading days early, and 446% still happened
There is a real-price check, and it is worth reading precisely because of how it is qualified. The 2008 recipe was frozen, with weights, threshold and sustain rule unchanged, and one disclosed adaptation from funding stress to a crowding extension. The memory basket was SK Hynix, Samsung, Micron, Western Digital, Seagate and SanDisk, using daily closes vendored in the repository so no key is needed:
python demo/hindcast_memory_2026.pyThe reported result is three years with zero alarms through the 2022 memory bear and the 2023 to 2025 recovery, so the detector Lambda-t never crossed its threshold once. The first alarm in the whole sample came on October 22, 2025, which the authors identify as the AI memory mania itself, and the sector left its stable regime 232 trading days before July 2026 delivered its worst month since 2008, with SK Hynix down 55 percent from its peak in the vendored data. Then the honest half: after the alarm the basket rose another 446 percent before it broke.
Lambda-t says the regime is unstable, kappa-rotation says when it resolves
That 446 percent is the most informative number in the whole document, and the authors draw the conclusion themselves. Basin-exit detection is not crash timing, because an unstable crowding regime can keep inflating for months. What governs the timing of the break is who is holding the wedge up and when they rotate out, which is the institutional field kappa. So the division of labour inside one model is stated as two signals with different jobs: Lambda-t tells you the regime is unstable, and the divergence D_t together with kappa-rotation tells you when the instability resolves. The synthetic demo demonstrates the second half working. Making the first half real requires reconstructing kappa from actual 13F and COT positioning, and that is experiment E7 rather than shipped functionality. The authors are also careful that no prediction claim is being made here, since the July 2026 replay is a hindcast computed after the event and the figure says so on its face.
Causal attribution is claimed as native rather than post-hoc
The first of three stated departures from the rest of the field is about attribution. The argument runs that a model trained on price data learns from the residue of decisions, and residue explains nothing, which the authors treat as the reason backtest-born signals tend to die without explanation. MicroWorld instead models the decision makers: real market data about institutions, regulators and retail cohorts, cast as agents with objectives, constraints and information sets, playing a game on a fully connected network. In the current Phase 1 that game is solved in a simplified form, a multi-body multi-dimensional hierarchical mean-field system. The unsimplified form, where every agent is its own co-trained neural network, is specified in a separate phase-two document and is waiting on hardware, with the note that a lab with two hundred H200s would close the gap. Either way the claim is that every output decomposes the same way, into which agents, which constraint and which coupling.
state/information.py gives each agent type its own filtration
The second departure is that information asymmetry is treated as the engine rather than a side effect. The framework models the market's stratified information structure explicitly, in `state/information.py`, and each agent type is given only its own filtration. The model then estimates what each type's rational move has to be given what that type alone can see, which is how the authors expect price change to be anticipated where it is actually born, in the information gap between players, before it aggregates into the tape. July 2026 is offered as the mechanism observed in the wild, with the claim that channel checks reached institutions months before headlines reached retail. A third section continues past the visible part of this write-up. The mechanism itself is drawn in a generated figure, from `scripts/make_agent_game_figure.py`, showing the fully connected network where every neuron is an agent, the five highlighted edges that carry the episode as principal couplings with their loadings, and the unwind those couplings produce: information reaching the informed first at w1, institutions de-crowding at w2, momentum pulling retail in at w3 and w4, and market-maker inventory setting the gap risk at w5.
torch and jax with CUDA in one file, Kafka and Postgres behind it
The dependency file makes the ambition concrete. Core machine learning wants `torch` and `jax` with the cuda12 extra, plus `flax` and `optax`, so a CUDA-capable jax install is part of the baseline rather than an option. Transformers and sentence-transformers handle the text side, numpy, scipy and pandas the numerical work, and then the infrastructure layer arrives: kafka-python, psycopg2-binary, sqlalchemy and apache-airflow for orchestration, streamlit and plotly for the dashboard, matplotlib and pillow for figures, and pytest, black, mypy and jupyter for development. Data comes from alpaca-trade-api, polygon-api-client, fredapi and newsapi-python, all described as having free tiers. The `.env.example` asks for six keys, and one of them is telling:
POLYGON_KEY=[YOUR_KEY_HERE]
ALPACA_KEY=[YOUR_KEY_HERE]
ALPACA_SECRET=[YOUR_SECRET_HERE]
FRED_KEY=[YOUR_KEY_HERE]
NEWSAPI_KEY=[YOUR_KEY_HERE]
BARCHART_KEY=[YOUR_KEY_HERE]
DB_URL=postgresql://postgres:alphaflow@localhost:5432/alphaflow
KAFKA_BOOTSTRAP=localhost:9092A Barchart key is requested although no Barchart client appears in the dependency file. The tree around it is a research layout, with `agents/`, `game/`, `encoder/`, `state/`, `controller/`, `backtest/`, `dashboard/`, `notebooks/`, `online/`, `tests/`, `configs/`, `e5/`, `setup.sh`, `CITATION.cff`, `DATA_REQUIREMENTS.md` and `RESOURCES.md`, and the demos include `synthetic_market.py`, `global_demo.py`, `run_egamec.py` and `hindcast_2008.py` beside the two above. The repository is not archived, the last push to main was on 2026-09-19, and it has no GitHub releases at all.
Editorial conclusion
MicroWorld is worth reading if you are interested in agent-based market simulation rather than copying it as a trading signal, because the two halves of its own claim are separated honestly: the equilibrium track and the instability detector are demonstrated, while reconstructing the institutional rotation field from real 13F and COT positioning is still labelled experiment E7. Nobody should trade it. The demo that produces the headline number is explicitly synthetic, the real-price run is a hindcast computed after the fact, and the authors themselves say basin-exit detection is not crash timing, since the basket rose 446% after the alarm fired. Before you spend time on it, read the disclosure that the 2026 replay used one adaptation to the frozen 2008 recipe, check that a CUDA-capable jax install is workable for you given the requirements file, and treat every number in the README as a claim from the authors rather than an audited result.
Frequently asked questions
What does MicroWorld actually predict?
It predicts a denoised equilibrium price rather than the next tick. The model's output is the track an asset is worth once the behavioural component is stripped out, and the intended user is a mid to long horizon holder. The README states that intraday and high frequency trading are deliberately out of scope, because at those horizons behavioural noise dominates.
How do I run the MicroWorld demo?
One command with no API keys: python demo/denoised_price_2026.py, which is a synthetic concept demo shaped on the July 2026 memory sector unwind. The real-price check runs python demo/hindcast_memory_2026.py over daily closes vendored in the repository for SK Hynix, Samsung, Micron, Western Digital, Seagate and SanDisk.
Does MicroWorld claim to have predicted the July 2026 memory selloff?
No, and it says so directly. The July 2026 replay is a hindcast computed after the event, computed by freezing the 2008 recipe with weights, threshold and sustain rule unchanged and one disclosed adaptation from funding stress to a crowding extension. The authors also report that after the October 2025 alarm the basket rose another 446 percent before it broke.
What licence and release history does MicroWorld have?
The repository licence metadata reads as unknown and there are no GitHub releases. The last push to main was on 2026-09-19 and the repository is not archived. Documentation exists in English, Chinese, Japanese and Korean, and the project carries CITATION.cff plus a DATA_REQUIREMENTS.md for citation and data provenance.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hongjin-he-microworld)