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

Gap Reversal (JP Growth Stocks)

slug: gap-reversal-short-jp-growth

Gap Reversal (JP Growth Stocks) backtest. Median Sharpe across 1,728 parameter sets is -0.22. p-value is 0.30. Max DD is -17.8%. Period: 2022-01-04 to 2026-09-17. Best Sharpe +2.74 is not the representative figure.

Verdict: rejected. The median reaches neither promising (Sharpe > 0.5 and p-value < 0.05) nor marginal (Sharpe > 0.05 and best p-value < 0.10). Results split across up, flat, and down markets, so the median is not stable.

What was tested

Gap reversal is a short-horizon bet that an opening gap fills. The gap is easy to see. After costs, only the median counts. A large best Sharpe with a negative median stays rejected.

Performance summary

Sharpe (median)
-0.22
Max DD
-17.8%
Win rate
—
Alpha (ann.)
—
p-value
0.30
backtest period: 2022-01-04 → 2026-09-17
Sharpe across 1728 grid runs:median -0.22best 2.74 (not representative)worst -1.82p25–p75 -0.59–0.24

Hypothesis

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.

Why it didn't work

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

Facts (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

Runs (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

Target universe

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

Related strategies

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

Related strategies