What this actually is.
This site runs that thought experiment for real, in public, forever.
The setup — the day-trader era
One hundred named monkeys, and every one of them is a day trader trying to get rich quick. The first era of this experiment (a mixed slate from buy-and-hold to coin-flipping) converged on an honest but boring answer: the monkeys that traded least lost least, and the best trade was no trade. Era two deletes that escape hatch. Each monkey is assigned an intraday strategy family at birth — scalping, opening-range breakouts, spike chasing, mean-fading, gap trading, top-fading, or one daily max-leverage YOLO — plus a heritable temperament: how much leverage it runs (1–4x), whether it revenge-sizes after a loss, how greedy it gets after a win, which hours of the session it works, and how many trades a day it allows itself.
- 100 monkeys, identified at birth, never re-rolled
- All day traders — every position opens and closes inside one session. Whatever is still held in the final minutes is force-closed at the bell.
- 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 carry a heritable lean; gap traders take their side from the gap, faders and mean-reverters from which side of the signal the price sits. Shorts pay an annualised borrow fee for time held (intraday: pennies).
- Leverage, for real — notional is capital × size × leverage. When account equity falls below maintenance on a position, the position is force-closed at the bid/ask: a margin call, paid at market, no discount. A monkey whose cash hits zero dies on the spot, mid-session — its seat stands empty until the evening cycle breeds a replacement.
- $10,000 starting capital per monkey. Equity is cash plus the paper value of anything still open, marked at mid.
- 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
Carnage, mostly — and then the interesting question. Every fill crosses the bid/ask, so a population that trades all day pays a real toll all day; era one established that the toll wins. What era two asks is what selection does about it: the worst 10% are culled daily, busted accounts die instantly, and the survivors breed. Do tilt genes get bred out? Does leverage drift down? Does evolution, given nothing but gamblers to work with, quietly reinvent risk management — tight stops, few trades, small size — or does it just crown the luckiest coin? The 20-seat control cohort (plus the protected mascot) never dies and never breeds, so the genealogy page can always show how much of the evolved cohort's performance is selection rather than skill. Watch the leaderboard, and check the obituaries — margin-called mid-session is a cause of death now.
What it isn't
- Investment advice. Obviously.
- A trading strategy. The monkeys pay the bid/ask spread and short borrow, but no commissions, no market impact, and their fills never move the tape. Real markets are meaner than this — and this is already a bloodbath.
- 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.