Gap Reversal (JP Growth Stocks)
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
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)
Runs (30)
| run | params | sharpe | UP | FLAT | DOWN |
|---|---|---|---|---|---|
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 |