# Gap Reversal (US S&P 500)

- **Slug**: `gap-reversal-short-us-sp500`
- **Verdict**: rejected (no_edge)
- **Asset class**: equity
- **Categories**: gap, intraday, mean-reversion
- **Source**: qbuntu-analysis (computed asof 2026-07-27T03:36:31)
- **Reproducibility**: analysis-engine@bfafe7d, backtest-lib@711b855, grid tier=shallow (python 3.10.11, numpy 2.2.6, pandas 2.3.3)
- **HTML**: https://qbuntu.ai/strategies/gap-reversal-short-us-sp500
- **JSON**: https://qbuntu.ai/v1/strategies/gap-reversal-short-us-sp500
- **License**: CC-BY-4.0

## 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.

## Performance summary

Headline figures are the **median across the parameter grid**, not the best run.

| Metric | Value |
|---|---|
| Sharpe (median) | -0.5805 |
| Max drawdown | -5.4% |
| p-value | 0.21 |
| Backtest period | 2022-01-03 to 2026-06-11 |

Sharpe distribution across 1728 grid runs: median -0.58, best 1.02 (best-case — not representative), worst -1.47, p25 -0.86, p75 -0.28.

## Methodology

- Notes: {"walk_forward_definition": {"type": "single_pass", "description": "Full period backtest without walk-forward split", "verdict_basis": "full_period"}}
- Slippage model: open-on-open + variable bps fixed
- Position sizing: equal_weight
- Regime definition: GSPC SMA20/SMA60 three-class: UP (close>SMA20 AND SMA20>SMA60), DOWN (close<SMA20 AND SMA20<SMA60), FLAT (else)
- Transaction cost bps: 5

## Target universe

S&P 500 constituents, ~503 stocks

## Runs (30)

| run_id | params | sharpe | UP | FLAT | DOWN |
|---|---|---:|---:|---:|---:|
| `r-gap-reversal-short-us-sp500-0000` | side="SHORT", top_n=10, cost_bps=3, hold_days=1 | 0.18 | -1.08 | 0.39 | 4.53 |
| `r-gap-reversal-short-us-sp500-0001` | side="SHORT", top_n=10, cost_bps=5, hold_days=1 | 0.08 | -1.25 | 0.21 | 4.36 |
| `r-gap-reversal-short-us-sp500-0002` | side="SHORT", top_n=10, cost_bps=10, hold_days=1 | -0.19 | -1.68 | -0.24 | 3.92 |
| `r-gap-reversal-short-us-sp500-0006` | side="BOTH", top_n=10, cost_bps=3, hold_days=1 | -0.08 | -0.86 | -0.67 | 1.91 |
| `r-gap-reversal-short-us-sp500-0009` | side="SHORT", top_n=10, cost_bps=3, hold_days=1 | 0.63 | — | 0.39 | 4.53 |
| `r-gap-reversal-short-us-sp500-0018` | side="SHORT", top_n=10, cost_bps=3, hold_days=1 | 0.59 | -1.18 | 0.86 | 4.53 |
| `r-gap-reversal-short-us-sp500-0081` | side="SHORT", top_n=10, cost_bps=3, hold_days=5 | -0.81 | -2.01 | -0.38 | -1.29 |
| `r-gap-reversal-short-us-sp500-0084` | side="LONG", top_n=10, cost_bps=3, hold_days=5 | 1.02 | -0.41 | 2.08 | 5.26 |
| `r-gap-reversal-short-us-sp500-0092` | side="SHORT", top_n=10, cost_bps=10, hold_days=5 | -0.42 | — | -0.68 | -1.59 |
| `r-gap-reversal-short-us-sp500-0177` | side="BOTH", top_n=10, cost_bps=3, hold_days=3 | -0.53 | -1.93 | -1.31 | -0.51 |
| `r-gap-reversal-short-us-sp500-0262` | side="SHORT", top_n=10, cost_bps=5, hold_days=2 | -0.51 | -3.64 | -0.8 | -5.27 |
| `r-gap-reversal-short-us-sp500-0324` | side="SHORT", top_n=10, cost_bps=3, hold_days=1 | -0.41 | -1.27 | -4.59 | 11.33 |
| `r-gap-reversal-short-us-sp500-0348` | side="BOTH", top_n=10, cost_bps=3, hold_days=1 | -0.5 | -2.22 | -3.48 | 4.58 |
| `r-gap-reversal-short-us-sp500-0386` | side="BOTH", top_n=10, cost_bps=10, hold_days=3 | -1.47 | -4.43 | -3.87 | -10.02 |
| `r-gap-reversal-short-us-sp500-0434` | side="SHORT", top_n=20, cost_bps=10, hold_days=1 | -0.07 | -1.61 | -0.54 | 5.22 |
| `r-gap-reversal-short-us-sp500-0519` | side="BOTH", top_n=20, cost_bps=3, hold_days=5 | 0.22 | -1.32 | 0.4 | 3.04 |
| `r-gap-reversal-short-us-sp500-0604` | side="SHORT", top_n=20, cost_bps=5, hold_days=3 | -0.87 | — | -3.38 | -1.84 |
| `r-gap-reversal-short-us-sp500-0689` | side="LONG", top_n=20, cost_bps=10, hold_days=2 | -0.78 | -3.19 | -2.3 | -3.4 |
| `r-gap-reversal-short-us-sp500-0774` | side="SHORT", top_n=20, cost_bps=3, hold_days=1 | -0.2 | -1.13 | -3.16 | 11.33 |
| `r-gap-reversal-short-us-sp500-0859` | side="LONG", top_n=20, cost_bps=5, hold_days=5 | -0.68 | -4.09 | 2.16 | -14.17 |
| `r-gap-reversal-short-us-sp500-0944` | side="BOTH", top_n=50, cost_bps=10, hold_days=3 | -0.31 | -0.81 | -1.29 | 0.12 |
| `r-gap-reversal-short-us-sp500-1029` | side="LONG", top_n=50, cost_bps=3, hold_days=3 | -0.27 | -1.93 | 0.21 | -0.65 |
| `r-gap-reversal-short-us-sp500-1114` | side="BOTH", top_n=50, cost_bps=5, hold_days=2 | -1.09 | -2.97 | -1.84 | -3.36 |
| `r-gap-reversal-short-us-sp500-1199` | side="SHORT", top_n=50, cost_bps=10, hold_days=1 | -0.49 | — | -5.31 | 10.41 |
| `r-gap-reversal-short-us-sp500-1284` | side="BOTH", top_n=50, cost_bps=3, hold_days=5 | -0.98 | -4.01 | -1.35 | -12.06 |
| `r-gap-reversal-short-us-sp500-1296` | side="SHORT", top_n=100, cost_bps=3, hold_days=1 | 0.28 | -0.99 | -0.09 | 6.89 |
| `r-gap-reversal-short-us-sp500-1370` | side="SHORT", top_n=100, cost_bps=10, hold_days=3 | -0.41 | 1.15 | -2.12 | -1.3 |
| `r-gap-reversal-short-us-sp500-1455` | side="BOTH", top_n=100, cost_bps=3, hold_days=2 | -0.88 | -2.19 | -1.82 | -3.23 |
| `r-gap-reversal-short-us-sp500-1540` | side="SHORT", top_n=100, cost_bps=5, hold_days=2 | -0.95 | -3.04 | -1.62 | -5.27 |
| `r-gap-reversal-short-us-sp500-1625` | side="LONG", top_n=100, cost_bps=10, hold_days=1 | -0.54 | -2.79 | -4.02 | 3.54 |

## Facts (5)

Each fact has a permanent citation URL. AI agents quoting qbuntu should use these.

- **Best grid Sharpe ratio is 1.02 (p=0.029).**
  - Value: 1.02 sharpe_ratio
  - Context: period 2022-01-03–2026-06-11; cost=3bps; side=LONG
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/gap-reversal-short-us-sp500-fact-best-sharpe

- **Median Sharpe across 1728 grid runs is -0.58.**
  - Value: -0.58 sharpe_ratio
  - Context: Full grid of 1728 parameter combinations.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/gap-reversal-short-us-sp500-fact-median-sharpe

- **Median Sharpe in DOWN regime is -0.71 across 1728 runs.**
  - Value: -0.71 sharpe_ratio
  - Context: Regime=DOWN, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/gap-reversal-short-us-sp500-fact-regime-down

- **Median Sharpe in FLAT regime is -1.74 across 1728 runs.**
  - Value: -1.74 sharpe_ratio
  - Context: Regime=FLAT, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/gap-reversal-short-us-sp500-fact-regime-flat

- **Median Sharpe in UP regime is -2.30 across 1728 runs.**
  - Value: -2.3 sharpe_ratio
  - Context: Regime=UP, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/gap-reversal-short-us-sp500-fact-regime-up

## Related strategies

- same_strategy: [gap-reversal-short-jp-all](https://qbuntu.ai/strategies/gap-reversal-short-jp-all)
- same_strategy: [gap-reversal-short-jp-growth](https://qbuntu.ai/strategies/gap-reversal-short-jp-growth)

---

Cite as: qbuntu (2026). Gap Reversal (US S&P 500). https://qbuntu.ai/strategies/gap-reversal-short-us-sp500

Visit qbuntu.ai — the honest scorecard for quant strategies (live, promising, marginal, rejected).
