qbuntuqbuntu
rejectedno_edge· equity· anomaly· factor· volume

Volume Anomaly (JP All Stocks)

slug: volume-anomaly-jp-all
performance summary
Sharpe (median)
-0.24
Max DD
-23.2%
Win rate
Alpha (ann.)
p-value
0.50
backtest period: 2022-02-012026-06-01
Sharpe across 564 grid runs:median -0.24best 2.25 (not representative)worst -5.20p25–p75 -0.640.27

Hypothesis

Campbell, Grossman, Wang (1993): abnormal volume spikes predict subsequent price drift or reversal. Testing on the full Japanese stock universe.

Why it didn't work

Across 564 grid combinations, median Sharpe=-0.24, best=2.25. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 2.25 (p=0.1).
period 2022-02-01–2026-06-01; cost=5bps
sharpe_ratio2.25
Median Sharpe across 564 grid runs is -0.24.
Full grid of 564 parameter combinations.
sharpe_ratio-0.24
Median Sharpe in DOWN regime is nan across 564 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
Median Sharpe in FLAT regime is -0.23 across 564 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.23
Median Sharpe in UP regime is -0.28 across 564 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.28

Runs (30)

runparamssharpeUPFLATDOWN
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0000
cost_bps: 5
direction: "momentum"
regime_gate: false
-1.31-0.62-1.32
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-all-0001
cost_bps: 5
direction: "momentum"
regime_gate: true
-1.17-0.52-1.32
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0002
cost_bps: 10
direction: "momentum"
regime_gate: false
-1.44-0.81-1.45
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-all-0003
cost_bps: 10
direction: "momentum"
regime_gate: true
-1.27-0.60-1.45
volume_lookback=5, volume_threshold=1.5, holding_days=1, direction=vol_only, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0008
cost_bps: 5
direction: "vol_only"
regime_gate: false
-1.11-0.62-1.44
volume_lookback=5, volume_threshold=1.5, holding_days=10, direction=reversal, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0030
cost_bps: 10
direction: "reversal"
regime_gate: false
-0.71-1.65-0.59
volume_lookback=5, volume_threshold=1.5, holding_days=20, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0036
cost_bps: 5
direction: "momentum"
regime_gate: false
+0.39+1.72-0.13
volume_lookback=5, volume_threshold=2, holding_days=1, direction=vol_only, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-all-0057
cost_bps: 5
direction: "vol_only"
regime_gate: true
-1.34+0.07-1.70
volume_lookback=5, volume_threshold=2, holding_days=10, direction=vol_only, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-all-0083
cost_bps: 10
direction: "vol_only"
regime_gate: true
-0.54-2.56-0.30
volume_lookback=5, volume_threshold=3, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0096
cost_bps: 5
direction: "momentum"
regime_gate: false
-0.19-1.72+0.44
volume_lookback=5, volume_threshold=3, holding_days=5, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0110
cost_bps: 10
direction: "momentum"
regime_gate: false
-1.15-0.82-1.27
volume_lookback=5, volume_threshold=3, holding_days=20, direction=reversal, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0136
cost_bps: 5
direction: "reversal"
regime_gate: false
-2.12-1.77-2.28
volume_lookback=10, volume_threshold=1.5, holding_days=5, direction=reversal, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0210
cost_bps: 10
direction: "reversal"
regime_gate: false
-0.18+0.31-0.35
volume_lookback=10, volume_threshold=2, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0240
cost_bps: 5
direction: "momentum"
regime_gate: false
+0.16-1.87+0.71
volume_lookback=10, volume_threshold=2, holding_days=10, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0266
cost_bps: 10
direction: "momentum"
regime_gate: false
+0.66-0.75+0.88
volume_lookback=10, volume_threshold=3, holding_days=1, direction=reversal, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0292
cost_bps: 5
direction: "reversal"
regime_gate: false
+0.89+1.53+0.23
volume_lookback=10, volume_threshold=3, holding_days=10, direction=reversal, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0318
cost_bps: 10
direction: "reversal"
regime_gate: false
-0.29+2.53-4.84
volume_lookback=20, volume_threshold=1.5, holding_days=1, direction=vol_only, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0392
cost_bps: 5
direction: "vol_only"
regime_gate: false
-0.82-0.49-1.08
volume_lookback=20, volume_threshold=1.5, holding_days=20, direction=momentum, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0422
cost_bps: 10
direction: "momentum"
regime_gate: false
+1.60+1.91+1.41
volume_lookback=20, volume_threshold=2, holding_days=5, direction=vol_only, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0452
cost_bps: 5
direction: "vol_only"
regime_gate: false
-0.70-0.45-0.67
volume_lookback=20, volume_threshold=2, holding_days=20, direction=vol_only, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0478
cost_bps: 10
direction: "vol_only"
regime_gate: false
-0.72-0.54-0.56
volume_lookback=20, volume_threshold=3, holding_days=10, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0504
cost_bps: 5
direction: "momentum"
regime_gate: false
+1.42+0.72+3.35
volume_lookback=20, volume_threshold=3, holding_days=10, direction=reversal, cost_bps=10, regime_gate=True
r-volume-anomaly-jp-all-0511
cost_bps: 10
direction: "reversal"
regime_gate: true
-5.20-8.38-4.19
volume_lookback=60, volume_threshold=1.5, holding_days=1, direction=momentum, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0576
cost_bps: 5
direction: "momentum"
regime_gate: false
-0.09-1.09+0.41
volume_lookback=60, volume_threshold=1.5, holding_days=1, direction=reversal, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0580
cost_bps: 5
direction: "reversal"
regime_gate: false
-0.10+0.89-0.59
volume_lookback=60, volume_threshold=1.5, holding_days=10, direction=reversal, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0606
cost_bps: 10
direction: "reversal"
regime_gate: false
0.00+0.76-0.34
volume_lookback=60, volume_threshold=2, holding_days=1, direction=vol_only, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0632
cost_bps: 5
direction: "vol_only"
regime_gate: false
-1.63-3.18-1.50
volume_lookback=60, volume_threshold=2, holding_days=10, direction=vol_only, cost_bps=10, regime_gate=False
r-volume-anomaly-jp-all-0658
cost_bps: 10
direction: "vol_only"
regime_gate: false
-0.76-1.64-0.50
volume_lookback=60, volume_threshold=3, holding_days=1, direction=reversal, cost_bps=5, regime_gate=False
r-volume-anomaly-jp-all-0676
cost_bps: 5
direction: "reversal"
regime_gate: false
+2.25+4.09+2.02
volume_lookback=60, volume_threshold=3, holding_days=5, direction=momentum, cost_bps=5, regime_gate=True
r-volume-anomaly-jp-all-0685
cost_bps: 5
direction: "momentum"
regime_gate: true
-0.68+2.61-0.94

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

Related strategies