VPT Divergence Strategy: What Three Years of Data Show

A VPT divergence strategy asks a simple question every time price makes a new low: did volume agree? When price falls to fresh lows but the Volume Price Trend does not, sellers may be running out of conviction. We tested that idea on three years of crypto candles. The divergence condition did not make the strategy a winner. It did cut out most of the worst trades.

The rules below are hypotheses to test, not a recommendation.

What Does VPT Divergence Look Like?

The Volume Price Trend (VPT) is a running total of volume, weighted by each candle’s percentage price change. A 3% rise on heavy volume adds a lot. A 0.1% dip on the same volume subtracts very little. Our Volume Price Trend guide covers the calculation in full.

A divergence happens when price and an indicator point in different directions. A bullish VPT divergence has two parts:

In plain English, price fell further, but the volume-weighted selling behind it was lighter. That is the setup traders hope marks a bounce.

Turning Divergence Into a Rule a Backtest Can Run

Divergence is easy to spot by eye and hard to define. Drawing lines between swing lows invites hindsight. A backtest needs a rule that reads only completed candles.

We used a fixed lookback instead of hand-picked swings. The lookback is the number of past candles a rule compares against.

Entry Conditions

Use four-hour candles. Generate a long entry signal when both hold on a completed candle:

Exit Conditions

Exit on the first of three events:

The Control You Must Run

Remove the VPT condition and keep everything else. The control buys every new 20-candle low. This answers the only question that matters: does VPT filter out bad entries, or just reduce the trade count?

What Happened on Three Years of Crypto Data?

We tested both versions on Binance four-hour candles from November 2023 to November 2026. We charged 0.1% per side and filled at the signal candle’s close. The first 200 candles were excluded as warm-up.

Market, 4-hourControl: entries per yearControl: returnControl: max drawdownVPT rule: entries per yearVPT rule: returnVPT rule: max drawdownBuy-and-hold
BTC72-23.8%46.7%21-3.8%24.7%+79.9%
ETH70-60.8%72.2%24+33.5%21.9%-4.9%
SOL78-1.2%61.8%29-15.5%44.5%+39.3%

Hypothetical rule tests on past data, with no slippage. They are not trading results, and past behaviour may not repeat.

Buying every new low was a poor idea on all three markets. On ETH, the control lost 60.8%. Max drawdown is the largest peak-to-trough fall in account value.

The VPT condition removed about two-thirds of entries. It improved the result on BTC and ETH and cut drawdown on every market. On SOL, it made the return worse. Some of the drawdown improvement comes simply from spending less time in the market.

Adding a Trend Filter

Dip-buying usually works better inside an uptrend. We added one more condition to both versions: the close must sit above the 200-period EMA.

Market, 4-hourControl: entries per yearControl: returnControl: max drawdownVPT rule: entries per yearVPT rule: returnVPT rule: max drawdown
BTC27-19.0%31.1%8+3.3%11.7%
ETH24-14.3%30.6%10+10.1%15.5%
SOL26+55.9%28.8%7+18.4%14.7%

Same assumptions as above.

The filter helped the control on every market. The VPT version again beat its control on BTC and ETH. On SOL, the plain filtered control did best of all.

How Should You Read These Results?

The honest summary is mixed. VPT divergence looks like a useful filter, not a complete strategy. It removed many losing entries. It did not beat buy-and-hold on BTC or SOL.

The samples are also small. The filtered VPT rule made only 21 to 30 trades per market in three years. A handful of trades can swing a total that small.

Win rates were high, between 62% and 81%. Returns were still modest. That pattern means small frequent wins and a few large losses. Our post on return skew explains why that shape needs care.

Where Do VPT Divergence Backtests Go Wrong?

Drawing divergences by hand. Picking swing lows after the fact makes every divergence look clean. Use a fixed lookback that only reads completed candles.

Skipping the control. A profitable divergence result means little until you compare it with the same rule minus VPT.

Ignoring the stop. Divergences can fail during long sell-offs. Without a stop, one failed signal can erase months of small wins.

Check the Inputs Too

Mixing exchanges. VPT depends on volume, and volume differs between exchanges. Test and deploy on the same exchange’s data.

Tuning the lookback until it wins. Trying 10, 15, 20 and 30 until SOL turns positive is curve fitting. Log every setting you try. Read our post on the deflated Sharpe ratio before trusting the best one.

Treating VPT like OBV. Both are cumulative volume lines, but VPT weights by price change. Our OBV divergence strategy is a useful second test of the same idea.

Building the VPT Divergence Strategy in Arrow Algo

The drag-and-drop visual builder expresses the rule as a short chain of visual blocks:

  1. Add the exchange’s candle data and select the four-hour timeframe.
  2. Connect the close and volume to a VPT block.
  3. Connect the close to a Min block set to 20. Add a condition block that checks the close is at or below that minimum.
  4. Connect the VPT output to a second Min block set to 20. Add a condition block that checks VPT is above that minimum.
  5. Join both with an AND condition block, then add a flat-position check.
  6. Connect the result to a buy action block. Under your rules, that block sends a signal.
  7. Build the exits: close above a 20-period EMA, a two-ATR stop, or a time limit. A Position Status block feeding a Since block can count candles in the trade.
  8. Join the exits with an OR condition block into a sell action block.

Step through a few signals on the chart before trusting the totals. Then duplicate the strategy and delete the VPT condition. Run both on the same data and fee settings.

No deployment is needed for any of this. If you later choose to deploy, your rules signal your own exchange account. The exchange decides whether to execute each order.

What Should You Take Into Your Own Test?

Disclaimer: This content is for educational purposes only and does not constitute financial advice. Trading involves significant risk and you should only trade with capital you can afford to lose. Past performance is not indicative of future results. Always conduct your own research before making any trading decisions.

Ready to build your own automated trading strategies without writing a single line of code? Start for free at Arrow Algo and join thousands of traders who've made the switch to systematic trading.