qbuntuqbuntu

リスクパリティ(米国S&P500)のバックテスト

Risk Parity / Volatility Targeting Overlay (US S&P 500)

slug: risk-parity-us-sp500

米国S&P500(約503銘柄)でリスクパリティをバックテストした。384通りの中央値 Sharpe は +0.34。p-value は 0.34。Max DD は -25.1%。期間は 2022-04-01〜2026-09-01。最良 Sharpe +1.16 は代表値ではない。

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

成績の中央値

Sharpe(中央値)
+0.34
Max DD
-25.1%
勝率
—
Alpha(年率)
—
p-value
0.34
期間: 2022-04-01 → 2026-09-01
384通りの Sharpe:中央値 0.34最良 1.16 (代表値ではない)最悪 -0.96p25–p75 -0.15–0.53

仮説

原文は英語。

Sizing positions inversely proportional to their recent volatility. Applied to S&P 500 constituents.

採用しなかった理由

Across 384 grid combinations, median Sharpe=0.34, best=1.16. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 1.16 (p=0.00024).
period 2022-04-01–2026-09-01; cost=5bps
sharpe_ratio1.16
Median Sharpe across 384 grid runs is 0.34.
Full grid of 384 parameter combinations.
sharpe_ratio0.34
Median Sharpe in DOWN regime is 0.17 across 384 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.17
Median Sharpe in FLAT regime is -0.03 across 384 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.03
Median Sharpe in UP regime is 0.65 across 384 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.65

検証ラン (30)

runparamssharpeUPFLATDOWN
target_vol=0.1, vol_lookback=10, holding_days=5, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0000
cost_bps: 5
target_vol: 0.1
base_signal: "momentum_60"
+0.44+0.26+0.37+1.38
target_vol=0.1, vol_lookback=10, holding_days=5, base_signal=momentum_60, cost_bps=10
r-risk-parity-us-sp500-0001
cost_bps: 10
target_vol: 0.1
base_signal: "momentum_60"
+0.34+0.16+0.28+1.25
target_vol=0.1, vol_lookback=10, holding_days=5, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0002
cost_bps: 5
target_vol: 0.1
base_signal: "momentum_120"
+0.51+0.40+0.21+2.06
target_vol=0.1, vol_lookback=10, holding_days=5, base_signal=mean_reversion, cost_bps=5
r-risk-parity-us-sp500-0004
cost_bps: 5
target_vol: 0.1
base_signal: "mean_reversion"
-0.77-0.48-1.37-0.73
target_vol=0.1, vol_lookback=10, holding_days=60, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0018
cost_bps: 5
target_vol: 0.1
base_signal: "momentum_60"
+0.60+0.93+0.58-0.75
target_vol=0.1, vol_lookback=10, holding_days=60, base_signal=momentum_120, cost_bps=10
r-risk-parity-us-sp500-0021
cost_bps: 10
target_vol: 0.1
base_signal: "momentum_120"
+1.14+1.39+1.04+0.51
target_vol=0.1, vol_lookback=20, holding_days=20, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0038
cost_bps: 5
target_vol: 0.1
base_signal: "momentum_120"
+0.65+1.26+0.08+0.46
target_vol=0.1, vol_lookback=40, holding_days=10, base_signal=momentum_60, cost_bps=10
r-risk-parity-us-sp500-0055
cost_bps: 10
target_vol: 0.1
base_signal: "momentum_60"
-0.12+0.74-0.65-0.53
target_vol=0.1, vol_lookback=60, holding_days=5, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0072
cost_bps: 5
target_vol: 0.1
base_signal: "momentum_60"
+0.41+0.32+0.19+1.43
target_vol=0.1, vol_lookback=60, holding_days=5, base_signal=momentum_60, cost_bps=10
r-risk-parity-us-sp500-0073
cost_bps: 10
target_vol: 0.1
base_signal: "momentum_60"
+0.32+0.23+0.09+1.32
target_vol=0.1, vol_lookback=60, holding_days=5, base_signal=mean_reversion, cost_bps=10
r-risk-parity-us-sp500-0077
cost_bps: 10
target_vol: 0.1
base_signal: "mean_reversion"
-0.96-0.55-1.86-1.02
target_vol=0.1, vol_lookback=60, holding_days=60, base_signal=momentum_60, cost_bps=10
r-risk-parity-us-sp500-0091
cost_bps: 10
target_vol: 0.1
base_signal: "momentum_60"
+0.54+0.88+0.45-0.67
target_vol=0.15, vol_lookback=10, holding_days=20, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0108
cost_bps: 5
target_vol: 0.15
base_signal: "momentum_60"
+0.44+1.18-0.19-0.09
target_vol=0.15, vol_lookback=20, holding_days=5, base_signal=mean_reversion, cost_bps=10
r-risk-parity-us-sp500-0125
cost_bps: 10
target_vol: 0.15
base_signal: "mean_reversion"
-0.95-0.60-1.80-0.88
target_vol=0.15, vol_lookback=20, holding_days=60, base_signal=mean_reversion, cost_bps=5
r-risk-parity-us-sp500-0142
cost_bps: 5
target_vol: 0.15
base_signal: "mean_reversion"
-0.31-0.26-0.56+0.03
target_vol=0.15, vol_lookback=40, holding_days=20, base_signal=momentum_120, cost_bps=10
r-risk-parity-us-sp500-0159
cost_bps: 10
target_vol: 0.15
base_signal: "momentum_120"
+0.59+1.27-0.04+0.42
target_vol=0.15, vol_lookback=60, holding_days=10, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0176
cost_bps: 5
target_vol: 0.15
base_signal: "momentum_120"
+0.51+1.87-0.29+0.33
target_vol=0.2, vol_lookback=10, holding_days=5, base_signal=momentum_60, cost_bps=10
r-risk-parity-us-sp500-0193
cost_bps: 10
target_vol: 0.2
base_signal: "momentum_60"
+0.34+0.16+0.28+1.25
target_vol=0.2, vol_lookback=10, holding_days=60, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0210
cost_bps: 5
target_vol: 0.2
base_signal: "momentum_60"
+0.60+0.93+0.58-0.75
target_vol=0.2, vol_lookback=20, holding_days=10, base_signal=mean_reversion, cost_bps=10
r-risk-parity-us-sp500-0227
cost_bps: 10
target_vol: 0.2
base_signal: "mean_reversion"
-0.26-0.50-0.11+0.01
target_vol=0.2, vol_lookback=40, holding_days=5, base_signal=mean_reversion, cost_bps=5
r-risk-parity-us-sp500-0244
cost_bps: 5
target_vol: 0.2
base_signal: "mean_reversion"
-0.76-0.39-1.58-0.74
target_vol=0.2, vol_lookback=40, holding_days=60, base_signal=momentum_120, cost_bps=10
r-risk-parity-us-sp500-0261
cost_bps: 10
target_vol: 0.2
base_signal: "momentum_120"
+1.09+1.38+0.98+0.46
target_vol=0.2, vol_lookback=60, holding_days=20, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0278
cost_bps: 5
target_vol: 0.2
base_signal: "momentum_120"
+0.64+1.30+0.02+0.47
target_vol=0.3, vol_lookback=10, holding_days=5, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0288
cost_bps: 5
target_vol: 0.3
base_signal: "momentum_60"
+0.44+0.26+0.38+1.37
target_vol=0.3, vol_lookback=10, holding_days=10, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0296
cost_bps: 5
target_vol: 0.3
base_signal: "momentum_120"
+0.63+1.76-0.21+0.47
target_vol=0.3, vol_lookback=10, holding_days=60, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0308
cost_bps: 5
target_vol: 0.3
base_signal: "momentum_120"
+1.16+1.41+1.06+0.54
target_vol=0.3, vol_lookback=20, holding_days=5, base_signal=momentum_120, cost_bps=5
r-risk-parity-us-sp500-0314
cost_bps: 5
target_vol: 0.3
base_signal: "momentum_120"
+0.51+0.43+0.20+1.81
target_vol=0.3, vol_lookback=20, holding_days=60, base_signal=momentum_60, cost_bps=10
r-risk-parity-us-sp500-0331
cost_bps: 10
target_vol: 0.3
base_signal: "momentum_60"
+0.53+0.82+0.51-0.66
target_vol=0.3, vol_lookback=40, holding_days=20, base_signal=momentum_60, cost_bps=5
r-risk-parity-us-sp500-0348
cost_bps: 5
target_vol: 0.3
base_signal: "momentum_60"
+0.32+1.11-0.41+0.07
target_vol=0.3, vol_lookback=60, holding_days=5, base_signal=mean_reversion, cost_bps=10
r-risk-parity-us-sp500-0365
cost_bps: 10
target_vol: 0.3
base_signal: "mean_reversion"
-0.96-0.54-1.86-1.02

対象ユニバース

S&P 500 constituents, ~503 stocks

関連する戦略

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

関連する戦略