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

ギャップ・リバーサル(米国S&P500)のバックテスト

Gap Reversal (US S&P 500)

slug: gap-reversal-short-us-sp500

米国S&P500(約503銘柄)でギャップ・リバーサルをバックテストした。1,728通りの中央値 Sharpe は -0.41。p-value は 0.31。Max DD は -5.7%。期間は 2022-01-03〜2026-09-21。最良 Sharpe +0.80 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。主因は no_edge。レジーム・取引回数・コストには分類されず、中央値が採用ラインに届いていない。

何を検証したか

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

成績の中央値

Sharpe(中央値)
-0.41
Max DD
-5.7%
勝率
—
Alpha(年率)
—
p-value
0.31
期間: 2022-01-03 → 2026-09-21
1728通りの Sharpe:中央値 -0.41最良 0.80 (代表値ではない)最悪 -1.16p25–p75 -0.67–-0.09

仮説

原文は英語。

Overnight gaps in S&P 500 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.41, best=0.80. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 0.80 (p=0.08).
period 2022-01-03–2026-09-21; cost=3bps; side=LONG
sharpe_ratio0.80
Median Sharpe across 1728 grid runs is -0.41.
Full grid of 1728 parameter combinations.
sharpe_ratio-0.41
Median Sharpe in DOWN regime is -0.71 across 1728 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-0.71
Median Sharpe in FLAT regime is -0.65 across 1728 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.65
Median Sharpe in UP regime is -2.30 across 1728 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-2.30

検証ラン (30)

runparamssharpeUPFLATDOWN
top_n=10, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0000
side: "SHORT"
top_n: 10
cost_bps: 3
+0.40-1.08+1.00+4.53
top_n=10, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=5
r-gap-reversal-short-us-sp500-0001
side: "SHORT"
top_n: 10
cost_bps: 5
+0.29-1.25+0.82+4.36
top_n=10, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=10
r-gap-reversal-short-us-sp500-0002
side: "SHORT"
top_n: 10
cost_bps: 10
+0.01-1.68+0.39+3.92
top_n=10, min_gap_size=0.03, hold_days=1, side=BOTH, cost_bps=3
r-gap-reversal-short-us-sp500-0006
side: "BOTH"
top_n: 10
cost_bps: 3
+0.06-0.86-0.06+1.91
top_n=10, min_gap_size=0.03, hold_days=1, regime_gate=nikkei-sma20, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0009
side: "SHORT"
top_n: 10
cost_bps: 3
+0.78—+1.00+4.53
top_n=10, min_gap_size=0.03, hold_days=1, regime_gate=nikkei-sma60, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0018
side: "SHORT"
top_n: 10
cost_bps: 3
+0.57-1.18+0.86+4.53
top_n=10, min_gap_size=0.03, hold_days=5, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0081
side: "SHORT"
top_n: 10
cost_bps: 3
-0.51-2.01+0.07-1.29
top_n=10, min_gap_size=0.03, hold_days=5, regime_gate=nikkei-sma20, side=SHORT, cost_bps=5
r-gap-reversal-short-us-sp500-0091
side: "SHORT"
top_n: 10
cost_bps: 5
-0.11—-0.01-1.38
top_n=10, min_gap_size=0.05, hold_days=3, regime_gate=nikkei-sma20, side=LONG, cost_bps=10
r-gap-reversal-short-us-sp500-0176
side: "LONG"
top_n: 10
cost_bps: 10
-0.05-2.30+1.27-0.40
top_n=10, min_gap_size=0.07, hold_days=2, regime_gate=nikkei-sma60, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0261
side: "SHORT"
top_n: 10
cost_bps: 3
-0.46-3.48-0.70-5.10
top_n=10, min_gap_size=0.1, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0324
side: "SHORT"
top_n: 10
cost_bps: 3
-0.15-1.27-0.53+11.33
top_n=10, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma60, side=LONG, cost_bps=10
r-gap-reversal-short-us-sp500-0347
side: "LONG"
top_n: 10
cost_bps: 10
-0.32-2.79-1.16+3.54
top_n=10, min_gap_size=0.1, hold_days=3, side=BOTH, cost_bps=10
r-gap-reversal-short-us-sp500-0386
side: "BOTH"
top_n: 10
cost_bps: 10
-1.16-4.43-1.65-10.02
top_n=20, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=5
r-gap-reversal-short-us-sp500-0433
side: "SHORT"
top_n: 20
cost_bps: 5
+0.30-1.17+0.53+5.66
top_n=20, min_gap_size=0.03, hold_days=5, side=LONG, cost_bps=10
r-gap-reversal-short-us-sp500-0518
side: "LONG"
top_n: 20
cost_bps: 10
+0.68-0.97+0.97+5.40
top_n=20, min_gap_size=0.05, hold_days=3, regime_gate=nikkei-sma20, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0603
side: "SHORT"
top_n: 20
cost_bps: 3
-0.41—-1.41-1.72
top_n=20, min_gap_size=0.07, hold_days=2, regime_gate=nikkei-sma20, side=LONG, cost_bps=5
r-gap-reversal-short-us-sp500-0688
side: "LONG"
top_n: 20
cost_bps: 5
-0.76-2.88-2.04-3.24
top_n=20, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma20, side=BOTH, cost_bps=10
r-gap-reversal-short-us-sp500-0773
side: "BOTH"
top_n: 20
cost_bps: 10
-0.32-2.79-1.11+4.19
top_n=20, min_gap_size=0.1, hold_days=5, regime_gate=nikkei-sma60, side=LONG, cost_bps=3
r-gap-reversal-short-us-sp500-0858
side: "LONG"
top_n: 20
cost_bps: 3
-0.41-4.01+3.53-14.11
top_n=50, min_gap_size=0.03, hold_days=3, regime_gate=nikkei-sma60, side=BOTH, cost_bps=5
r-gap-reversal-short-us-sp500-0943
side: "BOTH"
top_n: 50
cost_bps: 5
+0.11-0.54+0.53+0.33
top_n=50, min_gap_size=0.03, hold_days=5, side=LONG, cost_bps=3
r-gap-reversal-short-us-sp500-0948
side: "LONG"
top_n: 50
cost_bps: 3
+0.80-0.64+1.24+5.40
top_n=50, min_gap_size=0.05, hold_days=3, side=LONG, cost_bps=3
r-gap-reversal-short-us-sp500-1029
side: "LONG"
top_n: 50
cost_bps: 3
+0.04-1.93+1.75-0.65
top_n=50, min_gap_size=0.07, hold_days=2, side=BOTH, cost_bps=5
r-gap-reversal-short-us-sp500-1114
side: "BOTH"
top_n: 50
cost_bps: 5
-0.90-2.97-1.02-3.36
top_n=50, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma20, side=SHORT, cost_bps=10
r-gap-reversal-short-us-sp500-1199
side: "SHORT"
top_n: 50
cost_bps: 10
-0.08—-1.04+10.41
top_n=50, min_gap_size=0.1, hold_days=5, regime_gate=nikkei-sma20, side=BOTH, cost_bps=3
r-gap-reversal-short-us-sp500-1284
side: "BOTH"
top_n: 50
cost_bps: 3
-0.76-4.01-0.28-12.06
top_n=100, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-1296
side: "SHORT"
top_n: 100
cost_bps: 3
+0.41-0.99+0.57+6.89
top_n=100, min_gap_size=0.03, hold_days=3, regime_gate=nikkei-sma60, side=SHORT, cost_bps=10
r-gap-reversal-short-us-sp500-1370
side: "SHORT"
top_n: 100
cost_bps: 10
-0.40+1.15-2.12-1.30
top_n=100, min_gap_size=0.05, hold_days=2, regime_gate=nikkei-sma60, side=BOTH, cost_bps=3
r-gap-reversal-short-us-sp500-1455
side: "BOTH"
top_n: 100
cost_bps: 3
-0.94-2.19-2.16-3.23
top_n=100, min_gap_size=0.07, hold_days=2, side=SHORT, cost_bps=5
r-gap-reversal-short-us-sp500-1540
side: "SHORT"
top_n: 100
cost_bps: 5
-0.46-3.04-0.10-5.27
top_n=100, min_gap_size=0.1, hold_days=1, side=LONG, cost_bps=10
r-gap-reversal-short-us-sp500-1625
side: "LONG"
top_n: 100
cost_bps: 10
-0.32-2.79-1.16+3.54

対象ユニバース

S&P 500 constituents, ~503 stocks

関連する戦略

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

関連する戦略