Balance of Power Indicator: Formula, Settings and How to Read It

Balance of Power, devised by Igor Livshin, measures where each bar closed within its own range — (close − open) divided by (high − low) — and averages those readings over a rolling window. Each raw value falls between −1 and +1, and the default smoothing is 14 bars.

Senzoukria · Indicators · Updated September 2026


Balance of Power 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 Balance of Power measures

The numerator says who won the bar, buyers or sellers; the denominator normalises it by amplitude, so a close near the top of a narrow range does not count as much as the same close on a wide one. The average is a plain simple moving average of the raw values, because the raw series alone is unreadable intraday. Bars with no range at all — high equal to low, a filler bar in a frozen market — are dropped from the average entirely instead of counted as zero, since counting them would invent a perfect balance where no auction took place and pull the mean toward the middle. One consequence is that the effective number of averaged values can be smaller than the period in quiet zones, while the window itself stays N bars; a window with no usable bar returns nothing.

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:

BOP — Balance of Power (Igor Livshin) : où la barre a FERMÉ dans son propre range, lissé par une SMA SIMPLE (pas d'EMA, pas de Wilder — la définition originale) : raw = (close − open) / (high − low) ∈ [−1, 1] BOP = moyenne des `raw` DÉFINIS de la fenêtre des N dernières barres POURQUOI : le numérateur mesure qui a gagné la barre, le dénominateur la normalise par l'amplitude — une clôture haute sur un range étroit ne compte pas comme une clôture haute sur un range large. Défaut N=14, la période de lissage usuelle (le raw seul est illisible en intraday). RANGE NUL (high == low : barre de remplissage, marché figé) → la barre NE CONTRIBUE PAS : elle sort du numérateur ET du dénominateur de la moyenne. L'alternative — la compter pour 0 — inventerait un « équilibre parfait » là où il n'y a eu aucune enchère, et tirerait la moyenne vers zéro. Fenêtre ENTIÈREMENT sans range (aucune barre exploitable) → null, jamais 0. Conséquence documentée : la période EFFECTIVE de la moyenne peut être inférieure à N sur les zones creuses ; la fenêtre, elle, reste de N barres (warm-up i ≥ N − 1).

How to read it

  • Above zero, bars have on average been closing in the upper part of their range; below zero, in the lower part.
  • Readings approaching +1 or −1 require repeated closes at the extreme of the range, which usually marks a one-sided sequence rather than a single spike.
  • A move through zero describes a change in where bars close, which is not the same event as a change in price direction — price can still be falling while closes improve.
  • Cross-check against the footprint: Balance of Power says the bar closed high, the footprint says whether buyers had to lift offers to get there.
  • Flat readings near zero mean closes are scattered through their ranges, the usual look of a two-sided auction.

Parameters and defaults

period (14) sets how many bars are averaged; the raw calculation itself has no parameter. A short period tracks individual bars closely and swings hard, a long one needs several bars pulling the same way before it moves. Keep in mind that the window remains N bars wide even when fewer of them contribute.

Balance of Power — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Periodnumber141 – 500

What it does not show

Balance of Power is computed from the four OHLC values only. It does not know the traded volume, the aggressor side, or whether the close was reached on one large trade or a thousand small ones — a bar closed at its high on almost nothing scores the same as one closed there on heavy participation. The ratio is unstable on very narrow ranges, where a tick or two between open and close produces a large value. And because it is an average of ratios rather than of amounts, a single extreme bar can dominate a short window.

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 Balance of Power reading close to +1 mean?
It means that across the averaging window, bars have consistently closed at or near the top of their own ranges. The measure is normalised by range, so it describes the position of the close, not the size of the move. A reading near +1 on small ranges says very little about how much price actually travelled.
How does Balance of Power handle bars where the high equals the low?
Those bars are excluded from the average altogether — they leave both the sum and the count. Counting them as zero would assert a perfect balance between buyers and sellers when in fact no auction happened, and it would drag the average toward the middle. If a whole window contains no bar with range, the indicator returns no value at all.
Is Balance of Power the same thing as delta?
No. Delta is the net of aggressive buying against aggressive selling, taken from the trade feed with its aggressor side. Balance of Power is computed purely from the bar's open, high, low and close, and knows nothing about who crossed the spread. They frequently agree, and their disagreement is the interesting case: it means price closed one way while the flow leaned the other.

Keep reading