# Volume Zone Oscillator

A Volume & Order Flow concept (Cumulative flow lines) in the LuxAlgo Library, with 1 indicator implementation.

## What is the Volume Zone Oscillator?

The Volume Zone Oscillator (VZO) is a bounded volume oscillator introduced by Walid Khalil and David Steckler in 2009. Each bar's volume is signed by close direction: positive when the close is above the prior close, negative when below. The VZO is the exponential moving average of that signed volume divided by the exponential moving average of total volume, multiplied by 100, so readings fall between -100 and +100; 14 periods is a widely used length.

As the name suggests, it is read in zones rather than by crossovers alone. The published guidance describes a bullish volume regime above roughly +5 and a bearish one below -5, with the ±40 area watched as [overbought/oversold](https://www.luxalgo.com/library/concept/overbought-oversold/) territory in ranging markets and ±60 as extreme. Because only the sign of the close-to-close change classifies volume, the VZO answers one narrow question, whether turnover is concentrating on up closes or down closes, and like any bounded oscillator its extremes can persist in trends.

The original publication, a Technical Analysis of Stocks & Commodities article, framed the oscillator as one part of a workflow rather than a standalone signal: the authors paired it with a long moving average for trend context and a strength gauge, letting the VZO's zones time entries only in the direction the trend tools permitted. That framing survives in practice. The ratio construction is worth appreciating too: dividing smoothed signed volume by smoothed total volume normalizes activity out of the reading, so the VZO reports the share of turnover leaning one way, not the amount, which is what keeps it bounded and comparable across quiet and busy periods.

Its natural companions differ from the usual price-oscillator stack precisely because its magnitude comes from volume, with price contributing only a sign. Dashboard builds like the Library's CCI/MFI/VZO/RSI heatmap exploit that: three price-fed gauges plus one volume-fed gauge cover more failure modes than four price oscillators agreeing with each other. The honest caveats are the mirror of the design: the close-to-close sign is a crude classifier that mislabels gap days and intrabar reversals, and the reading inherits whatever the venue's volume feed gets wrong.

## How to identify Volume Zone Oscillator readings

One ratio, several zones: identification is the construction plus the map the authors published.

1. Sign each bar's volume by close direction: positive above the prior close, negative below it.
2. Smooth the signed series and the raw total with EMAs of the same length, 14 periods classically.
3. Divide and scale: smoothed signed volume over smoothed total volume, times 100, bounded between -100 and +100.
4. Apply the zone map: the ±5 area as the bull/bear regime boundary, ±40 as range-market extremes, ±60 as climactic.
5. Frame it with trend context, per the original guidance, so zone reads fire with the prevailing direction rather than against it.

## How it's calculated

VZO expresses smoothed net directional volume as a percentage of smoothed total volume, oscillating between -100 and +100.

```
SV_t = V_t if C_t > C_(t-1), otherwise SV_t = -V_t
VP_t = EMA(SV, n)_t
TV_t = EMA(V, n)_t
VZO_t = 100 × VP_t / TV_t
EMA(x, n)_t = alpha × x_t + (1 - alpha) × EMA(x, n)_(t-1)
alpha = 2 / (n + 1)

  t: bar index
  C_t: close of bar t (C_(t-1) is the prior close)
  V_t: volume of bar t
  SV_t: signed volume of bar t
  EMA(x, n)_t: exponential moving average of series x over n bars
  x_t: the series being smoothed (SV or V)
  alpha: EMA smoothing factor
  n: smoothing length (default 14)
  VP_t: volume position, the EMA of signed volume
  TV_t: total volume, the EMA of raw volume
  VZO_t: oscillator value in percent
```

Published by Walid Khalil and David Steckler (2009); the default length is 14, and abs(SV_t) = V_t keeps VZO inside -100 to +100.

The published zones read +5 to +40 as bullish and -5 to -40 as bearish, with moves beyond +40/+60 overbought and beyond -40/-60 oversold.

Implementations differ on flat closes: some assign zero signed volume when C_t = C_(t-1) instead of -V_t.

## How traders use it

- As a volume-regime filter: holding above the bullish boundary supports long setups and holding below the bearish boundary supports shorts, while readings oscillating around zero warn that neither side's volume dominates.
- As an extreme-fade tool in ranges: pushes toward ±40 and beyond are watched for reversion when the market is rangebound, while in trends the same extremes read better as strength, the familiar caveat with [RSI](https://www.luxalgo.com/library/concept/rsi/) extremes.
- As confirmation from a different input: the VZO's magnitude comes from volume, with price contributing only the sign, so its agreement with a price-based oscillator adds information in a way that stacking two price oscillators, which share inputs, does not.
- In multi-oscillator dashboards: heatmap-style panels slot the VZO beside CCI, MFI and RSI so one volume-fed gauge audits three price-fed ones, and unanimous readings carry genuinely independent evidence.
- As a divergence read: price printing a new high while the VZO posts a lower high says the advance's turnover share is fading, a bounded-oscillator variant of the [volume divergence](https://www.luxalgo.com/library/concept/volume-divergence/) warning.

## VZO vs related volume oscillators

- **Volume Oscillator** (https://www.luxalgo.com/library/concept/volume-oscillator/): The standard volume oscillator compares fast and slow averages of unsigned volume, measuring whether activity is expanding regardless of direction. The VZO signs volume first, measuring which side the activity favors. How much versus whose: different questions from the same feed.
- **OBV** (https://www.luxalgo.com/library/concept/obv/): OBV accumulates signed volume into an unbounded line that trends with participation flows; the VZO expresses signed volume as a bounded share of total turnover. OBV suits long divergence studies, the VZO suits zone and regime reads; one drifts, the other oscillates.
- **Money Flow Index** (https://www.luxalgo.com/library/concept/money-flow-index/): MFI weights typical price by volume and tracks where money flow sits inside a bounded range, letting price magnitude into the reading. The VZO strips price down to a sign, so the two bounded gauges disagree exactly when price moves big while turnover stays balanced, or vice versa.

## FAQ

### How is the Volume Zone Oscillator calculated?

Sign each bar's volume by close direction: positive if the close is above the prior close, negative if below. Take an exponential moving average of that signed volume, divide it by an EMA of total volume over the same length, and multiply by 100. Readings are bounded between -100 and +100; 14 periods is a common length.

### What is the difference between the VZO and a volume oscillator?

A standard [volume oscillator](https://www.luxalgo.com/library/concept/volume-oscillator/) compares fast and slow averages of raw, unsigned volume, so it measures whether activity is expanding or contracting regardless of direction. The VZO signs volume by close direction before smoothing, so it measures which side the turnover favors. One answers how much activity there is; the other answers whose it is.

### What zones did the VZO's authors define?

The published map runs in bands: readings sustained above roughly +5 mark a bullish volume regime and below -5 a bearish one, the ±40 neighborhood serves as overbought and oversold territory when the market is ranging, and ±60 flags climactic one-sidedness. The authors presented the zones alongside trend filters rather than as standalone triggers, and platform implementations occasionally shift the exact numbers.

### Does the VZO work in trending markets?

As a regime gauge, yes; as a fade signal, carefully. Strong trends hold the oscillator pinned in its outer zones for extended stretches, so treating +40 as an automatic sell fights the tape the same way fading RSI extremes does. The original workflow addressed this directly by requiring a trend read first, with the VZO's zones timing entries only in the permitted direction.

### How does the VZO differ from OBV in practice?

OBV is cumulative and unbounded: it drifts with multi-week participation flows and is read through slope and divergence over long windows. The VZO is a bounded ratio: it oscillates around zero, mean-reverts by construction, and supports zone rules OBV cannot offer. A common pairing uses OBV for the slow structural read and the VZO for regime boundaries and range extremes within it.

### What length should the VZO use?

The 14-period convention from the original article remains the default, and it behaves like most oscillator lengths: shorter settings sharpen the response and multiply zone crossings, longer ones smooth the reading toward regime duty. Because the zones themselves were calibrated around the published length, materially changing it argues for re-deriving the zone levels from the instrument's own history rather than reusing the stock numbers.

## Implementations in the Library

- Volume Zone Oscillator (LuxAlgo): https://www.luxalgo.com/library/indicator/volume-zone-oscillator/

## Related concepts

- Money Flow Index: https://www.luxalgo.com/library/concept/money-flow-index/
- Weis Wave Volume: https://www.luxalgo.com/library/concept/weis-wave-volume/
- OBV: https://www.luxalgo.com/library/concept/obv/
- OBV Divergence: https://www.luxalgo.com/library/concept/obv-divergence/
- Accumulation/Distribution Line: https://www.luxalgo.com/library/concept/accumulation-distribution-line/
- Chaikin Oscillator: https://www.luxalgo.com/library/concept/chaikin-oscillator/
- Chaikin Money Flow: https://www.luxalgo.com/library/concept/chaikin-money-flow/
- Twiggs Money Flow: https://www.luxalgo.com/library/concept/twiggs-money-flow/
- Williams A/D: https://www.luxalgo.com/library/concept/williams-a-d/
- Price Volume Trend: https://www.luxalgo.com/library/concept/price-volume-trend/

---

Source: https://www.luxalgo.com/library/concept/volume-zone-oscillator/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/