Skip to content

Troubleshooting and FAQ

When something does not work

You see Likely cause Do
pull access denied / manifest unknown on up The release you asked for (EM_VERSION, or latest) has no edumatcher-ai-sim image Pin a release that has one, or build it yourself
port is already allocated Another EduMatcher stack, or another program, holds 5560–5600, 8080/8081 or 8090–8094 Stop the other stack (make down-all, ./edumatcher.sh stop); only one can run
Nothing trades The market is closed: weekend, a Swedish holiday, or outside 09:00–16:05 Stockholm time docker exec edumatcher-sim date; for trading now, accelerated time
The market closed in the middle of the day and stays closed The engine restarted (it starts CLOSED) and the running scheduler did not notice docker exec edumatcher-sim pkill -f pm-scheduler: the container restarts it within a minute and it catches up to the current phase
Trading starts at the wrong hour The container's time zone is not the one you think TZ in .env (default Europe/Stockholm)
mm-bot is dead right after a start It started before the engine was ready and gave up Nothing: the container restarts it within a minute
mm-bot restarted several times in a row after it died The engine still holds the dead bot's session and refuses a second one for MM01 Nothing: the engine drops that session after three missed heartbeats, about three minutes, and the next restart logs on
A process keeps coming back as dead It fails at start Its console output: docker exec edumatcher-sim tail -50 /data/emo/<name>.log; and the Log Operator Console
ai-swarm dead, ai-swarm.log says a participant is missing The deployed configuration does not register AI001–AI100 (you deployed another one) Deploy s300-sim or a configuration with those participants
market-sim dead, log says no …/market_sim.yaml The deployed configuration came without a market model Put a market_sim.yaml next to your engine_config.yaml and deploy again
Value and news traders send nothing pm-market-sim is not running pm-opctl-cli list; see the row above
Unknown profile ai-sim emo-config.yaml in the data directory was written by an older release and replaces the built-in profiles Delete ./data-sim/emo-config.yaml (or add an ai-sim profile to it) and restart
Swarm logs cancel … never answered steadily, actions/s far below budget The machine is overloaded: the exchange cannot keep up Lower budget (Tuning the Traders); check docker stats
The GUIs show no history, Order Book Viewer empty The read-only API key does not match the deployed configuration With your own configuration, set PM_READONLY_API_KEY to its read-only key (pm-config-show -a)
./data-sim keeps growing Expected: trades are kept 7 days and the log 30 days, so it grows quickly for the first week, slowly until day 30, then levels off Running It for Weeks
After a restart the accelerated calendar went back in time EM_START applies at every start Remove EM_START after the first start (Accelerated Time)
Prices drift far from the values The market maker is not anchored, or there are too few value traders per symbol --anchor-sim, the composition, per_agent (Tuning the Traders)

FAQ

Can students see the true values? No. The values travel on the market model's own sockets, bound inside the container, and the API serves them to ADMIN keys only. Headlines are public; their impact on the values is not.

Can students lose money to the bots? Yes — that is the point. The AI traders are participants like the students, and the informed ones trade on better information. The P&L is play money.

Can I trade against the AI traders with my own program? Yes. Connect as one of TRADER01–TRADER10 through the API (port 8080) or the order gateway (5565), exactly as on any EduMatcher exchange; the Protocols and Clients book describes both.

Do the AI traders learn? No. Each follows its preset's fixed rules with its own random choices. What changes from day to day is the market — the values, the news, the other traders — not the rules.

Is a run repeatable? The model is seeded (seed in market_sim.yaml) and so are the traders (seed in swarm.yaml), but the order in which messages from a hundred traders reach the engine depends on timing, so two runs diverge within seconds. The statistics of a run — how far prices stray, how much each kind of trader makes — are repeatable; the exact prices are not.

How do I start over? Stop the stack, delete ./data-sim, start it.

How do I give the market a fresh set of values without losing the history? Stop the stack, delete ./data-sim/market_sim_state.json, start it: the model starts again from the engine's previous closes.

Why is there no trading at 09:00 on a Monday in January? Swedish public holidays — Epiphany, 6 January, for one — are closed days on the s300-sim calendar. Use your own configuration's locale.country and holidays settings to change the calendar.

Can I run it in the cloud? Yes; any machine with Docker and two cores will do. Mind the classroom security notes before you publish the ports.

Can I run two simulations side by side? Not with the bundled compose file: both would want the same ports. Copy it, change every host port and the project and container names, and use a different data directory.