What it does
Measures how easily price is moving by comparing midpoint movement and bar range to the scaled final aggregate total, then displays either a smoothed Raw EOM line or a Z-Scored EOM line.
Calculations
1. Compute the chart midpoint and subtract the prior midpoint to get distance moved.
2. Compute the protected chart range as max(High – Low, mintick floor) and scale the final aggregate total by dividing it by the Divisor.
3. Build the unsmoothed EOM base as distance moved × protected range / scaled total, leaving the value unavailable when the scaled total is zero or the required midpoint, range, divisor, or aggregate-total inputs are invalid.
4. If EOM Type = Raw EOM, smooth that base with SMA over EOM Length to create the displayed Raw EOM line.
5. If EOM Type = Z-Scored EOM, normalize the unsmoothed base with a rolling z-score, optionally smooth that z-score, and then apply the signal EMA.
Unique story it tells
It measures how much price progress is being achieved relative to the amount of aggregate volume effort, so it shows whether movement is happening easily or with resistance.
How it identifies tops/bottoms
It does not include built-in top/bottom markers. In Z-Scored mode, extremes near or beyond the ±1σ and ±2σ levels give the clearest context, so possible tops are usually read when strong positive readings start rolling over, while possible bottoms are usually read when strong negative readings start turning up; Raw mode is more contextual because it has no fixed thresholds.
Story it tells when indicator is rising
Rising means upside movement is becoming easier, or downside pressure is losing control, relative to the final aggregate total.
Story it tells when indicator is falling
Falling means downside movement is becoming easier, or upside progress is facing more resistance, relative to the final aggregate total.
Story it tells when indicator is neutral
Neutral usually means price is not traveling far relative to the final aggregate total, so movement is balanced, congested, or requiring more effort for less result. In Z-Scored mode, neutral also means conditions are close to their normal recent behavior around zero.
What it means when indicator is rising + price is rising
Bullish confirmation: price is moving higher and doing so with improving ease.
What it means when indicator is rising + price is falling
Possible bullish divergence or absorption: price is still falling, but the downside is becoming less efficient and internal ease is improving.
What it means when indicator is falling + price is rising
Possible bearish divergence: price is rising, but the move is becoming less efficient and may be requiring more effort than before.
What it means when indicator is falling + price is falling
Bearish confirmation: price is moving lower and doing so with increasing ease.
Unique features and settings
Adjustable settings
Market Type — limits the calculation to Spot, Perps, or Both.
Mode — builds the input using Base Units or USD Turnover before the EOM math is applied.
EOM Type — switches the display between Z-Scored EOM and Raw EOM.
Divisor — scales the final aggregate total before it enters the EOM formula.
EOM Length — sets the SMA length used to create the displayed Raw EOM line.
Z-Score Lookback — sets the lookback used to calculate the rolling mean and standard deviation for the z-score.
Z-Score Smoothing Type — selects the optional smoothing applied to the z-score line itself.
Z-Score Smoothing Length — sets the length for the selected z-score smoothing type.
Z-Score Signal EMA Length — sets the EMA length used for the z-score signal line.
Raw EOM MA Type — selects the display overlay moving average type for the Raw EOM line.
Raw EOM MA Length — sets the display overlay moving average length for the Raw EOM line.
Show Debug Table — displays the full per-venue audit table for the active routed asset.
Font Size — changes the debug table text size.
Location — moves the debug table on the chart.
Hardcoded settings
Final launch venue map — uses the suite’s finalized routed spot and perpetual venue lists as the aggregate source.
Spot/perp interpretation metadata — defines whether each venue contributes as Base, Quote, or Contracts.
Contract mode metadata — defines how contract-based rows convert before they enter the aggregate.
Contract Sizes — apply stored multipliers to perpetual rows that use contract counts.
Data-defense behavior — keeps venue-ignore protection enabled when repeated bad data appears.
Bad-bar threshold — removes a venue’s used contribution after 5 consecutive bad bars.
BASE_ONLY enforcement — forces Base Units internally on supported non-USD or index-like charts.
FALLBACK behavior — switches to the chart’s own volume on unsupported-base charts.
Market-type total-selection — uses explicit Spot / Perps / Both logic to choose the active total.
Debug fetch behavior — may widen active routed fetch scope to show the full venue map, while still reusing each venue fetch once and keeping Used and % Share honest.
Price-movement source — always measures distance moved from the change in the chart bar midpoint.
Range source — always uses the chart bar’s high-low range inside the EOM formula.
Zero-range protection — uses a mintick floor in the range term so flat bars do not break the formula.
Scaling rule — always divides the final aggregate total by the Divisor before it enters the EOM formula.
Raw EOM smoothing type — always builds the displayed Raw EOM line with SMA on the unsmoothed EOM base.
Raw EOM overlay rule — applies the shared moving-average overlay to the displayed Raw EOM line only.
Z-score source — always normalizes the unsmoothed EOM base, not the displayed Raw EOM line.
Z-score validity rule — only outputs z-score values when mean and standard deviation are valid and the standard deviation is nonzero.
Z-score signal type — always builds the signal line as an EMA of the z-score line.
Display mode rule — plots either Z-Scored EOM or Raw EOM, not both at once.
Z-score reference levels — always shows 0, ±1σ, and ±2σ reference levels in z-score mode.
Autoscale guard — uses hidden ±2σ plots to stabilize z-score-mode scaling.
Notes specific to this script
The script has two distinct display paths: Raw mode smooths the EOM base with SMA, while Z-Scored mode normalizes the unsmoothed EOM base instead of the displayed Raw EOM line. The shared Moving Average section only applies to Raw mode, while the z-score smoothing and signal controls belong to the indicator-specific section. There is no reset or anchor behavior in this script. Because the final aggregate total sits in the denominator after the Divisor is applied, larger volume can reduce the magnitude of EOM even when price still moves. Raw mode needs its SMA warmup, while Z-Scored mode needs a valid mean, a valid standard deviation, and a nonzero standard deviation before it can plot.

