← All graded classics

Turtle Trading System (Donchian breakout)

The most famous experiment in trading history: 1983 rules, graded on assets that didn't exist yet.

F

The claim

Richard Dennis bet William Eckhardt that trading could be taught to anyone. His 'Turtles' — recruited by newspaper ad, trained for two weeks — traded a fully mechanical Donchian breakout: buy a 20-day high, sell a 20-day low, risk a fixed fraction per trade, cut at 2N. Several went on to run funds. It is the origin story of systematic trend following.

Where it comes from

Richard Dennis & William Eckhardt, 1983–84. The exact rules were published by former Turtles (Curtis Faith's 'Way of the Turtle' and the free 'Original Turtle Trading Rules' PDF), making this one of the few legendary systems with a canonical, checkable spec.

The exact rule we graded

Long when price breaks above the 20-bar high, short when it breaks below the 20-bar low (System 1), on 1-hour candles. Exits: 2-ATR catastrophic stop (the Turtles' 2N rule), 2-ATR trailing stop.

The honest verdict

FAILS the gate
Net expectancy
-8.0bp
OOS trades
7,054
Win rate
35.9%
Reward:risk
1.63
  • OOS net expectancy > 0
  • Clears the cost hurdle
  • Robust, not lucky
  • Survivable drawdown
  • Not overfit
Per-asset OOS expectancy
ETH
-3.1bp
DOGE
-3.4bp
AVAX
-3.8bp
LINK
-4.2bp
BNB
-9.0bp
XRP
-9.7bp
BTC
-10.3bp
SOL
-20.1bp
Permanent verification record →Verified — run on our engine + data

Live forward test

since 2026-07-11 — win or lose

The backtest above is history. Since publication, this exact spec also runs in our nightly forward-test harness (the same one behind /forward-tests): only trades entered after publication count, open positions are never force-closed, and the record publishes either way.

No closed forward trades recorded yet — the record accrues nightly as trades complete their full exit windows.

Honest port notes

  • The full system has parts our exit engine can't express, all disclosed: the 10-bar-opposite-extreme exit is approximated with a 2-ATR trail, pyramiding (up to 4 units added at ½N spacing), N-based unit sizing, and System 1's skip-after-a-winning-breakout filter are dropped. Our stop ATR is 14-period; the Turtles' N was 20-day.
  • System 2 (55-bar breakout, the Turtles' slower variant) graded F at −3.3bp net across 4,009 out-of-sample trades — less bad than System 1's −8.0bp, consistent with the library-wide pattern that slower trend signals decay less at the 1-hour clock. Public verify id: 858b5117-da9e-4450-a0c0-e15696663437.
  • The context grade is the story. The literal daily-bar System 1 (BTC/ETH/SOL) passes FOUR of five gates — +52.0bp net out-of-sample across 111 trades, clears the fee hurdle, positive on 2 of 3 assets, 7.8% max drawdown at 1% sizing. It fails only the overfit gate: +259bp per trade in the training window decayed to +56bp gross out-of-sample. No classic in this library has come closer to passing. Forty-year-old rules, still net-positive out-of-sample on an asset class that didn't exist when they were written — and still not deployable by our gates, because a 4.6× train→test decay is exactly what the overfit gate exists to catch. We even ran our Strategy Doctor on it: zero repair candidates — a two-condition system has nothing left to simplify, and overfit is the one verdict honest tuning can't fix. Public verify id: c83c794b-ab45-4fc4-91ea-fec37b225886.
The exact spec, as graded (JSON)
{
  "name": "Turtle Trading System 1 (20-bar breakout)",
  "universe": [
    "BTC/USDT:USDT",
    "ETH/USDT:USDT",
    "SOL/USDT:USDT",
    "BNB/USDT:USDT",
    "XRP/USDT:USDT",
    "DOGE/USDT:USDT",
    "LINK/USDT:USDT",
    "AVAX/USDT:USDT"
  ],
  "risk": {
    "risk_per_trade_pct": 1,
    "leverage_cap": 3,
    "max_daily_loss_pct": 5,
    "max_dd_halt_pct": 25
  },
  "sleeves": [
    {
      "name": "main",
      "timeframe": "1h",
      "entry": {
        "type": "rule",
        "logic": "all",
        "long": [
          {
            "indicator": "price",
            "period": 1,
            "op": ">",
            "vs_indicator": "donchian_hi",
            "vs_period": 20
          }
        ],
        "short": [
          {
            "indicator": "price",
            "period": 1,
            "op": "<",
            "vs_indicator": "donchian_lo",
            "vs_period": 20
          }
        ]
      },
      "exit": {
        "cat_stop_atr": 2,
        "trail_atr": 2
      }
    }
  ]
}

Every strategy graded on identical terms: 1-hour candles, 8 liquid USDT perpetuals (BTC, ETH, SOL, BNB, XRP, DOGE, LINK, AVAX), ~6 years of data with a chronological train/test split, real cost hurdle, 1% risk-per-trade sizing, 3x leverage cap. All numbers are out-of-sample (test window only).

Run YOUR version of this strategy
Different thresholds, timeframe, or filter? Paste your exact rules or code and see if your variant survives the same gates.
Grade it free →

A Grade is a historical, out-of-sample statistical measurement — not investment advice, a prediction, or a guarantee. Most strategies fail; a passing grade can stop working as markets change. Risk disclosure