← All graded classics

Chaikin Money Flow

Follow the volume: accumulation means up, distribution means down.

F

The claim

CMF blends price position within the bar with volume. Sustained readings above +0.10 signal accumulation (buy); below −0.10, distribution (sell). The classic 'smart money' volume read.

Where it comes from

Marc Chaikin developed CMF in the 1980s building on Joe Granville's on-balance-volume ideas. The ±0.10 thresholds are the common textbook setting.

The exact rule we graded

Long while CMF(20) > +0.10, short while CMF(20) < −0.10, on 1-hour candles. Exits: 3% stop loss, 72-bar time exit.

The honest verdict

FAILS the gate
Net expectancy
-5.4bp
OOS trades
3,615
Win rate
33.3%
Reward:risk
1.95
  • OOS net expectancy > 0
  • Clears the cost hurdle
  • Robust, not lucky
  • Survivable drawdown
  • Not overfit
Per-asset OOS expectancy
ETH
+17.7bp
BNB
+10.4bp
DOGE
+2.8bp
XRP
-0.1bp
SOL
-8.1bp
AVAX
-11.8bp
BTC
-12.1bp
LINK
-35.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

  • Perp volume on crypto venues includes plenty of wash and incentive flow — a known handicap for volume indicators that the grade honestly absorbs.
The exact spec, as graded (JSON)
{
  "name": "Chaikin Money Flow",
  "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": "cmf",
            "period": 20,
            "op": ">",
            "value": 0.1
          }
        ],
        "short": [
          {
            "indicator": "cmf",
            "period": 20,
            "op": "<",
            "value": -0.1
          }
        ]
      },
      "exit": {
        "stop_loss_pct": 3,
        "time_exit_bars": 72
      }
    }
  ]
}

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