◆ New — Strategy Validator, Code Fixer & Prop Compliance Checker are live. Try one free →
Home / Indicators / Price Volume Trend (PVT)
Volume indicator

Price Volume Trend (PVT)

A cumulative volume line that scales each bar's volume by the percentage price change, rather than adding all of it like OBV.

Illustrative diagram — not live market data.

What it is

Price Volume Trend (PVT) is a cumulative volume indicator that keeps a running total of volume weighted by how much price actually moved. It is closely related to On-Balance Volume (OBV), and the difference between the two is precisely one term in the formula: OBV adds or subtracts a bar's entire volume whenever the close is up or down by any amount, while PVT adds only a fraction of the volume, scaled by the bar's percentage price change. A bar that closes up 0.05% contributes almost nothing to PVT but contributes its full volume to OBV. The result is a single line, plotted in a separate pane, whose absolute value is arbitrary — only its direction and its behaviour relative to price carry meaning. Like every volume-derived tool, PVT describes what volume and price have already done together; it does not predict what they will do next. It is educational context for reading charts, not a signal generator, and no indicator removes the risk of loss inherent in trading.

How it works

PVT starts from an arbitrary base value (usually zero) and updates every bar with the formula: PVT = previous PVT + volume × (close − previous close) / previous close. The fraction (close − previous close) / previous close is simply the bar's percentage change, so a 2% up-close adds 2% of that bar's volume to the running total, a 2% down-close subtracts the same amount, and an unchanged close adds nothing. Compare this with OBV, which would add or subtract 100% of the volume in each of those cases regardless of the size of the move. Because of this scaling, PVT responds proportionally to conviction: large moves on large volume shift the line substantially, while high-volume bars that go nowhere barely register. The line is cumulative, so its level depends entirely on where the calculation began — starting the chart at a different date produces a different absolute value with the same shape. That is why PVT is read for slope, direction changes, and divergence against price rather than for any particular number. Many platforms expose it directly (Pine Script provides the built-in variable ta.pvt), and the manual calculation should match it exactly.

How traders read it

Common settings

PVT itself has no length parameter — it is a fixed cumulative formula applied to close and volume. The only common additions are a signal line (an EMA or SMA of PVT, often 21 periods) and the choice of chart timeframe, which changes every reading because the percentage changes and volumes being accumulated are different. On forex spot charts, remember that 'volume' is usually tick volume (number of price updates), not traded currency amounts, so PVT there accumulates a proxy rather than true volume.

Strengths

Pitfalls to watch

Pine v6 example

//@version=6
indicator("PVT Example", overlay = false)

sigLen = input.int(21, "Signal EMA Length", minval = 1)

// Manual PVT: cumulative volume scaled by percentage price change
pctChange = nz(ta.change(close) / close[1], 0.0)
myPvt = ta.cum(pctChange * volume)

signal = ta.ema(myPvt, sigLen)

plot(myPvt, "PVT (manual)", color = color.blue)
plot(signal, "Signal", color = color.orange)
plot(ta.pvt, "PVT (built-in)", color = color.new(color.gray, 60))
hline(0, "Zero", color = color.gray)

Pro tip: Plot PVT and OBV in adjacent panes on the same chart. When they agree, the extra line adds little; when they disagree — OBV grinding higher while PVT flattens — you are seeing that the up-closes are frequent but small, which is exactly the distinction the percentage-change term exists to capture. Read that as a description of how the move is being built, not a forecast of where it goes. This is educational information only, not financial advice; no indicator predicts price, and all trading carries risk of loss.

Built an indicator from this? Run it through the Validator to catch look-ahead bias and repainting, or convert a strategy to Pine Script.

Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.

Catch the bug that compiles.Run auditGet Pro