qbuntuqbuntu
rejectedregime_dependent· equity· breakout· momentum· trend-following

Trend Following / Donchian Breakout (JP Growth Stocks)

slug: trend-following-jp-growth
performance summary
Sharpe (median)
-0.18
Max DD
-31.0%
Win rate
Alpha (ann.)
p-value
0.62
backtest period: 2022-02-012026-06-01
Sharpe across 768 grid runs:median -0.18best 0.49 (not representative)worst -1.03p25–p75 -0.34-0.04

Hypothesis

Donchian channel breakout: stocks breaking above N-day highs continue trending. LONG breakout stocks with configurable exit methods (hold, channel exit, trailing midline).

Why it didn't work

Across 768 grid combinations, median Sharpe=-0.18, best=0.49. Primary failure mode: regime_dependent.

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: -0.12
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation-0.12
Average monthly return correlation with other strategies (full period): 0.12
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.12
Best grid Sharpe ratio is 0.49 (p=0.31).
period 2022-02-01–2026-06-01; cost=5bps
sharpe_ratio0.49
Median Sharpe across 768 grid runs is -0.18.
Full grid of 768 parameter combinations.
sharpe_ratio-0.18
Median Sharpe in DOWN regime is -0.73 across 768 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-0.73
Median Sharpe in FLAT regime is -0.37 across 768 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.37
Median Sharpe in UP regime is 0.35 across 768 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.35

Runs (30)

runparamssharpeUPFLATDOWN
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0000
cost_bps: 5
n_stocks: 5
exit_method: "hold"
-0.31-0.12-0.28-1.83
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-growth-0001
cost_bps: 5
n_stocks: 5
exit_method: "hold"
-0.35-0.29-0.28-1.83
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-growth-0002
cost_bps: 10
n_stocks: 5
exit_method: "hold"
-0.39-0.21-0.36-1.95
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=10, regime_gate=True
r-trend-following-jp-growth-0003
cost_bps: 10
n_stocks: 5
exit_method: "hold"
-0.42-0.33-0.36-1.95
channel_days=20, holding_days=5, n_stocks=5, exit_method=channel_exit, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0004
cost_bps: 5
n_stocks: 5
exit_method: "channel_exit"
-0.31-0.12-0.28-1.83
channel_days=20, holding_days=5, n_stocks=5, exit_method=trailing_mid, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0008
cost_bps: 5
n_stocks: 5
exit_method: "trailing_mid"
-0.31-0.12-0.28-1.83
channel_days=20, holding_days=5, n_stocks=50, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0036
cost_bps: 5
n_stocks: 50
exit_method: "hold"
-0.47-0.12-0.48-1.67
channel_days=20, holding_days=5, n_stocks=50, exit_method=channel_exit, cost_bps=10, regime_gate=True
r-trend-following-jp-growth-0043
cost_bps: 10
n_stocks: 50
exit_method: "channel_exit"
-0.59+0.25-0.80-1.89
channel_days=20, holding_days=10, n_stocks=10, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0060
cost_bps: 5
n_stocks: 10
exit_method: "hold"
+0.49+1.63+0.01-0.60
channel_days=20, holding_days=10, n_stocks=20, exit_method=trailing_mid, cost_bps=5, regime_gate=True
r-trend-following-jp-growth-0081
cost_bps: 5
n_stocks: 20
exit_method: "trailing_mid"
-0.04+0.97-0.45+0.37
channel_days=20, holding_days=20, n_stocks=10, exit_method=trailing_mid, cost_bps=10, regime_gate=False
r-trend-following-jp-growth-0118
cost_bps: 10
n_stocks: 10
exit_method: "trailing_mid"
+0.07+0.60-0.02-2.44
channel_days=20, holding_days=60, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0144
cost_bps: 5
n_stocks: 5
exit_method: "hold"
-0.15-0.52-0.09+0.08
channel_days=20, holding_days=60, n_stocks=10, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0156
cost_bps: 5
n_stocks: 10
exit_method: "hold"
-0.27-1.40-0.18+0.25
channel_days=40, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-growth-0193
cost_bps: 5
n_stocks: 5
exit_method: "hold"
-0.61-1.48-0.30-0.99
channel_days=40, holding_days=5, n_stocks=50, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-growth-0230
cost_bps: 10
n_stocks: 50
exit_method: "hold"
-1.03-0.85-1.00-1.69
channel_days=40, holding_days=5, n_stocks=50, exit_method=hold, cost_bps=10, regime_gate=True
r-trend-following-jp-growth-0231
cost_bps: 10
n_stocks: 50
exit_method: "hold"
-0.74+0.21-1.00-1.69
channel_days=40, holding_days=10, n_stocks=20, exit_method=channel_exit, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0268
cost_bps: 5
n_stocks: 20
exit_method: "channel_exit"
+0.21+1.14-0.14+0.41
channel_days=40, holding_days=20, n_stocks=10, exit_method=channel_exit, cost_bps=5, regime_gate=True
r-trend-following-jp-growth-0305
cost_bps: 5
n_stocks: 10
exit_method: "channel_exit"
+0.08+0.83-0.15-0.96
channel_days=40, holding_days=60, n_stocks=5, exit_method=channel_exit, cost_bps=10, regime_gate=False
r-trend-following-jp-growth-0342
cost_bps: 10
n_stocks: 5
exit_method: "channel_exit"
+0.01-0.62+0.15+0.02
channel_days=40, holding_days=60, n_stocks=50, exit_method=channel_exit, cost_bps=10, regime_gate=True
r-trend-following-jp-growth-0379
cost_bps: 10
n_stocks: 50
exit_method: "channel_exit"
-0.32-0.37-0.27-2.64
channel_days=60, holding_days=5, n_stocks=20, exit_method=trailing_mid, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0416
cost_bps: 5
n_stocks: 20
exit_method: "trailing_mid"
-0.49-0.42-0.38-1.97
channel_days=60, holding_days=10, n_stocks=10, exit_method=trailing_mid, cost_bps=5, regime_gate=True
r-trend-following-jp-growth-0453
cost_bps: 5
n_stocks: 10
exit_method: "trailing_mid"
+0.03+1.25-0.73+1.02
channel_days=60, holding_days=20, n_stocks=5, exit_method=trailing_mid, cost_bps=10, regime_gate=False
r-trend-following-jp-growth-0490
cost_bps: 10
n_stocks: 5
exit_method: "trailing_mid"
-0.26+1.01-0.74-1.44
channel_days=60, holding_days=20, n_stocks=50, exit_method=trailing_mid, cost_bps=10, regime_gate=True
r-trend-following-jp-growth-0527
cost_bps: 10
n_stocks: 50
exit_method: "trailing_mid"
-0.29+0.36-0.52-1.90
channel_days=60, holding_days=60, n_stocks=50, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0564
cost_bps: 5
n_stocks: 50
exit_method: "hold"
+0.15+0.41+0.12-0.50
channel_days=120, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0576
cost_bps: 5
n_stocks: 5
exit_method: "hold"
-0.14+0.85-0.81-0.20
channel_days=120, holding_days=5, n_stocks=20, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-growth-0602
cost_bps: 10
n_stocks: 20
exit_method: "hold"
-0.68+0.14-0.85-2.07
channel_days=120, holding_days=10, n_stocks=10, exit_method=hold, cost_bps=10, regime_gate=True
r-trend-following-jp-growth-0639
cost_bps: 10
n_stocks: 10
exit_method: "hold"
-0.15+0.87-0.79+0.32
channel_days=120, holding_days=20, n_stocks=5, exit_method=channel_exit, cost_bps=5, regime_gate=False
r-trend-following-jp-growth-0676
cost_bps: 5
n_stocks: 5
exit_method: "channel_exit"
-0.22+0.46-0.60+0.53
channel_days=120, holding_days=20, n_stocks=50, exit_method=channel_exit, cost_bps=5, regime_gate=True
r-trend-following-jp-growth-0713
cost_bps: 5
n_stocks: 50
exit_method: "channel_exit"
+0.04+0.36-0.01-1.78

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-28T01:10:02

Related strategies