qbuntuqbuntu
rejectedregime_dependent· equity· anomaly· factor· liquidity· turnover

Turnover Factor (JP Growth Stocks)

slug: turnover-jp-growth
performance summary
Sharpe (median)
-0.07
Max DD
-24.8%
Win rate
Alpha (ann.)
p-value
0.36
backtest period: 2022-05-022026-06-01
Sharpe across 320 grid runs:median -0.07best 1.47 (not representative)worst -1.33p25–p75 -0.330.51

Hypothesis

Datar, Naik, Radcliffe (1998): low turnover stocks outperform. Turnover (volume/avg_volume) proxies investor attention and liquidity. LONG lowest turnover, SHORT highest turnover.

Why it didn't work

Across 320 grid combinations, median Sharpe=-0.07, best=1.47. Primary failure mode: regime_dependent.

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: -0.05
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation-0.05
Average monthly return correlation with other strategies (full period): 0.01
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.01
Best grid Sharpe ratio is 1.47 (p=0.0039).
period 2022-05-02–2026-06-01; cost=5bps
sharpe_ratio1.47
Median Sharpe across 320 grid runs is -0.07.
Full grid of 320 parameter combinations.
sharpe_ratio-0.07
Median Sharpe in DOWN regime is 2.85 across 320 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio2.85
Median Sharpe in FLAT regime is -0.27 across 320 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.27
Median Sharpe in UP regime is 0.22 across 320 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.22

Runs (30)

runparamssharpeUPFLATDOWN
formation_days=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
+1.47+2.28+1.05+8.34
formation_days=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0001
cost_bps: 5
n_stocks: 5
regime_gate: true
+1.01+0.39+1.05+8.34
formation_days=10, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0002
cost_bps: 10
n_stocks: 5
regime_gate: false
+1.31+2.12+0.90+7.77
formation_days=10, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0003
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.87+0.29+0.90+7.77
formation_days=10, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0012
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.66+1.29+0.18+7.49
formation_days=10, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0017
cost_bps: 5
n_stocks: 5
regime_gate: true
+1.12+0.39+1.19+4.46
formation_days=10, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0030
cost_bps: 10
n_stocks: 50
regime_gate: false
-0.10+1.16-0.89+3.69
formation_days=10, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0043
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.88-0.37-1.06-0.41
formation_days=10, holding_days=10, n_stocks=50, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0046
cost_bps: 10
n_stocks: 50
regime_gate: false
-1.33-0.75-1.58+0.06
formation_days=10, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0057
cost_bps: 5
n_stocks: 20
regime_gate: true
-0.30-0.25-0.51+2.41
formation_days=10, holding_days=60, n_stocks=5, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0064
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.07+0.70-0.29+0.39
formation_days=10, holding_days=60, n_stocks=10, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0071
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.26-0.63-0.25+0.67
formation_days=20, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0084
cost_bps: 5
n_stocks: 10
regime_gate: false
+1.43+1.88+1.02+20.15
formation_days=20, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0097
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.47+0.89+0.10+4.38
formation_days=20, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0110
cost_bps: 10
n_stocks: 50
regime_gate: false
+0.03+0.94-0.66+8.12
formation_days=20, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0123
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.54-0.22-0.71-0.78
formation_days=20, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0136
cost_bps: 5
n_stocks: 20
regime_gate: false
+0.02-0.86+0.44-0.07
formation_days=20, holding_days=60, n_stocks=10, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0149
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.24-0.63-0.24+1.34
formation_days=40, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0162
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.60+1.03+0.29+5.34
formation_days=40, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0175
cost_bps: 10
n_stocks: 50
regime_gate: true
-0.03-0.31-0.10+5.11
formation_days=40, holding_days=5, n_stocks=50, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0188
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.40+0.84-0.13+2.91
formation_days=40, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0201
cost_bps: 5
n_stocks: 20
regime_gate: true
-0.03+0.49-0.32+0.55
formation_days=40, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0214
cost_bps: 10
n_stocks: 10
regime_gate: false
+0.20+0.12+0.12+0.93
formation_days=40, holding_days=60, n_stocks=5, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0227
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.14+0.19-0.47+3.17
formation_days=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0240
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.75+1.31+0.35+5.64
formation_days=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0241
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.64+0.94+0.35+5.64
formation_days=60, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=False
r-turnover-jp-growth-0254
cost_bps: 10
n_stocks: 50
regime_gate: false
+0.38+0.95-0.20+18.83
formation_days=60, holding_days=5, n_stocks=20, cost_bps=10, regime_gate=True
r-turnover-jp-growth-0267
cost_bps: 10
n_stocks: 20
regime_gate: true
+0.28+0.80-0.27+4.94
formation_days=60, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=False
r-turnover-jp-growth-0280
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.92-0.84-1.05+1.79
formation_days=60, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-turnover-jp-growth-0293
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.48+0.47-0.92+0.39

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-28T01:10:43

Related strategies