What this actually is.
This site runs that thought experiment for real, in public, forever.
The setup
One hundred named monkeys, one hundred distinct trading strategies. Each monkey is assigned a strategy family at birth from a weighted slate — buy-and-hold (lazy, signature), trend (breakout, trend_follow), active speculation (momentum, contrarian, mean_reversion), or deliberate-chaos (top_chaser, gap_fade, news_lag, coin_flip) — plus a long/short lean and a deterministic set of jittered parameters (lookback windows, stops, sizing). No two monkeys ever make the same trade by accident: the slate is shuffled once and locked, and within a strategy family each monkey's per-monkey parameters give them a different view of the market.
- 100 monkeys, identified at birth, never re-rolled
- 100 distinct trading strategies — every monkey runs a unique configuration; the cohort spans from "buy one ticker and hold forever" to "flip a coin every five minutes"
- 100 of the biggest US stocks, refreshed each round from live bid/ask quotes
- One round every minute, plus extra rounds visitors can trigger via the button
- Long and short — most monkeys are assigned a lean at birth; some strategies override (signature is always long, coin_flip flips per trade, gap_fade derives side from the gap). Shorts pay an annualised borrow fee for time held.
- $10,000 starting capital per monkey, with per-strategy position sizing — high-conviction theses (signature, lazy) commit more, fast-rotation strategies (top_chaser, gap_fade) commit less. Equity can go negative; bankrupt monkeys keep their hole on display.
- Every pick recorded forever in SQLite — nothing is forgotten
How a monkey "wins"
Each round, every monkey's pnl is the simple % return of its pick over that one-minute window. We track three things per monkey:
- Cumulative log-return — compounds correctly over time, plotted on the leaderboard as cumulative %
- Mean / σ — a Sharpe-flavored consistency score (no risk-free rate; just μ/σ of per-round returns)
- Beat-the-market rate — % of rounds where the monkey's pick outperformed the equal-weight market baseline that round
What you should expect to see
The slate is biased toward survival: roughly 40% buy-and-hold, 20% trend/breakout, 25% active speculation, 15% built to lose. So after enough rounds, you should see a cluster of patient strategies (signature, lazy, trend_follow) creeping ahead of the equal-weight market line, with the spread-eating chaos cohort (coin_flip, top_chaser, gap_fade) bleeding into the red. Malkiel's claim was that random picks beat experts; we're testing the related but sharper claim that almost any patient strategy beats most active ones after costs. Watch the leaderboard and filter by strategy to see which families are surviving.
What it isn't
- Investment advice. Obviously.
- A trading strategy. The monkeys pay no commissions and slippage and live in a frictionless paper world. Real markets eat random pickers alive.
- A backtest. Everything you see was generated live, in real time, against real prices, with no peeking ahead.
The stack
Vanilla JS on Canvas in the browser. Node.js + SQLite (better-sqlite3) on the server. Quotes from Yahoo Finance's batch spark endpoint (with Stooq's batch CSV as a fallback). Server-Sent Events stream new rounds to every connected client at the same instant — no polling, no WebSocket complexity. All hosted on the same VPS as the rest of ximg.app.
Source on GitHub. If you spot a bug or want to suggest a metric, the contact is on the main ximg.app site.