Session RVOL Indicator: Formula, Settings and How to Read It

Session RVOL compares a bar's volume with the average volume recorded at the same point of the session over the previous sessions. A value of 1 means the bar traded in line with that time slot's usual volume; a value of 2 means it traded twice as much.

Senzoukria · Indicators · Updated September 2026


Session RVOL ships with the Senzoukria desktop app, in the Tape & flow group of the indicator catalogue. It is drawn in its own panel below the chart.

What Session RVOL measures

The comparison key is the session offset: the bar's timestamp minus the opening timestamp of its session, in nanoseconds. Because buckets sit on exact timeframe boundaries, that offset matches the equivalent bar of previous sessions exactly rather than approximately. The previous sessions are the N session slices immediately before the current one in the loaded history. The baseline is strict: all N sessions must contain a bar at that offset, otherwise no value is produced, because an average built from fewer sessions would misstate the period it claims to cover. This differs from ordinary relative volume, which compares a bar with a rolling moving average of the bars just before it rather than with the same time on previous days.

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:

RVOL « à la même heure de session » : vol(barre) / moyenne des volumes au MÊME OFFSET DE SESSION dans les N sessions précédentes. Offset = bucketTsNs − ouverture de session (ns) — un match « même heure sur l'horloge de session CME » (les buckets sont des ns entiers sur la grille du timeframe : clés exactes ; la règle priceKey ne concerne que les PRIX). « Sessions précédentes » = les N tranches `splitSessions` immédiatement antérieures dans l'historique chargé. Baseline STRICTE : les N sessions précédentes doivent TOUTES avoir une barre à cet offset — session incomplète / offset absent → null (une baseline partielle mentirait sur sa période, même règle que le warm-up des moyennes). Moins de N sessions d'historique → null. Moyenne = 0 → null (division par zéro = pas d'information). Défaut N=5 : une semaine de sessions. Diffère de `relative-volume` (volume.ts) qui compare à une SMA GLISSANTE — ici on compare à la même heure des jours précédents.

How to read it

  • Read 1 as normal for that time of day. The reference is the same slot of previous sessions, so the daily volume curve is already accounted for.
  • Elevated readings at the open are ordinary; elevated readings in the middle of an otherwise quiet stretch are the ones worth noticing.
  • A sequence of readings above 1 across consecutive bars describes participation that stayed above its usual level, not a single burst.
  • Readings below 1 during a directional move describe a move made on less volume than that slot normally carries.
  • Blank stretches are informative: they mean the strict baseline could not be built, usually because one of the previous sessions had no bar at that offset.

Parameters and defaults

Sessions defaults to 5, roughly a week of trading sessions, which keeps the baseline close to current conditions. Raising it smooths the reference across more days but makes the strict baseline harder to satisfy, since every one of those sessions must have a bar at the offset. Lowering it makes the reference more reactive and more sensitive to a single unusual day. Line colour is the only other setting.

Session RVOL — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Sessionsnumber51 – 20

What it does not show

The strict baseline means the line is empty until N full sessions of history are loaded and wherever a previous session is missing that offset, so half sessions, holidays and data gaps produce blanks rather than approximations. No value is produced when the average is zero. The indicator says nothing about direction, since buy and sell volume are summed. Contract rolls break the comparison, because volume before and after a roll belongs to different contracts. Session boundaries come from the session splitting used by the chart, so a mis-set session definition shifts every offset.

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 is session relative volume?
Session relative volume compares a bar's volume with the volume traded at the same moment of previous sessions. Dividing by that same-time average removes the shape of the intraday volume curve, so a reading above 1 means the bar traded more than that time of day usually does rather than more than the market usually does.
Why is the indicator empty at the start of my chart?
It requires a complete baseline. Until the loaded history contains the configured number of previous sessions, and until each of them has a bar at the same session offset, no average can be computed and no value is plotted. Loading more history removes most of these gaps; the remainder come from shortened sessions or missing data.
How is it different from standard relative volume?
Standard relative volume divides the current bar by a rolling moving average of the bars immediately before it, so its reference moves with the session. Session RVOL divides by the average of the same time slot across previous sessions, so the reference is fixed to the clock. The first answers whether the last few minutes accelerated, the second whether this time of day is busier than usual.

Keep reading