Indicator library · Volume

Volume Price Trend, OBV, Weighted

On-Balance Volume with the all-or-nothing attribution removed: each session still joins a running total, but only in proportion to how far price actually moved.

The calculation

VPT = previous VPT + (volume × (close − previous close) ÷ previous close)

One running total, one multiplication. The percentage change scales each session’s contribution, so a day that closed a hundredth of a per cent higher adds almost nothing while a day that closed three per cent higher adds a substantial share of its volume. Everything else — the arbitrary origin, the meaningless level, the slope being the only reading — it inherits from On-Balance Volume.

Price at new highs while the volume price trend stallsThe upper panel shows a price series rising for about seventeen bars to a high, then declining and partially recovering. The lower panel shows the volume price trend, a running total that rises with the early advance, flattens before the price high, falls steeply through the decline as heavy volume accumulates on falling sessions, and turns up on the recovery.CLOSEVPT3.65heavy, barely movedPrice at new highs while the volume price trend stallsThe upper panel shows a price series rising for about seventeen bars to a high, then declining and partially recovering. The lower panel shows the volume price trend, a running total that rises with the early advance, flattens before the price high, falls steeply through the decline as heavy volume accumulates on falling sessions, and turns up on the recovery.CLOSEVPT3.65heavy, barely moved
Fig. 1: schematicComputed at build time from the same price and volume series as the On-Balance Volume page, so the two figures can be read against each other. The marked session is where the two measures part company: 91 of volume on a price change of 1.19%. OBV adds the whole 91 to its total because the close ticked up; VPT adds 1.08, because that is what the move was worth.

What the weighting is actually correcting

The OBV page states the assumption plainly: a session that closes a cent higher claims exactly as much volume as one that closes eight per cent higher. That is not a subtle flaw. It is the single largest source of noise in a cumulative volume line, because quiet sessions are the most numerous kind.

Three sessions, two treatments
SessionOBV addsVPT adds
Closes +0.02%, heavy volumeAll of itAlmost nothing, the move was worth almost nothing.
Closes +3%, heavy volumeAll of itA large share, in proportion to the move.
Closes unchanged, heavy volumeNothingNothing, the two agree here.

The first row is where a long series of quiet, marginally positive sessions can carry an OBV line upward without anything having happened. VPT is immune to that particular illusion, which is the whole reason to prefer it, and it buys nothing else.

What it does not fix

The direction still comes from the close alone. A session that traded heavily all day and finished a fraction higher is still classified as buying, in proportion, however contested it was; a session set by a closing auction on an expiry is weighted like any other. Scaling the contribution makes the arithmetic more sensible without making the attribution more true.

And the level remains meaningless. The total begins wherever the data begins, so quoting a VPT value is quoting an artefact of your data provider’s start date. Every reading is comparative, the slope of this line against the price beside it, which is the same discipline the advance/decline line requires and for the identical reason.

One weighting choice, two consequences

Scaling by the percentage change does more than damp quiet sessions, and the second effect is worth stating because it cuts the other way. A single dramatic session (an earnings gap, a takeover approach) now contributes a very large amount to the running total, where OBV would have added only its volume like any other up day.

So the two measures fail differently rather than one strictly improving on the other. OBV is distorted by long runs of marginal sessions; VPT is distorted by a handful of dramatic ones. On an instrument that gaps regularly the second distortion is the larger of the two, which is worth knowing before treating the smoother arithmetic as automatically the better tool.

Which reading survives

Everything useful here is comparative, and there are only two comparisons worth making. The slope of the line against the direction of price is the first: agreement is the ordinary state and says nothing, disagreement is the observation the measure exists for.

The second is the line against its own recent behaviour. Because the level is arbitrary, "VPT is high" is not a sentence that means anything, while "VPT has been flat for three weeks during which price rose four per cent" is a specific, checkable claim about how those three weeks were traded. Writing the date down when the flattening began is what turns it into something that can be reviewed later, including on the many occasions when nothing followed.

Where it misleads

Known failure modes
SituationWhat goes wrong
Reading the levelThe origin is arbitrary. Two charts started a year apart show different values for the same market.
Direction still from the closeA heavily contested session that finished a fraction higher is still counted as buying, only smaller.
GapsThe percentage change is close to close, so a gap counts in full and earnings sessions dominate the total.
Index rebalance and expiryMechanical volume enters the total exactly as if it carried an opinion.
Unadjusted pricesA split produces one enormous percentage change and permanently distorts the running total.
Compared with OBV valuesDifferent units and different origins. The two lines can be compared in shape only, never in level.

Which of the two to plot

If the question is which is better arithmetic, this is; the weighting is defensible and OBV’s is not. If the question is which is more useful, the answer is less tidy: OBV is on every platform by default, so more participants are watching that shape, and the coordination effect that gives a widely watched line its behaviour is real.

Plotting both is mostly duplication, since they share their inputs and differ only in weighting. The genuinely additional reading comes from putting either one beside a measure with a different input, breadth, which counts issues rather than volume, or the volume average, which says whether any of this was heavy in the first place.

Frequently asked questions

How is volume price trend calculated?

A running total, like On-Balance Volume, but each session contributes only a fraction of its volume: the volume multiplied by the percentage change in the close. VPT = previous VPT + (volume × (close − previous close) ÷ previous close). A session that closed a hundredth of a per cent higher adds almost nothing; one that closed three per cent higher adds a substantial share of its volume.

What does that fix in OBV?

The all-or-nothing attribution. On-Balance Volume adds a session’s entire volume when the close rises by any amount at all, so a one-cent gain and an eight-per-cent gain claim exactly the same volume. VPT scales the contribution by the size of the move, which is a more defensible weighting and removes the largest single distortion in the older measure.

Does the level of the line mean anything?

No, it shares that property with OBV and the advance/decline line, and for the same reason. The total starts wherever your data starts, so two charts of the same instrument begun a year apart show completely different levels. Only the slope, and the comparison against price, carry information.

Which should I use, VPT or OBV?

VPT if you want the weighting to be defensible, OBV if you want the line most other people are looking at. That is a real trade-off rather than a dodge: OBV’s crude attribution is a genuine weakness, and its ubiquity means more participants are watching the same shape. On most data the two lines agree about direction and differ in how sharply they respond to quiet sessions.

Why percentage change rather than points?

Because points carry the price level. A one-point move on a $20 stock and on a $200 stock are entirely different events, and using points would make the indicator’s behaviour depend on where the instrument happens to trade, including changing character across a split. The percentage form keeps the weighting comparable across the instrument’s own history.

What is the reading it is used for?

Divergence, as with every cumulative volume measure. Price making higher highs while the total flattens says the later advances were made on less volume, weighted by how little ground they covered. It is the same observation OBV produces, with the sessions that barely moved contributing correspondingly less to it: which usually makes the divergence cleaner rather than different.

Is it affected by gaps?

Yes, and in a way worth knowing: the percentage change is measured close to close, so a gap counts in full. A session that gapped three per cent and then traded flat contributes as much as one that ground three per cent higher through the day. Whether that is right depends on what you think the measure is for. It is consistent with treating the close as the settlement, and it does mean earnings sessions dominate the total.

How should it be smoothed?

Usually with a moving average of the line itself, crossings of which are read as a change in slope. That is legitimate and it is worth remembering the line is already a cumulative sum, so its average is an average of a total, two steps from the sessions underneath. The raw line and one average is the sensible limit; anything more is smoothing something that was never noisy in the first place.