For the Geeks
This page exists for one reason: a careful reader deserves to understand why the indicator behaves the way it does, and they should not have to reverse-engineer the script to get there. The rest of the pack teaches ho...
Written By Axiom Admin
Last updated 22 days ago
For the Geeks
This page exists for one reason: a careful reader deserves to understand why the indicator behaves the way it does, and they should not have to reverse-engineer the script to get there. The rest of the pack teaches how to use the tool. This page teaches how to reason about it β what the higher-timeframe call is actually doing, what the cross-symbol scaling is claiming and not claiming, how the blend composes its bands and resolves its trend vote.
It is not a code walkthrough. There are no formulas, no thresholds, no pseudocode, and no implementation-pattern detail in here. What you get is mental models, the trust questions each mechanic exists to answer, and the verification path you can walk on your own chart to confirm the answer matches reality. If that sounds like an awkward middle ground between "treat me like a user" and "treat me like a developer," it is. It is also the right amount of information for the reader this page exists to serve: somebody who will not lean on a tool until they can reason about why it works, and who does not need to be able to clone it in order to trust it.
If your reading style is "I do not need this," you can skip the page; the rest of the pack is enough to use the tool well. If your reading style is "I want to know what the higher-timeframe call is actually doing before I commit money to what it told me," this is your page. Read it once before you start tuning, and revisit it when something on the chart surprises you in a way that a simpler explanation does not fully resolve.
What this page is and is not
This page covers three distinctive mechanics in Axiom BB CTX that are different from a textbook Bollinger Band indicator and that a serious reader will want explained:
The confirmed-vs-live higher-timeframe pattern. Why the slot's plotted value behaves the way it does under each
On Bar Close?posture, in mental-model terms.The cross-symbol scaling. What the scaling is doing, what it is intentionally not doing, and how to read the result.
The weighted blend and its majority-vote trend. How the blend composes its bands and how it decides whether the composite basis is in uptrend or downtrend.
Each section ends with a verification path you can run on your own chart.
What this page does not include:
The exact
request.securitywrapper, the offset choices used inside the requested expression, or thelookaheadflags. Those are implementation detail.The function signature or the call shape for the cross-symbol scaling.
The accumulator loop or the tie-break code for the blend.
Any thresholds, formulas, or pseudocode.
That boundary is deliberate. A reader who finishes this page should understand the tool well enough to trust it; they should not be able to clone it from this manual.
Mechanic A β Confirmed-vs-live higher-timeframe pattern
The trust question this mechanic exists to solve
A higher-timeframe Bollinger reader has to make a choice. It can either:
request the value at the higher timeframe and use what it gets back live (responsive but capable of redrawing on the live higher-timeframe bar), or
request the value and intentionally use a previous, confirmed reading so the value the reader sees on the chart is one that the higher-timeframe data has already settled.
A naive higher-timeframe call can also do something worse: it can quietly produce a value during historical playback that effectively peeks at future data, creating a backtest that looks far better than the live chart will. Hindsight charts that flatter their own indicators are a known failure mode in this space.
The confirmed-vs-live pattern in Axiom BB CTX is built so:
Under
On Bar Close? = ON, the slot's plotted value at chart barNis a confirmed previous higher-timeframe close. Historical bars and live bars are treated consistently, and the value does not retroactively change once the higher-timeframe bar has closed.Under
On Bar Close? = OFF, the slot's plotted value is the live higher-timeframe value as of the chart-bar evaluation. This is the responsive posture; it can change as the higher-timeframe bar develops.
Both postures are honest about themselves. Neither posture is the "correct" one. The point of having both is to let the reader make the tradeoff per slot, with their eyes open.
How to think about ON vs. OFF
The clean mental model:
ON is a hindsight-resistant value. The plotted value on chart bar
Nis, by construction, a value that was final at the close of a previous higher-timeframe bar. The chart you see today should look the same when you look at it tomorrow.OFF is a real-time value. The plotted value on chart bar
Nis whatever the higher-timeframe bar's basis happens to be at this exact moment. It is what you would get if you opened the higher timeframe directly and looked at the most recent bar's basis right now.
The tradeoff is what you are willing to pay for what you want to see. ON costs you up to one higher-timeframe bar of lag. OFF costs you stability.
Why this matters more on multi-timeframe than single-timeframe
A textbook Bollinger Band on the chart's own timeframe has no posture choice to make: its plotted value at chart-bar N is either the live chart-bar value (which behaves like OFF) or the previous chart-bar value (which behaves like ON, and is essentially what [1] referencing gives you). The two are visually almost indistinguishable because the chart-bar resolution is fast.
On a multi-timeframe Bollinger reader, the higher-timeframe bar covers many chart bars. The choice between confirmed-and-stable and live-and-revising becomes visible because chart bars cycle far faster than higher-timeframe bars. That visible gap is what makes the posture choice consequential β and why every multi-timeframe Bollinger Band indicator on the market has to pick a posture, even if it does not say so.
Axiom BB CTX says so, per slot, with a switch that defaults to the safer posture.
Verification path you can walk
On a 1-minute chart, enable a slot at a higher timeframe β the 5-minute default of Slot 01 is fast enough to verify in under fifteen minutes.
Confirm the slot's
On Bar Close?is true. Watch the slot's lines for two full higher-timeframe cycles (in this case, two 5-minute bars). The lines should stay flat through each higher-timeframe bar and step at each higher-timeframe close.Now flip
On Bar Close?to false. Watch the next two higher-timeframe cycles. The lines should drift on every chart-bar tick during the developing higher-timeframe bar and snap to a final value at the higher-timeframe close.Toggle back and forth a few times. The visual signature of each posture is unmistakable once you have seen both.
If you want to push the verification further, use TradingView's bar replay on a historical period:
Set the chart to bar replay. Step forward one chart bar at a time.
Under ON, the slot's plotted value at chart bar
Nshould match the slot's plotted value at chart barN+1until the higher-timeframe bar closes. The value you see on a given chart bar does not change as the chart advances within the higher-timeframe bar.Under OFF, the slot's plotted value at chart bar
Ncan change as the chart advances within the higher-timeframe bar.
That ON-stability across chart bars within a higher-timeframe window is the operational definition of "confirmed." If your test shows it, the slot is honoring the ON posture.
Mechanic B β Cross-symbol scaling
The trust question this mechanic exists to solve
When a slot's Optional Ticker: is set, the slot reads its Bollinger Band from that other symbol. The naive thing to do at that point is to plot the resulting bands at the other symbol's raw prices β which would put a BTC band at $60,000 on a SPY chart at $500. The lines would be off-screen and the read would be useless.
The pragmatic alternative is to rescale the alternate symbol's bands into the chart symbol's price space, so the lines land where you can see them and you can compare envelope shapes directly. That is what the cross-symbol scaling does.
The trust question the scaling exists to answer is "how do I read this BTC-on-SPX band?" The honest answer is: as a study of BTC's volatility envelope, expressed in SPX's units. The lines are scaled. They are not predictive.
What the scaling is doing in mental-model terms
The slot reads the alternate symbol's basis, upper, and lower at the slot's timeframe, under the slot's repaint posture. It also reads the chart symbol's close at the same timeframe under the same posture. It then multiplies the alternate symbol's bands by a chart-to-alternate close ratio to express them in the chart symbol's price units.
Conceptually: if at the slot's timeframe the chart symbol's close is X and the alternate symbol's close is Y, the alternate symbol's bands are multiplied by X/Y so they land near the chart's price. The relative width of the alternate symbol's envelope is preserved; the relative position of the alternate symbol's basis inside its own envelope is preserved; the absolute price units are translated.
Two things are explicitly not happening.
No volatility transformation. A 1% move in the alternate symbol becomes a
(X/Y * Y * 0.01) = X * 0.01move on the chart in the scaled bands. That is a 1% move in chart units. If the alternate symbol's typical volatility is much larger than the chart symbol's typical volatility, the scaled bands will sit further from the chart's price than the chart's own bands would. That is honest; it is the math reflecting the difference in regimes, not a design flaw.No causality claim. The scaling does not assert that the alternate symbol leads, lags, or pulls the chart symbol. The bands are a study of the alternate symbol's envelope, scaled into chart units so you can see them next to the chart's own behavior.
Why this scale was chosen over a more elaborate one
A more elaborate scaling would normalize for volatility β for example, by computing each symbol's standard deviation over a comparable window and adjusting the alternate symbol's bands so their width in chart units matched a target proportional to the chart's own volatility. That would produce a cross-ticker band that always sat near the chart's price.
The design choice in Axiom BB CTX is to not do that, for two reasons.
A volatility-normalized cross-ticker band hides the regime difference between symbols. If BTC is in a 5% daily move and SPY is in a 0.5% daily move, that fact is part of what the reader should see. Hiding it inside a normalization would make the chart look cleaner and the read worse.
A more elaborate transformation would not make the cross-ticker band predictive. It would still be a study; it would just be a study that flatters itself by always landing near the chart's price. The simpler scaling is closer to honest because it does not hide its own assumptions.
The scaling here does one thing, says exactly what that thing is, and lets the reader judge what to make of the result.
Failure modes you should know about
Session mismatch. If the alternate symbol is closed while the chart symbol is open (or vice versa), the alternate symbol's data is stale during the gap. The scaled bands will keep drawing the last available value, and that value will not reflect anything currently happening in either market. Use cross-ticker slots only during overlapping sessions.
Volatility regime divergence. When the two symbols are in very different volatility regimes, the scaled bands can sit far above or below the chart's price. That distance is the math being honest about the divergence, not a "pull" on the chart symbol.
Repaint posture inheritance. The scaling uses the slot's
On Bar Close?posture for both symbols. Under OFF, the live higher-timeframe value of either symbol can shift the bands intrabar. The scaling does not introduce its own repaint behavior, but it does inherit the slot's, and the inherited behavior is amplified because the bands depend on both symbols' live values.
Verification path you can walk
Pick a related pair with compatible sessions: SPY/QQQ, ES/NQ, BTCUSD/ETHUSD, etc.
On the chart symbol, enable a slot. Set its
TimeFrame:to blank (inherit chart). LeaveOptional Ticker:blank initially. SetBlended Weight:to zero.The slot's bands should match a textbook Bollinger Band on the chart symbol at the slot's
Length:andStdDev Mult:(verify this by adding TradingView's stock Bollinger Band indicator with the same parameters and comparing).Now set
Optional Ticker:to the related symbol. The slot's bands should snap to a position scaled into the chart's price space, near (but usually not identical to) the chart's native bands.Open the alternate symbol on a separate chart. Compute the chart's recent close and the alternate symbol's recent close at the slot's timeframe. The ratio of those two closes is approximately the scale factor the slot is using. The alternate symbol's basis, upper, and lower, multiplied by that ratio, should land in roughly the same place as the slot's scaled bands on your chart.
Toggle
Optional Ticker:between the alternate symbol and blank a few times. The bands should snap between the scaled and native positions cleanly.
That is the proof. The scaling is doing what it says: a close-ratio rescale that preserves the alternate symbol's envelope shape in the chart symbol's units.
Mechanic C β Weighted blend and majority-vote trend
The trust question this mechanic exists to solve
A composite of multiple slots needs a stated rule. Without one, the composite would be either a black box ("we computed this somehow") or arbitrary ("the first slot wins ties"). Either is a failure of trust.
The trust question the blend exists to answer is "what does this red line on top actually represent, and how does it decide its own basis-trend direction?" The plain-language answer is what this section gives you.
How the blended bands compose
The blended basis, upper, and lower are each a weight-normalized average across contributing slots:
For each of basis, upper, and lower: take every enabled slot with a non-zero
Blended Weight. Multiply each slot's value by its weight. Sum those weighted values. Divide by the sum of the weights. The result is the blended value.
Concretely, if Slot 01's basis is 100 with weight 33.3, Slot 02's basis is 102 with weight 33.3, and Slot 03's basis is 104 with weight 33.3, the blended basis is (33.3 * 100 + 33.3 * 102 + 33.3 * 104) / (33.3 + 33.3 + 33.3) = 102. If you change Slot 01's weight to zero, the blended basis becomes (33.3 * 102 + 33.3 * 104) / (33.3 + 33.3) = 103.
This is intentionally simple. The simplicity is what makes the blend's behavior predictable. Anything more elaborate β a volatility-weighted average, a regime-conditioned weighting, a learned coefficient β would produce a blend that the reader could not reason about by looking at the inputs.
A few implications worth carrying forward.
A slot at zero weight is invisible to the blend. It can still be drawn on the chart and still feed alignment alerts; the blend math just does not consider it. The "weight-zero, visible" pattern in Workflows leans on exactly this property.
Early warm-up bars are not a clean blend read. During the first few bars after a chart load, a higher-timeframe slot may not yet have enough history to compute a basis. The script normalizes missing slot values to zero before blending, so a weighted slot without real values can distort the composite until the slot has enough history. Do not judge the blend on those early bars.
The blend has no dampening, no smoothing, and no memory. It is a weighted average of the current values. A slot that steps at its higher-timeframe close will move the blend immediately; the blend does not "ease into" the new value.
How the blended basis-trend direction is decided
The blended basis's "rising" or "falling" direction does not come from looking at the blended basis itself across bars. It comes from a weight-majority vote across the per-slot trend states:
For every contributing slot (enabled and non-zero weight), take that slot's basis-trend state (uptrend or downtrend, computed against its own
Basis Trend Length). Sum the weights of the uptrend-voting slots. Sum the weights of the downtrend-voting slots. If the uptrend weight is greater than or equal to the downtrend weight, the blended basis trend resolves to uptrend. Otherwise, downtrend. As with the band values, early warm-up bars are not a good place to trust this vote.
The tie rule β uptrend wins ties β is intentional and stated. Tie-breaking has to go somewhere; declaring it explicitly avoids the ugly case where the blended trend silently flickers on equal-weight states.
Two things are worth noting about this design.
It is a vote, not an average. The blended trend is not "is the blended basis higher than it was N bars ago." It is a vote tallied across the per-slot trend states, weighted by
Blended Weight. That makes the blended trend a function of how the slots are leaning right now, not a function of how the blended basis has moved.Skewed weights amplify single-slot influence. A slot with 80% of the total weight effectively decides the vote. If that slot's basis-trend state flips, the blended trend flips with it, regardless of what the other contributing slots are doing.
Why this rule was chosen over alternatives
A "blended basis higher than it was N bars ago" rule was the obvious alternative. It was rejected because it would produce a blended trend that did not match the per-slot trends in many normal cases β for example, if all three slots flipped uptrend on the most recent bar but the blended basis happened to be slightly lower than N bars ago because of weight composition history, the alternative rule would report downtrend while every contributing slot was reporting uptrend. That kind of silent disagreement is exactly the failure mode the explicit vote avoids.
A "highest-weight slot decides" rule was also considered. It was rejected because a slot whose only qualification is "I am the heaviest" should not be the only thing that matters when slot 2 and slot 3 disagree with it. The vote degrades gracefully toward "highest-weight slot decides" only when the highest-weight slot's weight exceeds the sum of every other contributing slot's weight, which is the case where it should β by the reader's own weighting.
Verification path you can walk
Enable two slots with
Blended Weight = 50each. All other slots disabled. Note the blended basis value.Compute the simple average of the two enabled slots' bases. The blended basis should equal that average.
Set one of the two slots'
Blended Weightto zero. The blended basis should immediately equal the remaining slot's basis exactly.Set both weights back to 50. Now configure the two slots so that one is in uptrend state and the other is in downtrend state. The blended basis trend should resolve to uptrend (because uptrend weight = downtrend weight = 50, and the tie rule favors uptrend).
Change one weight to 60 and the other to 40 such that the downtrend-voting slot now has 60. The blended basis trend should flip to downtrend (because downtrend weight 60 > uptrend weight 40).
That sequence proves the average is what we say it is and the vote is what we say it is. If your verification matches, you understand the rule cold.
A closing word on why this page exists at all
The default posture in this corner of the market is to ship a multi-timeframe Bollinger tool, hide the higher-timeframe choice behind defaults the user cannot see, hide the cross-symbol behavior inside an unstated normalization, and hide the blend behind an undocumented heuristic. The reader gets a clean chart and a tool they cannot reason about.
The choice here is different, and it has a cost β this page exists, the manual is longer, the tool asks more of the reader before it will repay serious use. The benefit is that nothing load-bearing about the tool's behavior lives somewhere you cannot get to. The higher-timeframe posture is a switch. The cross-symbol scaling is a stated ratio. The blend is a weighted average with a named tie rule. Each one has a verification path you can walk on your own chart in under ten minutes.
What you have actually earned by finishing this page is not a secret. It is the ability to defend the tool's readings out loud β to yourself when the chart is quiet, to another trader when the read is being questioned, to your own past trade when it did not go the way the chart suggested. That defense is the working product of the page. Come back here when a surprise on the chart outruns the other pages; the mechanic you need is somewhere above.
Where to go next
For the
On Bar Close?posture in operational depth, MTF & Repainting.For the cross-ticker workflow that uses the scaling responsibly, Workflows, Workflow 3.
For how the blend interacts with alerts, Alerts.
For the broader trust posture this page sits inside, Limitations & Trust Boundaries.