Volume ROC % Indicator: Formula, Settings and How to Read It

Volume ROC % is a rate-of-change calculation applied to volume instead of price: it compares the volume of the current bar with the volume of the bar N periods earlier and plots the difference as a percentage in its own pane. A reading of +150 means the current bar traded two and a half times the volume of the reference bar; a reading of −40 means it traded 40% less.

Senzoukria · Indicators · Updated September 2026


Volume ROC % ships with the Senzoukria desktop app, in the Volume group of the indicator catalogue. It is drawn in its own panel below the chart.

What Volume ROC % measures

The output is (volume of the current bar − volume N bars ago) ÷ volume N bars ago × 100, so it is a ratio between two bar volumes expressed in percent, never an absolute quantity. When the reference bar has zero volume the indicator leaves a gap instead of printing an infinite or substituted value: a division by zero carries no information, and filling it would invent one. The default period is 1, which makes each point a straight bar-to-bar comparison. Because volume cannot fall below zero, the scale is asymmetric — the line is floored at −100% and has no ceiling above, so expansions look far larger on screen than contractions of comparable importance.

The formula, as implemented

This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:

ROC du volume en % : (vol[i] − vol[i−N]) / vol[i−N] × 100. Référence nulle → trou (division par 0 = pas d'information, pas « +∞ % »). Défaut N=1 : la variation barre-à-barre est la lecture standard.

How to read it

  • A value above zero means the current bar traded more than the bar N periods back; below zero means it traded less. The sign says nothing about the direction of price.
  • Read each value against the price bar that produced it. The same +200% carries a different meaning on a bar that broke out of a range than on one that closed back inside it.
  • A run of negative readings describes participation shrinking relative to the reference bars. It is a statement about volume already traded, not about the next move.
  • A gap in the line marks a reference bar with no volume at all — typically a session break, an illiquid stretch or a hole in the data. The point where the line resumes is an artefact of that gap, not an event.
  • With −100% as the floor and no upper bound, compare expansion readings against other expansions on the same instrument and timeframe rather than against a fixed threshold.

Parameters and defaults

Period accepts 1 to 200 bars and defaults to 1, where each point compares a bar with the one immediately before it. Raising it turns the indicator into a comparison against a bar further back, which removes bar-to-bar noise but also hides isolated bursts. Color defaults to orange (#ff9800) and affects only the plotted line. There is no smoothing parameter, so every raw jump in bar volume reaches the output unfiltered.

Volume ROC % — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Periodnumber11 – 200

What it does not show

The calculation reads total bar volume and therefore ignores the aggressor side entirely — a bar where buyers lifted every offer and a bar where sellers hit every bid can return the same value, so it is not a substitute for a bid × ask footprint or a delta series. In thin liquidity a change of a few contracts becomes a large percentage, which makes the scale unstable outside active hours and around contract rollovers. On the bar currently forming, the value is computed from partial volume and keeps changing until that bar closes. Volume units also differ by instrument and by feed — contracts on futures, base quantity on crypto pairs — so readings are not comparable from one symbol to another.

Using it in Senzoukria

Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.

See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.

Frequently asked questions

What does a negative Volume ROC mean?
It means the current bar traded less volume than the bar used as reference, N periods earlier: −40 indicates 40% less volume than that bar. The floor is −100, which would mean the current bar traded nothing at all. The sign reflects the change in volume only and carries no information about which way price moved.
Why does the Volume ROC line have gaps?
A gap appears when the reference bar N periods back had zero volume, which makes the percentage a division by zero. The indicator leaves that point empty rather than printing an infinite or substituted number, so the absence of data stays visible on the chart. Such gaps usually line up with session breaks or with stretches where no trade printed.
What period should I use for Volume Rate of Change?
The default of 1 compares each bar with the one immediately before it and is the usual setting for looking at single-bar changes in activity. A longer period, up to 200 bars, compares the current bar with a more distant one, which smooths the series but hides isolated spikes. The choice follows what you are studying: individual bars, or a broader shift in participation.

Keep reading