qbuntuqbuntu
marginalno_edge· equity· anomaly· factor· volatility

Garman-Klass Volatility Factor (JP All Stocks)

slug: garman-klass-vol-jp-all
performance summary
Sharpe (median)
+0.10
Max DD
-21.0%
Win rate
Alpha (ann.)
p-value
0.70
backtest period: 2022-02-012026-02-02
Sharpe across 160 grid runs:median 0.10best 1.17 (not representative)worst -0.72p25–p75 -0.060.28

Hypothesis

Garman & Klass (1980): OHLC-based volatility estimator. Testing low-volatility anomaly using GK vol on the full Japanese stock universe.

Why it didn't work

Across 160 grid combinations, median Sharpe=0.10, best=1.17. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 1.17 (p=0.021).
period 2022-02-01–2026-02-02; cost=5bps
sharpe_ratio1.17
Median Sharpe across 160 grid runs is 0.10.
Full grid of 160 parameter combinations.
sharpe_ratio0.10
Median Sharpe in DOWN regime is -0.52 across 160 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-0.52
Median Sharpe in FLAT regime is 0.22 across 160 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.22
Median Sharpe in UP regime is 0.18 across 160 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.18

Runs (30)

runparamssharpeUPFLATDOWN
formation_days=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.01-1.45+0.64-0.30
formation_days=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0001
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.51+0.17+0.64-0.30
formation_days=10, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0002
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.19-1.61+0.42-0.50
formation_days=10, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-garman-klass-vol-jp-all-0003
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.29-0.04+0.42-0.50
formation_days=10, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0004
cost_bps: 5
n_stocks: 10
regime_gate: false
-0.39-2.60+0.28-2.14
formation_days=10, holding_days=1, n_stocks=10, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0006
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.72-2.94-0.06-2.72
formation_days=10, holding_days=5, n_stocks=5, cost_bps=10, regime_gate=True
r-garman-klass-vol-jp-all-0019
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.45+1.00+0.41-0.55
formation_days=10, holding_days=10, n_stocks=5, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0033
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.23+1.24+0.19-2.05
formation_days=10, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=True
r-garman-klass-vol-jp-all-0039
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.04+0.58+0.18-3.58
formation_days=10, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0053
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.32-0.00+0.44-0.33
formation_days=10, holding_days=60, n_stocks=5, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0064
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.09+0.14+0.08+0.07
formation_days=10, holding_days=60, n_stocks=10, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0068
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.21+0.24+0.09+1.64
formation_days=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0082
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.25-2.06+0.57-0.71
formation_days=20, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0096
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.06-1.46+0.69-0.55
formation_days=20, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0102
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.32-1.83+0.33-0.91
formation_days=20, holding_days=10, n_stocks=10, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0116
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.02+0.17+0.17-2.39
formation_days=20, holding_days=20, n_stocks=5, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0130
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.31-0.54-0.16-1.00
formation_days=20, holding_days=60, n_stocks=5, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0144
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.07+0.44-0.07+0.27
formation_days=20, holding_days=60, n_stocks=10, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0150
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.03+0.39-0.21-0.07
formation_days=40, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0161
cost_bps: 5
n_stocks: 5
regime_gate: true
+1.17+0.14+1.49+0.42
formation_days=40, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0165
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.61-0.63+0.99+0.51
formation_days=40, holding_days=5, n_stocks=5, cost_bps=10, regime_gate=True
r-garman-klass-vol-jp-all-0179
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.75+1.36+0.66+0.59
formation_days=40, holding_days=10, n_stocks=5, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0193
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.75+2.01+0.84-3.56
formation_days=40, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=True
r-garman-klass-vol-jp-all-0199
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.19+0.80+0.05-0.40
formation_days=40, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-garman-klass-vol-jp-all-0213
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.14+0.86-0.07+1.11
formation_days=40, holding_days=60, n_stocks=5, cost_bps=10, regime_gate=True
r-garman-klass-vol-jp-all-0227
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.11+2.50-0.13-2.00
formation_days=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0240
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.24-1.74+1.27+0.18
formation_days=60, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0242
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.04-1.89+1.01+0.05
formation_days=60, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False
r-garman-klass-vol-jp-all-0256
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.15-1.35+0.48+0.34
formation_days=60, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=False
r-garman-klass-vol-jp-all-0262
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.23-1.39+0.24+0.51

Target universe

Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-30T01:20:51

Related strategies