For the Geeks
This page exists because the pane is a bounded re-mapping of a textbook indicator and a careful reader has a right to know what that re-mapping is doing before they trust what they see. It is a mental-model page. No f...
Written By Axiom Admin
Last updated 22 days ago
For the Geeks
This page exists because the pane is a bounded re-mapping of a textbook indicator and a careful reader has a right to know what that re-mapping is doing before they trust what they see. It is a mental-model page. No formulas. No pseudocode. No exact thresholds beyond what the input panel already exposes. If you want to build something like this yourself, the inputs here are enough to start from first principles β and that is deliberate. The goal is to increase trust without handing a competitor a working copy.
If you have read Visuals & Logic, the first half of this page will be familiar. What is new here is the why behind the shape of the mapping and the tradeoffs that shape costs you.
Why this transformation exists at all
The original problem is simple and widely mishandled: MACD values from different timeframes and different instruments are not directly comparable. A 5-minute MACD on a large, slow-moving index and a 5-minute MACD on a thin, fast-moving altcoin do not live in the same units; a 5-minute MACD and a 60-minute MACD on the same instrument do not live in the same magnitude range either. Stacking them in price units on one pane is a visual convenience that pretends the comparison is honest. It is not.
The indicator's answer is to take every slot's MACD, signal, and histogram and express them in a unit that is shared: the slot's own recent volatility, expressed as ATR over ATR Length bars. Dividing raw MACD by that ATR is what lets a 5m read and a 60m read β or a SPY read and a BTC read β sit on one scale without lying about it. The scale each slot ends up on is how many ATR-units its MACD currently is away from zero; its signal, from zero; its histogram, from zero.
That quotient is then passed through a smooth, bounded mapping that lands in 0β100, with 50 for the quotient being zero. The bounded mapping is the second half of the answer: once every slot's value lives in the same range, the pane can host them on a shared axis without any slot dominating because of raw magnitude.
The cost of all of this, stated plainly, is that you lose the ability to read raw MACD magnitude off the pane. If your workflow needs raw MACD numbers β for classical divergence counting, for example β this pane is not the tool for that, and README.md says so in the "what this is not" section.
The inputs to the transformation
Stated in plain English:
The raw MACD, signal, and histogram for the slot, computed on the slot's chosen source, MA family, and length settings.
The ATR for the slot over
ATR Lengthbars, computed on the slot's context β its symbol, its timeframe. IfOptional Tickeris set, ATR comes from that ticker's bars, not the chart's.ATR Sensitivity, a scalar applied before the bounded mapping. Larger pushes the slot toward the pane's boundaries faster; smaller flattens the slot toward 50.
Every one of those is deliberate. ATR is a proxy for "typical bar range on the slot's context," which makes the quotient a per-context volatility-relative read. Sensitivity is what the operator dials to change how much headroom the pane has before it saturates. The map itself is fixed and contains no hidden configurability β a choice the pack makes to keep the three knobs the user has as the only meaningful levers.
The shape of the mapping, in plain language
The mapping is a centered, monotonic, bounded function. Three facts about its shape carry almost all of the useful intuition:
Centered at 50. An input of zero β MACD minus signal rounded to zero in the histogram case; MACD itself rounded to zero in the line case β produces exactly 50. That is why the manual calls 50 the equilibrium midline. It is not a claim about the market being neutral; it is a claim about the slot's raw quantity having rounded to zero in ATR-scaled units.
Asymptotic at 0 and 100. The output never leaves 0β100, and it approaches those boundaries without crossing them. Inputs that are "large in ATR units" land near a boundary. Inputs that are "very large" land even closer, but the visual distance between "large" and "very large" compresses as the sigmoid saturates. This is the tradeoff the bounded pane buys. You gain comparability across contexts; you lose resolution at the extremes.
Monotonic. Larger input always maps to larger output; smaller to smaller. The mapping does not fold, clip, or invert. If the raw value is rising, the plot is rising; if it is falling, the plot is falling. The only discontinuities are the clamps that pin the result at 0 or 100 if the pre-clamp value would have exceeded the frame.
If you find it useful to picture the behavior, think of two regimes: a near-50 regime where the mapping is approximately linear and the pane reports quotient changes faithfully, and a near-boundary regime where the mapping has mostly saturated and the pane reports diminishing marginal change. The switch between the two is gradual. ATR Sensitivity is what moves the transition point up or down the pane.
What 50 means, precisely
For a slot's fast line (normalized MACD): 50 means the underlying MACD is zero relative to ATR β the fast MA and the slow MA agree.
For a slot's slow line (normalized signal): 50 means the underlying signal line is at zero β historically, recent MACDs have averaged to zero in ATR-scaled units.
For the slot's histogram: 50 means MACD equals signal. The histogram is the one line where "50" cleanly means "crossover happening at the equilibrium of this slot's recent volatility."
50 is not "neutral market." It is "the raw quantity rounded to zero." Markets that are trending hard can still sit near 50 on a slot whose fast and slow moving averages are tracking each other. Markets that are chopping can sit far from 50 if the fast and slow moving averages remain separated even while price goes nowhere cleanly. The slot fast line measures the MACD distance from zero after scaling; the histogram is the place where MACD-vs-signal convergence and divergence is measured.
What the 0 and 100 boundaries mean
The boundaries are asymptotes. When a slot approaches 0 or 100, it is saying: the scaled quantity is many ATR-units away from zero. That is not the same as "overbought" in the RSI sense.
Three implications:
Saturation is real. Once a slot is near a boundary, increases in the underlying raw value produce smaller and smaller visual changes. You cannot read "very stretched" vs. "extremely stretched" off a slot line that has pinned.
Boundaries are ATR-relative. Two slots both sitting at 90 are both "many ATR-units stretched," but "many ATR-units" on a violent instrument during a real move is not the same economic event as "many ATR-units" on a quiet instrument during a flat session. The stretch is comparable in its unit; the underlying moves are not.
The 70/30 reference lines are visual brackets, not thresholds. The indicator does not fire alerts on crossings there. Limitations & Trust Boundaries names the misread in full.
What master smoothing does, and what it does not
Master smoothing applies one additional MA pass β your choice of family and length β to the already-blended fast, slow, and histogram. Then those smoothed values are re-clamped into 0β100 so the pane stays bounded.
What it does: takes the blend's real-time twitch and quiets it, producing a slower, more stable visual for regime-style reading.
What it does not do:
It does not change the slot lines. Those remain the unsmoothed per-slot reads.
It does not change per-slot alerts.
It does not add information. Smoothing is a visual filter; it cannot surface what the underlying data does not contain.
It does not make blend alerts earlier. It makes them later. The
Blended MACD Is Bullish/Bearishalerts read the smoothed values and therefore fire after the raw blend would have.
If you want to internalize the effect, enable master smoothing with EMA(10) and watch the blend lag the slot lines on the same chart for a session.
Honest tradeoffs vs. other approaches
This pane is one choice among several for turning MACD into something cross-comparable. Each alternative has its own tradeoff, and none of them dominate.
Raw MACD stacked in price units. Highest fidelity to the textbook math, zero cross-context comparability. You keep exact magnitudes; you give up honest stacking across timeframes or instruments.
Percentile / rank normalization (e.g., "this MACD is in the 80th percentile of its last N values"). Produces a bounded pane too, but the scale is historical rank, not ATR-scaled stretch. Percentile normalization handles slow regime shifts well and handles sudden volatility spikes poorly β an outlier session can dominate the ranking window for a long time. ATR-normalization is more immediate; the volatility yardstick updates bar by bar.
Raw
tanhor raw logistic without ATR scaling. Bounded, but not volatility-relative. A tanh of raw MACD on a violent instrument and tanh of raw MACD on a quiet instrument still do not land in comparable frames, because the raw MACDs differ in magnitude for reasons unrelated to the current economic event.
This indicator's choice is ATR-relative scaling into a centered bounded function. That buys you cross-context honesty, a clean 50 equilibrium, and a bounded pane that survives regime shifts. It pays for those with saturation at the extremes and a dependency on ATR being well-behaved. Sections 2 and 9 of Limitations & Trust Boundaries name both of those costs directly.
A verification path you can run
You do not need to trust this page. You can check the behavior yourself.
Drop the indicator on a 1m chart, defaults.
Confirm every slot line and the blend stay inside 0β100 at all times. Push
ATR Sensitivityto 3.0 and confirm again.Observe the histogram during a period where MACD and signal are drifting together. The columns should sit near 50. Now wait for a directional push. The columns should expand away from 50 in the expected direction and change color across the four-state scheme Visuals & Logic teaches.
Enable master smoothing with EMA(10). Compare blend to slot lines over several bars. Confirm the blend lags.
Set a slot's
Optional Tickerto a different instrument. Confirm the slot's line reflects the other instrument, not the chart's. Disable the cross-asset slot when you are done.
If any of those behave differently on your setup, the indicator is doing something it should not be β Troubleshooting is where to start looking.
Where to go next
For the on-pane reading of everything this page explained, Visuals & Logic. For the misreads that stem from the tradeoffs here (saturation, ATR collapse, cross-asset interpretation), Limitations & Trust Boundaries. For the knobs, Settings.