Price Z-Score Indicator: Formula, Settings and How to Read It

Price Z-Score measures how many standard deviations the current close sits from its own N-bar mean. Zero means the close is exactly at the rolling average; plus two means it is two standard deviations above it.

Senzoukria · Indicators · Updated September 2026


Price Z-Score ships with the Senzoukria desktop app, in the Momentum group of the indicator catalogue. It is drawn in its own panel below the chart.

What Price Z-Score measures

The rolling window includes the current bar, and the standard deviation is the population form, dividing by N rather than N minus one, computed in two passes for numerical stability. Those are the same conventions used by the delta z-score and the volume z-score elsewhere in this catalogue, which is why this one is named after its subject rather than simply called a z-score. The default window is 20 bars, the same span the Bollinger bands use, so a reading of plus or minus 2 corresponds closely to the standard band. If the standard deviation is zero - every close in the window identical - the z-score is undefined and no value is plotted instead of a misleading 0. The oscillator is continuous and never resets at a session boundary.

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:

Z-score glissant du close : (close − μ_N) / σ_N, fenêtre des N dernières barres INCLUANT la courante ; σ = écart-type de POPULATION (÷N), two-pass. Strictement les mêmes conventions que `delta-zscore` (delta2.ts) et `volume-zscore` (flow2.ts) — d'où l'id `price-zscore` et non `zscore` : le catalogue nomme ces z-scores par leur SUJET. σ = 0 (fenêtre plate) → null, jamais 0 : le z est indéfini. Défaut N=20 (fenêtre des BB). Warm-up → null. Oscillateur CONTINU — pas de reset session.

How to read it

  • The sign says which side of the rolling mean price sits on; the magnitude says how unusual that distance is relative to the window's own dispersion.
  • A large absolute value can come from price moving or from dispersion collapsing - a quiet window makes ordinary moves look extreme.
  • In a steady trend the mean follows price at a fixed distance while the deviation widens with it, so the reading settles on a plateau instead of climbing as the move extends.
  • Because there is no session reset, a window spanning the session break mixes overnight and regular-hours behaviour; check where the window starts before trusting an extreme.
  • The scale is dimensionless, which makes readings comparable across instruments in a way raw price momentum is not.

Parameters and defaults

Period defaults to 20 and accepts 2 to 500. A short window makes both the mean and the deviation track price closely, which compresses readings toward zero and produces frequent sign changes. A long window holds a slower mean, so extended trends can keep the z-score at a high absolute value for many bars.

Price Z-Score — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Periodnumber202 – 500

What it does not show

The z-score is a distance measured in units of recent dispersion, not a probability. Price does not sit around its rolling mean the way a normal distribution would - a trend holds it on one side for long stretches - so readings beyond plus or minus 2 appear more often than the textbook reading of a standard deviation suggests, and treating them as rare is the common mistake. It uses closes only, and neither volume nor the aggressor side enters the calculation. It also inherits the window's regime: the same price move scores very differently before and after a volatility change.

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

How is a price z-score calculated?
Subtract the mean of the last N closes from the current close, then divide by the standard deviation of those same N closes. The window includes the current bar and the deviation uses the population form, dividing by N. With the default of 20 bars, the result is directly comparable to a standard Bollinger band, which is drawn at two standard deviations.
What does a z-score of 2 mean for price?
The current close is two standard deviations above the mean of its own lookback window. It describes an unusual distance relative to that window's recent dispersion - nothing more. It is not a probability, and because price clusters and trends rather than scattering normally, such readings appear more often than a normal distribution would predict.
Why does the price z-score sometimes show no value?
When every close in the window is identical the standard deviation is zero, and dividing by it is undefined. The indicator returns no value there rather than printing 0, which would suggest the close sits at a meaningful mean when in fact there is no dispersion to measure against.

Keep reading