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

Gap Reversal (US S&P 500)

slug: gap-reversal-short-us-sp500
performance summary
Sharpe (median)
-0.58
Max DD
-5.4%
Win rate
Alpha (ann.)
p-value
0.21
backtest period: 2022-01-032026-06-11
Sharpe across 1728 grid runs:median -0.58best 1.02 (not representative)worst -1.47p25–p75 -0.86-0.28

Hypothesis

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.

Why it didn't work

Across 1728 grid combinations, median Sharpe=-0.58, best=1.02. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 1.02 (p=0.029).
period 2022-01-03–2026-06-11; cost=3bps; side=LONG
sharpe_ratio1.02
Median Sharpe across 1728 grid runs is -0.58.
Full grid of 1728 parameter combinations.
sharpe_ratio-0.58
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 -1.74 across 1728 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-1.74
Median Sharpe in UP regime is -2.30 across 1728 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-2.30

Runs (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.18-1.08+0.39+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.08-1.25+0.21+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.19-1.68-0.24+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.08-0.86-0.67+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.63+0.39+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.59-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.81-2.01-0.38-1.29
top_n=10, min_gap_size=0.03, hold_days=5, side=LONG, cost_bps=3
r-gap-reversal-short-us-sp500-0084
side: "LONG"
top_n: 10
cost_bps: 3
+1.02-0.41+2.08+5.26
top_n=10, min_gap_size=0.03, hold_days=5, regime_gate=nikkei-sma20, side=SHORT, cost_bps=10
r-gap-reversal-short-us-sp500-0092
side: "SHORT"
top_n: 10
cost_bps: 10
-0.42-0.68-1.59
top_n=10, min_gap_size=0.05, hold_days=3, regime_gate=nikkei-sma20, side=BOTH, cost_bps=3
r-gap-reversal-short-us-sp500-0177
side: "BOTH"
top_n: 10
cost_bps: 3
-0.53-1.93-1.31-0.51
top_n=10, min_gap_size=0.07, hold_days=2, regime_gate=nikkei-sma60, side=SHORT, cost_bps=5
r-gap-reversal-short-us-sp500-0262
side: "SHORT"
top_n: 10
cost_bps: 5
-0.51-3.64-0.80-5.27
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.41-1.27-4.59+11.33
top_n=10, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma60, side=BOTH, cost_bps=3
r-gap-reversal-short-us-sp500-0348
side: "BOTH"
top_n: 10
cost_bps: 3
-0.50-2.22-3.48+4.58
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.47-4.43-3.87-10.02
top_n=20, min_gap_size=0.03, hold_days=1, side=SHORT, cost_bps=10
r-gap-reversal-short-us-sp500-0434
side: "SHORT"
top_n: 20
cost_bps: 10
-0.07-1.61-0.54+5.22
top_n=20, min_gap_size=0.03, hold_days=5, side=BOTH, cost_bps=3
r-gap-reversal-short-us-sp500-0519
side: "BOTH"
top_n: 20
cost_bps: 3
+0.22-1.32+0.40+3.04
top_n=20, min_gap_size=0.05, hold_days=3, regime_gate=nikkei-sma20, side=SHORT, cost_bps=5
r-gap-reversal-short-us-sp500-0604
side: "SHORT"
top_n: 20
cost_bps: 5
-0.87-3.38-1.84
top_n=20, min_gap_size=0.07, hold_days=2, regime_gate=nikkei-sma20, side=LONG, cost_bps=10
r-gap-reversal-short-us-sp500-0689
side: "LONG"
top_n: 20
cost_bps: 10
-0.78-3.19-2.30-3.40
top_n=20, min_gap_size=0.1, hold_days=1, regime_gate=nikkei-sma60, side=SHORT, cost_bps=3
r-gap-reversal-short-us-sp500-0774
side: "SHORT"
top_n: 20
cost_bps: 3
-0.20-1.13-3.16+11.33
top_n=20, min_gap_size=0.1, hold_days=5, regime_gate=nikkei-sma60, side=LONG, cost_bps=5
r-gap-reversal-short-us-sp500-0859
side: "LONG"
top_n: 20
cost_bps: 5
-0.68-4.09+2.16-14.17
top_n=50, min_gap_size=0.03, hold_days=3, regime_gate=nikkei-sma60, side=BOTH, cost_bps=10
r-gap-reversal-short-us-sp500-0944
side: "BOTH"
top_n: 50
cost_bps: 10
-0.31-0.81-1.29+0.12
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.27-1.93+0.21-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
-1.09-2.97-1.84-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.49-5.31+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.98-4.01-1.35-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.28-0.99-0.09+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.41+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.88-2.19-1.82-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.95-3.04-1.62-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.54-2.79-4.02+3.54

Target universe

S&P 500 constituents, ~503 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-27T03:36:31

Related strategies