# VPT Divergence (JP All Stocks)

- **Slug**: `vpt-divergence-jp-all`
- **Verdict**: rejected (regime_dependent)
- **Asset class**: equity
- **Categories**: divergence, technical, volume
- **Source**: qbuntu-analysis (computed asof 2026-08-02T16:26:06)
- **Reproducibility**: analysis-engine@2f23bb7, backtest-lib@711b855, grid tier=shallow (python 3.10.11, numpy 2.2.6, pandas 2.3.3)
- **HTML**: https://qbuntu.ai/strategies/vpt-divergence-jp-all
- **JSON**: https://qbuntu.ai/v1/strategies/vpt-divergence-jp-all
- **License**: CC-BY-4.0

## 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 72 grid combinations, median Sharpe=-0.06, best=1.07. Primary failure mode: regime_dependent.

## Performance summary

Headline figures are the **median across the parameter grid**, not the best run.

| Metric | Value |
|---|---|
| Sharpe (median) | -0.06 |
| Max drawdown | -13.2% |
| p-value | 0.48 |
| Backtest period | 2022-03-01 to 2026-02-02 |

Sharpe distribution across 72 grid runs: median -0.06, best 1.07 (best-case — not representative), worst -2.04, p25 -0.35, p75 0.38.

## Methodology

- Notes: {"walk_forward_definition": {"type": "single_pass", "description": "Full period backtest without walk-forward split", "verdict_basis": "full_period"}}
- Slippage model: open-on-open + variable bps fixed
- Position sizing: equal_weight
- Regime definition: N225 SMA20/SMA60 three-class
- Transaction cost bps: 5

## Target universe

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

## Runs (30)

| run_id | params | sharpe | UP | FLAT | DOWN |
|---|---|---:|---:|---:|---:|
| `r-vpt-divergence-jp-all-0000` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=1 | -0.5 | 2.05 | -1.75 | 2.97 |
| `r-vpt-divergence-jp-all-0001` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=5 | 0.58 | 1.73 | 0.11 | -4.37 |
| `r-vpt-divergence-jp-all-0002` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=20 | 0.03 | 1.23 | -0.43 | -5.66 |
| `r-vpt-divergence-jp-all-0003` | cost_bps=5, n_stocks=5, regime_gate=true, holding_days=1 | -0.71 | 2.12 | -1.75 | 2.97 |
| `r-vpt-divergence-jp-all-0005` | cost_bps=5, n_stocks=5, regime_gate=true, holding_days=20 | -0.16 | 0.65 | -0.43 | -5.66 |
| `r-vpt-divergence-jp-all-0006` | cost_bps=10, n_stocks=5, regime_gate=false, holding_days=1 | -0.74 | 1.84 | -2.03 | 2.48 |
| `r-vpt-divergence-jp-all-0008` | cost_bps=10, n_stocks=5, regime_gate=false, holding_days=20 | -0.04 | 1.18 | -0.51 | -5.92 |
| `r-vpt-divergence-jp-all-0010` | cost_bps=10, n_stocks=5, regime_gate=true, holding_days=5 | 0.48 | 1.8 | -0.04 | -4.7 |
| `r-vpt-divergence-jp-all-0012` | cost_bps=5, n_stocks=10, regime_gate=false, holding_days=1 | -1.63 | 0.95 | -2.68 | 1.49 |
| `r-vpt-divergence-jp-all-0013` | cost_bps=5, n_stocks=10, regime_gate=false, holding_days=5 | -0.08 | 1.31 | -0.77 | -3.9 |
| `r-vpt-divergence-jp-all-0015` | cost_bps=5, n_stocks=10, regime_gate=true, holding_days=1 | -1.5 | 1.19 | -2.68 | 1.49 |
| `r-vpt-divergence-jp-all-0017` | cost_bps=5, n_stocks=10, regime_gate=true, holding_days=20 | -0.29 | 0.59 | -0.66 | -1.14 |
| `r-vpt-divergence-jp-all-0018` | cost_bps=10, n_stocks=10, regime_gate=false, holding_days=1 | -2.04 | 0.47 | -3.12 | 0.78 |
| `r-vpt-divergence-jp-all-0020` | cost_bps=10, n_stocks=10, regime_gate=false, holding_days=20 | -0.28 | 0.85 | -0.78 | -1.28 |
| `r-vpt-divergence-jp-all-0022` | cost_bps=10, n_stocks=10, regime_gate=true, holding_days=5 | -0.18 | 1.81 | -1 | -4.38 |
| `r-vpt-divergence-jp-all-0048` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=1 | -0.35 | 2.06 | -0.99 | -4.32 |
| `r-vpt-divergence-jp-all-0050` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=20 | 0.2 | 1.63 | -0.1 | -3.17 |
| `r-vpt-divergence-jp-all-0052` | cost_bps=5, n_stocks=5, regime_gate=true, holding_days=5 | 0.42 | 2.15 | -0.1 | -2.73 |
| `r-vpt-divergence-jp-all-0054` | cost_bps=10, n_stocks=5, regime_gate=false, holding_days=1 | -0.58 | 1.84 | -1.22 | -4.96 |
| `r-vpt-divergence-jp-all-0056` | cost_bps=10, n_stocks=5, regime_gate=false, holding_days=20 | 0.12 | 1.57 | -0.19 | -3.25 |
| `r-vpt-divergence-jp-all-0058` | cost_bps=10, n_stocks=5, regime_gate=true, holding_days=5 | 0.33 | 2.11 | -0.22 | -2.88 |
| `r-vpt-divergence-jp-all-0060` | cost_bps=5, n_stocks=10, regime_gate=false, holding_days=1 | -0.8 | 1.41 | -1.82 | -0.83 |
| `r-vpt-divergence-jp-all-0062` | cost_bps=5, n_stocks=10, regime_gate=false, holding_days=20 | -0.21 | 0.73 | -0.5 | -2.22 |
| `r-vpt-divergence-jp-all-0064` | cost_bps=5, n_stocks=10, regime_gate=true, holding_days=5 | 0.33 | 2.26 | -0.22 | -1.79 |
| `r-vpt-divergence-jp-all-0066` | cost_bps=10, n_stocks=10, regime_gate=false, holding_days=1 | -1.17 | 1.11 | -2.26 | -1.45 |
| `r-vpt-divergence-jp-all-0068` | cost_bps=10, n_stocks=10, regime_gate=false, holding_days=20 | -0.33 | 0.64 | -0.63 | -2.37 |
| `r-vpt-divergence-jp-all-0070` | cost_bps=10, n_stocks=10, regime_gate=true, holding_days=5 | 0.18 | 2.18 | -0.42 | -1.98 |
| `r-vpt-divergence-jp-all-0096` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=1 | 0.84 | 1.57 | 0.73 | -1.24 |
| `r-vpt-divergence-jp-all-0097` | cost_bps=5, n_stocks=5, regime_gate=false, holding_days=5 | 0.95 | 2.1 | 0.74 | -4.88 |
| `r-vpt-divergence-jp-all-0100` | cost_bps=5, n_stocks=5, regime_gate=true, holding_days=5 | 1.07 | 2.57 | 0.74 | -4.88 |

## Facts (5)

Each fact has a permanent citation URL. AI agents quoting qbuntu should use these.

- **Best grid Sharpe ratio is 1.07 (p=0.039).**
  - Value: 1.07 sharpe_ratio
  - Context: period 2022-03-01–2026-02-02; cost=5bps
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/vpt-divergence-jp-all-fact-best-sharpe

- **Median Sharpe across 72 grid runs is -0.06.**
  - Value: -0.06 sharpe_ratio
  - Context: Full grid of 72 parameter combinations.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/vpt-divergence-jp-all-fact-median-sharpe

- **Median Sharpe in DOWN regime is -3.57 across 72 runs.**
  - Value: -3.57 sharpe_ratio
  - Context: Regime=DOWN, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/vpt-divergence-jp-all-fact-regime-down

- **Median Sharpe in FLAT regime is -0.42 across 72 runs.**
  - Value: -0.42 sharpe_ratio
  - Context: Regime=FLAT, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/vpt-divergence-jp-all-fact-regime-flat

- **Median Sharpe in UP regime is 1.53 across 72 runs.**
  - Value: 1.53 sharpe_ratio
  - Context: Regime=UP, N225 SMA20/SMA60 classification.
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/vpt-divergence-jp-all-fact-regime-up

## Related strategies

- same_strategy: [vpt-divergence-jp-growth](https://qbuntu.ai/strategies/vpt-divergence-jp-growth)
- same_strategy: [vpt-divergence-us-sp500](https://qbuntu.ai/strategies/vpt-divergence-us-sp500)

---

Cite as: qbuntu (2026). VPT Divergence (JP All Stocks). https://qbuntu.ai/strategies/vpt-divergence-jp-all

Visit qbuntu.ai — the honest scorecard for quant strategies (live, promising, marginal, rejected).
