Time-of-Day Volume Indicator: Formula, Settings and How to Read It
Time-of-Day Volume divides each bar's volume by the average volume traded during the same minute of the session over the previous sessions. A value of 1 means the bar traded its usual amount for that time of day, and 2 means twice as much.
Senzoukria · Indicators · Updated September 2026
Time-of-Day Volume ships with the Senzoukria desktop app, in the Structure & sessions group of the indicator catalogue. It is drawn in its own panel below the chart.
What Time-of-Day Volume measures
The session minute is an integer, computed as the number of whole minutes between the session open and the bar, with the session anchored on the 17:00 CT CME open. For each past session, the volume of that minute is the sum of every bar that fell inside it, which is what lets the comparison pair 09:31 today with 09:31 yesterday whatever the bar type — a key based on exact timestamp offsets pairs two sessions only when the buckets fall on the same instant, which holds on time bars and fails on tick, volume or range bars. The baseline is strict: all of the previous sessions in the window must have printed during that minute, otherwise no point is plotted, and the same holds when the average is zero or when fewer sessions than required are loaded. One convention is stated openly: the numerator is a single bar while the denominator is a full minute, so on timeframes of one minute or more the two match, and below a minute the ratio reads as the share of a typical minute that this bar carries.
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:
Volume par heure de séance (« time of day ») : value = volume de la barre / moyenne, sur les N séances précédentes, du volume imprimé pendant la MÊME MINUTE DE SÉANCE Minute de séance = ⌊(bucketTs − ouverture) / 60 s⌋, entier — ancrage CME 17:00 CT (canon). Le volume d'une minute d'une séance passée = la SOMME des barres tombées dans cette minute. POURQUOI cette clé plutôt que l'offset ns exact de `session-relative-volume` (flow2.ts) : l'offset exact n'apparie deux séances que si les buckets tombent au même nanoseconde près — vrai en barres temps, FAUX dès qu'on affiche des barres tick, volume ou range, où flow2 rend `null` partout. La minute de séance apparie « 09:31 d'aujourd'hui avec 09:31 d'hier » quel que soit le type de barre. Deux indicateurs, deux robustesses ; la sortie histogramme dit la seconde lecture (une barre = un écart au normal, pas une courbe). CONVENTION D'HOMOGÉNÉITÉ, explicite : le numérateur est UNE BARRE, le dénominateur UNE MINUTE. Sur les timeframes ≥ 1 min — le cas normal du footprint — une minute est une barre et les deux termes sont homogènes ; sur un timeframe sub-minute la minute agrège plusieurs barres et le rapport se lit « quelle part d'une minute type pèse cette barre ». C'est une convention assumée, pas une approximation cachée. BASELINE STRICTE (même règle que `session-volume-pace`) : les N séances précédentes doivent TOUTES avoir imprimé pendant cette minute — sinon PAS de point. Moins de N séances chargées, ou moyenne nulle → PAS de point. Défaut N=5.
How to read it
- The neutral line is 1, not 0: bars above it traded more than that minute usually trades, bars below it traded less.
- The output is a histogram because each bar is an independent deviation from its own baseline; read it bar by bar rather than looking for a slope.
- A high reading during a minute that is normally quiet is worth more attention than the same reading at the open, where large volume is the norm and the baseline already accounts for it.
- Sustained values below 1 through a stretch of the session mean fewer contracts changed hands than that part of the session usually sees, which is a participation observation, not a direction.
- Empty slots in the histogram mean the baseline refused to compute for that minute, most often because at least one reference session printed nothing there.
Parameters and defaults
Sessions defaults to 5 and accepts 1 to 20. A small value adapts quickly to the current regime but lets a single unusual day dominate the baseline; a larger value gives a steadier reference, and since every session in the window must have printed during the minute, it also produces more empty slots. Color defaults to #2962ff.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Sessions | number | 5 | 1 – 20 |
What it does not show
The indicator measures traded size only: it carries no direction, no delta and no information about which side was aggressing, so a reading of 3 says nothing about whether buyers or sellers drove it. Irregular days enter the baseline as ordinary sessions — a half session that still printed during a minute lowers the reference for that minute, while a session that printed nothing there removes the point entirely under the strict rule. Contract rollover splits volume between two delivery months and can distort both the current bar and the baseline around the roll. On sub-minute timeframes the ratio compares one bar with one minute, which is a stated convention rather than a like-for-like comparison, and any missing history in the reference window removes the point instead of estimating it.
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.
Related indicators
- Prior Week High/Low — Structure & sessions
- Engulfing — Structure & sessions
- Pin Bar — Structure & sessions
- Inside Bar — Structure & sessions
- Outside Bar — Structure & sessions
- Doji — Structure & sessions
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 time of day volume mean?
- It compares the volume of the current bar with what the market usually trades at that exact point in the session. Volume follows a strong daily shape — heavy around the open, thinner in the middle of the session — so comparing a bar with the same minute of previous sessions is more informative than comparing it with the session average.
- How many sessions should the volume baseline use?
- The default is 5 sessions and the range is 1 to 20. Fewer sessions track the current regime more closely but are sensitive to one exceptional day, while more sessions give a more stable reference and require every one of them to have traded during that minute, which leaves more gaps in the histogram.
- Can the ratio be compared between two different contracts?
- Each contract is measured against its own history, so a reading of 2 means the same thing on either one: twice the usual size for that minute of the session. The underlying volumes are not comparable, and around a rollover the two delivery months share the flow, which distorts both the current bar and its baseline.