qbuntuqbuntu
marginalregime_dependent· equity· cross-sectional· factor· reversal

Short-Term Reversal (US S&P 500)

slug: short-term-reversal-us-sp500

Short-Term Reversal (US S&P 500) backtest. Median Sharpe across 320 parameter sets is +0.09. p-value is 0.42. Max DD is -25.6%. Period: 2022-01-18 to 2026-09-14. Best Sharpe +1.66 is not the representative figure.

Verdict: marginal. Some parameter set has a p-value under 0.10, but the median itself misses promising (Sharpe > 0.5 and p-value < 0.05). Results split across up, flat, and down markets, so the median is not stable.

Performance summary

Sharpe (median)
+0.09
Max DD
-25.6%
Win rate
—
Alpha (ann.)
—
p-value
0.42
backtest period: 2022-01-18 → 2026-09-14
Sharpe across 320 grid runs:median 0.09best 1.66 (not representative)worst -1.13p25–p75 -0.32–0.46

Hypothesis

Jegadeesh (1990): stocks that dropped most over past N days tend to bounce back (and vice versa). LONG worst performers, SHORT best. Applied to S&P 500 constituents.

Why it didn't work

Across 320 grid combinations, median Sharpe=0.09, best=1.66. Primary failure mode: regime_dependent.

Facts (5)

Best grid Sharpe ratio is 1.66 (p=0.00039).
period 2022-01-18–2026-09-14; cost=5bps
sharpe_ratio1.66
Median Sharpe across 320 grid runs is 0.09.
Full grid of 320 parameter combinations.
sharpe_ratio0.09
Median Sharpe in DOWN regime is 0.81 across 320 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.81
Median Sharpe in FLAT regime is 0.02 across 320 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.02
Median Sharpe in UP regime is 0.01 across 320 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.01

Runs (30)

runparamssharpeUPFLATDOWN
reversal_days=1, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.04-0.82+0.40+0.77
reversal_days=1, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-short-term-reversal-us-sp500-0001
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.53+0.56+0.40+0.77
reversal_days=1, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0002
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.40-1.23+0.03+0.48
reversal_days=1, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-short-term-reversal-us-sp500-0003
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.23+0.32+0.03+0.48
reversal_days=1, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0012
cost_bps: 5
n_stocks: 50
regime_gate: false
-0.19-0.54-0.45+0.76
reversal_days=1, holding_days=3, n_stocks=5, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0018
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.06-0.87+0.44+1.03
reversal_days=1, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0032
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.19-0.56+0.43+1.23
reversal_days=1, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0046
cost_bps: 10
n_stocks: 50
regime_gate: false
-0.16-0.62-0.61+1.51
reversal_days=1, holding_days=10, n_stocks=5, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0048
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.62-0.33-1.32-0.58
reversal_days=1, holding_days=10, n_stocks=50, cost_bps=5, regime_gate=True
r-short-term-reversal-us-sp500-0061
cost_bps: 5
n_stocks: 50
regime_gate: true
-0.01+0.60+0.02-0.96
reversal_days=2, holding_days=1, n_stocks=20, cost_bps=10, regime_gate=True
r-short-term-reversal-us-sp500-0075
cost_bps: 10
n_stocks: 20
regime_gate: true
+0.22+0.43-0.42+1.03
reversal_days=2, holding_days=3, n_stocks=20, cost_bps=5, regime_gate=True
r-short-term-reversal-us-sp500-0089
cost_bps: 5
n_stocks: 20
regime_gate: true
+1.03+1.58+0.70+0.92
reversal_days=2, holding_days=5, n_stocks=10, cost_bps=5, regime_gate=True
r-short-term-reversal-us-sp500-0101
cost_bps: 5
n_stocks: 10
regime_gate: true
+1.66+1.86+1.35+2.04
reversal_days=2, holding_days=5, n_stocks=20, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0104
cost_bps: 5
n_stocks: 20
regime_gate: false
+0.67+0.22+0.66+1.66
reversal_days=2, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0118
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.40-0.27-0.43-0.63
reversal_days=3, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0132
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.11-1.50+0.47+2.31
reversal_days=3, holding_days=3, n_stocks=5, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0146
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.13-0.99+0.51+1.84
reversal_days=3, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0160
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.30-0.53+0.16+2.62
reversal_days=3, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0174
cost_bps: 10
n_stocks: 50
regime_gate: false
+0.12-0.68+0.05+1.75
reversal_days=3, holding_days=10, n_stocks=50, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0188
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.12+0.19+0.93-0.54
reversal_days=5, holding_days=1, n_stocks=20, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0202
cost_bps: 10
n_stocks: 20
regime_gate: false
-0.58-2.18+0.05+0.80
reversal_days=5, holding_days=3, n_stocks=20, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0216
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.46-1.57+0.37+0.05
reversal_days=5, holding_days=3, n_stocks=50, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0222
cost_bps: 10
n_stocks: 50
regime_gate: false
-1.13-1.92-0.59-0.75
reversal_days=5, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=True
r-short-term-reversal-us-sp500-0231
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.07+0.32-0.33+0.48
reversal_days=5, holding_days=10, n_stocks=10, cost_bps=5, regime_gate=True
r-short-term-reversal-us-sp500-0245
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.81+1.21+0.21+1.06
reversal_days=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0256
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.62-2.88+0.26+1.68
reversal_days=10, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0260
cost_bps: 5
n_stocks: 10
regime_gate: false
-0.44-2.37+0.02+2.01
reversal_days=10, holding_days=3, n_stocks=5, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0274
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.56-1.87+0.19+0.97
reversal_days=10, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-short-term-reversal-us-sp500-0288
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.73-2.01+0.29+0.80
reversal_days=10, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-short-term-reversal-us-sp500-0302
cost_bps: 10
n_stocks: 50
regime_gate: false
-0.85-2.67+0.03+0.72

Target universe

S&P 500 constituents, ~503 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T02:22:15

Related strategies