qbuntuqbuntu
rejectedregime_dependent· equity· gap· intraday· mean-reversion

ギャップ・リバーサル(東証グロース)のバックテスト

Gap Reversal (JP Growth Stocks)

slug: gap-reversal-short-jp-growth

東証グロース(約495銘柄)でギャップ・リバーサルをバックテストした。1,728通りの中央値 Sharpe は -0.22。p-value は 0.30。Max DD は -17.8%。期間は 2022-01-04〜2026-09-17。最良 Sharpe +2.74 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。上昇・横ばい・下落で結果が割れ、中央値としては安定しない。

何を検証したか

ギャップ・リバーサルは、窓を開けたあとにその隙間が埋まる方向へ取る短期の逆張りです。寄り付きのギャップは目立ちますが、取引コストを入れた中央値で残らなければ、見た目の反転は取れていません。最良 Sharpe が大きくても、中央値がマイナスなら判定は rejected のままです。

成績の中央値

Sharpe(中央値)
-0.22
Max DD
-17.8%
勝率
—
Alpha(年率)
—
p-value
0.30
期間: 2022-01-04 → 2026-09-17
1728通りの Sharpe:中央値 -0.22最良 2.74 (代表値ではない)最悪 -1.82p25–p75 -0.59–0.24

仮説

原文は英語。

Overnight gaps in Japanese Growth stocks tend to reverse within the same or next few trading days. Shorting positive gaps and buying negative gaps captures this mean-reversion effect.

採用しなかった理由

Across 1728 grid combinations, median Sharpe=-0.22, best=2.74. Primary failure mode: regime_dependent.

検証ファクト (5)

Best grid Sharpe ratio is 2.74 (p=3.2e-09).
period 2022-01-04–2026-09-17; cost=3bps; side=SHORT
sharpe_ratio2.74
Median Sharpe across 1728 grid runs is -0.22.
Full grid of 1728 parameter combinations.
sharpe_ratio-0.22
Median Sharpe in DOWN regime is 0.33 across 1728 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.33
Median Sharpe in FLAT regime is 0.08 across 1728 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.08
Median Sharpe in UP regime is -1.93 across 1728 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-1.93

検証ラン (30)

runparamssharpeUPFLATDOWN
top_n=10, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0000
side: "SHORT"
top_n: 10
cost_bps: 3
+2.45+1.58+2.02+0.18
top_n=10, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=5
r-gap-reversal-short-jp-growth-0001
side: "SHORT"
top_n: 10
cost_bps: 5
+2.32+1.49+1.93+0.08
top_n=10, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=10
r-gap-reversal-short-jp-growth-0002
side: "SHORT"
top_n: 10
cost_bps: 10
+2.00+1.26+1.71-0.17
top_n=10, min_gap_size=0.03, hold_days=1, side=BOTH, cost_bps=3
r-gap-reversal-short-jp-growth-0006
side: "BOTH"
top_n: 10
cost_bps: 3
+1.63+0.67+0.95+1.20
top_n=10, min_gap_size=0.03, hold_days=1, regime_gate=nikkei-sma20, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0009
side: "SHORT"
top_n: 10
cost_bps: 3
+2.08—+2.02+0.18
top_n=10, min_gap_size=0.03, hold_days=1, regime_gate=nikkei-sma60, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0018
side: "SHORT"
top_n: 10
cost_bps: 3
+2.08+3.75+2.00+0.18
top_n=10, min_gap_size=0.03, hold_days=5, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0081
side: "SHORT"
top_n: 10
cost_bps: 3
+0.41+0.06+0.75-2.04
top_n=10, min_gap_size=0.03, hold_days=5, regime_gate=nikkei-sma20, side=SHORT, cost_bps=5
r-gap-reversal-short-jp-growth-0091
side: "SHORT"
top_n: 10
cost_bps: 5
+0.42—+0.71-2.07
top_n=10, min_gap_size=0.05, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0108
side: "SHORT"
top_n: 10
cost_bps: 3
+2.74+2.16+3.12+1.32
top_n=10, min_gap_size=0.05, hold_days=3, regime_gate=nikkei-sma20, side=BOTH, cost_bps=3
r-gap-reversal-short-jp-growth-0177
side: "BOTH"
top_n: 10
cost_bps: 3
-0.66-4.73+0.28-2.59
top_n=10, min_gap_size=0.07, hold_days=2, regime_gate=nikkei-sma60, side=SHORT, cost_bps=5
r-gap-reversal-short-jp-growth-0262
side: "SHORT"
top_n: 10
cost_bps: 5
+0.19+2.85+0.32-0.79
top_n=10, min_gap_size=0.1, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0324
side: "SHORT"
top_n: 10
cost_bps: 3
+2.50+3.68+4.62+3.63
top_n=10, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma60, side=BOTH, cost_bps=3
r-gap-reversal-short-jp-growth-0348
side: "BOTH"
top_n: 10
cost_bps: 3
+2.07+1.54+3.49+2.55
top_n=10, min_gap_size=0.1, hold_days=3, side=LONG, cost_bps=10
r-gap-reversal-short-jp-growth-0383
side: "LONG"
top_n: 10
cost_bps: 10
-1.82-8.14-3.09+1.91
top_n=20, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=10
r-gap-reversal-short-jp-growth-0434
side: "SHORT"
top_n: 20
cost_bps: 10
+1.83+1.28+1.61-0.43
top_n=20, min_gap_size=0.03, hold_days=5, side=BOTH, cost_bps=3
r-gap-reversal-short-jp-growth-0519
side: "BOTH"
top_n: 20
cost_bps: 3
-0.33-0.57-0.10+0.21
top_n=20, min_gap_size=0.05, hold_days=3, regime_gate=nikkei-sma20, side=SHORT, cost_bps=5
r-gap-reversal-short-jp-growth-0604
side: "SHORT"
top_n: 20
cost_bps: 5
+0.21—+0.92-4.12
top_n=20, min_gap_size=0.07, hold_days=2, regime_gate=nikkei-sma20, side=LONG, cost_bps=10
r-gap-reversal-short-jp-growth-0689
side: "LONG"
top_n: 20
cost_bps: 10
-1.18-9.69-1.95+4.08
top_n=20, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma60, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-0774
side: "SHORT"
top_n: 20
cost_bps: 3
+2.20+9.18+4.79+3.35
top_n=20, min_gap_size=0.1, hold_days=5, regime_gate=nikkei-sma60, side=LONG, cost_bps=5
r-gap-reversal-short-jp-growth-0859
side: "LONG"
top_n: 20
cost_bps: 5
-0.34-6.86-1.08+6.64
top_n=50, min_gap_size=0.03, hold_days=3, regime_gate=nikkei-sma60, side=BOTH, cost_bps=10
r-gap-reversal-short-jp-growth-0944
side: "BOTH"
top_n: 50
cost_bps: 10
-0.74-1.83-0.27-1.59
top_n=50, min_gap_size=0.05, hold_days=3, side=LONG, cost_bps=3
r-gap-reversal-short-jp-growth-1029
side: "LONG"
top_n: 50
cost_bps: 3
-0.77-4.60-0.94+0.40
top_n=50, min_gap_size=0.07, hold_days=2, side=BOTH, cost_bps=5
r-gap-reversal-short-jp-growth-1114
side: "BOTH"
top_n: 50
cost_bps: 5
-0.21-2.66-0.06+2.48
top_n=50, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma20, side=SHORT, cost_bps=10
r-gap-reversal-short-jp-growth-1199
side: "SHORT"
top_n: 50
cost_bps: 10
+2.04—+4.34+2.98
top_n=50, min_gap_size=0.1, hold_days=5, regime_gate=nikkei-sma20, side=BOTH, cost_bps=3
r-gap-reversal-short-jp-growth-1284
side: "BOTH"
top_n: 50
cost_bps: 3
+0.11-6.82-0.07+5.36
top_n=100, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-jp-growth-1296
side: "SHORT"
top_n: 100
cost_bps: 3
+1.51+1.60+1.82-2.49
top_n=100, min_gap_size=0.03, hold_days=3, regime_gate=nikkei-sma60, side=SHORT, cost_bps=10
r-gap-reversal-short-jp-growth-1370
side: "SHORT"
top_n: 100
cost_bps: 10
-0.18+2.57+0.57-5.18
top_n=100, min_gap_size=0.05, hold_days=2, regime_gate=nikkei-sma60, side=BOTH, cost_bps=3
r-gap-reversal-short-jp-growth-1455
side: "BOTH"
top_n: 100
cost_bps: 3
-0.37-3.64-0.55+1.11
top_n=100, min_gap_size=0.07, hold_days=2, side=SHORT, cost_bps=5
r-gap-reversal-short-jp-growth-1540
side: "SHORT"
top_n: 100
cost_bps: 5
+0.30+0.07+1.07-2.56
top_n=100, min_gap_size=0.1, hold_days=1, side=LONG, cost_bps=10
r-gap-reversal-short-jp-growth-1625
side: "LONG"
top_n: 100
cost_bps: 10
+0.01-0.79+0.61-1.29

対象ユニバース

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY

関連する戦略

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T21:54:25

関連する戦略