Crypto Research Labs
EN ▾
GitHub

← All hypotheses

H-004: Best daily trend rule, long/short futures, beats buy-and-hold

Weak  Family: trend · Status: weak

Do long/short trend rules on crypto futures beat holding? 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.560.50+16.7%+13.1%-62.6%-66.9%100%0.080yesno
ETHUSDToos (2022-01-01 → 2026-10-13)DC20-0.000.22-21.3%-7.8%-87.1%-74.0%100%0.399nono
SOLUSDToos (2022-01-01 → 2026-10-13)TSMOM1800.380.36-7.8%-9.2%-86.2%-94.6%100%0.180yesno

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

Same as H-003 with native shorts on USD-M futures (taker 0.05%).

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_short
fee: 0.0005
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