qbuntuqbuntu
rejectedregime_dependent· equity· anomaly· factor· volume

出来高アノマリー(東証グロース)のバックテスト

Volume Anomaly (JP Growth Stocks)

slug: volume-anomaly-jp-growth

東証グロース(約495銘柄)で出来高アノマリーをバックテストした。685通りの中央値 Sharpe は +0.00。p-value は 0.63。Max DD は -45.2%。期間は 2022-02-01〜2026-09-01。最良 Sharpe +0.75 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。上昇・横ばい・下落で結果が割れ、中央値としては安定しない。

成績の中央値

Sharpe(中央値)
+0.00
Max DD
-45.2%
勝率
—
Alpha(年率)
—
p-value
0.63
期間: 2022-02-01 → 2026-09-01
685通りの Sharpe:中央値 0.00最良 0.75 (代表値ではない)最悪 -1.15p25–p75 -0.25–0.19

仮説

原文は英語。

Campbell, Grossman, Wang (1993): abnormal volume spikes predict subsequent price drift or reversal. High volume + positive return signals momentum continuation; high volume + negative return signals overreaction. Tests momentum, reversal, and volume-only directions.

採用しなかった理由

Across 685 grid combinations, median Sharpe=0.00, best=0.75. Primary failure mode: regime_dependent.

検証ファクト (5)

Best grid Sharpe ratio is 0.75 (p=0.13).
period 2022-02-01–2026-09-01; cost=5bps
sharpe_ratio0.75
Median Sharpe across 685 grid runs is 0.00.
Full grid of 685 parameter combinations.
sharpe_ratio0
Median Sharpe in DOWN regime is -0.86 across 685 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-0.86
Median Sharpe in FLAT regime is -0.10 across 685 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.10
Median Sharpe in UP regime is 0.21 across 685 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.21

検証ラン (30)

runparamssharpeUPFLATDOWN
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-growth-0000
cost_bps: 5
direction: "momentum"
regime_gate: false
-0.43-0.68-0.34-1.19
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0001
cost_bps: 5
direction: "momentum"
regime_gate: true
-0.59-1.06-0.34-1.19
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0002
cost_bps: 10
direction: "momentum"
regime_gate: false
-0.62-0.89-0.52-1.64
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-growth-0003
cost_bps: 10
direction: "momentum"
regime_gate: true
-0.73-1.16-0.52-1.64
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=vol_only, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-growth-0008
cost_bps: 5
direction: "vol_only"
regime_gate: false
-0.92-1.45-0.78-2.13
volume_lookback=5, volume_threshold=1.5, holding_days=20, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-growth-0036
cost_bps: 5
direction: "momentum"
regime_gate: false
+0.40+0.10+0.58-0.77
volume_lookback=5, volume_threshold=1.5, holding_days=20, direction=momentum, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0037
cost_bps: 5
direction: "momentum"
regime_gate: true
+0.29-0.03+0.58-0.77
volume_lookback=5, volume_threshold=2, holding_days=5, direction=vol_only, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0069
cost_bps: 5
direction: "vol_only"
regime_gate: true
0.00+0.86-0.04-2.51
volume_lookback=5, volume_threshold=3, holding_days=1, direction=reversal, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0101
cost_bps: 5
direction: "reversal"
regime_gate: true
-0.38-0.98-0.13-2.79
volume_lookback=5, volume_threshold=3, holding_days=20, direction=momentum, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0133
cost_bps: 5
direction: "momentum"
regime_gate: true
+0.29+0.87-0.05-0.86
volume_lookback=5, volume_threshold=5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-growth-0144
cost_bps: 5
direction: "momentum"
regime_gate: false
-0.18-0.28-0.18+0.25
volume_lookback=5, volume_threshold=5, holding_days=10, direction=momentum, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-growth-0171
cost_bps: 10
direction: "momentum"
regime_gate: true
+0.06+0.80-0.56-1.16
volume_lookback=10, volume_threshold=1.5, holding_days=5, direction=momentum, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0205
cost_bps: 5
direction: "momentum"
regime_gate: true
+0.26+1.16-0.25-2.36
volume_lookback=10, volume_threshold=1.5, holding_days=20, direction=vol_only, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0237
cost_bps: 5
direction: "vol_only"
regime_gate: true
-0.22+0.12-0.25-2.11
volume_lookback=10, volume_threshold=2, holding_days=10, direction=reversal, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0269
cost_bps: 5
direction: "reversal"
regime_gate: true
+0.15-0.07+0.31-1.02
volume_lookback=10, volume_threshold=3, holding_days=5, direction=reversal, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0305
cost_bps: 5
direction: "reversal"
regime_gate: true
+0.19+0.55+0.10-1.33
volume_lookback=10, volume_threshold=5, holding_days=1, direction=reversal, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0341
cost_bps: 5
direction: "reversal"
regime_gate: true
+0.44+0.42+0.47-0.16
volume_lookback=10, volume_threshold=5, holding_days=10, direction=reversal, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-growth-0365
cost_bps: 5
direction: "reversal"
regime_gate: true
+0.75+0.89+0.93-0.90
volume_lookback=20, volume_threshold=1.5, holding_days=1, direction=reversal, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0390
cost_bps: 10
direction: "reversal"
regime_gate: false
+0.27-0.23+0.41+0.09
volume_lookback=20, volume_threshold=1.5, holding_days=20, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0422
cost_bps: 10
direction: "momentum"
regime_gate: false
+0.29+0.62+0.29-3.46
volume_lookback=20, volume_threshold=2, holding_days=5, direction=vol_only, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0454
cost_bps: 10
direction: "vol_only"
regime_gate: false
-0.48+0.60-0.56-3.96
volume_lookback=20, volume_threshold=3, holding_days=1, direction=reversal, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0486
cost_bps: 10
direction: "reversal"
regime_gate: false
+0.11-0.50+0.34+0.24
volume_lookback=20, volume_threshold=3, holding_days=20, direction=vol_only, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0526
cost_bps: 10
direction: "vol_only"
regime_gate: false
-0.21-0.15-0.02-5.33
volume_lookback=60, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-growth-0576
cost_bps: 5
direction: "momentum"
regime_gate: false
-0.64+0.05-0.86+0.13
volume_lookback=60, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0578
cost_bps: 10
direction: "momentum"
regime_gate: false
-0.83-0.16-1.05-0.49
volume_lookback=60, volume_threshold=1.5, holding_days=1, direction=vol_only, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-growth-0586
cost_bps: 10
direction: "vol_only"
regime_gate: false
-1.15-0.69-1.19-1.92
volume_lookback=60, volume_threshold=1.5, holding_days=10, direction=vol_only, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-growth-0611
cost_bps: 10
direction: "vol_only"
regime_gate: true
-0.25+0.13-0.29-3.27
volume_lookback=60, volume_threshold=2, holding_days=5, direction=vol_only, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-growth-0647
cost_bps: 10
direction: "vol_only"
regime_gate: true
-0.54+0.53-0.68-3.05
volume_lookback=60, volume_threshold=3, holding_days=1, direction=reversal, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-growth-0679
cost_bps: 10
direction: "reversal"
regime_gate: true
+0.13-1.01+0.49-1.17
volume_lookback=60, volume_threshold=5, holding_days=1, direction=reversal, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-growth-0724
cost_bps: 5
direction: "reversal"
regime_gate: false
+0.72+0.05+0.94+0.10

対象ユニバース

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:16

関連する戦略