Tape Speed Indicator: Formula, Settings and How to Read It
Tape Speed reports how many trades per minute printed over a rolling window of bars, five by default. It divides the total trade count of the window by the total measured duration of those bars, converted to minutes.
Senzoukria · Indicators · Updated September 2026
Tape Speed 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 Tape Speed measures
The duration of each bar comes from the data source when the source reports it. Otherwise it falls back to the nominal duration of an explicit time-based timeframe, and only when the following bar confirms the close by starting at or after the nominal end — a next bar that arrives earlier does not prove the bar closed and may indicate mixed or out-of-order data. No interval between buckets is ever promoted into a duration for tick, volume or range bars. The most recent bar, when the source reports no duration for it, stays unknown rather than being measured against the wall clock, and a window containing any unknown duration yields no value. This makes the series stable: a faster bar arriving later never rewrites a rate that was already known.
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:
Durée close fournie par la source, sinon durée NOMINALE d'un timeframe temporel explicite dont la barre suivante confirme la clôture. Aucun intervalle entre buckets n'est promu en durée de barre tick/volume/range. Le dernier bucket sans mesure source reste inconnu, sans lire l'horloge. */ function closedBarDurationNs( bars: readonly FootprintBar[], i: number, ctx: SeriesContext, ): number | null { const bar = bars[i]; const source = ctx.barDurationsNs; if (source?.has(bar.bucketTsNs)) { const duration = source.get(bar.bucketTsNs); return duration !== undefined && Number.isFinite(duration) && duration > 0 ? duration : null; } if (i + 1 >= bars.length) return null; const match = /^(\d+)(s|m|h|d)$/.exec(bar.timeframe); if (match === null) return null; const seconds = TIMEFRAME_SECONDS[match[2] as keyof typeof TIMEFRAME_SECONDS]; const duration = Number(match[1]) * seconds * 1e9; // Une barre suivante antérieure à la fin nominale ne prouve pas sa // clôture (données mélangées, ordre incorrect ou timeframe incohérent). return Number.isFinite(duration) && duration > 0 && bars[i + 1].bucketTsNs - bar.bucketTsNs >= duration ? duration : null; } /** Vitesse du tape : trades/minute sur une fenêtre glissante de N barres. rate[i] = Σ tradeCount[i−N+1..i] / Σ durée_close_en_minutes[i−N+1..i] Durée close explicite ou nominale vérifiée ; une durée manquante rend la fenêtre inconnue. L'arrivée d'une barre plus rapide ne change jamais les taux déjà connus. Warm-up (< N barres) → null. Défaut N=5.
How to read it
- The unit is trades per minute, so values are comparable between timeframes on the same instrument, unlike a raw trade count per bar.
- A rising line means prints are arriving faster, whatever their size; it describes activity, not pressure.
- Compare the level with the same time of day on previous sessions rather than with an absolute number, since the tape naturally accelerates at the open and around scheduled events.
- Pair it with a volume measure: fast tape with low volume means many small prints, fast tape with high volume means many large ones.
- Missing sections of the line are expected on non time-based bars and at the right edge of the chart, and mean the duration was not measurable rather than that the tape was silent.
Parameters and defaults
Window defaults to 5 bars. A shorter window follows bursts more closely and produces a noisier line; a longer one averages across more bars, needs a longer warm-up before the first value appears, and raises the chance that one unmeasured bar blanks the whole window. Line colour is the only other setting.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Window (bars) | number | 5 | 1 – 200 |
What it does not show
The measure counts trades and ignores their size, so a single large print counts exactly as much as a one-lot. It only produces values where bar durations are measurable, which means tick, volume and range bars stay empty unless the source reports durations for them. Trade counts depend on how the venue and the feed aggregate fills, so the same market can read differently through two data sources and the values should not be compared across feeds. A fast tape describes activity and says nothing about which direction that activity favours.
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
- Stacked Imbalances — Tape & flow
- Absorption Score — Tape & flow
- Unfinished Auctions — Tape & flow
- Effort vs Result — Tape & flow
- POC Drift (ticks) — Tape & flow
- Cumulative buy volume — Tape & flow
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 speed of tape measure?
- It measures the rate at which trades print, expressed as trades per minute over a rolling window of bars. It counts the number of prints, not the quantity traded, so it describes how busy the tape is rather than how much size is changing hands.
- Why does Tape Speed show nothing on tick or volume bars?
- The rate needs a measured duration for each bar in the window. Tick, volume and range bars have no nominal duration, and the gap between two bucket timestamps is not treated as a bar duration because it would be a guess. Unless the data source reports a duration for those bars, the window stays unknown and no value is plotted.
- Does a fast tape mean a large move is coming?
- No. The indicator states how quickly prints are arriving and nothing more. Fast tape occurs around the open, around scheduled events and during two-sided fights that resolve nowhere, as well as during directional moves. Any directional reading has to come from other information, such as delta or the footprint itself.