qbuntuqbuntu

固有ボラティリティ(東証グロース)のバックテスト

Idiosyncratic Volatility (JP Growth Stocks)

slug: idiosyncratic-vol-jp-growth

東証グロース(約495銘柄)で固有ボラティリティをバックテストした。320通りの中央値 Sharpe は +0.13。p-value は 0.53。Max DD は -21.6%。期間は 2023-07-03〜2026-06-01。最良 Sharpe +1.61 は代表値ではない。

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

成績の中央値

Sharpe(中央値)
+0.13
Max DD
-21.6%
勝率
—
Alpha(年率)
—
p-value
0.53
期間: 2023-07-03 → 2026-06-01
320通りの Sharpe:中央値 0.13最良 1.61 (代表値ではない)最悪 -1.12p25–p75 -0.23–0.41

仮説

原文は英語。

Ang, Hodrick, Xing, Zhang (2006): stocks with high idiosyncratic volatility earn lower returns. Idio vol = std(residuals) from market model (rolling OLS against N225). LONG lowest idio-vol, SHORT highest.

採用しなかった理由

Across 320 grid combinations, median Sharpe=0.13, best=1.61. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 1.61 (p=0.0077).
period 2023-07-03–2026-06-01; cost=5bps
sharpe_ratio1.61
Median Sharpe across 320 grid runs is 0.13.
Full grid of 320 parameter combinations.
sharpe_ratio0.13
Median Sharpe in DOWN regime is 0.33 across 320 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.33
Median Sharpe in FLAT regime is 0.15 across 320 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.15
Median Sharpe in UP regime is -0.48 across 320 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.48

検証ラン (30)

runparamssharpeUPFLATDOWN
estimation_window=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
+1.61+1.21+1.50+6.93
estimation_window=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0001
cost_bps: 5
n_stocks: 5
regime_gate: true
+1.25-1.56+1.50+6.93
estimation_window=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0002
cost_bps: 10
n_stocks: 5
regime_gate: false
+1.48+1.10+1.36+6.70
estimation_window=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0003
cost_bps: 10
n_stocks: 5
regime_gate: true
+1.12-1.88+1.36+6.70
estimation_window=20, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0012
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.86+0.30+0.91+4.04
estimation_window=20, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0017
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.19+0.24-0.24+27.62
estimation_window=20, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0030
cost_bps: 10
n_stocks: 50
regime_gate: false
+0.09-0.44+0.57-0.24
estimation_window=20, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0043
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.14-0.48-0.16+1.39
estimation_window=20, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0056
cost_bps: 5
n_stocks: 20
regime_gate: false
+0.34-0.53+0.82+0.86
estimation_window=20, holding_days=60, n_stocks=5, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0064
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.19+2.13-0.19-0.28
estimation_window=20, holding_days=60, n_stocks=10, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0070
cost_bps: 10
n_stocks: 10
regime_gate: false
+0.25+0.99+0.06+0.32
estimation_window=40, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0083
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.94-1.33+1.26+3.04
estimation_window=40, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0096
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.54-0.50+2.05+17.11
estimation_window=40, holding_days=5, n_stocks=50, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0109
cost_bps: 5
n_stocks: 50
regime_gate: true
+0.40-0.46+0.71+0.53
estimation_window=40, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0122
cost_bps: 10
n_stocks: 20
regime_gate: false
-0.36-0.98-0.04-0.34
estimation_window=40, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0135
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.18-1.23+0.45-0.00
estimation_window=40, holding_days=60, n_stocks=10, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0148
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.34+1.34+0.11-1.11
estimation_window=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0161
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.55-1.46+1.09+0.26
estimation_window=60, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0174
cost_bps: 10
n_stocks: 50
regime_gate: false
+0.30-0.65+0.75+3.05
estimation_window=60, holding_days=5, n_stocks=20, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0187
cost_bps: 10
n_stocks: 20
regime_gate: true
+0.14-0.88+0.19+1.30
estimation_window=60, holding_days=10, n_stocks=5, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0195
cost_bps: 10
n_stocks: 5
regime_gate: true
-1.12-1.49-1.18-1.44
estimation_window=60, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0201
cost_bps: 5
n_stocks: 20
regime_gate: true
-0.40-0.89-0.41+0.37
estimation_window=60, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0214
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.27-0.17-0.36+0.09
estimation_window=60, holding_days=60, n_stocks=5, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0227
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.46-2.67-0.41-0.80
estimation_window=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0240
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.67+0.95+0.68-0.70
estimation_window=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0241
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.34-0.77+0.68-0.70
estimation_window=120, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=False
r-idiosyncratic-vol-jp-growth-0254
cost_bps: 10
n_stocks: 50
regime_gate: false
+0.20-0.52+0.29+7.14
estimation_window=120, holding_days=5, n_stocks=20, cost_bps=10, regime_gate=True
r-idiosyncratic-vol-jp-growth-0267
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.60-0.62-0.68-0.24
estimation_window=120, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=False
r-idiosyncratic-vol-jp-growth-0280
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.59-0.24-0.63-1.27
estimation_window=120, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-idiosyncratic-vol-jp-growth-0293
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.01+1.22-0.06-1.09

対象ユニバース

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T02:22:19

関連する戦略