qbuntuqbuntu
rejectedno_edge· equity· divergence· technical· volume

VPT Divergence (JP Growth Stocks)

slug: vpt-divergence-jp-growth

VPT Divergence (JP Growth Stocks) backtest. Median Sharpe across 144 parameter sets is -0.79. p-value is 0.10. Max DD is -27.2%. Period: 2022-03-01 to 2026-09-01. Best Sharpe +0.31 is not the representative figure.

Verdict: rejected. The median reaches neither promising (Sharpe > 0.5 and p-value < 0.05) nor marginal (Sharpe > 0.05 and best p-value < 0.10). Primary reason: no_edge. It is not regime, frequency, or cost, and the median does not clear the bar.

Performance summary

Sharpe (median)
-0.79
Max DD
-27.2%
Win rate
—
Alpha (ann.)
—
p-value
0.10
backtest period: 2022-03-01 → 2026-09-01
Sharpe across 144 grid runs:median -0.79best 0.31 (not representative)worst -2.25p25–p75 -1.21–-0.37

Hypothesis

Volume-Price-Trend (VPT) accumulates volume signed by returns; a divergence between the VPT path and the price path is read as hidden accumulation/distribution. Ranking on VPT-price divergence tests whether price subsequently closes the gap.

Why it didn't work

Across 144 grid combinations, median Sharpe=-0.79, best=0.31. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 0.31 (p=0.52).
period 2022-03-01–2026-09-01; cost=5bps
sharpe_ratio0.31
Median Sharpe across 144 grid runs is -0.79.
Full grid of 144 parameter combinations.
sharpe_ratio-0.79
Median Sharpe in DOWN regime is -1.63 across 144 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-1.63
Median Sharpe in FLAT regime is -0.87 across 144 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.87
Median Sharpe in UP regime is -0.63 across 144 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.63

Runs (30)

runparamssharpeUPFLATDOWN
vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-vpt-divergence-jp-growth-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.07-0.20-1.29-2.35
vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-vpt-divergence-jp-growth-0001
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.74-1.16-0.53-1.62
vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0002
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.49-0.54-0.39-1.84
vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=1
r-vpt-divergence-jp-growth-0003
cost_bps: 5
n_stocks: 5
regime_gate: true
-1.14-0.29-1.29-2.35
vpt_lookback=20, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=1
r-vpt-divergence-jp-growth-0006
cost_bps: 10
n_stocks: 5
regime_gate: false
-1.20-0.32-1.43-2.49
vpt_lookback=20, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=5
r-vpt-divergence-jp-growth-0010
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.71-0.62-0.62-1.68
vpt_lookback=20, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=5
r-vpt-divergence-jp-growth-0016
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.51+0.56-0.71-2.05
vpt_lookback=20, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=5
r-vpt-divergence-jp-growth-0022
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.65+0.46-0.86-2.32
vpt_lookback=20, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=5
r-vpt-divergence-jp-growth-0028
cost_bps: 5
n_stocks: 20
regime_gate: true
-0.25-0.12-0.15-2.81
vpt_lookback=20, n_stocks=20, cost_bps=10, regime_gate=True, holding_days=5
r-vpt-divergence-jp-growth-0034
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.43-0.22-0.36-3.10
vpt_lookback=20, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1
r-vpt-divergence-jp-growth-0036
cost_bps: 5
n_stocks: 50
regime_gate: false
-1.21-1.03-1.11-3.04
vpt_lookback=20, n_stocks=50, cost_bps=5, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0041
cost_bps: 5
n_stocks: 50
regime_gate: true
-0.36+0.30-0.66-1.13
vpt_lookback=20, n_stocks=50, cost_bps=10, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0047
cost_bps: 10
n_stocks: 50
regime_gate: true
-0.50+0.24-0.84-1.27
vpt_lookback=40, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0053
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.04-2.61+0.70-2.08
vpt_lookback=40, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0059
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.01-2.65+0.65-2.20
vpt_lookback=40, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0065
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.29-1.21+0.85-6.13
vpt_lookback=40, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0071
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.23-1.25+0.78-6.33
vpt_lookback=40, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0077
cost_bps: 5
n_stocks: 20
regime_gate: true
+0.14-0.65+0.55-1.26
vpt_lookback=40, n_stocks=20, cost_bps=10, regime_gate=True, holding_days=20
r-vpt-divergence-jp-growth-0083
cost_bps: 10
n_stocks: 20
regime_gate: true
+0.04-0.70+0.43-1.44
vpt_lookback=40, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0086
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.31+1.67-0.04-0.36
vpt_lookback=40, n_stocks=50, cost_bps=10, regime_gate=False, holding_days=1
r-vpt-divergence-jp-growth-0090
cost_bps: 10
n_stocks: 50
regime_gate: false
-2.25-1.92-2.26-3.12
vpt_lookback=40, n_stocks=50, cost_bps=10, regime_gate=False, holding_days=5
r-vpt-divergence-jp-growth-0091
cost_bps: 10
n_stocks: 50
regime_gate: false
-0.72-0.02-1.06-0.55
vpt_lookback=60, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-vpt-divergence-jp-growth-0096
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.69-2.99-1.34-1.20
vpt_lookback=60, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0098
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.21-2.59-0.99-0.76
vpt_lookback=60, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0104
cost_bps: 10
n_stocks: 5
regime_gate: false
-1.27-2.68-1.04-0.82
vpt_lookback=60, n_stocks=10, cost_bps=5, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0110
cost_bps: 5
n_stocks: 10
regime_gate: false
-1.03-2.67-0.76-1.50
vpt_lookback=60, n_stocks=10, cost_bps=10, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0116
cost_bps: 10
n_stocks: 10
regime_gate: false
-1.10-2.79-0.82-1.65
vpt_lookback=60, n_stocks=20, cost_bps=5, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0122
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.93-0.67-0.88-29.89
vpt_lookback=60, n_stocks=20, cost_bps=10, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0128
cost_bps: 10
n_stocks: 20
regime_gate: false
-1.02-0.79-0.97-31.23
vpt_lookback=60, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=20
r-vpt-divergence-jp-growth-0134
cost_bps: 5
n_stocks: 50
regime_gate: false
-0.25+1.38-0.61-1.91

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T02:22:21

Related strategies