Volume & money flowVolume Zone Oscillator · VZO
A bounded oscillator that signs volume by price direction to show whether buyers or sellers control the flow.
Works in most conditionsEngine-computed on a fixed sample series
What it is
The Volume Zone Oscillator (VZO) is a bounded momentum tool that answers one blunt question: over the recent window, did more volume trade on up days or on down days? It was introduced by Walid Khalil and David Steckler in a Technical Analysis of Stocks and Commodities article, and it belongs to the volume family alongside On-Balance Volume and the Force Index. Where On-Balance Volume simply piles signed volume into an ever-growing running total, VZO instead expresses buying versus selling volume as a ratio and scales it into a fixed range of roughly minus 100 to plus 100. That bounded scale is the whole point: it lets you set overbought and oversold thresholds the way you would with the Relative Strength Index, but the fuel behind the reading is volume rather than price change. For a total beginner, picture a tug-of-war rope where the flag is pulled toward the buyers on heavy up-volume and toward the sellers on heavy down-volume, and VZO tells you where the flag sits.
How it is calculated
The calculation starts by signing each bar's volume with the direction of the close, a quantity Khalil calls volume position: if today's close is above yesterday's close the bar contributes plus its full volume, and if the close is lower it contributes minus its volume. That stream of signed volume is then smoothed with an exponential moving average, usually over fourteen periods, to produce the numerator. Separately, the raw unsigned volume is smoothed with an exponential moving average over the same length to produce the denominator. VZO is one hundred times the ratio of the two, so it measures what share of recent smoothed volume leaned to the buy side versus the sell side. If every recent bar closed up, the signed and unsigned averages match and the ratio approaches plus 100; if every bar closed down it approaches minus 100; and a rough balance sits near zero. Because it is a ratio of averages rather than a cumulative sum, it never drifts off the top of the chart the way On-Balance Volume can.
Reading it, step by step
First read the sign, because the zero line is the accumulation-distribution divider: above zero the recent volume balance favors buyers, below zero it favors sellers. Next read the zones the authors defined, where plus 40 marks overbought and minus 40 oversold, the band from plus 5 to plus 40 is a healthy bullish zone, and the band from minus 5 to minus 40 is a bearish zone. The thin corridor between minus 5 and plus 5 is a no-conviction zone where the volume balance is too even to trade on. Pushes beyond plus 60 or below minus 60 are volume exhaustion extremes that rarely last. As with every oscillator, divergence carries a warning: if price grinds to a new high while VZO makes a lower high, the advance is happening on progressively weaker buy-volume and is vulnerable.
Best timeframes and settings
The default length is fourteen periods, which the authors tuned on daily charts for swing-trading horizons, and that remains the natural home of the tool. It works on intraday charts too, but only on liquid instruments where each bar carries meaningful volume, because thin bars produce a jumpy signed-volume stream. Shortening the length toward nine makes VZO react faster and cross its zones sooner, at the cost of more false pokes across the thresholds; lengthening it toward twenty or thirty smooths the line and filters chop but delays every turn. The original method paired the fourteen-period VZO with a sixty-period exponential moving average of price and a fourteen-period Average Directional Index, using those to decide whether the market was trending before acting on the zones. The universal trade-off applies: more responsiveness buys earlier but noisier signals, more smoothing buys cleaner but later ones.
When and where to use it
VZO is most useful on markets that report honest, deep volume, which means large-cap equities, index futures, and major exchange-traded funds rather than thin micro-caps or synthetic products. It is a confirmation and timing layer rather than a standalone trend caller, and it earns its keep during pullbacks within a trend, where it can tell you whether a dip is being bought or sold. In a clean uptrend it tends to hold in the bullish zone and reset toward the oversold band on corrections; in a downtrend it mirrors that on the sell side. Avoid leaning on it in genuinely rangebound, low-volume conditions where the signed-volume balance flickers around zero and the zones lose meaning. Above all, avoid trusting its extremes as automatic reversals during a strong trend, because a powerful move can pin VZO in the overbought or oversold band for a long stretch.
Strategies that use it
The first strategy is the authors' own trend-filtered pullback: confirm an uptrend when price is above the sixty-period exponential moving average and the Average Directional Index is above roughly eighteen, then buy when VZO dips toward the minus 40 oversold band and turns back up, taking profits as it reaches the plus 40 overbought band. The mirror image applies for shorts in a confirmed downtrend, selling rallies that push VZO up toward plus 40 and roll over. A second strategy is the zero-line momentum cross for trend traders: go long when VZO crosses decisively above zero after a base and stay long while it holds the bullish zone, exiting when it breaks back below zero. A third is divergence fading: when price makes a higher high but VZO makes a clearly lower high near an established resistance level, tighten stops or take a countertrend position only once price confirms with a break of short-term support.
Combining it with other indicators
VZO was designed to be used with a trend filter, so a longer moving average or the Average Directional Index is its most natural partner, keeping you on the right side of the larger move. Pairing it with a price-momentum oscillator such as the Relative Strength Index gives you price momentum and volume momentum side by side, and agreement between the two is a far stronger tell than either alone. Horizontal support and resistance complement it well, because the level tells you where to act and VZO tells you whether volume is backing the move at that level. Raw volume bars or a Volume Rate of Change help confirm that a breakout the VZO is leaning toward is actually drawing participation. It is redundant to stack VZO next to another signed-volume tool like On-Balance Volume, since both read the same underlying idea and will only reinforce each other with false confidence.
Where it fails
The classic failure is treating a plus 40 or minus 40 reading as an automatic reversal, when in a strong trend VZO can ride the extreme band for many bars while price keeps going. Its second weakness is dependence on clean volume: on illiquid names, or during a forced-selling event or an index rebalance, the signed-volume stream is distorted for reasons that have nothing to do with genuine conviction. In flat, choppy markets the line braids around zero and its zone crossings become meaningless whipsaws. Because the sign of each bar depends only on close-versus-prior-close, a series of tiny up closes on light volume can nudge it positive even as real money leaves. The way to avoid these traps is to demand a trend filter, to insist that VZO confirms a price event rather than leading it, and to ignore it entirely on instruments without reliable volume.
A worked example
Suppose you are watching a large-cap stock trending up above its sixty-period exponential moving average, with the Average Directional Index reading twenty-two, so the trend filter says buyers are in charge. The stock pulls back for four sessions and VZO falls from plus 35 down to minus 42, tagging the oversold band during the dip. Under the hood, the fourteen-period exponential average of signed volume has swung to about minus 21,000 shares while the average of total volume is about 50,000, giving a ratio of minus 0.42 and a VZO near minus 42. On the fifth session the stock closes back up on heavier volume, the signed-volume average turns less negative, and VZO hooks up through minus 40 back into the bearish-to-neutral zone. Because the higher-timeframe trend is up and the oscillator has reset and turned, you enter long with a stop below the pullback low, then plan to take profits as VZO climbs back toward the plus 40 overbought band.