qbuntuqbuntu
marginalno_edge· equity· breakout· momentum· volatility

ボラティリティ・ブレイクアウト(米国S&P500)のバックテスト

Volatility Breakout (US S&P 500)

slug: volatility-breakout-us-sp500

米国S&P500(約503銘柄)でボラティリティ・ブレイクアウトをバックテストした。720通りの中央値 Sharpe は +0.25。p-value は 0.52。Max DD は -11.1%。期間は 2022-02-01〜2026-09-01。最良 Sharpe +1.21 は代表値ではない。

判定は marginal。どこかのパラメータでは p-value が 0.10 を下回るが、中央値自体は promising の基準(Sharpe > 0.5 かつ p-value < 0.05)に届いていない。主因は no_edge。レジーム・取引回数・コストには分類されず、中央値が採用ラインに届いていない。

成績の中央値

Sharpe(中央値)
+0.25
Max DD
-11.1%
勝率
—
Alpha(年率)
—
p-value
0.52
期間: 2022-02-01 → 2026-09-01
720通りの Sharpe:中央値 0.25最良 1.21 (代表値ではない)最悪 -0.67p25–p75 0.03–0.48

仮説

原文は英語。

Stocks with rising short-term ATR relative to long-term ATR are experiencing volatility expansion, signaling breakout opportunities. Applied to S&P 500 constituents.

採用しなかった理由

Across 720 grid combinations, median Sharpe=0.25, best=1.21. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 1.21 (p=0.011).
period 2022-02-01–2026-09-01; cost=5bps
sharpe_ratio1.21
Median Sharpe across 720 grid runs is 0.25.
Full grid of 720 parameter combinations.
sharpe_ratio0.25
Median Sharpe in DOWN regime is -0.14 across 720 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-0.14
Median Sharpe in FLAT regime is -0.09 across 720 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.09
Median Sharpe in UP regime is 0.60 across 720 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.60

検証ラン (30)

runparamssharpeUPFLATDOWN
atr_short=5, atr_long=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0000
atr_long: 20
cost_bps: 5
n_stocks: 5
-0.05-0.88+0.89-0.33
atr_short=5, atr_long=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-volatility-breakout-us-sp500-0001
atr_long: 20
cost_bps: 5
n_stocks: 5
+0.08-0.64+0.89-0.33
atr_short=5, atr_long=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0002
atr_long: 20
cost_bps: 10
n_stocks: 5
-0.36-1.23+0.62-0.70
atr_short=5, atr_long=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-volatility-breakout-us-sp500-0003
atr_long: 20
cost_bps: 10
n_stocks: 5
-0.18-0.84+0.62-0.70
atr_short=5, atr_long=20, holding_days=1, n_stocks=20, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0008
atr_long: 20
cost_bps: 5
n_stocks: 20
-0.02-0.55+0.70+0.11
atr_short=5, atr_long=20, holding_days=20, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0036
atr_long: 20
cost_bps: 5
n_stocks: 5
-0.43+0.15-0.62-2.46
atr_short=5, atr_long=20, holding_days=20, n_stocks=5, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0038
atr_long: 20
cost_bps: 10
n_stocks: 5
-0.52+0.06-0.69-2.63
atr_short=5, atr_long=20, holding_days=20, n_stocks=20, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0046
atr_long: 20
cost_bps: 10
n_stocks: 20
-0.67-0.40-0.80-1.15
atr_short=5, atr_long=40, holding_days=10, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0072
atr_long: 40
cost_bps: 5
n_stocks: 5
-0.15+0.42-0.26-1.91
atr_short=5, atr_long=60, holding_days=1, n_stocks=20, cost_bps=5, regime_gate=True
r-volatility-breakout-us-sp500-0105
atr_long: 60
cost_bps: 5
n_stocks: 20
+0.41+0.18+0.68+0.40
atr_short=5, atr_long=60, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0138
atr_long: 60
cost_bps: 10
n_stocks: 10
+0.05+0.24-0.21-0.06
atr_short=5, atr_long=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0144
atr_long: 120
cost_bps: 5
n_stocks: 5
+0.04-0.02+0.17-0.13
atr_short=5, atr_long=120, holding_days=10, n_stocks=10, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0172
atr_long: 120
cost_bps: 5
n_stocks: 10
+0.74+1.10-0.21+1.27
atr_short=10, atr_long=20, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=True
r-volatility-breakout-us-sp500-0205
atr_long: 20
cost_bps: 5
n_stocks: 5
+0.04+0.61-0.77+0.10
atr_short=10, atr_long=20, holding_days=20, n_stocks=20, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0238
atr_long: 20
cost_bps: 10
n_stocks: 20
-0.23+0.58-0.65-1.72
atr_short=10, atr_long=40, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=True
r-volatility-breakout-us-sp500-0271
atr_long: 40
cost_bps: 10
n_stocks: 10
-0.32+0.35-0.37-1.53
atr_short=10, atr_long=60, holding_days=5, n_stocks=10, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0304
atr_long: 60
cost_bps: 5
n_stocks: 10
+0.10+0.30-0.09-0.30
atr_short=10, atr_long=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-volatility-breakout-us-sp500-0337
atr_long: 120
cost_bps: 5
n_stocks: 5
+0.27+0.84-0.87+0.85
atr_short=10, atr_long=120, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0370
atr_long: 120
cost_bps: 10
n_stocks: 20
+0.09+0.97-0.65-0.38
atr_short=14, atr_long=20, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=True
r-volatility-breakout-us-sp500-0403
atr_long: 20
cost_bps: 10
n_stocks: 10
+0.42+0.24+0.32+1.25
atr_short=14, atr_long=40, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0436
atr_long: 40
cost_bps: 5
n_stocks: 10
+0.55+0.75+0.04+0.94
atr_short=14, atr_long=40, holding_days=20, n_stocks=5, cost_bps=5, regime_gate=True
r-volatility-breakout-us-sp500-0469
atr_long: 40
cost_bps: 5
n_stocks: 5
+0.37+0.26+1.28-0.45
atr_short=14, atr_long=60, holding_days=5, n_stocks=20, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0502
atr_long: 60
cost_bps: 10
n_stocks: 20
+0.04+0.22-0.90+0.93
atr_short=14, atr_long=120, holding_days=1, n_stocks=10, cost_bps=10, regime_gate=True
r-volatility-breakout-us-sp500-0535
atr_long: 120
cost_bps: 10
n_stocks: 10
+0.42+0.70-0.59+1.80
atr_short=14, atr_long=120, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0568
atr_long: 120
cost_bps: 5
n_stocks: 10
+0.76+1.13+0.08+0.80
atr_short=20, atr_long=40, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0576
atr_long: 40
cost_bps: 5
n_stocks: 5
+0.85+1.10+0.64+0.47
atr_short=20, atr_long=40, holding_days=10, n_stocks=5, cost_bps=10, regime_gate=False
r-volatility-breakout-us-sp500-0602
atr_long: 40
cost_bps: 10
n_stocks: 5
+0.04+0.48-0.09-1.22
atr_short=20, atr_long=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0624
atr_long: 60
cost_bps: 5
n_stocks: 5
+1.21+1.60+0.48+1.23
atr_short=20, atr_long=60, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-volatility-breakout-us-sp500-0636
atr_long: 60
cost_bps: 5
n_stocks: 5
+0.53+1.19+0.29-2.74
atr_short=20, atr_long=60, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=True
r-volatility-breakout-us-sp500-0669
atr_long: 60
cost_bps: 5
n_stocks: 20
+0.32+1.06-0.39-1.30

対象ユニバース

S&P 500 constituents, ~503 stocks

関連する戦略

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

関連する戦略