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

Low Volatility Anomaly (JP Growth Stocks)

slug: low-volatility-anomaly-jp-growth
performance summary
Sharpe (median)
+0.15
Max DD
-23.6%
Win rate
Alpha (ann.)
p-value
0.44
backtest period: 2022-02-012026-06-01
Sharpe across 320 grid runs:median 0.15best 2.22 (not representative)worst -0.95p25–p75 -0.150.56

Hypothesis

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.

Why it didn't work

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

Facts (5)

Best grid Sharpe ratio is 2.22 (p=1.8e-05).
period 2022-02-01–2026-06-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.15.
Full grid of 320 parameter combinations.
sharpe_ratio0.15
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.28 across 320 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.28
Median Sharpe in UP regime is -0.48 across 320 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.48

Runs (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.54+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.02-1.73+2.54+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.36+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.87-2.05+2.36+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.92+0.33+1.03+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.79-0.31+0.71+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.25-0.39+0.61-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.04-0.49+0.07+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.23-1.13+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.55+2.26+0.34-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.18+0.80+0.08-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
+1.12-2.35+1.44+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.59-0.20+0.99+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.50-0.40+0.70+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.20-1.05+0.02+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.19-0.71-0.19+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.06+0.59-0.20+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.86-1.42+1.25+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.20-0.74+0.51+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.31-0.99+0.43+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.95-0.81-0.98-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.18-0.50-0.18+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.48-0.42-0.57+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.35-1.94-0.30-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
+1.17+1.13+1.43-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.91-0.77+1.43-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.02-0.52+0.03+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.35-0.92-0.31+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.65-0.70-0.58-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.27-0.28+0.39-0.62

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-30T01:20:51

Related strategies