qbuntuqbuntu
marginalno_edge· equity· anomaly· factor· low-volatility

低ボラティリティ・アノマリー(東証グロース)のバックテスト

Low Volatility Anomaly (JP Growth Stocks)

slug: low-volatility-anomaly-jp-growth

東証グロース(約495銘柄)で低ボラティリティ・アノマリーをバックテストした。320通りの中央値 Sharpe は +0.19。p-value は 0.47。Max DD は -24.3%。期間は 2022-02-01〜2026-09-01。最良 Sharpe +2.22 は代表値ではない。

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

何を検証したか

低ボラティリティ・アノマリーは、値動きの小さい銘柄の方がリスクあたりで得だ、という主張です。低いボラティリティの銘柄を持ち続ける側で検証していて、相場の局面が変わると成績が割れやすいタイプです。中央値がマイナス、または主因が regime_dependent なら、低リスクだから安全とは読めません。

成績の中央値

Sharpe(中央値)
+0.19
Max DD
-24.3%
勝率
—
Alpha(年率)
—
p-value
0.47
期間: 2022-02-01 → 2026-09-01
320通りの Sharpe:中央値 0.19最良 2.22 (代表値ではない)最悪 -0.83p25–p75 -0.07–0.50

仮説

原文は英語。

Baker, Bradley, Wurgler (2011): low-volatility stocks earn higher risk-adjusted returns. LONG lowest realized vol quintile, SHORT highest. Tests whether the low-vol anomaly holds in TSE Growth Market.

採用しなかった理由

Across 320 grid combinations, median Sharpe=0.19, best=2.22. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 2.22 (p=1e-05).
period 2022-02-01–2026-09-01; cost=5bps
sharpe_ratio2.22
cite ↗ /cite/low-volatility-anomaly-jp-growth-fact-best-sharpevia r-low-volatility-anomaly-jp-growth-0000
Median Sharpe across 320 grid runs is 0.19.
Full grid of 320 parameter combinations.
sharpe_ratio0.19
Median Sharpe in DOWN regime is 0.36 across 320 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.36
Median Sharpe in FLAT regime is 0.31 across 320 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.31
Median Sharpe in UP regime is -0.51 across 320 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.51

検証ラン (30)

runparamssharpeUPFLATDOWN
vol_window=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0000
cost_bps: 5
n_stocks: 5
vol_window: 20
+2.22+1.26+2.51+7.18
vol_window=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0001
cost_bps: 5
n_stocks: 5
vol_window: 20
+2.03-1.73+2.51+7.18
vol_window=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0002
cost_bps: 10
n_stocks: 5
vol_window: 20
+2.06+1.15+2.33+6.96
vol_window=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0003
cost_bps: 10
n_stocks: 5
vol_window: 20
+1.88-2.05+2.33+6.96
vol_window=20, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0012
cost_bps: 5
n_stocks: 50
vol_window: 20
+0.77+0.33+0.80+2.41
vol_window=20, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0017
cost_bps: 5
n_stocks: 5
vol_window: 20
+0.63-0.31+0.52+8.82
vol_window=20, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0030
cost_bps: 10
n_stocks: 50
vol_window: 20
+0.21-0.39+0.53-0.43
vol_window=20, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0043
cost_bps: 10
n_stocks: 20
vol_window: 20
+0.11-0.81+0.21+1.17
vol_window=20, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0056
cost_bps: 5
n_stocks: 20
vol_window: 20
+0.32-0.81+0.67+0.60
vol_window=20, holding_days=60, n_stocks=5, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0064
cost_bps: 5
n_stocks: 5
vol_window: 20
+0.66+2.54+0.36-2.70
vol_window=20, holding_days=60, n_stocks=10, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0070
cost_bps: 10
n_stocks: 10
vol_window: 20
+0.24+1.09+0.07-0.08
vol_window=40, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0083
cost_bps: 10
n_stocks: 5
vol_window: 40
+0.85-2.35+1.07+3.10
vol_window=40, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0096
cost_bps: 5
n_stocks: 5
vol_window: 40
+0.52-0.20+0.83+36.94
vol_window=40, holding_days=5, n_stocks=50, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0109
cost_bps: 5
n_stocks: 50
vol_window: 40
+0.42-0.40+0.58+0.81
vol_window=40, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0122
cost_bps: 10
n_stocks: 20
vol_window: 40
-0.01-0.79+0.20+0.01
vol_window=40, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0135
cost_bps: 10
n_stocks: 10
vol_window: 40
-0.02-0.99+0.05+0.13
vol_window=40, holding_days=60, n_stocks=10, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0148
cost_bps: 5
n_stocks: 10
vol_window: 40
+0.05+1.01-0.19+1.05
vol_window=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0161
cost_bps: 5
n_stocks: 5
vol_window: 60
+0.72-1.42+1.03+0.11
vol_window=60, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0174
cost_bps: 10
n_stocks: 50
vol_window: 60
+0.11-0.74+0.34+2.61
vol_window=60, holding_days=5, n_stocks=20, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0187
cost_bps: 10
n_stocks: 20
vol_window: 60
+0.26-0.99+0.36+0.72
vol_window=60, holding_days=10, n_stocks=5, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0195
cost_bps: 10
n_stocks: 5
vol_window: 60
-0.83-1.27-0.77-1.71
vol_window=60, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0201
cost_bps: 5
n_stocks: 20
vol_window: 60
-0.08-0.91+0.01+0.11
vol_window=60, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0214
cost_bps: 10
n_stocks: 10
vol_window: 60
-0.31-0.23-0.40+0.36
vol_window=60, holding_days=60, n_stocks=5, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0227
cost_bps: 10
n_stocks: 5
vol_window: 60
-0.31-1.24-0.27-1.05
vol_window=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0240
cost_bps: 5
n_stocks: 5
vol_window: 120
+0.84+1.13+0.87-0.95
vol_window=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0241
cost_bps: 5
n_stocks: 5
vol_window: 120
+0.55-0.77+0.87-0.95
vol_window=120, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=False
r-low-volatility-anomaly-jp-growth-0254
cost_bps: 10
n_stocks: 50
vol_window: 120
-0.10-0.52-0.15+5.15
vol_window=120, holding_days=5, n_stocks=20, cost_bps=10, regime_gate=True
r-low-volatility-anomaly-jp-growth-0267
cost_bps: 10
n_stocks: 20
vol_window: 120
-0.40-0.92-0.38+0.21
vol_window=120, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=False
r-low-volatility-anomaly-jp-growth-0280
cost_bps: 5
n_stocks: 20
vol_window: 120
-0.46-0.45-0.40-1.14
vol_window=120, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-low-volatility-anomaly-jp-growth-0293
cost_bps: 5
n_stocks: 10
vol_window: 120
+0.33+0.31+0.42-0.62

対象ユニバース

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

関連する戦略