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

Trend Following / Donchian Breakout (JP All Stocks)

slug: trend-following-jp-all
performance summary
Sharpe (median)
+0.13
Max DD
-22.1%
Win rate
Alpha (ann.)
p-value
0.64
backtest period: 2022-02-012026-02-02
Sharpe across 384 grid runs:median 0.13best 0.82 (not representative)worst -0.50p25–p75 -0.040.28

Hypothesis

Donchian channel breakout: stocks breaking above N-day highs continue trending. Testing on the full Japanese stock universe.

Why it didn't work

Across 384 grid combinations, median Sharpe=0.13, best=0.82. Primary failure mode: regime_dependent.

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: -0.17
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation-0.17
Average monthly return correlation with other strategies (full period): 0.02
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.02
Best grid Sharpe ratio is 0.82 (p=0.1).
period 2022-02-01–2026-02-02; cost=5bps
sharpe_ratio0.82
Median Sharpe across 384 grid runs is 0.13.
Full grid of 384 parameter combinations.
sharpe_ratio0.13
Median Sharpe in DOWN regime is 1.20 across 384 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio1.20
Median Sharpe in FLAT regime is -0.05 across 384 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.05
Median Sharpe in UP regime is 0.63 across 384 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.63

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-all-0000
cost_bps: 5
n_stocks: 5
exit_method: "hold"
+0.18+0.96-0.05+1.75
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-all-0001
cost_bps: 5
n_stocks: 5
exit_method: "hold"
+0.08+0.29-0.05+1.75
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0002
cost_bps: 10
n_stocks: 5
exit_method: "hold"
+0.03+0.76-0.19+1.50
channel_days=20, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=10, regime_gate=True
r-trend-following-jp-all-0003
cost_bps: 10
n_stocks: 5
exit_method: "hold"
-0.06+0.20-0.19+1.50
channel_days=20, holding_days=5, n_stocks=5, exit_method=channel_exit, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0004
cost_bps: 5
n_stocks: 5
exit_method: "channel_exit"
+0.18+0.96-0.05+1.75
channel_days=20, holding_days=5, n_stocks=5, exit_method=trailing_mid, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0008
cost_bps: 5
n_stocks: 5
exit_method: "trailing_mid"
+0.18+0.96-0.05+1.75
channel_days=20, holding_days=5, n_stocks=10, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0012
cost_bps: 5
n_stocks: 10
exit_method: "hold"
+0.52+1.01+0.35+0.10
channel_days=20, holding_days=10, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0048
cost_bps: 5
n_stocks: 5
exit_method: "hold"
+0.35+1.88+0.04+1.21
channel_days=20, holding_days=10, n_stocks=10, exit_method=channel_exit, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0066
cost_bps: 10
n_stocks: 10
exit_method: "channel_exit"
+0.43+1.07+0.33-0.13
channel_days=20, holding_days=20, n_stocks=10, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0108
cost_bps: 5
n_stocks: 10
exit_method: "hold"
+0.01+1.80-0.62+0.56
channel_days=20, holding_days=60, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0144
cost_bps: 5
n_stocks: 5
exit_method: "hold"
+0.30+1.49-0.22+5.07
channel_days=20, holding_days=60, n_stocks=5, exit_method=channel_exit, cost_bps=10, regime_gate=True
r-trend-following-jp-all-0151
cost_bps: 10
n_stocks: 5
exit_method: "channel_exit"
+0.19+1.12-0.25+5.03
channel_days=40, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-all-0193
cost_bps: 5
n_stocks: 5
exit_method: "hold"
+0.21+0.24+0.19+0.40
channel_days=40, holding_days=5, n_stocks=10, exit_method=channel_exit, cost_bps=10, regime_gate=True
r-trend-following-jp-all-0211
cost_bps: 10
n_stocks: 10
exit_method: "channel_exit"
+0.33+0.54+0.17+0.89
channel_days=40, holding_days=10, n_stocks=10, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-all-0253
cost_bps: 5
n_stocks: 10
exit_method: "hold"
+0.45+0.65+0.29+1.28
channel_days=40, holding_days=20, n_stocks=5, exit_method=channel_exit, cost_bps=10, regime_gate=True
r-trend-following-jp-all-0295
cost_bps: 10
n_stocks: 5
exit_method: "channel_exit"
-0.07+1.35-0.54+1.89
channel_days=40, holding_days=60, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-all-0337
cost_bps: 5
n_stocks: 5
exit_method: "hold"
+0.15+0.83-0.07+1.15
channel_days=40, holding_days=60, n_stocks=10, exit_method=channel_exit, cost_bps=10, regime_gate=True
r-trend-following-jp-all-0355
cost_bps: 10
n_stocks: 10
exit_method: "channel_exit"
+0.12+0.60-0.05+0.72
channel_days=60, holding_days=5, n_stocks=10, exit_method=hold, cost_bps=5, regime_gate=True
r-trend-following-jp-all-0397
cost_bps: 5
n_stocks: 10
exit_method: "hold"
+0.82+0.94+0.78+0.48
channel_days=60, holding_days=5, n_stocks=10, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0398
cost_bps: 10
n_stocks: 10
exit_method: "hold"
+0.35-0.26+0.62+0.34
channel_days=60, holding_days=10, n_stocks=5, exit_method=trailing_mid, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0440
cost_bps: 5
n_stocks: 5
exit_method: "trailing_mid"
+0.30+0.37+0.16+1.44
channel_days=60, holding_days=20, n_stocks=5, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0482
cost_bps: 10
n_stocks: 5
exit_method: "hold"
+0.08+1.39-0.46+4.56
channel_days=60, holding_days=20, n_stocks=10, exit_method=trailing_mid, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0500
cost_bps: 5
n_stocks: 10
exit_method: "trailing_mid"
+0.39+1.46-0.13+2.70
channel_days=60, holding_days=60, n_stocks=10, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0542
cost_bps: 10
n_stocks: 10
exit_method: "hold"
+0.08+0.65-0.05-0.03
channel_days=120, holding_days=5, n_stocks=5, exit_method=hold, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0576
cost_bps: 5
n_stocks: 5
exit_method: "hold"
-0.19-0.97+0.02-0.15
channel_days=120, holding_days=5, n_stocks=5, exit_method=trailing_mid, cost_bps=5, regime_gate=True
r-trend-following-jp-all-0585
cost_bps: 5
n_stocks: 5
exit_method: "trailing_mid"
-0.06-0.33+0.02-0.15
channel_days=120, holding_days=5, n_stocks=10, exit_method=hold, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0590
cost_bps: 10
n_stocks: 10
exit_method: "hold"
-0.50-1.95+0.11-1.05
channel_days=120, holding_days=10, n_stocks=5, exit_method=channel_exit, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0628
cost_bps: 5
n_stocks: 5
exit_method: "channel_exit"
-0.04-0.48-0.07+1.49
channel_days=120, holding_days=10, n_stocks=10, exit_method=trailing_mid, cost_bps=10, regime_gate=False
r-trend-following-jp-all-0646
cost_bps: 10
n_stocks: 10
exit_method: "trailing_mid"
-0.34-1.18-0.16+1.49
channel_days=120, holding_days=20, n_stocks=10, exit_method=channel_exit, cost_bps=5, regime_gate=False
r-trend-following-jp-all-0688
cost_bps: 5
n_stocks: 10
exit_method: "channel_exit"
-0.09-0.02-0.33+3.04

Target universe

Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-28T01:10:02

Related strategies