What this actually is.

A live experiment running Malkiel's most-quoted line.
A blindfolded monkey throwing darts at a newspaper's financial pages could select a portfolio that would do just as well as one carefully selected by experts. — Burton Malkiel, A Random Walk Down Wall Street, 1973

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.

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:

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

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.