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

短期リバーサル(米国S&P500)のバックテスト

Short-Term Reversal (US S&P 500)

slug: short-term-reversal-us-sp500

米国S&P500(約503銘柄)で短期リバーサルをバックテストした。320通りの中央値 Sharpe は +0.09。p-value は 0.42。Max DD は -25.6%。期間は 2022-01-18〜2026-09-14。最良 Sharpe +1.66 は代表値ではない。

判定は marginal。どこかのパラメータでは p-value が 0.10 を下回るが、中央値自体は promising の基準(Sharpe > 0.5 かつ p-value < 0.05)に届いていない。上昇・横ばい・下落で結果が割れ、中央値としては安定しない。

成績の中央値

Sharpe(中央値)
+0.09
Max DD
-25.6%
勝率
—
Alpha(年率)
—
p-value
0.42
期間: 2022-01-18 → 2026-09-14
320通りの Sharpe:中央値 0.09最良 1.66 (代表値ではない)最悪 -1.13p25–p75 -0.32–0.46

仮説

原文は英語。

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.

採用しなかった理由

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

検証ファクト (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

検証ラン (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

対象ユニバース

S&P 500 constituents, ~503 stocks

関連する戦略

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

関連する戦略