Inspiration

Most "stock market" games are either dry educational tools or luck-driven casino reskins. We wanted the actual feeling of running money — the morning briefing, the conviction call, the discipline of knowing when to take profits and when to let a position run — distilled into sessions you can play on a phone in two minutes.

The design-round bet was fairness, and it won: give every player the same puzzle, then compare results. Investing games are normally impossible to compare — everyone trades different things at different times, so "who is best" means nothing. Borrowing the insight behind Wordle, we proposed a fixed market where the leaderboard measures exactly one thing: the quality of your decisions.

This round we had to build it. Building it is how we found out which parts of that design were right, and which had never been tested by a controller.

What it does

You run a $10,000,000 fund through one quarter — 64 trading sessions, 2 July to 1 October — across 102 companies and 6,528 daily prices drawn from real market history.

Each session your desk brings you ideas. Ava, your analyst, surfaces every one of the 300 authored opportunities. Ral, head of risk, adds a counterpoint to each — weighing size and discipline rather than second-guessing the call. Morgan runs the desk and presents your awards. An anchor reads a 13-segment news bulletin in recorded voice audio.

You can play this in two minutes or study it for an hour, and both are real ways to play. Take Ava's suggested size and move on, or open the evidence and decide for yourself. The desk shows its work: 50- and 200-session moving averages, RSI with a plain-English reading, the setup graded against its own history, and three lines that matter more than any of them — why now, what confirms it, and what breaks it. That last is an explicit invalidation level, not a hedge.

The analysts' plans are deliberately imperfect — good, not perfect. The good calls and the bad ones arrive sounding exactly alike, which is why the evidence is there to check them against. This is judgment under uncertainty, not a guessing game and not an answer key.

Every trade is yours. No order is ever placed for you, and an idea you leave open is passed. What you can do is leave instructions: at the step where you size a trade, you attach an exit plan — a target, a stop, an exit date — pre-filled from Ava's plan and editable to your own numbers. Those fill while you are away, against the session's close, never a price you could not have seen.

Then you live with it. Positions come back for review still carrying the thesis that opened them, so an exit is connected to its entry instead of arriving as a generic prompt. You hold, trim or close through the same ticket you bought with.

At the close you are ranked among six funds across twelve dimensions of skill, with a daily fund-value leaderboard and 17 awards from bronze to legendary.

Runs entirely offline, single-player, in portrait, on a phone.

How we built it

The defining constraint from the design round still defines everything: sandboxed scripts, no external network access, so a live market feed is impossible. Our answer was an offline pipeline that turns real market history into a fair, anonymised, self-contained simulation. This round proved it end to end and shipped its output.

  • Real market data — roughly 2,700 trading days each across 100+ companies, ingested via EODHD into a PostgreSQL database of 30+ tables.
  • Deterministic anonymisation (salted SHA-256) turns every real company into a consistent fictional one, preserving real price behaviour and event timing while removing every real identity.
  • A two-agent news system: a curator scores real articles 0–100 on financial materiality and keeps the few that genuinely moved markets; a rewriter anonymises every entity and condenses each into a punchy blurb. Both on Google Gemini via the Vercel AI SDK.
  • Text-to-speech (ElevenLabs) voices the bulletin, so the desk's broadcast is a real recording.
  • An opportunity engine scores setups on what actually happened next in real history, then deliberately adds analyst error so the game rewards judgment, not omniscience.
  • Everything ships as versioned, hash-verified data packs — which is what makes seeded competition reproducible.

The prototype itself is TypeScript: a deterministic simulation engine, a beat-based event system, and persistence that survives a reload mid-session. It ships as one unminified index.html, one vendor file, and 175 recorded audio clips — 19 MB, zero network requests.

Challenges we ran into

The daily decision came apart in the hand. On paper, "review the day's ideas, take or pass, manage what you hold" reads perfectly well. In practice ideas ended the moment you touched them, everything you owned in one company blurred into a single line, and exit prompts arrived with no visible connection to whatever had made you enter. You could watch the number move without understanding what you were managing. We rebuilt the mechanic and kept the premise.

Time was the dimension we never designed. The loop runs on four clocks — how long an idea stays open, how long a trade runs, how often the desk asks about a position, and how the player moves through the calendar. Each was sensible alone. Measured together, the week-long jump we shipped skipped past 41% of the 300 ideas before you ever saw them. So we built the mechanic the loop was missing: exit plans you place yourself, which fill while you are away. Fast-forward is now a single horizon, and the Advance sheet tells you what the span contains before you commit.

Anonymisation at scale. Keeping every person, product and place consistently fictional across 100+ companies and thousands of news items needed an entity map and an unknown-entity flagging pass.

Accomplishments that we're proud of

The fairness bet holds in a real build. Same scenario, same opportunity schedule, same evidence for every player — enforced by a hash the game checks before it will resume a run.

The desk shows its work, and the work is real. All 300 opportunities carry indicator readings, an explicit invalidation level, a suggested size and a second analyst's view on risk, from sixteen distinct signal generators.

Skill is measured, not asserted. Top-quartile evidence substantially outperforms the bottom. Random play, take-everything play and follow-the-desk all run as real strategies against the real pack and get compared — because "judgment matters" should be falsifiable.

Two lines of test per line of source, and 80 mutants under test. Not coverage theatre: the suite is checked by breaking the product on purpose and confirming the tests notice.

What we learned

A design that reads well can still be underspecified. Our design round described the daily decision convincingly enough to win, and it was still missing the thing that makes the loop cohere: an idea has to persist through entry, position, review and exit, or the player cannot connect a consequence to the decision that caused it. No further document would have taught us that.

The advisor cannot become an answer key. The moment a recommendation is reliably correct, the game becomes "follow the biggest number". Analyst imperfection had to be deterministic and specific to each opportunity's type and risk role — not noise, but a real reason to check the evidence yourself.

A player is only present on the days they land on. Everything between two taps of "advance" is invisible, and a fund simulator is mostly the days in between. Real trading solved this long ago: you leave a target, a stop and a date. Our analysts already wrote all three into every plan; the engine just never let the player place them.

"Easy to play" and "understandable" are different bars. Taking the desk's suggested size in one tap makes the game playable with no finance background. It does not make it understandable. A moving-average pullback needs a paragraph; "this company reports Thursday, and analysts expect $1.20 a share" needs nothing.

What's next for Stock Market Tycoon

Office and analyst progression. As your fund grows you hire better analysts — which directly improves the opportunities you receive — and your office expands to match, making growth visible in the world itself.

Put the analysts back in the room. Ava, Ral and Morgan already speak: every opportunity carries Ava's plan and Ral's counterpoint, and Morgan presents your awards. In this prototype they are voices in an interface rather than colleagues at desks. We narrowed to the loop this round; putting them back is the single largest engagement gain available to us, and much of the work already exists.

Beyond that: an educational layer, additional instruments, an intraday mode, an investor character for narrative stakes, and a high-rise floor that is alive around you while you work.

Built With

  • axe-core
  • claude
  • claude-code
  • elevenlabs
  • eodhd
  • fast-check
  • html5-audio
  • localstorage
  • meta-horizon-worlds
  • mutation-testing
  • node.js
  • playwright
  • postcss
  • react
  • sha-256
  • tailwindcss
  • testing-library
  • typescript
  • vite
  • vitest
Share this project:

Updates

Submission history