Volatility Squeeze Breakout [JOAT]Volatility Squeeze Breakout
Finds volatility compression — when Bollinger Bands contract inside the Keltner Channel — and signals the directional release with a built-in energy gauge.
What it is
Markets alternate between coiling and expanding. This indicator detects the coil using the classic squeeze relationship between two well-known volatility envelopes, quantifies how much energy has built up, and then signals the breakout in the direction momentum actually resolves. It is an original implementation with a charge model and full trade framing, not a bare squeeze dot script.
How it works
• The squeeze — a squeeze is on when the Bollinger Bands (price standard deviation) contract entirely inside the Keltner Channel (ATR-based). This means realised volatility has fallen below its typical range and the market is compressing.
• Charge / energy — while the squeeze persists, the tool tracks how long and how tightly the market has been coiled and expresses it as a 0–100 charge. A longer, tighter coil stores more potential energy for the eventual expansion.
• Momentum direction — a smoothed momentum measure determines which way the coil is leaning, so the breakout is read directionally rather than as a neutral event.
• The release — a Buy fires when the squeeze releases with rising positive momentum; a Sell fires when it releases with falling negative momentum. The release is a discrete event, and a minimum-gap control prevents repeated prints around the same break.
Trade levels
On a signal, a red risk box marks entry to the ATR stop and a green reward box marks entry to the third target, with inner dividers and right-edge labels for entry, stop and each take-profit at your R multiples.
The dashboard
An adjustable energy-gauge panel shows the squeeze state, the charge that had accumulated at the moment of release, the momentum direction, a conviction estimate, the active signal, and a live first-target-before-stop tally from closed bars only.
How to use it
• Works on any asset and timeframe; volatility cycles exist at every scale.
• Watch the charge build during a squeeze, then act on the release in the momentum direction.
• Higher charge readings indicate a longer coil, which some traders treat as a higher-quality setup — but a big coil can still resolve in either direction, so the momentum gate matters.
Settings
Bollinger length and multiplier, Keltner length and ATR multiplier, momentum length, release and charge options, risk multiple and target R multiples, plus visual and dashboard controls.
Originality and usefulness
The squeeze concept is public domain; the value added here is the charge model that turns coil duration and tightness into a readable energy figure, the directional momentum gate on the release, and the integrated non-repainting trade framing — combined and explained so a trader can see exactly why each breakout is flagged.
Notes and limitations
• Squeeze breakouts can fail or fake out; a release does not guarantee follow-through.
• The charge measures compression, not direction — always confirm with the momentum reading and your own context.
• The tally reflects only past bars on the current chart and is not a prediction.
• Educational and analytical tool, not financial advice.
— made with passion by officialjackofalltrades
Indicator

Adaptive Momentum Ribbon [JOAT]Adaptive Momentum Ribbon
An eight-layer moving-average ribbon whose colour is driven by live momentum and whose compression flags the coil before the move.
What it is
A single moving average tells you very little. A ribbon of them, fanned by speed, tells you three things at once: direction (the colour), strength (how wide it fans) and turning points (where it squeezes and flips). This indicator builds that ribbon and adds a momentum core and a compression detector so the ribbon is not just decorative — it gates the signals.
How it works
• The ribbon — eight exponential moving averages from fast to slow, with an optional light second smoothing pass for cleaner turns. When the fast layers sit above the slow layers the stack is bullish, and vice versa.
• Momentum core — a rate-of-change normalised by ATR and then smoothed. This value is mapped onto a colour gradient, so a strong trend glows saturated while a fading one drifts toward neutral. The same value gates entries, so you buy strength rather than every flip.
• Compression detector — the width between the fastest and slowest ribbon lines is ranked as a percentile over a lookback window. A low percentile means the market is coiled; a move out of that coil is the tradable expansion. Coils are highlighted so you can see energy building.
• Flip signals — a Buy prints when the ribbon flips up out of (or just after) a compression with positive momentum; a Sell is the mirror. Because a flip requires the stack to actually reverse, signals are naturally spaced, and a minimum-gap control adds a further safeguard against clustering.
Trade levels
Each signal draws a red risk box to the ATR-based stop and a green reward box to the third target, with inner target lines and right-edge price labels for entry, stop and every take-profit at your chosen R multiples.
The dashboard
An adjustable panel shows trend direction, a block-gradient momentum meter with a signed headline value, the compression state (coiled or expanded), a 0–100 conviction estimate, the current signal, and a live first-target-before-stop tally from closed bars only.
How to use it
• Works on all assets and timeframes; the ribbon adapts to whatever data it is given.
• Use the coil highlight to prepare for a move and the flip-with-momentum signal to time it.
• Require the coil filter for cleaner, fewer signals in choppy markets, or relax it for more responsive trend entries.
Settings
Base length and layer step, source, optional smoothing, momentum length and smoothing, signal momentum gate, compression window and percentile threshold, risk multiple and target R multiples, plus visual and dashboard controls.
Originality and usefulness
The combination is the point: a speed-fanned ribbon, an ATR-normalised momentum gradient that both colours the ribbon and filters signals, and a percentile-ranked compression model that isolates coils. Together they turn a familiar visual into a structured, non-repainting trend-and-expansion tool.
Notes and limitations
• Moving averages lag by nature; the ribbon confirms trend, it does not call exact tops or bottoms.
• In strong one-way trends the compression filter may keep you out of some continuation entries — that is the intended trade-off for fewer false flips.
• The tally reflects only past bars on the current chart and is not a forecast.
• Educational and analytical tool, not financial advice.
— made with passion by officialjackofalltrades
Indicator

ICT Liquidity Sweep & Structure [JOAT]ICT Liquidity Sweep and Structure
A smart-money workflow that maps resting liquidity, detects stop-hunt sweeps, and reads market structure shifts on one clean overlay.
What it is
This tool organises several well-known smart-money / ICT concepts into one coherent, non-repainting engine and — importantly — explains how the pieces reinforce each other rather than just stacking them. The premise: price is drawn to pools of resting orders (old highs and lows), often sweeps them to trigger stops, and then reveals its true intent through a structure break. The indicator makes each of those steps visible and gates its signals on their confluence.
How it works
• Liquidity levels — confirmed swing highs and lows (pivots) are drawn as buy-side liquidity (above old highs) and sell-side liquidity (below old lows) lines, each labelled with its price. These mark where stops are likely resting.
• Liquidity sweeps — a sweep is detected when price trades through one of these levels and then closes back on the original side, i.e. the level was raided but not accepted. This is the classic stop-hunt footprint and is the setup trigger.
• Market structure (BOS / CHoCH) — the engine tracks the live sequence of swings. A Break of Structure confirms trend continuation; a Change of Character is the first counter-break that flips the internal bias. Both are labelled on confirmed closes.
• Fair value gaps — three-bar imbalances left by displacement are drawn as zones and used as entry confluence, since price often rebalances them.
• Confluence gate — a Buy requires a bullish sequence (a sweep of sell-side liquidity followed by a bullish structure shift, optionally aligned with a fair-value gap); a Sell is the mirror. Buy and Sell are made mutually exclusive so both never print on the same bar, and a minimum-spacing control prevents clustering.
Trade levels
Each signal renders a red risk box from entry to stop and a green reward box from entry to the third target, with inner target dividers and right-edge labels for entry, stop and each take-profit at your R multiples. The stop is anchored to the structure that produced the signal, not to a fixed distance.
The dashboard
An adjustable panel summarises the current structural bias, the most recent liquidity event, the nearest untapped level, a conviction estimate, the active signal, and a live first-target-before-stop tally computed only on closed bars.
How to use it
• Suitable for any asset and timeframe; the concepts are scale-independent, though very low timeframes produce more noise.
• Use the liquidity lines to anticipate where price may be drawn next, and wait for a sweep-plus-structure confluence rather than acting on a raw level touch.
• Combine with a higher-timeframe bias for directional filtering.
Settings
Pivot strength, liquidity extension, sweep sensitivity, fair-value-gap minimum size, structure options, risk multiple and target R multiples, plus full colour and dashboard controls.
Originality and usefulness
Rather than plotting isolated ICT drawings, this engine chains them into a single logical sequence — liquidity, sweep, structure shift, imbalance — and only signals when that sequence agrees. The description of why those components belong together, and the confirmed-bar evaluation that keeps them honest, is what distinguishes it from a generic structure plotter.
Notes and limitations
• Structure and sweeps are defined algorithmically; discretionary traders may mark them slightly differently.
• Signals confirm on bar close, which trades a small amount of immediacy for stability and no repainting.
• The on-chart tally reflects only past bars on the current chart and is not a prediction.
• Educational and analytical tool, not financial advice.
— made with passion by officialjackofalltrades
Indicator

Whale Order Flow Radar [JOAT]Whale Order Flow Radar
Reconstructs institutional order-flow pressure from standard OHLCV and flags the footprints large participants leave behind — without needing tick or bid/ask data.
What it is
Most volume tools only tell you that "a lot traded". They do not tell you who was aggressive or which side absorbed the flow. This indicator estimates aggressor pressure from the one thing every chart gives you — the open, high, low, close and volume of each bar — and turns it into a readable map of accumulation, distribution and absorption. It is an original engine built from scratch; it is not a wrapper around a built-in volume study.
How it works
The calculations are transparent and each one is standard statistics applied in a specific way:
• Whale prints — every bar's volume is converted to a z-score against a rolling mean and standard deviation (default 50-bar window). A bar is only tagged as a whale print when its volume is a statistical outlier and it closes with conviction (the close lands in the upper or lower third of the bar's range). Requiring both filters separates genuine directional size from random spikes.
• Delta proxy — each bar's volume is split into buy volume and sell volume by where price closed inside its own range (close near the high = buyers dominated, close near the low = sellers dominated). Delta is buy minus sell. This is a bounded, non-repainting estimate of aggressor delta; it is a proxy, not true tick delta, and the description is honest about that.
• Cumulative delta — the running sum of the delta proxy, with an optional reset per session or week so it does not drift indefinitely.
• Absorption — high volume combined with an unusually small range flags a passive iceberg soaking up flow. These are marked separately because they often precede reversals rather than continuations.
• Pressure oscillator — a smoothed, volume-normalised delta that drives the colour system and gates the signals so you are reading strength, not every wiggle.
The signals
A Buy prints when a bullish whale print lands while the cumulative delta and an optional trend filter both agree; a Sell is the mirror. Everything is evaluated on the confirmed bar, so a printed signal does not repaint. A minimum-bar spacing control keeps Buy and Sell labels from stacking on lower timeframes.
Trade levels
When enabled, the most recent signal draws an ATR-based ladder: a stop level and three take-profit levels at your chosen R multiples, each labelled with its price on the right edge, so the intended risk and reward are visible at a glance.
The dashboard
A compact panel reports the current trend bias, the pressure reading, a 0–100 conviction estimate for the latest print, the active signal state, and a live win tally (how often the first target was reached before the stop, measured only on already-closed bars with no lookahead). The panel position and text size are adjustable.
How to use it
• Works on any symbol and any timeframe that provides volume; on symbols with no real volume the delta components are less meaningful, which is noted here honestly.
• Treat whale prints and absorption as context, not as automatic entries — combine them with your own structure read.
• Use the trend filter to only take prints in the direction of the higher-level bias, or turn it off for counter-trend fade setups.
• The conviction score and win tally are on-chart context to help you filter, not a performance promise.
Settings
Volume baseline window, whale z-score threshold, conviction fraction, absorption threshold, delta smoothing and reset, trend filter length, ATR risk multiple and target R multiples, plus full visual and dashboard controls.
Originality and usefulness
The value here is the specific combination: a dual-filter whale detector (outlier volume and close-in-range conviction), a bounded close-based delta proxy with cumulative tracking, a separate absorption model, and a normalised pressure oscillator that ties them together into one non-repainting signal. That blend, and the reasoning for it, is what makes it more than a standard volume histogram.
Notes and limitations
• The delta and pressure figures are estimates derived from OHLCV, not exchange order-flow data. They approximate aggressor behaviour; they do not measure it directly.
• No indicator predicts the future. Signals can and will fail, especially in thin or news-driven conditions.
• The win tally reflects only what has already happened on the loaded chart and is not a forecast of future results.
• This is an educational and analytical tool, not financial advice. Manage your own risk.
— made with passion by officialjackofalltrades
Indicator

Nadaraya-Watson Trend [QuantAlgo]🟢 Overview
The Nadaraya-Watson Trend indicator estimates a smooth, adaptive trend path by applying non-parametric kernel regression directly to price. For each bar it weights historical values inside a configurable lookback window with a chosen kernel function, normalizes those weights, and returns a single endpoint estimate that forms the plotted trend line. Bandwidth and kernel type control how aggressively recent bars dominate the estimate, optional residual bands express how far price is dispersed around that path, and slope based coloring with reversal markers make direction and turning points readable at a glance across any timeframe or instrument.
🟢 How It Works
The indicator is built around a one sided Nadaraya-Watson (NW) estimator: only the current bar and past bars enter the calculation, so the path behaves as a causal smoother rather than a centered, repainting fit. The pipeline has three stages: kernel weighting over the lookback window, normalized regression into a single trend value, and optional residual band construction from the same estimate.
First, effective bandwidth is formed from the configured bandwidth and multiplier. Each lag distance is then mapped to a kernel weight. Gaussian and Rational Quadratic keep infinite support with different decay shapes. Compact kernels (Epanechnikov, Triangular, Quartic, Cosine) only assign weight while the normalized lag stays inside the unit interval:
kernel_weight(float dist, float h, string ktype, float rq) =>
float w = 0.0
if h > 0.0
float u = dist / h
if ktype == 'Gaussian'
w := math.exp(-(dist * dist) / (2.0 * h * h))
else if ktype == 'Rational Quadratic'
w := math.pow(1.0 + (dist * dist) / (2.0 * rq * h * h), -rq)
else if math.abs(u) <= 1.0
if ktype == 'Epanechnikov'
w := 0.75 * (1.0 - u * u)
else if ktype == 'Triangular'
w := 1.0 - math.abs(u)
else if ktype == 'Quartic'
w := (15.0 / 16.0) * math.pow(1.0 - u * u, 2.0)
else if ktype == 'Cosine'
w := (math.pi / 4.0) * math.cos(math.pi * u / 2.0)
w
float h = bandwidth * h_mult
Next, the Nadaraya-Watson path is computed as the normalized weighted average of the selected source across the lookback window. Nearer bars dominate when bandwidth is low. Weight spreads more evenly when bandwidth is high, producing a smoother path:
float sum_w = 0.0
float sum_p = 0.0
for i = 0 to lookback
float w = kernel_weight(i, h, kernel_type, rel_weight)
sum_w += w
sum_p += src * w
float nw_trend = sum_w != 0.0 ? sum_p / sum_w : na
Finally, residual bands can be drawn from a kernel weighted mean absolute residual of the source versus the current NW estimate, scaled by the band multiplier. When price is tightly clustered around the path the envelope contracts. When price is dispersed the envelope expands, framing extension and compression relative to the same estimator that defines the trend:
float sum_abs = 0.0
float sum_res_w = 0.0
for i = 0 to lookback
float w = kernel_weight(i, h, kernel_type, rel_weight)
if w > 0.0 and not na(src ) and not na(nw_trend)
sum_abs += w * math.abs(src - nw_trend)
sum_res_w += w
float residual = sum_res_w != 0.0 ? sum_abs / sum_res_w : na
float upper = not na(nw_trend) and not na(residual) ? nw_trend + residual * band_mult : na
float lower = not na(nw_trend) and not na(residual) ? nw_trend - residual * band_mult : na
🟢 Signal Interpretation
▶ Bullish Path (Rising NW Line with Bullish Color): When the Nadaraya-Watson estimate is increasing bar to bar, the path and optional gradient fill plot in the bullish color, reading as an uptrend in the kernel smoothed series. Treat this as a long bias: strongest on the reversal marker with price holding above the path, or on pullbacks that respect the path while slope stays up. Bias weakens if price loses the path and the slope flattens or flips down.
▶ Bearish Path (Falling NW Line with Bearish Color): When the estimate is decreasing bar to bar, the path and fill plot in the bearish color, reading as a downtrend in the kernel smoothed series. Treat this as a short bias: strongest on the reversal marker with price holding below the path, or on bounces that fail at the path while slope stays down. Bias weakens if price reclaims the path and the slope flattens or flips up.
▶ Residual Bands (Optional Envelope Around the Path): With residual bands enabled, the upper and lower lines track a scaled kernel weighted residual around the NW path. Touches or closes beyond the outer band highlight price stretched away from the estimate. Returns toward the path after an extension often mark mean reversion relative to the kernel trend rather than a full regime change. Band width is derived from how widely the source has been scattered around the current NW estimate inside the lookback window
🟢 Features
▶ Preconfigured Presets: Three parameter sets tuned for different trading styles and timeframes. "Default" delivers balanced trend estimation for swing trading on 1H to daily charts, smoothing short lived noise while still responding to genuine directional turns. "Fast Response" is built for intraday work on 5 minute to 1H charts, keeping the path tighter to recent structure so turns register earlier at the cost of more frequent reversals in chop. "Smooth Trend" is aimed at position style reading on daily and weekly charts, forming a more stable baseline that flips only when the kernel path itself shifts with more conviction. Kernel type, residual bands, and visual options stay independently configurable under every preset.
▶ Kernel Library: Six kernel functions expand how the same endpoint Nadaraya-Watson framework assigns weight across the window. Gaussian is the classic smooth default with infinite support. Epanechnikov, Triangular, Quartic, and Cosine are compact kernels that fully exclude bars beyond the bandwidth scale. Rational Quadratic keeps infinite support with heavier tails, and its Relative Weighting input controls how much influence farther bars retain versus a Gaussian like decay. Switching kernels changes the shape of the single plotted path without adding a second model or external oscillator.
▶ Residual Bands: Optional envelope around the NW path built from kernel weighted mean absolute residuals of the source versus the estimate, scaled by Band Multiplier. Enable when you want extension and compression context around the same trend line. Disable when you want only the path, gradient, and markers.
▶ Built-in Alerts: Five alert conditions support hands off monitoring. "Bullish Kernel Reversal" fires on the bar the path slope flips from down to up. "Bearish Kernel Reversal" fires on the bar the path slope flips from up to down. "Any Kernel Reversal" fires on either directional flip. "Source Cross Above Upper Band" and "Source Cross Below Lower Band" fire when the selected source crosses the residual envelope extremes. Alert messages include exchange, ticker, and timeframe for immediate context.
▶ Visual Customisation: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish colors to the path, gradient fill, residual bands, markers, optional bar coloring, and optional background coloring. Custom unlocks independent bullish and bearish color pickers. Gradient fill, residual bands, reversal markers, bar coloring, and background coloring can each be toggled so the chart stays as clean or as expressive as the workflow requires.
Indicator

Divergence Indicator RSI, MACD,, Hidden Reversal Signals LunqFXDivergence Indicator is a multi-engine divergence scanner for PulseWire that reads RSI, MACD and OBV at every confirmed swing and only draws a divergence when the engines agree — so instead of the usual flood of weak one-oscillator signals, you get a few graded, high-conviction ones. Every divergence is rated by strength: ★★★ all three engines confirm (rare, strongest), ★★ two confirm, single-engine noise is filtered out by default. It detects regular divergences (price makes a new extreme, oscillators refuse — potential reversal) and hidden divergences (trend continuation), on any market — forex, crypto, stocks, indices, gold — and any timeframe. Built in Pine Script v6, fully non-repainting. Keywords: divergence indicator, RSI divergence, MACD divergence, OBV divergence, hidden divergence, regular divergence, reversal, momentum, exhaustion, multi oscillator scanner.
◆ WHY MULTI-ENGINE
Any single oscillator diverges constantly — that's why classic divergence tools feel random. Requiring independent confirmation from momentum (RSI), trend-momentum (MACD) and volume flow (OBV) removes most false positives: when all three refuse to follow price, the move is genuinely running out of fuel.
◆ WHAT IT DRAWS
Divergence lines on price — solid neon violet for bullish, neon amber for bearish; dashed for hidden divergences.
Star-graded labels — ★★ / ★★★ with tooltips explaining exactly what diverged.
Exhaustion candles — a unique display layer: candles glow at full neon while price and engines agree, and fade as engines stop confirming — you see a divergence brewing before it prints.
Status strip dashboard — a horizontal HUD along the bottom: last signal + strength, a live engine board (P / RSI / MACD / OBV direction arrows), a FUEL meter, and bull/bear counters.
◆ HOW IT WORKS
Swings are detected with confirmed pivots (N closed bars each side).
At each new confirmed pivot the scanner compares price and each engine against the previous pivot: price lower low + engine higher low = regular bull; price higher low + engine lower low = hidden bull (mirrored for highs).
The number of agreeing engines (1–3) becomes the star rating; signals below your minimum are skipped.
The live engine board and fuel meter track slope agreement in real time — display-only context that never alters signals.
◆ HOW TO USE IT
Treat ★★★ regular divergences as your primary reversal alerts — look for entries with your own structure/levels.
Use hidden divergences to join the trend on pullbacks.
Watch the FUEL meter: when it drains and candles fade, tighten stops on trend trades.
Raise Min strength to 3 for only the rarest, cleanest signals; lower pivot bars for faster (but noisier) detection.
◆ SETTINGS
Pivot left/right bars, max gap between swings, minimum strength, hidden divergences on/off, engine toggles (RSI/MACD/OBV), RSI length, exhaustion candles, label size, dashboard position/size.
◆ ALERTS
Bullish divergence · Bearish divergence (fire when a confirmed signal prints).
◆ LIMITATIONS
Signals confirm with a pivot delay (right bars) — that is the honest cost of zero repaint; lower it for speed, raise it for reliability.
On symbols without volume data the OBV engine adds no information — disable it there.
Divergence marks exhaustion, not timing — always combine with structure and risk management.
◆ ORIGINALITY & NON-REPAINTING
Original work: the three-engine agreement grading, the exhaustion-candle layer, the live engine board and the fuel meter are my own implementation — no third-party code. All divergences are built from confirmed pivots only; a drawn line or label never moves or disappears.
Educational analysis tool, not financial advice. © LunqFX. Indicator

Strategy

Indicator

Price Action Breakout Trend [QuantAlgo]🟢 Overview
Price Action Breakout Trend is a trend-following indicator built on structural range breakouts rather than moving average crossovers or oscillator thresholds. It tracks the highest high and lowest low of a defined lookback window to establish the levels price must decisively clear to confirm a directional shift, anchoring a trailing stop that ratchets in the trend's direction and reverses only when price breaks through it, helping traders distinguish genuine trend continuation from the shallow pullbacks that punctuate every sustained move across all timeframes and markets.
🟢 How It Works
The foundation of the indicator is the range defined by recent price extremes. On each bar it references the highest high and lowest low of the prior lookback window, excluding the current bar so the reference range is locked in before price interacts with it:
prior_high = ta.highest(high, lookback)
prior_low = ta.lowest(low, lookback)
These two levels frame the breakout boundaries. Rather than reacting to every marginal touch, the indicator lets you define what qualifies as a genuine break through the confirmation setting, which determines whether the closing price or the full bar extreme is tested against the trailing stop:
test_down = confirmation == 'Close' ? close : low
test_up = confirmation == 'Close' ? close : high
From these, a single trailing stop is maintained on the active side of the trend. While the trend holds bullish the stop ratchets upward, advancing to track the rising lookback low and never loosening, and the trend reverses the moment the tested price breaks below it:
if trend == 1
trail := math.max(trail, prior_low)
if test_down < trail
trend := -1
trail := prior_high
On that reversal the stop immediately re-anchors to the opposite extreme, flipping above price to begin trailing the new downtrend, where the mirror of this same logic ratchets the stop lower and flips the trend back to bullish once price breaks above it. Because the reversal is triggered by the same stop price has been trailing, the line is not a passive overlay but the actual decision boundary, with no separate signal calculation sitting behind it. This makes the indicator a continuous stop-and-reverse system that always holds a committed direction, retaining its bullish or bearish reading through every pullback contained within the range until price clears the trailing level.
🟢 Signal Interpretation
▶ Bullish Trend (Green): When price breaks above the trailing stop and the trend flips up, the indicator enters bullish mode with green coloring applied across the stop, gradient fill, and breakout levels. The stop sits below price and ratchets higher as the trend develops, and the reading holds through pullbacks that stay above it. The flip into green, marked by an up triangle beneath the bar, identifies a potential long/buy opportunity, with subsequent pullbacks toward the rising stop offering potential continuation entries while the trend remains intact.
▶ Bearish Trend (Red): When price breaks below the trailing stop and the trend flips down, the indicator enters bearish mode with red coloring across all visual elements. The stop sits above price and ratchets lower as the decline extends, holding bearish through rallies that fail to reclaim it. The flip into red, marked by a down triangle above the bar, identifies a potential short/sell opportunity, with rallies back toward the falling stop offering potential continuation entries on the downside.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 4-hour and daily charts with a 10-bar lookback and close-based confirmation, filtering marginal breaks while staying responsive to genuine shifts. "Fast Response" shortens the lookback to 5 bars and switches to wick-based confirmation for intraday charts, where the trend needs to flip as soon as price trades beyond a recent extreme. "Smooth Trend" extends the lookback to 25 bars with close confirmation for position trading on daily and weekly timeframes, where the cost of a false flip exceeds the cost of a delayed one. Selecting a preset overrides the individual lookback and confirmation inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Breakout Signal" fires on the bar where the trend confirms bullish. "Bearish Breakout Signal" fires on the bar where it confirms bearish. "Any Breakout Signal" combines both into a single condition for traders who want a unified notification regardless of direction.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish schemes across the trailing stop, gradient fill, breakout levels, markers, and optional bar and background coloring. Independent toggles control each visual layer, so the trailing stop line, the gradient fill that ramps from the stop toward price, the triangle markers printed on each flip, and the underlying breakout levels that frame the active range can each be shown or hidden without affecting the others. Bar coloring tints price candles with the active trend color at a configurable transparency, and background coloring extends the directional tint across the full chart pane. Both are disabled by default and controlled independently.
*Tips: Layer the Price Action Breakout Trend with complementary analysis rather than treating it as a standalone trading tool. Breakouts hold most reliably when backed by participation, so combine each flip with volume context, since a break on expanding volume is far more likely to sustain than one on thin flow, and read the level being cleared against market structure, as a breakout through a well-established swing high or low carries more significance than one in open space. Pairing this script with volume, open interest, CVD, market structure, and mean reversion indicators from our QuantAlgo toolkit can further validate a breakout before entry. Indicator

Zero-Lag GARCH Bands | NAL1. Overview
Zero-Lag GARCH Bands | NAL is an adaptive volatility band indicator built from a Zero-Lag EMA baseline and an optimized GARCH-style volatility engine.
The indicator does not use a standard fixed-width channel. Instead, it estimates market variance through a recursive GARCH framework, smooths that volatility with a Zero-Lag EMA, and uses the result to create dynamic upper and lower bands around price structure.
The purpose of the indicator is to identify when price escapes a volatility-adjusted regime boundary, while allowing the band width to adapt to the underlying variance environment.
2. Calculation
The indicator starts by estimating volatility from lagged log returns. These returns are squared to create a variance component, which becomes the foundation of the GARCH model.
GARCH_LogReturn = math.log(close / close )
GARCH_SquaredLogReturn = math.pow(GARCH_LogReturn, 2.0)
GARCH_RealizedVariance = ta.sma(GARCH_SquaredLogReturn, GARCH_Lookback)
The script then searches through possible coefficient weights to find a beta/lambda value that better fits recent realized variance behavior. A second optimization loop is used to estimate gamma, which controls the long-run variance contribution.
These optimized coefficients are combined into a GARCH-style variance model using three components: long-run variance, recent shock variance, and lagged variance.
GARCH_Variance =
GARCH_Gamma * GARCH_LongRunVariance +
GARCH_Alpha * GARCH_SquaredLogReturn +
GARCH_Beta * GARCH_LaggedVariance
After the variance estimate is created, it is smoothed using a Zero-Lag EMA. This gives the volatility engine a faster response while still reducing noise.
GARCH_ProjectedVariance = f_zlema(GARCH_Variance, GARCH_SmoothLen)
GARCH_Volatility = math.sqrt(math.max(GARCH_ProjectedVariance, 0.0))
The baseline is also built with a Zero-Lag EMA, applied after a light EMA pre-smoothing step. This creates the central reference line for the band structure.
The final bands are created by scaling the Zero-Lag GARCH volatility against the selected source and band pressure setting. Higher band pressure creates a tighter band, while lower pressure allows the band structure to expand.
upperBand = baseline + (baseline_src / band_pressure) * GARCH_VolatilityMultiplier
lowerBand = baseline - (baseline_src / band_pressure) * GARCH_VolatilityMultiplier
A bullish state triggers when price closes above the upper band. A bearish state triggers when price closes below the lower band. When price remains inside the bands, the previous regime is held.
3. Key Features
Zero-Lag EMA baseline for reduced-lag price structure.
Optimized GARCH-style volatility engine.
Adaptive variance model using shock, lagged, and long-run components.
Zero-Lag smoothing applied to projected volatility.
Dynamic upper and lower volatility bands.
Band pressure control for adjusting channel tightness.
State-based candle coloring, band coloring, glow effect, and directional fills.
4. Use
Zero-Lag GARCH Bands is designed to identify when price begins escaping its volatility-adjusted structure. A close above the upper band reflects bullish expansion, while a close below the lower band reflects bearish expansion.
The GARCH engine gives the indicator a deeper volatility layer than a standard ATR or deviation channel. Instead of only measuring recent range, it models variance behavior and projects that into the band structure.
This indicator is best used as a specialized module within a complete strategy framework. Its role is to isolate volatility-adjusted regime expansion, where price is evaluated against a dynamic variance boundary rather than a static channel. The full value comes from how this volatility regime signal is integrated into a broader process for timing, structure, and execution.
Indicator

Gaussian RSI | NAL1. Overview
Gaussian RSI | NAL is a smoothed momentum-regime indicator built around an RSI engine filtered through a Gaussian weighting model. Instead of plotting raw RSI, the indicator applies Gaussian smoothing to reduce noise and create a cleaner momentum line.
The signal is then refined with an optional Gaussian confluence filter. This adds a second smoothing layer that acts as a directional confirmation structure, helping separate stronger momentum regimes from weaker internal fluctuations.
2. Calculation
The indicator starts by calculating RSI from the selected source. This creates the base momentum reading used by the rest of the model.
The RSI is then passed through a Gaussian filter. The Gaussian filter weights the lookback window using a bell-curve style distribution, creating a smoother momentum line while still preserving directional movement.
A second Gaussian filter can also be applied as a confluence line. This creates a slower reference layer for the Gaussian RSI, allowing the indicator to judge whether the current RSI structure is aligned with its own smoothed trend.
The bullish condition requires the Gaussian RSI to move above the upper threshold. When confluence is enabled, the Gaussian RSI must also be above the Gaussian confluence line.
The bearish condition requires the Gaussian RSI to move below the lower threshold. When confluence is enabled, the Gaussian RSI must also be below the Gaussian confluence line.
The final state holds its previous direction when neither condition is active. This creates a cleaner regime output instead of constantly flipping to neutral between threshold zones.
3. Key Features
Gaussian-smoothed RSI momentum engine.
Optional Gaussian confluence filter.
Upper and lower threshold-based regime detection.
State-based candle coloring and RSI coloring.
Glow-style RSI plot, regime fills, confluence line, and transition labels.
Designed to reduce raw RSI noise while preserving momentum structure.
4. Use
Gaussian RSI is designed to identify when momentum begins shifting into a stronger bullish or bearish regime. A move above the upper threshold reflects bullish momentum pressure, while a move below the lower threshold reflects bearish momentum pressure.
The confluence filter adds an additional layer of structure by requiring the Gaussian RSI to align with its own smoother reference line. This can help separate cleaner momentum expansions from weaker internal movement.
This indicator is best used as a specialized momentum module within a complete strategy framework. Its role is to isolate a refined RSI-based momentum layer, where the full value comes from how the signal is integrated into a broader process for regime, timing, and execution.
Indicator

Adpative Dual Cloud | NAL1. Overview
Adaptive Dual Cloud | NAL is a dual-baseline trend cloud built from two separate smoothing structures: a Kijun-style midpoint baseline and an ALMA baseline. Instead of relying on a single moving average or one volatility model, the indicator builds an adaptive cloud around both baselines and only confirms direction when price escapes the full combined structure.
The purpose of the indicator is to create a stricter trend envelope. The Kijun side captures broader structural balance, while the ALMA side adds a smoother adaptive layer. The final upper and lower cloud boundaries are selected from both systems, forcing price to clear the stronger side of the cloud before a bullish or bearish state is confirmed.
2. Calculation
The indicator starts by creating two independent baselines. The first baseline is a Kijun-style midpoint calculated from the highest and lowest values over the selected lookback. This represents a structural equilibrium zone.
kijun_sen = math.avg(ta.lowest(cloudLen1), ta.highest(cloudLen1))
The second baseline uses ALMA, giving the cloud a smoother weighted-average component with adjustable sigma and offset. This adds a more refined smoothing layer beside the Kijun structure.
alma_base = ta.alma(srcSeries, cloudLen2, cloud2Off, cloud2Sig)
The indicator then calculates volatility using a selectable deviation engine. The volatility source can be price, the residual between price and the cloud average, or the cloud structure itself. This allows the band width to be built from different layers of market behavior.
VolSrc = switch devSrc
"Price" => srcSeries
"Residuals" => srcSeries - math.avg(alma_base, kijun_sen)
"Cloud" => math.avg(alma_base, kijun_sen)
The volatility engine supports multiple deviation types, including standard deviation, mean absolute deviation, median absolute deviation, exponential deviation, ATR, linear regression deviation, Hull deviation, FRAMA deviation, Kauffman adaptive deviation, Gaussian deviation, and quantile deviation.
After volatility is calculated, adaptive upper and lower bands are created around both baselines.
upper_kijun = kijun_sen + vol * multi_u
lower_kijun = kijun_sen - vol * multi_l
upper_alma = alma_base + vol * multi_u
lower_alma = alma_base - vol * multi_l
The final cloud uses the highest upper boundary and the lowest lower boundary. This makes the signal more selective because price must break beyond the combined cloud, not just one individual baseline.
upper = math.max(upper_kijun, upper_alma)
lower = math.min(lower_kijun, lower_alma)
A bullish state triggers when price closes above the final upper cloud. A bearish state triggers when price closes below the final lower cloud. When price remains inside the cloud, the previous state is held.
3. Key Features
Dual-baseline cloud using Kijun structure and ALMA smoothing.
Adaptive upper and lower bands built from selectable volatility models.
Multiple deviation engines for different volatility interpretations.
Selectable volatility source: price, residuals, or cloud structure.
Final cloud requires price to clear the combined upper or lower boundary.
State-based candle coloring, cloud coloring, glow effect, and directional fills.
4. Use
Adaptive Dual Cloud is designed to identify when price escapes a combined structural and smoothed volatility envelope. A close above the upper cloud reflects bullish expansion beyond both baseline systems, while a close below the lower cloud reflects bearish expansion below the combined structure.
The indicator is intentionally stricter than a single-baseline channel. By combining a Kijun-style midpoint with an ALMA baseline, it creates a cloud that filters more of the internal noise before confirming a directional regime.
This indicator is best used as a specialized module within a complete strategy framework. Its role is to isolate a cloud-based volatility and structure layer, where price must prove strength or weakness against more than one adaptive baseline. The full value comes from how this regime signal is integrated into a broader process for timing, structure, and execution.
Indicator

Median Gaussian Trend | NAL1. Overview
Median Gaussian Trend | NAL is an adaptive trend-band indicator built from a median price baseline, Gaussian smoothing, and Gaussian-weighted volatility bands.
The indicator is designed to filter raw price movement into a smoother directional structure. Instead of using a simple moving average or standard deviation channel, it first compresses price through a median calculation, then applies Gaussian smoothing to create a cleaner baseline. Around that baseline, it builds adaptive upper and lower bands using Gaussian-weighted deviation.
The result is a robust, smooth trend regime tool that identifies when price breaks outside its filtered volatility structure.
2. Calculation
The indicator starts by calculating a median of the selected source. This helps reduce noise by focusing on the central value of recent price action instead of reacting directly to every candle.
That median value is then passed through a Gaussian filter. The Gaussian filter gives more structured weighting to the lookback window, producing a smoother baseline while still preserving directional movement.
The indicator then calculates a Gaussian-weighted deviation around the smoothed median baseline. This creates a custom volatility measurement that is more aligned with the filtered baseline rather than raw price alone.
The upper and lower bands are then built around the Gaussian-smoothed median. The script allows separate upper and lower multipliers, which lets the band structure be asymmetric if needed.
upper = median_base + sd_range * sd_mul
lower = median_base - sd_range * sd_mulb
A bullish state triggers when price closes above the upper band. A bearish state triggers when price closes below the lower band. When price remains inside the bands, the previous regime is held.
3. Key Features
Median-based price filtering.
Gaussian-smoothed baseline.
Gaussian-weighted volatility deviation.
Adaptive upper and lower trend bands.
Separate upper and lower band multipliers.
State-based candle coloring, band coloring, glow effect, and directional fills.
4. Use
Median Gaussian Trend is designed to identify when price escapes its smoothed median-volatility structure. A close above the upper band reflects bullish expansion, while a close below the lower band reflects bearish expansion.
The median component helps reduce noisy price behavior, while the Gaussian smoothing and deviation engine create a more refined trend envelope. This makes the indicator useful for reading directional structure without relying on a raw moving average channel.
This indicator is best used as a specialized module within a complete strategy framework. Its role is to isolate a filtered volatility-trend layer of price behavior, where the real value comes from how the signal is integrated into a broader process for regime, timing, and execution.
Indicator

G-Score | NAL1. Overview
G-Score | NAL is a volatility-adjusted Z-Score regime indicator built from two main components: a smoothed price Z-Score and an adaptive GARCH-based volatility Z-Score.
The indicator does not use fixed overbought or oversold levels. Instead, it builds dynamic thresholds from the current volatility structure of the market. Price is then measured against those volatility-derived boundaries to determine whether the market is entering a bullish or bearish statistical regime.
2. Calculation
The indicator starts by estimating volatility through a GARCH-style process. It calculates log returns from the selected source, converts those returns into squared variance, and then compares short-term variance behavior against a realized variance baseline.
GARCH_LogReturn = math.log(src / src )
GARCH_SquaredLogReturn = math.pow(GARCH_LogReturn, 2.0)
GARCH_RealizedVariance = ta.sma(GARCH_SquaredLogReturn, GARCH_Lookback)
The model then searches through possible beta and gamma coefficients to find weights that better fit the recent variance environment. These optimized coefficients are used to build a GARCH variance estimate from three components: long-run variance, recent shock variance, and lagged variance.
GARCH_Variance =
GARCH_Gamma * GARCH_LongRunVariance +
GARCH_Alpha * GARCH_SquaredLogReturn +
GARCH_Beta * GARCH_LaggedVariance
The final GARCH volatility value is created by taking the square root of the projected variance. This produces the volatility engine used later in the threshold system.
The indicator then calculates two separate Z-Scores. The first is a price Z-Score, measuring where price is relative to its own mean and deviation. The second is a volatility Z-Score, measuring where GARCH volatility is relative to its own historical distribution.
Both values are smoothed with a Jurik-style moving average to reduce noise while keeping the response relatively fast.
The volatility Z-Score is then mirrored into positive and negative boundaries. This creates dynamic upper and lower thresholds that expand and contract with the current volatility regime.
The final signal compares the smoothed price Z-Score against those adaptive volatility thresholds. A bullish state triggers when price strength expands above the upper volatility boundary. A bearish state triggers when price weakness falls below the lower volatility boundary. When price remains inside the volatility envelope, the previous regime is held.
3. Key Features
Adaptive GARCH-style volatility engine.
Price Z-Score measured against volatility-derived thresholds.
Dynamic upper and lower boundaries instead of fixed levels.
Jurik-style smoothing for both price and volatility components.
State-based candle coloring, background regime coloring, threshold fills, and transition labels.
Designed to capture statistical expansion when price moves outside its volatility-adjusted structure.
4. Use
G-Score is designed to identify when price begins separating from its normal statistical range after accounting for the current volatility environment. A move above the upper threshold reflects bullish statistical expansion, while a move below the lower threshold reflects bearish statistical expansion.
The strength of the indicator comes from the relationship between price displacement and volatility regime. Rather than treating every Z-Score reading the same, it lets volatility define the boundary that price must break.
This indicator is best used as a specialized module within a complete strategy framework. Its role is to isolate a specific statistical layer of market behavior, where price expansion is evaluated through the lens of adaptive volatility. The full value comes from how this regime signal is integrated into a broader process for timing, structure, and risk.
Indicator

Volatility Halo | NAL1. Overview
Volatility Halo | NAL is an adaptive volatility band indicator built from a Zero-Lag EMA baseline, ATR band structure, and a recursive GARCH-style volatility regime multiplier.
The indicator does not use fixed-width bands. Instead, it starts with ATR-based bands and then adjusts their width using a projected volatility regime model. This allows the bands to respond differently when market volatility is expanding, contracting, or stabilizing.
2. Calculation
The indicator starts by calculating a Zero-Lag EMA baseline from the selected source. This baseline acts as the central trend reference, helping reduce lag compared to a standard EMA while still keeping the structure smooth.
float baseline = f_zlema(src, baseline_len)
float ATR_Value = ta.atr(ATR_Len)
The ATR value is then multiplied by the user-defined ATR multiple. This forms the base volatility distance used for the upper and lower bands.
The more advanced part of the indicator is the recursive GARCH-style regime multiplier. It begins by calculating log returns and converting them into shock variance. A long-run variance estimate is then built from recent shock variance.
GARCH_LogReturn = close > 0.0 and close > 0.0 ? math.log(close / close ) : 0.0
GARCH_ShockVariance = math.pow(GARCH_LogReturn, 2.0)
GARCH_LongRunVariance = ta.ema(GARCH_ShockVariance, GARCH_LongRunLen)
The model recursively updates conditional variance using three components: recent shock variance, long-run variance, and previous conditional variance. When adaptive coefficients are enabled, the script searches for coefficient weights that better fit recent variance behavior.
GARCH_ConditionalVariance :=
GARCH_Gamma * GARCH_LongRunVariance +
GARCH_Alpha * GARCH_ShockVariance +
GARCH_Beta * GARCH_PreviousConditionalVariance
The conditional variance is then projected and converted into a volatility estimate. This volatility is compared against its own regime baseline to create a volatility regime multiplier. The multiplier is clamped between a minimum and maximum value, preventing the bands from becoming too narrow or too wide.
GARCH_Volatility = math.sqrt(math.max(GARCH_ProjectedVariance, 0.0))
GARCH_RegimeMultiplierRaw = GARCH_Volatility / GARCH_RegimeBase
GARCH_RegimeMultiplier = f_clamp(GARCH_RegimeMultiplierSmooth, GARCH_MinMult, GARCH_MaxMult)
The final band width is created by combining ATR with the GARCH regime multiplier. The upper and lower bands are placed around the Zero-Lag EMA baseline.
hybridBandWidth = ATR_Value * ATR_Mult * GARCH_RegimeMultiplier
upperBand = baseline + hybridBandWidth
lowerBand = baseline - hybridBandWidth
A bullish state triggers when price closes above the upper band. A bearish state triggers when price closes below the lower band. When price remains inside the bands, the previous state is held.
3. Key Features
Zero-Lag EMA baseline for reduced-lag trend structure.
ATR-based volatility bands.
Recursive GARCH-style conditional variance model.
Adaptive volatility regime multiplier.
Bands expand or contract based on projected volatility conditions.
State-based candle coloring, band coloring, glow effect, and regime fills.
4. Use
Volatility Halo is designed to identify moments where price begins escaping its volatility-adjusted structure. A close above the upper band reflects bullish expansion, while a close below the lower band reflects bearish expansion.
The adaptive volatility engine allows the bands to shift with the underlying market environment, making the signal more responsive to changes in pressure and regime.
This indicator is best used as a specialized module within a complete strategy framework. Its real strength appears when it is combined with a broader process for reading market behavior, timing, and risk. The full edge comes from how the signal is integrated, not from the signal existing in isolation.
Indicator

Demand Supply Zone MatrixDemand Supply Zone Matrix by DayTradeSetup
Demand Supply Zone Matrix is an automatic Demand & Supply Zone indicator designed to help traders identify important price areas more clearly without manually drawing every zone.
The system detects potential Supply and Demand zones based on market momentum, volume activity, and the strength of price movement. It also includes zone grading, touch tracking, mitigation reference levels, alerts, and a dashboard summary to help traders filter key zones more efficiently.
Key Features
• Automatic Demand & Supply Zones
Automatically detects potential Supply and Demand zones based on strong directional price movement.
• Strength Grade / Score
Each zone is graded with an A / B / C score to help traders evaluate the quality and strength of each zone more easily.
• 50% Mitigation Line
Displays the midpoint of each zone, which can be used as a reference area for mitigation, retest, or reaction analysis.
• Touch Counter
Tracks how many times price has returned to test a zone, helping traders identify whether a zone is still fresh or has already been tested.
• Zone Retest Alert
Sends an alert when price comes back to test an active Supply or Demand zone.
• Zone Break Alert
Sends an alert when a zone is invalidated or broken by price action.
• Dashboard Summary
Includes a dashboard showing Supply/Demand zone count, best grade, total volume, and overall market bias.
How to Use
This indicator is designed to be used as a technical analysis tool for identifying areas where buying or selling pressure may appear.
Suggested workflow:
1. Check whether Supply or Demand is currently dominant.
2. Focus on higher-grade zones such as A or B.
3. Wait for price to return and test the zone.
4. Use additional confirmation such as Price Action, Market Structure, Trend Direction, or Risk Management before entering a trade.
Suitable For
This indicator is suitable for traders who use concepts such as:
Demand & Supply
Smart Money Concepts
Price Action
Retest Zones
Momentum Trading
Intraday Trading
It can be applied to multiple markets, including XAUUSD, Forex, Crypto, Indices, and different timeframes depending on the trader’s strategy.
Disclaimer
This indicator is a technical analysis tool only. It is not a direct Buy/Sell signal and does not guarantee trading results. Traders should always combine it with their own trading plan, risk management, and additional confirmation before making any trading decisions.
Risk Warning: Trading involves risk. Please study and understand the risks carefully before making any investment or trading decision. Indicator

Two Sigma Factor Composite [JOAT]TWO SIGMA FACTOR COMPOSITE
A tribute to the multi-factor approach pioneered by Two Sigma — long-only, long/short, and risk-premia funds that decompose returns into orthogonal factor exposures, normalise each factor onto the same statistical scale, and combine them into a single signed score. Two Sigma Factor Composite builds five canonical factors (Momentum, Quality, Value, Volatility, Mean-Reversion), Z-normalises each against a rolling baseline, sum-normalises the user-controllable weights, and outputs a composite score with signal labels, factor sparklines on the chart, and a rolling hit-rate backtest.
The five factors
Each factor is computed independently and Z-normalised over a configurable window (default 100 bars) with optional outlier clipping (default ±4σ):
Momentum — return / volatility over the configurable momentum window (default 50 bars). The classic "trend" factor.
Quality — inverse of recent realised volatility (default 50-bar window). Lower volatility = higher quality; an asset that has been calmer is treated as higher quality, consistent with academic factor research.
Value — deviation from a long mean (default 200-bar SMA). Negative deviation = "cheap" (positive value factor exposure); positive deviation = "expensive". The classical cross-sectional value definition, adapted to time series.
Volatility — percentile rank of recent realised volatility (default 20-bar stdev percentile-ranked over 252 bars). High vol = negative factor; low vol = positive factor.
Mean-Reversion — signed deviation from a 20-bar mean (default). Captures short-term reversion bias.
Each factor's window is independently configurable. All five outputs are Z-scores capped at ±4σ to prevent any single outlier from dominating the composite.
Sum-normalised weights
Five weight sliders (default 1.0 each) are normalised internally so any positive combination is valid. Default equal weight is the most defensible baseline; tune individual weights to bias the composite. Want a pure momentum + quality read? Set the others to 0.1 and Momentum/Quality to 2.0. The composite reshapes itself live.
Signal engine — bounded composite with three tiers
The composite is bounded by the clipping cap. The signal engine layers three thresholds:
Buy — composite crosses above the buy threshold (default +1.0σ).
Sell — composite crosses below the sell threshold (default −1.0σ).
Extreme Bull / Extreme Bear — |composite| crosses ±2.0σ. The script's strongest read.
A configurable signal cooldown (default 10 bars) prevents clustering.
Factor sparklines (the signature visual)
The script renders inline sparklines on the chart for all five factors — small line plots that visually show each factor's recent Z trajectory. Configurable base offset (vertical position below zero), row spacing, amplitude, and per-row transparency mapping. At a glance you see which factors are driving the composite and which are flat.
When all five sparklines lean the same way, the composite is high-confidence. When they disagree, the composite is a weighted compromise — the sparklines tell you the truth that a single number cannot.
Visual system
Composite line (configurable width, default 3px) with sign-coloured fill toward zero (configurable transparency).
Threshold lines at ±buyTH and ±extremeTH (configurable transparency).
Buy / Sell labels on chart on threshold crosses.
Factor sparklines — five inline Z-trajectory plots in the pane.
Optional chart-background override to follow chart.bg_color.
A locked Emerald Night palette: vivid green bull / vivid red bear / sage mid on a deep emerald background — strict 2-hue discipline with bg. No third colour invented anywhere; all variations are transparency-only.
Dashboard
Monospaced table positionable to any of eight corners. Surfaces:
Composite Z value and sign.
Per-factor Z rows (Momentum / Quality / Value / Volatility / Mean-Reversion).
Factor agreement percentage (how many factors agree with composite sign).
Last signal direction with bars-ago.
Weight configuration in use.
Backtest stats row — rolling forward-N-bar hit rate (configurable lookahead, default 10 bars). The script's own performance audit.
Alerts
Five alert conditions, each independently controllable:
BUY Cross (composite crosses above buy threshold)
SELL Cross
Extreme Bull (composite > +2.0σ)
Extreme Bear (composite < −2.0σ)
Low Factor Agreement (% of factors agreeing falls below the configurable threshold, default 40%) — the script's "no edge" warning.
How to read it
Three reads, in order of conviction:
Extreme score with high factor agreement (e.g. composite > +2.0σ AND agreement > 80%) — the highest-conviction read the script produces. Four or five factors are pointing decisively one way, and the composite is at a statistical extreme.
Buy / Sell with sparkline confirmation — visual confirmation that the directional read is being driven by multiple factors, not just one. If the composite is bullish but only the Momentum sparkline is leaning, the read is fragile; if Momentum + Quality + Value + Mean-Reversion all lean, the read is robust.
Low Agreement alert — stand-aside signal. The factors disagree internally; the composite is a wash. Wait for re-alignment.
Suggested settings
Defaults (momentum 50 / quality vol 50 / value 200 / vol 20/252 / MR 20, Z window 100, ±4σ clip, ±1.0 buy/sell, ±2.0 extreme, 10-bar cooldown) are tuned for daily charts on broad indices — the timeframes where factor approaches are statistically meaningful. For lower timeframes drop all windows proportionally. For weekly+ keep defaults; factor reads on weekly are the canonical institutional horizons.
Originality / what's reused
The factor-investing framework is published academic finance — Fama-French 1992, Carhart 1997, AQR 2013, and many others. The five factors used here (Momentum, Quality, Value, Volatility, Mean-Reversion) are the canonical institutional factor set. The implementation here — the five-factor pipeline with each factor's window independently configurable, the rolling Z-normalisation with outlier clipping, the sum-normalised five-weight composition, the bounded-composite signal engine with three-tier thresholds, the inline factor sparklines render in the same pane, the rolling forward-bar hit-rate backtest, and the strict 2-hue alpha-only palette — is JOAT-original. No third-party code reused. The script is a tribute to Two Sigma-style factor-composite portfolio construction, not a direct replication of any proprietary Two Sigma model.
Limitations
The five factors are computed from chart data only — they are time-series proxies of the cross-sectional factors used in true multi-asset portfolios. The Z-normalisation needs the window populated; early bars give a warm-up read. The forward-N-bar hit-rate backtest is descriptive of recent signal behaviour under the current settings; it is not a predictive metric. Factor exposures historically underperform for extended periods — the dashboard's agreement row and the low-agreement alert exist specifically to warn you when the model is breaking down.
—
-made with passion by jackofalltrades
Indicator

Renaissance Mean Reversion [JOAT]RENAISSANCE MEAN REVERSION
A tribute to the Medallion-style statistical-arbitrage approach: do not trade price — trade the spread between price and its smoothed expectation , measure how reliably that spread mean-reverts using an AR(1) half-life regression , and only fire signals when the half-life is fast enough to be tradeable. The result is a discipline-enforcing engine that says no more often than yes : it refuses to take a reversion trade until the spread shows it actually reverts.
The synthetic spread
The script builds a synthetic pair from two views of the same instrument:
Leg 1 — current price (configurable source).
Leg 2 — long EMA of price (default 50-bar; configurable).
Spread = price − long EMA (or ln(price) − ln(EMA) when log-spread mode is on, removing scale).
The spread is then Z-scored over a configurable lookback (default 100 bars) to produce a stationary stationary signal that says: "how many standard deviations is the spread from its own mean right now?". This is the textbook stat-arb construction, single-leg version.
Half-life regression — the gate
This is what makes the script institutional rather than retail. Reversion is meaningless if the spread does not actually revert. The script fits an AR(1) regression over a configurable window (default 120 bars):
Δspread_t = α + β · spread_{t−1} + ε_t
The half-life of mean reversion is then:
HL = −ln(2) / ln(1 + β)
When β is negative and close to zero, HL is short — the spread reverts quickly. When β approaches −1, HL is huge — the spread barely reverts. When β is positive, the spread is anti-mean-reverting (trending) and the script will refuse to trade.
A configurable Max Half-Life (default 20 bars) gates signals — entries only fire when HL is below this threshold. A configurable Min Half-Life (default 0.5) floors the estimate to avoid degenerate near-zero values that would otherwise produce explosive signals.
This is the headline filter. Roughly 50–70% of bars on most instruments fail it — which is the point. You only trade when the spread has earned the right.
Entry / Exit logic
R-LONG — fires when Z < −entryZ (default −2.0) AND HL is below the max threshold AND the re-entry cooldown has elapsed. Spread is stretched too far below, will revert.
R-SHORT — fires when Z > +entryZ AND HL is below the max threshold AND cooldown elapsed.
R-EXIT — fires when |Z| drops below exitZ (default 0.25) OR when Max Hold Bars (default 40) has been reached, whichever comes first.
A configurable re-entry cooldown (default 3 bars) prevents immediate re-firing on the same side.
Visual system — minimal mono institutional
The aesthetic is intentionally austere — Renaissance's research-paper minimalism. Pure monochrome:
Z guides on right side of chart — small text labels showing current Z, HL, and tradeable status.
R-LONG / R-SHORT / R-EXIT labels — clean text tags on entry and exit bars.
Half-Life overlay label — current HL value displayed near the live close.
Shaded ribbon between price and slow EMA (configurable transparency).
Trade entry/exit shapes — small markers at signal bars.
Single-hue tradeable-regime tint (off by default) — subtle bgcolor when HL is fast AND Z is stretched.
A locked Minimal Mono palette: white bull / gray bear / pure-black background. No accent colours. The chart looks like a quant research paper. Intentional.
Dashboard
Monospaced table positionable to any of eight corners. Surfaces:
Current spread value and Z score.
Current half-life (in bars) with tradeable / non-tradeable flag.
AR(1) β coefficient (the regression's directional read).
Z thresholds in use.
Last signal direction with bars-ago.
Max-hold bars remaining (when in a position).
Rolling backtest tracker
The script tracks the last N closed reversion trades (configurable, default 200) and surfaces:
Total trades, wins, losses.
Win rate.
Average bars-to-exit.
Average Z magnitude at entry.
Hit-rate by side (R-LONG vs R-SHORT).
This is the script's own performance audit — you see whether the engine is finding genuine reversion or whether the current regime is breaking it.
Alerts
Three alert conditions, each independently controllable:
Reversion Entry (R-LONG or R-SHORT)
Reversion Exit (R-EXIT)
Half-Life crosses Max Half-Life (regime change — reversion is becoming unreliable)
How to read it
Three reads, in order of conviction:
R-LONG / R-SHORT with very fast HL (e.g. HL = 4 bars on a 1H chart) — the script's intended high-conviction setup. The spread is stretched, the math says it will revert quickly, the chart agrees. This is the institutional setup.
Half-life crossing above max (alert) — regime warning. The instrument is shifting from mean-reverting to trending. Any open R-positions should be re-evaluated; new R-entries should be paused until HL re-tightens.
Sustained R-EXIT triggers from time-stop (max-hold) rather than from Z returning to neutral — the script is exiting because the trade ran out of time, not because the thesis played out. Recurring time-stop exits mean the current parameters do not fit the instrument.
The rolling backtest win-rate is your auditor. When it climbs, the engine is finding edge. When it grinds flat or declines, the regime has changed and the parameters need adjustment.
Suggested settings
Defaults (long EMA 50, Z lookback 100, regression window 120, max HL 20 bars, entry Z 2.0, exit Z 0.25) are tuned for 1H–4H on liquid markets where mean reversion is statistically meaningful. For lower timeframes drop everything proportionally (long EMA 25, Z 50, regression 60). For HTF raise everything (long EMA 100, Z 200, regression 200). The max HL is the most sensitive parameter — narrow it (10–15) for high-conviction-only filtering; widen it (25–30) for more frequent signals.
Originality / what's reused
The synthetic-pair Z-score construction is textbook stat-arb. The AR(1) half-life regression is published quantitative finance — the Ornstein–Uhlenbeck-process speed-of-reversion estimator. The implementation here — the dual-leg synthetic spread with optional log construction, the rolling Z-normalisation pipeline, the AR(1) regression with HL formula and min/max-HL gating, the entry/exit state machine with cooldown and max-hold, the rolling N-trade backtest tracker, and the minimal-mono institutional aesthetic — is JOAT-original. No third-party code reused. The script is a tribute to the Medallion-style approach, not a direct replication of any proprietary Renaissance Technologies code.
Limitations
The single-leg "synthetic pair" (price vs its own EMA) is a degenerate stat-arb construction by design — true stat-arb uses two genuinely co-integrated instruments. Pine's per-script symbol limitation makes a two-instrument cointegration construction impractical for a standalone indicator; this script captures the methodology of stat-arb (spread + Z + HL gate) on the single-instrument case. The HL estimate is statistical and needs the regression window populated; early bars give a warm-up read.
—
-made with passion by jackofalltrades
Indicator

Monotonic Trend Consensus [QuantAlgo]🟢 Overview
Monotonic Trend Consensus is a trend-following oscillator built on rank correlation between price and time rather than moving averages or crossovers. It scores how consistently price is ordered across multiple lookback windows and combines them into a single bounded reading on a -1 to +1 scale, holding the same meaning on any symbol or timeframe so traders can separate a broadly aligned trend from directionless noise and read when a move has stretched to saturation.
🟢 How It Works
The foundation is Spearman rank correlation between price and time, computed over each active window. Closes inside the window are ranked against one another, time forms its own rising sequence of ranks, and the difference between the two collapses to a single coefficient (rho):
float price_rank = less + (eq + 1.0) / 2.0
float time_rank = float(len - i)
float rho = 1.0 - 6.0 * sumd2 / denom
The coefficient reads +1 when each bar closes above the last in unbroken order, 0 when there is no consistent order, and -1 when each bar steps lower. Because it scores ordering rather than smoothing price into a line, it reflects the current window directly rather than trailing behind it, though it still needs a full window of bars to form. Ranking also limits the pull of any single outlier bar, and the bounded output is what lets one threshold hold across markets without rescaling.
A single window describes direction; the tool runs several and averages them into a consensus spanning fast, medium, and slow horizons:
consensus := array.avg(rhos)
Agreement is then measured as the share of windows leaning the same way as the consensus, and this conviction figure must clear a floor before a direction prints, working alongside the strength threshold:
conviction := 100.0 * agree / active
raw_bull = consensus > threshold and conviction >= min_conviction
raw_bear = consensus < -threshold and conviction >= min_conviction
A reading registers only when both clear at once: consensus past the threshold and windows aligned enough to meet the conviction floor. Fail either and the line stays flat. With Show Neutral on, those flat stretches reset to neutral; with it off, the line holds its last direction until the next qualifying move.
🟢 Signal Interpretation
▶ Bullish Consensus (Green): Consensus sits above the upper threshold with enough windows aligned, meaning recent bars are ordered upward across horizons. Trend traders read the turn into green as a possible long or continuation as the score presses toward +1. Mean-reversion traders treat a reading pinned near +1 as a stretched, broadly-agreed advance rather than a buy, and look to fade only once the line rolls back off the extreme, since the score can hold high through a sustained trend.
▶ Bearish Consensus (Red): Consensus sits below the lower threshold with conviction met, with bars ordered downward across horizons. Trend traders read the turn into red as a possible short or continuation as the score presses toward -1. Mean-reversion traders treat a reading pinned near -1 as a saturated decline where a bounce becomes more plausible, and look to fade on the turn back up rather than at the low itself.
▶ Neutral (Gray): With Show Neutral on, the line goes gray whenever no direction qualifies, either because consensus sits inside the threshold or conviction falls short. The zero line acts as the balance point and behaves like support or resistance for the reading itself: a score rejected at zero from above points to bullish order reasserting, a score capped at zero from below points to bearish order holding, and a clean break through leans toward a regime change. Reading this midline behavior against price is where market structure tools pair well, separating a base building above a structural level from a coil forming under overhead supply. Trend traders stand aside until the line commits; mean-reversion traders find less to work with here than at the edges.
▶ Reading the Extremes: The axis caps at +1 and -1, marking maximum agreement across every active window. Trend traders take an extreme as a sign a move is still in force; mean-reversion traders take it as a stretched zone and watch for the score to turn back toward zero as agreement breaks. An extreme that aligns with a known structural level gives a fade a cleaner reference than one in open space, and neither read holds on the extreme alone, since a strong trend can stay saturated before it cools.
🟢 Features
▶ Preconfigured Presets: Three setups map to different holding styles. "Default" suits swing work on 4-hour and daily charts, pairing a mid-range window spread of 8, 13, 21, and 34 with a 0.35 threshold and a 60% conviction floor, so a direction needs both strength and agreement before it flags. "Fast Response" pulls the windows in to 5, 8, 13, and 21 and eases the threshold and conviction floor so the reading keeps pace with quicker intraday swings. "Smooth Trend" stretches the windows out to 21, 34, 55, and 89 and raises both gates for daily and weekly position trading, where a premature flip costs more than a late one. Choosing a preset takes over the manual window, threshold, and conviction fields.
▶ Built-in Alerts: Four conditions track every change in state. "Bullish Trend Signal" triggers when the consensus confirms to the upside. "Bearish Trend Signal" triggers when it confirms to the downside. "Trend Lost / Neutral" triggers when an active direction fades back to flat, which is also the event a mean-reversion trader watches for after an extreme. "Any Trend Change" rolls the two directional events into a single notification for anyone who wants one alert covering both ways.
▶ Visual Customization: Six color schemes (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) carry a matched pair of bullish and bearish colors through the consensus line, its tiered gradient fill down to the zero baseline, and the optional bar and background tints. Marker lines sit at the positive and negative trigger levels to show the zone the consensus has to cross, and each window's own score can be switched on as a faint backing line so you can see which horizons are driving or dragging the combined figure. Bar coloring paints the price candles in the active trend color at an adjustable transparency, while background coloring spreads that tint across the pane.
Indicator

Citadel Microstructure Edge [JOAT]CITADEL MICROSTRUCTURE EDGE
A tribute to the high-frequency / market-making style of microstructure-edge extraction. Builds three orthogonal microstructure signals — tick imbalance (which side is aggressively crossing the tape), spread tightness (how thin the bid-ask is relative to its baseline), and micro momentum (the EMA-pair spread on the fastest timeframe) — then composes them into a single decaying edge value with an exponential half-life. When the edge crosses a configurable threshold and has sustained for N bars same-sign, a directional signal fires. Cooldown plus asymmetric lockout keep the signal stream institutional.
Three orthogonal components
Each component is computed independently and Z-normalised (optional for tick imbalance) for stationarity:
Tick Imbalance — LTF-reconstructed buy/sell tick classification. Output is the rolling imbalance bounded in ; optionally Z-normalised over a configurable window (default 60 bars) for cross-asset stationarity. The dominant input for fast / scalping reads.
Spread Tightness — (H − L) / C against its own EMA-smoothed baseline, Z-scored. Tight spread (low relative range) is constructive for whichever side momentum favours. The sign is borrowed from the micro-momentum factor.
Micro Momentum — EMA-fast minus EMA-slow on the tick-reconstructed flow, Z-scored. The directional engine.
Default weights (0.45 / 0.25 / 0.45) bias the read toward the two most-actionable components (tick imbalance + momentum), with spread tightness as confirmation. Optional auto-normalisation to sum=1.
Decaying edge with half-life ~ 3 bars
Microstructure edges decay quickly. The script does not just sum the three components per bar — it accumulates with decay :
edge_t = decay × edge_{t−1} + contribution_t
The default decay (0.78) gives the edge a half-life of approximately 3 bars — the standard market-making decay window. Older contributions fade out automatically; new contributions get incorporated immediately. This is the institutional way to track a fast signal without re-introducing flicker.
Sustained-edge signal logic
Edge Threshold (default 0.75) — minimum |edge| magnitude required to fire.
Sustained Edge (default 5 bars same sign) — the edge must have held its sign for N consecutive bars before a signal fires. This is the script's most important false-positive filter.
Cooldown (default 7 bars) — minimum bars between signals.
Asymmetric lockout (default ON) — an opposite-side signal CAN fire during cooldown. This means a quick flip from buy to sell remains responsive while consecutive same-side signals are suppressed.
Visual system
Edge histogram — projected at the top of the chart at a configurable percent of price (default 2% of price, 1.2% top padding). Histogram columns are coloured by edge sign with magnitude-proportional intensity. At a glance you see the edge's recent trajectory.
Buy / Sell labels with optional Unicode lightning glyph (toggleable to plain ">").
Slope-tinted micro ribbon — the micro fast / slow EMAs plotted with a translucent fill coloured by spread sign. Toggleable.
Subtle background shade by edge sign (off by default).
A locked Crimson Pulse palette: electric blue buy edge / lime-yellow sell edge / muted neutral on a deep crimson-black ground — the institutional HFT aesthetic.
Dashboard
9-row monospaced table positionable to any of nine corners. Surfaces:
Edge value with status (BUY / SELL / FLAT).
Tick imbalance value.
Spread tightness Z.
Micro momentum Z.
Sustained-edge counter (how many consecutive same-sign bars).
Last signal direction with bars-ago.
Decay setting and effective half-life.
Cooldown remaining.
Configuration: LTF, weights, threshold.
Alerts
Three alert conditions, each independently controllable:
Edge Buy
Edge Sell
Sustained Edge (N bars same sign) — the script's headline alert; fires before the signal does, useful as an early-warning notification.
{image]https://www.pulsewire.com/x/ybVYCAr3/
How to read it
Three reads, in order of conviction:
Sustained edge into a structural level — the highest-conviction read. The microstructure has been one-sided for N+ bars AND price is at a known S/R; the next move into the level usually breaks it.
Edge buy / sell with all three components agreeing — fast directional commitment. The dashboard's per-component rows tell you whether the read is dominated by tick imbalance (aggressive tape) or by micro momentum (sustained direction) or by spread tightness (regime-aware confirmation).
Edge above threshold but not sustained — early-warning state. Edge has crossed threshold but the sustained counter has not yet reached N. Watch the counter — if it ticks up bar-by-bar, the signal is forming; if it drops, the edge is decaying.
Suggested settings
Defaults (1m LTF, spread EMA 14 / Z 60, micro EMA 3/8 / Z 60, weights 0.45/0.25/0.45, edge threshold 0.75, sustain 5 bars, decay 0.78, cooldown 7 bars) are tuned for 5m–15m charts on liquid futures and crypto where microstructure has meaningful presence. For 1m scalping drop LTF to 15s (Premium required) and sustain to 3 bars. For HTF the script is not the right tool — microstructure edges decay too quickly to be meaningful on 1H+ timeframes.
Originality
The implementation — the three-component microstructure pipeline (tick imbalance + spread tightness + micro momentum), the LTF tick-rule reconstruction with optional Z-normalisation, the weighted-sum composition with auto-normalisation, the exponential-decay edge accumulator with configurable half-life, the sustained-edge counter and asymmetric-lockout signal logic, the price-anchored histogram render at the top of the chart, the slope-tinted micro ribbon, and the Crimson Pulse palette — is JOAT-original. No third-party code reused. The script is a tribute to Citadel-style market-making microstructure-edge extraction, not a direct replication of any proprietary Citadel code.
Limitations
Reconstructed tick direction is an inference — the tick rule is the accepted public-market proxy but is not a direct read of bid/ask. Sub-minute LTFs require a PulseWire Premium or Ultimate plan. Microstructure edges decay fast by design; on 1H+ timeframes the engine produces few signals — that is correct behaviour, not a bug.
—
-made with passion by jackofalltrades
Indicator

Bridgewater All-Weather [JOAT]BRIDGEWATER ALL-WEATHER
A tribute to Ray Dalio's All-Weather framework — the macro-regime engine that classifies the current environment along two orthogonal axes : growth (rising or falling) and inflation/volatility (rising or falling) — and maps the resulting quadrant to the asset class that historically performs best in that regime. Bridgewater All-Weather distils that idea into a Pine script: a quadrant classifier built on Z-scored growth and volatility proxies, a 2×2 mini-chart rendered on the chart itself, a regime-tinted background, a rotation-event label, and a Suggested-JOAT-Indicator row that names the best companion script for the current quadrant.
The four quadrants
Q1 — Growth UP, Vol DOWN — Risk-On / Equities regime. Blue.
Q2 — Growth UP, Vol UP — Inflation / Commodities regime. Gold.
Q3 — Growth DOWN, Vol DOWN — Disinflation / Bonds regime. Sage.
Q4 — Growth DOWN, Vol UP — Crisis / Gold regime. Pink.
The asset-class analogues are Dalio's institutional defaults; they can be toggled off if you want pure regime classification without the asset overlay.
Growth and Vol proxies
Macro frameworks need macro inputs. The script approximates the two factors purely from chart data so it runs on any instrument:
Growth proxy — long-window smoothed return (default 100-bar EMA-smoothed return). Z-scored against a long baseline (default 252 bars, the trading-year canonical).
Volatility proxy — rolling standard deviation of returns over the volatility window (default 100 bars). Z-scored against the same baseline.
A configurable Z dead-zone (default ±0.10) treats small Z values as neutral and refuses to register quadrant changes until the Z moves clearly off zero. This eliminates flicker between adjacent quadrants when the signal is genuinely uncertain.
Minimum-bars-hold filter
A quadrant must persist for at least N bars (default 3) before a rotation is committed. This prevents whipsaw classification when growth and volatility cross their respective zero lines on the same bar.
Mini 2D quadrant chart
The script's signature visual: a 2×2 grid rendered directly on the chart (anchored to any of four corners, with configurable cell size in bars and price-height in ATR units). The currently-active quadrant is highlighted in its quadrant colour; the other three are muted. At a glance you see the entire four-state regime classification mapped to its asset analogue. The four hues appear simultaneously only in the mini chart — by design — because elsewhere the script obeys strict one-active-quadrant colour discipline.
Visual system
Background tint by active quadrant (configurable transparency, default 92 institutional-subtle).
Quadrant badge — right-side floating label showing the active quadrant with its colour. Configurable corner.
Rotation label — drops a label on the chart every time the quadrant changes.
Mini 2D quadrant chart (the signature) — 2×2 grid in the chosen corner.
Hidden growth-Z and vol-Z line plots — for users who want to see the underlying scores in the Data Window or feed them to alerts. Off by default.
A locked Sapphire palette: one hue per quadrant (Q1 blue, Q2 gold, Q3 sage, Q4 pink). Because only one quadrant is active at a time, the chart only ever shows one family + the muted background. The strict 4-hue discipline only appears in the mini chart.
Suggested JOAT Indicator row
The dashboard exposes a Suggested Indicator row that names the best-fit companion from the JOAT suite per quadrant. Defaults:
Q1 (risk-on) → Quantum Trend Matrix (trend amplification in a benign environment).
Q2 (inflation) → Liquid Reversal Engine (mean-reversion bands in a volatile-up regime).
Q3 (disinflation) → Smart SR Zones (structure-focused reads in a calming environment).
Q4 (crisis) → Z-Score Flow Pro (extreme-statistics regime for risk-off conditions).
Every suggestion is user-configurable.
Dashboard
Monospaced table, positionable to any of nine corners, with optional row-gradient. Surfaces:
Active quadrant with asset analogue.
Growth Z value and direction.
Vol Z value and direction.
Bars in current quadrant.
Last rotation: from → to with bars-ago.
Suggested JOAT Indicator (toggleable).
Alerts
Three alert conditions, each independently controllable:
Any Quadrant Rotation
Entered Q4 (Risk-Off / Crisis) — the most actionable single alert; usually accompanies risk-off moves across asset classes.
Entered Q1 (Risk-On) — off by default; useful for trend-following entry timing.
How to read it
Three reads, in order of conviction:
Q4 entry — the highest-priority macro alert. Growth is falling and volatility is rising — historically the regime in which risk assets sell off, gold rallies, and defensive positioning wins. Reduce risk exposure regardless of the chart-timeframe signal.
Sustained Q1 — the trend amplifier. The market is in a healthy growth/calm environment; momentum tools have their largest edge. The mini chart visually confirms the regime.
Rotation between adjacent quadrants (e.g. Q1 → Q2 or Q3 → Q4) — regime-transition warning. The market is rotating along one of the two axes; this often precedes the larger directional move.
Suggested settings
Defaults (growth 100 / vol 100 / baseline 252 / dead-zone 0.10 / 3-bar hold) are calibrated to daily charts on broad indices. For lower timeframes drop windows proportionally. For weekly+ raise to 200 / 200 / 500. The dead-zone is the single most important anti-flicker input; widen if your instrument has noisy growth/vol behaviour.
Originality / what's reused
The All-Weather framework is Ray Dalio / Bridgewater Associates' published macro philosophy — a public conceptual framework, not proprietary code. The implementation here — the chart-data-only growth and volatility proxies, the Z-baseline normalisation with dead-zone gate, the minimum-bars-hold rotation filter, the 2×2 mini-chart render in chart units with ATR-scaled cell height, the per-quadrant single-hue palette discipline, the suggested-JOAT-indicator dashboard row, and the rotation-event label engine — is JOAT-original. No third-party code reused. The script is a tribute , not a direct replication of any proprietary Bridgewater model.
Limitations
The growth and volatility proxies are computed from chart data only — they are approximations, not the macroeconomic series an actual All-Weather portfolio uses. The Z-baseline assumes 252 bars approximates a trading year; on non-daily timeframes the interpretation shifts (e.g. on 1H, 252 bars is roughly 10 trading days). The quadrant classification is descriptive of recent chart behaviour, not of the broader macro environment — pair with macro context for serious portfolio decisions.
—
-made with passion by jackofalltrades
Indicator

AQR Momentum Factor [JOAT]AQR MOMENTUM FACTOR
A tribute to AQR Capital Management's seminal momentum-factor research — including Asness's classic "Value and Momentum Everywhere" framework. The script estimates cross-horizon momentum by ranking returns across five independent look-back horizons (default 1, 5, 20, 60, 120 bars — including the AQR-canonical 12-1 month equivalent), volatility-adjusting the result, and producing a composite momentum score in that fires Buy / Sell labels when the score crosses configurable thresholds.
Why cross-horizon ranking
A single momentum lookback is fragile. AQR's published research (Asness, Moskowitz, Pedersen, and others) shows that momentum is best estimated by agreement across horizons — when short-, medium-, and long-term momentum all point the same way, the signal is much more reliable than any single horizon alone. The script encodes that directly:
Five horizons — 1 / 5 / 20 / 60 / 120 bars by default (configurable independently).
At each horizon the return is percentile-ranked against its own trailing 252-bar (trading year) distribution.
The five percentile ranks are mapped from to (50% → 0; 100% → +1; 0% → −1).
The composite is the average of the five mapped ranks.
The output is bounded in and represents how unusual current momentum is relative to its own recent history, averaged across timeframes .
Volatility adjustment (optional but on by default)
The composite is divided by a volatility Z-score over a configurable window (default 60 bars), clamped at a Z cap (default 2.5) to avoid division-by-zero blow-ups. This dampens signals during high-volatility regimes — which is what AQR's "low-vol momentum" research finds is the genuinely tradeable component of the factor.
When vol-adjustment is off, the score is raw cross-horizon momentum. When it is on, the score is risk-adjusted momentum, which is the institutional read.
Signal engine
BUY — composite > buy threshold (default +0.70 → top ~15% across horizons).
SELL — composite < sell threshold (default −0.70).
Extreme High / Low alerts — composite > +0.90 / < −0.90. The script's strongest reads.
A configurable Min Bars Between Same-Side Signals (default 5) prevents clustering. A confirm-on-close toggle (default ON) ensures non-repaint signals.
Bar colouring — strict 2-hue discipline
The chart bars are coloured by the sign of the composite, with saturation proportional to magnitude. The "Bar Color Saturation Floor" input controls how aggressively the colour fades when momentum is weak — at 0 the bars are always full colour; at 1 they fade toward background when momentum is weak. The defaults (0.65) produce a clean institutional read where strong-momentum bars stand out and weak-momentum bars merge into the background.
A hidden composite-line plot (toggleable) opens a pane below the chart for users who want to see the score itself, or feed it to Data Window / webhook automation.
Visual system
Buy / Sell labels on threshold crosses (configurable size).
Bar colouring by signed momentum with saturation floor.
Hidden composite line (toggleable, pane).
Light regime background (off by default) — very subtle bgcolor sampled from bull/bear.
A locked Golden Blaze palette: gold bull / oxblood bear / off-white neutral on a dark-slate ground — the classic AQR institutional aesthetic. Strict 3-hue discipline + bg.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Composite score with signed value.
Per-horizon percentile ranks (h1 / h2 / h3 / h4 / h5).
Horizon agreement count (how many horizons agree with the composite sign).
Volatility Z value and adjustment factor in use.
Last signal direction with bars-ago.
Configuration: rank window, vol window, thresholds.
Alerts
Four alert conditions, each independently controllable:
BUY (composite crosses above buy threshold)
SELL (composite crosses below sell threshold)
Extreme Score (|composite| crosses extreme high or low)
Horizon Disagreement (off by default) — fires when horizons split (~half above 50%, half below). Useful as a "no edge" warning.
How to read it
Three reads, in order of conviction:
Extreme score with full horizon agreement — the highest-conviction read. All five horizons agree, the score is in the top 10% / bottom 10% of its own distribution, and vol-adjustment has not damped it. This is the institutional setup.
Buy / Sell with vol-adjustment active in a low-vol regime — the "low-vol momentum" setup AQR's research identifies as the strongest factor exposure. Pair with a directional execution tool.
Horizon disagreement alert — stand-aside signal. Some horizons say bull, some say bear; there is no momentum factor exposure available. Wait for agreement to return.
Suggested settings
Defaults (horizons 1/5/20/60/120, rank window 252, vol window 60, vol Z cap 2.5, ±0.70 thresholds, ±0.90 extreme) are tuned for daily charts on broad indices — the timeframes where momentum factor exposures are statistically most meaningful. For lower timeframes drop all horizons proportionally (1/5/15/30/60) and the rank window to 200. For weekly+ keep defaults; momentum on weekly is the canonical factor.
Originality / what's reused
The momentum factor is published academic finance — Jegadeesh & Titman 1993, Asness 1994, AQR's "Value and Momentum Everywhere" 2013. The 252-bar / one-year ranking window is the classical institutional convention. The implementation here — the five-horizon configurable engine, the ta.percentrank -based ranking pipeline, the linear remap, the volatility-Z adjustment with clamp, the saturation-floored bar-colouring with strict 2-hue discipline, the horizon-disagreement alert logic, and the AQR Golden Blaze palette — is JOAT-original. No third-party code reused. The script is a tribute to AQR's published methodology, not a direct replication of any proprietary AQR model.
Open source
Published open-source under the default Mozilla Public License 2.0. The horizon pipeline, the ranking engine, the vol-adjustment routine, the signal engine, and the dashboard are isolated modules. Forks welcome with credit.
Limitations
The 252-bar ranking window assumes a daily chart for the "trading year" interpretation; on lower timeframes the window represents a different real-world horizon. The momentum factor is well-documented historically but, like all factor exposures, it can underperform for extended periods — the dashboard's horizon-agreement count is the script's own early warning when the factor is breaking down. Vol-adjustment is on by default because it is statistically supported; turn it off only for research.
—
-made with passion by jackofalltrades
Indicator

Standing Wave Phase Coherence [JOAT]STANDING WAVE PHASE COHERENCE
A phase-coherence engine that asks a question almost no public indicator can answer: are the LTF and HTF oscillators in phase or out of phase ? Two oscillators that move together (peaks and troughs aligned) form a standing wave — a state of constructive interference where the trend is amplified. Two oscillators that move opposite (peaks aligned with troughs) form an anti-standing wave — a state of destructive interference where a reversal is forming. Standing Wave Phase Coherence measures phase, computes the coherence between the two timeframes, and surfaces a single number bounded in that tells you which regime you are in.
Phase, not just direction
A moving average tells you "where price is sitting". A momentum oscillator tells you "which way it is moving". Phase is the location inside the cycle — are we approaching a peak, leaving a peak, approaching a trough, leaving a trough? Two oscillators on different timeframes can be:
In phase — both rising or both falling at the same rate of cycle progression. Constructive interference. Trend amplifies.
Anti-phase — one rising, the other falling at the same cycle rate. Destructive interference. Reversal forms.
Decoherent — phases are uncorrelated. The wave structure is breaking down. No directional edge from coherence.
The script estimates phase from each timeframe's RSI series (both legs at the same RSI length for fair comparison), differences the phase smoothly, then takes the cosine of the phase difference — which is exactly the quantum-mechanical coherence metric on a scale.
Non-repainting HTF construction
The HTF leg uses request.security with lookahead_on AND a offset on the expression — the only non-repainting form per Pine v6 docs. This is exposed as a toggle but ON by default; the warning in the input tooltip explains the trade-off (turn off only for research, never live).
Three thresholds, three states
Coherence > +0.70 (configurable) — IN PHASE . Standing wave constructive. Trend amplifies. Bull-palette background tint.
Coherence < −0.70 — ANTI PHASE . Standing wave destructive. Reversal forms. Bear-palette background tint.
|Coherence| < 0.30 (decoherent band) — DECOHERENT . No standing wave. Mid-palette neutral.
In between — transitional.
Phase-status arrows print inside the pane at every regime entry, so the chart history shows when each standing wave formed and collapsed.
Visual system
Coherence line with configurable width.
Glow halo — a wider semi-transparent copy of the coherence line below the main line, creating a soft glow effect.
Background tint by phase status — bull when IN PHASE, bear when ANTI PHASE, none when decoherent. Transparency configurable.
Threshold lines at ±0.70 (toggleable).
Zero line .
Fill between threshold and ±1 — soft bull / bear fill highlights the active phase zone so it is immediately obvious which side is engaged.
Phase status arrows inside the pane on state transitions.
The pane uses the JOAT default palette (cyan-teal bull / magenta bear).
Amplification factor
A separate EMA-smoothed trend amplification factor is computed from the coherence and surfaced in the dashboard. When coherence is sustained high (in-phase), the amplification factor rises — quantifying how much the LTF/HTF agreement is reinforcing the move. Useful as a position-sizing input: bigger amplification = stronger conviction = larger size.
Dashboard
Monospaced table, positionable to any of nine corners. Surfaces:
Current coherence value and bar age.
Phase status (IN PHASE / ANTI PHASE / DECOHERENT) with glyph.
LTF and HTF RSI values.
Phase difference in radians and degrees.
Trend amplification factor (smoothed).
HTF timeframe in use with non-repaint flag.
Alerts
Multiple alert conditions:
Coherence crosses above +0.70 (IN PHASE entry)
Coherence crosses below −0.70 (ANTI PHASE entry)
Coherence returns to decoherent band
Sustained IN PHASE (held above threshold for N bars)
Sustained ANTI PHASE
How to read it
Three reads, in order of conviction:
Sustained IN PHASE — the highest-conviction trend read. LTF and HTF oscillators are decisively moving together. This is the regime in which momentum tools have their largest edge.
Entry into ANTI PHASE — the reversal warning. The two timeframes have rotated opposite each other; whichever direction LTF is moving, HTF is opposing. Often precedes meaningful reversals.
Decoherent zone — stand-aside signal. The wave structure has broken down. Coherence-based reads are not actionable; switch to a regime-classification tool (FDI, Hurst, Entropy).
The cleanest workflow: only take trend trades when IN PHASE; only take reversal trades when ANTI PHASE; do nothing when DECOHERENT.
Suggested settings
Defaults (RSI 14, HTF 4H, phase smoothing 3, coherence smoothing 8, ±0.70 thresholds, ±0.30 decoherent band) are tuned for 15m–1H charts. The HTF should always be greater than or equal to the chart timeframe; mismatching produces meaningless phase reads. For HTF (4H+ chart timeframes) raise HTF to Daily and consider the LTF/HTF coherence as a daily-vs-weekly read.
Originality
The implementation — the dual-timeframe RSI phase estimator, the smoothed phase-difference cosine coherence (quantum-style metric), the non-repainting HTF request with -offset + lookahead_on pattern, the three-threshold phase classifier with decoherent band, the trend amplification factor formulation, the glow-halo line render, and the pane-overlay phase-status arrows — is JOAT-original. No third-party code reused. The notion of phase coherence between timeframes as a market regime metric is the original quantitative contribution, borrowed conceptually from optical and quantum physics.
Limitations
Phase estimation from discrete bar data is inherently noisy on short windows; the smoothing inputs (phase EMA and coherence EMA) exist to address that — over-smoothing destroys phase information, so the defaults are intentionally light. The HTF request is non-repainting in the useStrictHtf = ON configuration; do not turn it off in live trading. The decoherent band is a heuristic to avoid acting on noise reads; widen it on instruments with naturally choppy oscillator structure.
—
-made with passion by jackofalltrades
Indicator
