Crypto Research Labs
EN ▾
GitHub

← All hypotheses

H-003: Best daily trend rule (chosen 2018-2021) beats buy-and-hold out of sample, spot

Weak  Family: trend · Status: weak

Do trend-following rules beat buy-and-hold in crypto? The idea did a bit better than simply buying and holding, but not by enough to rule out luck. Treat it as unproven.

Result

significant after Bonferroni (p < 0.0167) on 0/3 assets (need 2); beats buy-and-hold on 2/3

Sharpe: return per unit of risk (higher is better). CAGR: average yearly growth. Max drawdown: worst fall from a peak. p-value: chance the result is luck (lower is better). “Hold” columns are buy-and-hold for the same asset and days. Glossary

AssetPeriodRule (chosen in-sample)SharpeHold SharpeCAGRHold CAGRMax drawdownHold drawdownIn marketp-valueBeats holdCounts as win
BTCUSDToos (2022-01-01 → 2026-10-13)SMA500.770.50+22.2%+13.1%-50.6%-66.9%52%0.150yesno
ETHUSDToos (2022-01-01 → 2026-10-13)DC200.170.22-1.0%-7.8%-52.5%-74.0%37%0.401nono
SOLUSDToos (2022-01-01 → 2026-10-13)DC550.410.36+8.5%-9.2%-63.4%-94.6%31%0.289yesno

Equity curves

Growth of 1 unit, log scale, fees included. Only days on which the rule is fully defined are counted.

Why it might work

Daily trend following trades a few times a month, so fees become a small fraction of the move. Eleven classic rules; selection strictly in-sample.

Verdict history

Pre-registered specification

kind: rule_search
candidates:
  SMA20:
    type: price_above_sma
    window: 20
  SMA50:
    type: price_above_sma
    window: 50
  SMA100:
    type: price_above_sma
    window: 100
  SMA200:
    type: price_above_sma
    window: 200
  SMA20/50:
    type: sma_cross
    fast: 20
    slow: 50
  SMA50/200:
    type: sma_cross
    fast: 50
    slow: 200
  TSMOM30:
    type: tsmom
    lookback: 30
  TSMOM90:
    type: tsmom
    lookback: 90
  TSMOM180:
    type: tsmom
    lookback: 180
  DC20:
    type: donchian
    entry: 20
  DC55:
    type: donchian
    entry: 55
mode: long_flat
fee: 0.001
universe:
- BTCUSDT
- ETHUSDT
- SOLUSDT
in_sample:
  start: '2018-01-01'
  end: '2021-12-31'
out_of_sample:
  start: '2022-01-01'
significance:
  method: bootstrap
  n: 400
  alpha_family: 0.05
criterion:
  min_strict_wins: 2