Absorption Score Indicator: Formula, Settings and How to Read It

Absorption Score turns absorption into a single signed number per bar instead of a chart marker. Positive values mean aggressive buying was absorbed near the bar's high, negative values mean aggressive selling was absorbed near the low, and the magnitude is the net absorbed volume in contracts.

Senzoukria · Indicators · Updated September 2026


Absorption Score 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 Absorption Score measures

A level counts as absorbed buying when its buy volume reaches the threshold share of the bar's own buy total (70% by default) and the bar's high stayed within the tolerance of that level, which defaults to 1 tick; absorbed selling is the mirror test against the low. The score subtracts the absorbed sell volume from the absorbed buy volume, so it carries the units of volume rather than a normalized ratio. Bars that traded at a single price score zero: with high equal to low, every level would qualify and the result would be meaningless. An optional minimum quantity, zero by default, acts as a floor underneath the percentage test, since the test taken alone can be met by very few contracts.

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:

Score d'absorption par barre — heuristique du repo (canon orderflow-calc, choix documenté ici) : buy_absorption(P) ssi buy(P) ≥ max(pct × Σbuy_barre, minQty) ET bar.high ≤ P + tolérance_ticks × tick sell_absorption(P) ssi sell(P) ≥ max(pct × Σsell_barre, minQty) ET bar.low ≥ P − tolérance_ticks × tick GARDE : unique_levels ≥ 2 (une barre à un seul niveau est trivialement « absorbante » par la formule → score 0). Score SIGNÉ = Σ buy absorbé − Σ sell absorbé : positif = l'agression ACHETEUSE s'est fait absorber près du high (pression baissière potentielle), négatif = miroir. Défauts : pct=70 % (le seuil d'exemple du canon), tolérance 1 tick, minQty=0 (plancher absolu optionnel). Tick inconnu → null.

How to read it

  • Read the sign first: positive is absorbed buying, a bearish observation, and negative is absorbed selling, a bullish one. The sign names the side that got absorbed, not the side that won.
  • Read the magnitude second, and only against recent bars on the same instrument, since the score is raw volume and scales with activity.
  • A run of same-sign scores across consecutive bars describes sustained one-sided effort meeting the same resistance, which is more informative than one large print.
  • A score that flips sign where price has been rotating often coincides with the absorbed side giving up; check price before concluding anything.
  • Zero is a real result, not a missing value: no level in the bar met both the volume and containment conditions.

Parameters and defaults

The threshold defaults to 70% and is measured against the bar's own buy or sell total, which makes it easy to trigger whenever one side is thin — a bar with almost no selling can register sell absorption on a handful of contracts. The tolerance defaults to 1 tick, tighter than the marker overlay, so the level has to be at or immediately next to the extreme. The minimum quantity exists for exactly that thin-side case; raising it above zero suppresses scores built on negligible volume. This indicator has no smoothing setting: the score is read bar by bar.

Absorption Score — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Threshold (% of side)number7010 – 100
Tolerance (ticks)number10 – 10
Min qtynumber00 – 10000

What it does not show

The score depends on trades being classified by aggressor side, so it is only as reliable as that classification in your data source. It measures the absorbed volume, not the passive size that absorbed it, so it cannot distinguish a genuine wall from a coincidental stall. Because the reference is each side's own total rather than the bar's, the score reacts differently from the marker overlay on lopsided bars, and it returns no value at all when the instrument's tick size is unknown. Nothing in the score tells you whether the level held afterwards.

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 positive absorption score mean?
A positive value means aggressive buying was absorbed near the bar's high: buyers concentrated volume at a level and price did not extend above it. The sign names the side that got absorbed, so a positive score is read as a bearish observation about that bar.
Why does the absorption score return zero on some bars?
Zero means no level met both conditions: the volume threshold on its side, and the requirement that the bar's extreme stayed within the tolerance of that level. Bars that traded at a single price are forced to zero as well, because with high equal to low the containment test would pass trivially at every level.
How is absorption score different from absorption markers?
They test the same idea against different references. Absorption Score compares a level to its own side's total for the bar, uses a 1-tick tolerance and outputs a signed number in a separate pane. Absorption Markers compares the level to the bar's total volume, uses a 2-tick tolerance and draws arrows on the price chart.

Keep reading