Cantillon Research

Institutional Volume Terminal
Handbook

Complete reference for IVT [Elite] — Cantillon Regime v14.0. Every system layer, signal factor, Cantillon state, dashboard row and alert format documented.

AVWAP Anchor FixAnchor HoldExpectancy in RVolume ProfileCantillon RegimeCompressionS1–S4 Tiers14 FactorsSD2L ExtremeMulti-AVWAP
v14 changes signal behaviour. The AVWAP anchor was drifting, the volume profile was not being calculated on a default install, and the return anchor now latches. Section 2 covers all three. Read it before you deploy.

1. What IVT Is

IVT is a TradingView overlay that brings together five analytical layers, macro regime, volume profile, anchored VWAP, volatility compression and order flow, and resolves them into one tiered signal. Every signal on the chart has been scored against up to 14 independent directional factors before a tier is assigned.

The thesis underneath it: institutional order flow leaves repeatable signatures in volume, in price structure, and in where price sits relative to an anchored average. IVT makes those signatures visible and scores them the same way every time, so the read does not change with your mood.

It is not a trade alert service. It gives you the institutional read. What you do with it is yours.

Version history

VersionKey change
v13.0Multi-AVWAP convergence, coiled spring
v13.1Instrument-adaptive compression, AVWAP dev filter, SD2L extreme
v13.2Percentile fix for BB width, returns-based bond-equity correlation
v13.3AVWAP Institutional Return signal
v13.4Structural trend break
v14.0Expectancy in R replaces win rate as the published record. Correctness pass: the AVWAP anchor, the volume profile, the return anchor and the trend/chop measure all now do what they were documented to do.

2. What Changed in v14

Read this section before you deploy. Three changes move signals on charts you have already been watching. They are not cosmetic.

2.1 The AVWAP anchor was drifting

This is the important one.

The AVWAP is built from cumulative sums held in a rolling 1,500 element buffer. The index of the anchor bar was calculated once, when the swing changed, and then cached. But the buffer shifts by one element every bar once it is full. The cached index stayed still while the data underneath it moved, so the effective anchor crept forward one bar per bar.

The visible symptom is a line that converges on price instead of holding its level. On a stock that has fallen from 340 to 277 since March, the anchored average of everything paid since March cannot sit 1.2% from spot. It sits well above. The old build reported 1.2%. The corrected build reports 3.6%.

That single number drives three things: the Bias row, every VWAP Dev reading, and the deviation gate that decides whether a crossover earns its confluence bonus. Because the line was glued to price, VWAP Dev was structurally near zero, so the Dev Filter read OPEN almost permanently. A filter that never rejects anything is not a filter.

The anchor index is now recomputed every bar using arithmetic on the buffer rather than a cached search, which is both correct and faster.

What you will see: VWAP Dev readings that are larger and more honest. Bias flipping on instruments where the drift had accumulated. The Dev Filter reading FAIL on extended instruments, which is it doing its job for the first time.

2.2 The volume profile was not being calculated

POC and Value Area were computed inside the drawing branch. Lite Mode ships on by default and hides the profile, so on a default install the profile was never calculated at all, and the two factors that depend on it, POC proximity and Value Area position, were permanently dead.

Computation is now separate from drawing. The profile is always calculated; the display toggles only decide whether you see it.

What you will see: confluence scores rise by up to 3 points, factor counts by up to 2. Some bars that read S2 now read S3. The signals were always there. The score was under-reporting them.

The same decoupling was applied to sweeps and absorption, which were also gated behind their display toggles. Turning off a drawing no longer changes a tier.

2.3 The return anchor now latches

The Return signal is built on a rule I have written about publicly: anchor to the lowest low of the past 500 bars and let it roll, moving only when a genuinely lower low prints. No discretion, so the line is never adjusted to suit an open position.

The code did not do that. It recomputed the anchor from a rolling window every bar, which means the level five bars ago was anchored to a different bar than the level now. The test that the anchor is "still rising" was therefore measuring the window sliding, not the market moving.

The anchor now latches, exactly as described. The line only moves when a lower low prints, or when the anchor ages beyond the 1,500 bar buffer, in which case it reports na rather than freezing at a stale value and pretending to be live.

2.4 Everything else

Eight compile-level defects that would prevent the script loading at all, and a set of quieter ones: presets and Profile Mode were dead code, mitigation blocks were labelled backwards, the session filter resolved in exchange time rather than New York time, the deviation filter passed when price was far below the anchor, moderate divergences printed nothing, the Cantillon composite denominator ignored the VIX layer, and the performance tracker discarded still-open trades. Full list in the header of the script.

2.5 The record is now expectancy

Win rate has been replaced as the headline. Section 19 explains why at length. The short version: a win rate is largely a statement about where you put the target, so it can be manufactured by anybody, usually by accident. Expectancy in R cannot.

2.6 Anchor Hold replaces the trend/chop composite

Detailed in Section 10. The old composite could not reach its own default threshold, so switching the filter on silenced nearly every signal, and it fed Bollinger tightness, which is a range detector, into a trend score.

3. Quick Start

  1. Add the indicator to any chart. It runs on all timeframes and all instruments.
  2. Leave Script Mode on Production. This disables the repainting intrabar delta path and the heavier drawing layers. Use Research only when you are studying, and never for live alerts.
  3. Leave Cantillon Regime Filter on. It is the macro engine. Do not change the proxies unless you have a specific reason.
  4. Turn on Simple Mode if you want a clean chart: S2 and above, targets, the AVWAP line, the compression zone, and a four row dashboard.
  5. Set alerts for the tiers you actually trade. Section 18.
  6. Let the record build. Below 20 resolved signals the dashboard will tell you the sample size instead of a number, deliberately.

Reading a signal label

S4 [12] COILED   maximum conviction long, inside a coiled spring
S3 [9]           high conviction long
S2 [6]           standard long
S1               base cross only

The bracketed number is the confluence score, a weighted sum of active context. The tier is set by the count of independent directional factors, not by the score. They are different measurements and they disagree often. When they disagree, the tier is the one that governs entry.

4. Modes and Presets

Lite Mode

On by default. Disables polylines, the volume profile histogram and target boxes. The AVWAP line stays. As of v14 it no longer affects any calculation, only what is drawn.

Simple Mode

One switch for a clean chart. Hides every diagnostic, shows S2 and above, targets, the AVWAP line and the compression zone, with a four row dashboard: Conf Score, Vol Comp, AVWAP Dev, Dev Filter.

Performance Mode

Caps the profile at 30 rows and 100 bars of lookback, disables polylines, target boxes, magnet zones, mitigation, fair value gaps and intrabar delta. For slow machines and crowded layouts.

Script Mode: Research or Production

Production disables the intrabar CVD path, magnet zones, mitigation blocks, fair value gaps and delta-weighted profile drawing. Everything disabled here is either a repainting input or a heavy drawing layer. Run live alerts in Production. In Research mode the script prints a warning label on the chart when intrabar CVD is active, so you cannot forget.

Profile: Map

A context view. Signals and execution clutter off, structure on: profile, AVWAP, convergence, compression, sweeps, absorption, dashboard.

Quick Presets

Presets override effective settings for the session. Your input sliders are untouched, so presets are non-destructive.

PresetWhat it sets
4H Crypto Swing200 bar lookback, 60 rows, strong signals only, full curve on, Lite off
1H Forex Scalp100 bar lookback, 40 rows, strong signals only, session filter on
Daily Macro Lite500 bar lookback, structure only, signals off, Lite on

Resolution order: Performance, then Script Mode, then Simple, then Profile, then Preset, then Lite, then timeframe auto-tuning. Simple Mode re-asserts its target settings last so they are not overridden by Lite.

v14 note. Presets and Profile Mode did nothing in previous builds. They were applied only on the first bar of the chart, while the settings they write to are rebuilt on every bar, so the values were discarded immediately. They work now. If you have been running a preset and seeing default behaviour, this is why.

5. The Cantillon Regime Filter

Your biggest decisions should be made at the regime level, not the individual chart level. This is the engine that makes that possible.

Proxies

Three layers, in the order money actually moves through an economy.

LayerDefault proxyWhat it tells you
LiquidityNASDAQ:TLTBonds. Where liquidity is created first
EquitiesAMEX:SPYWhere it arrives second
RiskBINANCE:BTCUSDTWhere it arrives last

Each layer is scored on three tests: price against its fast average, fast against slow, and rate of change. Each returns +1 or -1, so a layer runs from -3 to +3 and the three-layer composite from -9 to +9. The VIX layer adds up to another 1.5, which is why the composite denominator reads 10.5 with VIX enabled and 9 without.

Regime states

StateLiquidityEquitiesRiskBonus
FULL RISK-ONYesYesYes+3
ACCUMULATIONYesNoNo+2
EARLY CYCLEYesYesNo+1
INFLATIONARY PUMPNoYesYes0
STRESS RECOVERYYesNoNo0
LATE CYCLEYesNoYes-1
SPECULATIVEany other-1
DISTRIBUTIONNoYesNo-2
FULL RISK-OFFNoNoNo-3

The bonus is added to the confluence score directly, and is clamped to the range -5 to +5 after the composite and VIX adjustments.

The falling knife guard

ACCUMULATION and STRESS RECOVERY have identical layer signatures. Bonds up, equities down, risk down. One is the start of a new cycle. The other is a market in a controlled fall where bonds are rallying because everything is being sold.

They are told apart by the rolling correlation of bond and equity returns, not prices. Above +0.35, bonds and equities are moving together, which is the signature of a liquidity event rather than a rotation. In that case the state is STRESS RECOVERY and the +2 accumulation bonus is neutralised to zero.

This guard exists because buying the first ACCUMULATION print in a genuine liquidity crisis is the most expensive mistake this framework can make.

Leader and Transition

Leader names the strongest layer. In a healthy cycle the order is Liquidity leads, Equities follow, Risk last. When Risk is leading and Liquidity is negative, you are late.

Transition is the change in composite since the last confirmed bar. It updates only on bar close, so the reading does not flicker intraday.

6. Volume Profile

What is drawn

  • POC, the price with the most traded volume in the current swing. Coloured by the delta imbalance measured at that row: green if buyers dominated, red if sellers did, neutral otherwise.
  • Value Area, the band containing 70% of the volume, expanded outward from POC.
  • Profile rows, horizontal volume bars. High Volume Nodes are highlighted above the HVN multiple.
  • The 0.618 to 0.650 golden pocket of the current swing.

Delta-weighted profile

Each bar's volume is split into buy and sell using where it closed within its range, then distributed across the price rows it spans. Rows render as a green buy portion and a red sell portion. Disabled in Production mode by default because it doubles the box count.

VP Delta on the dashboard is the imbalance measured at the POC row only. Above +15% is buyer dominance, below -15% is seller dominance. It contributes a factor.

When it recalculates

On a confirmed swing change, when price has moved more than two ATR without a recalculation for 50 bars, and once per closed bar on the last bar. In v14 it no longer rebuilds on every realtime tick, which is where most of the old CPU cost sat. The VP Recalcs row on the dashboard shows the lifetime count, and it should be dramatically lower than in previous builds.

7. The AVWAP System

The AVWAP is the central reference of the whole framework. Everything else is context around it.

How the anchor is chosen

IVT finds the highest high and lowest low over the lookback window. The anchor is the earlier of the two, because that is where the current structure began. The swing is then held stable by a debounce system: the swing must be mature, the anchor must move by more than a threshold, and the change must persist for a required number of bars before it is accepted.

TimeframeMinimum swing ageDebounceMove threshold
5 min and below20 bars5 bars10 bars
1 hour and below10 bars3 bars5 bars
4 hour and below5 bars2 bars3 bars
Daily and above3 bars2 bars3 bars

The Swing Age row on the dashboard tells you how old the current anchor is. It cannot legitimately exceed your Lookback Bars setting at the moment of assignment, so if it does, the debounce is holding an anchor that should have moved.

The buffer, and why it matters

The AVWAP is not recalculated from scratch each bar. Cumulative sums of price times volume, volume, squared price and delta are held in parallel arrays capped at 1,500 elements, and the AVWAP for any anchor is the difference between the running total and the total at the anchor. That is what makes multiple simultaneous anchors cheap.

The cost of that design is that the anchor must be located by index, and the buffer shifts. In v14 the index is recomputed every bar by arithmetic rather than cached. This is the fix described in Section 2.1 and it is the single largest behavioural change in this release.

What is plotted

  • AVWAP line, coloured by the current Cantillon regime state.
  • Full curve and bands when polylines are enabled, drawn from the anchor to the current bar.
  • SD1 bands, the first target for both directions.
  • SD2 bands, runner targets. SD2 Lower also drives the SD2L Extreme signal.

VWAP Deviation

(close − AVWAP) / AVWAP × 100. Positive is above the anchored average, negative is below.

The Dev Filter treats this as a band around zero. If the absolute deviation at a crossover is inside the band, the setup earns one additional factor. The band adapts to the instrument: tighter on low-volatility names, wider on high-volatility ones.

v14 note. The old test was one-sided, so it returned true at a deviation of -20%, which is precisely the extended condition the filter exists to reject. It is now a band around zero, and it uses the adapted threshold consistently rather than the raw input in one place and the adapted value in another.

8. Multi-AVWAP Convergence

Three anchored averages, at three different structural points.

LineAnchorPurpose
AVWAP 1Current swingThe active leg
AVWAP 2Long-lookback pivot, refreshed on a scheduleMid-term cost basis
AVWAP 3Session open, weekly open, or volume spikeShort-term reference

When the range between all three is inside a fraction of ATR, they are converged. Convergence means three separate populations of buyers share roughly the same cost basis, which makes the level far harder to move through and far more informative when it does break.

Convergence Strength is scaled from the spread relative to two ATR, so 100% means all three sit on the same price.

v14 note. AVWAP 2 and AVWAP 3 used to freeze at their last valid value when their anchor aged out of the buffer, so convergence could be measured against a level that no longer existed. They now report na and convergence correctly reads as inactive.

9. Volatility Compression and the Coiled Spring

How compression is measured

Bollinger Band width as a percentage of price, then ranked as a percentile against its own history. Low percentile means the current range is tight relative to how this instrument normally behaves. The percentile approach is what makes the measure comparable across instruments at all.

Compressed is below the threshold. Qualified, which the dashboard calls COILED, additionally requires the compression to have lasted at least the minimum duration. Only qualified compression contributes full weight, because a single tight bar is noise.

Adaptive threshold

The threshold adapts to the instrument's noise profile, measured from average ATR as a percentage of price.

TierATR profileThreshold
Equity DailyBelow 1.5%Base plus 10 points
Mid Range1.5% to 2.5%Base plus 5 points
High VolatilityAbove 2.5%Base, strict

A crypto pair is never quiet by an equity's standards. Without this, one threshold either never fires on equities or fires constantly on crypto.

Breakout direction bias

Inside a qualified compression, four measurements are blended: price momentum, delta slope, position relative to the AVWAP, and alignment across all three AVWAPs. Above the confidence threshold the compression is marked Bullish or Bearish, and the bias box is drawn around the compression range.

v14 note. This block used to run before the AVWAP engine, so it read the previous bar's AVWAP, delta and convergence values, and nothing at all on early bars. It now runs after.

The Coiled Spring

Convergence and qualified compression at the same time. Three cost bases stacked at one price, and volatility wound tight around them. Directional bias tells you which way the framework expects it to release.

Compression as bonus, not gate

Compression never blocks a signal. Qualified compression adds full weight, unqualified adds half, and a long compression above 30 bars adds two more. The reasoning: compression is a statement about the setup, not about the direction, and a directional signal should not be vetoed by a non-directional condition.

10. Anchor Hold

New in v14, and specified in writing before it was tested, so the result could not be tuned to a number I liked.

The mechanism

IVT earns by crossing the institutional anchor and holding one side long enough for the move to develop. The runner is closed by a close back through that anchor. So the profitability of this framework on any given instrument is bounded by exactly one quantity: how long price stays on one side of the anchor.

Long runs on one side and the runner survives, so the trend leg is captured. Frequent recrossing and every runner dies within a few bars, while each recross also fires a fresh signal. The cost is paid repeatedly and the payoff never arrives.

The measure

crossings  = times CLOSE crosses the anchor over the last L bars
anchorHold = L / (crossings + 1)

Default L is 250 bars, roughly six weeks on a 4 hour chart. The output is in bars, which is the point: it is directly comparable to the average trade duration the record already reports on the Expectancy row.

StateConditionMeaning
TRENDING40 bars or more per sideRunners have room
MIXED20 to 40 barsMarginal
CHOPPYUnder 20 barsRunners cannot survive

The threshold is not arbitrary. A trade needs room to reach T2 and let the runner work. If the average anchor run is shorter than a typical trade, the exit rule is cutting trades before the thesis resolves, and no amount of entry filtering fixes that.

How to use it

Read Anchor Hold against average trade duration on the same dashboard. If hold is 15 bars and the average trade takes 70, that instrument is structurally hostile to this framework right now, whatever the confluence score says.

The filter is off by default. When enabled it zeroes the tier rather than merely hiding the label, so alerts and the record agree with the chart.

What is deliberately not implemented

The specification also proposed adapting exit fractions to the state: banking more at T1 and T2 on choppy instruments, holding a larger runner on trending ones. That is not in v14. Both the measure and its thresholds are being applied to price history that was already used to select every other parameter in the script, so a positive in-sample result is a hypothesis worth forward-testing, not evidence. Adaptive exits ship when they have run forward, or they do not ship.

Why the old measure was replaced. It blended ADX, Bollinger tightness and inverted choppiness with weights of 0.5, 0.3 and 0.2, then rescaled by subtracting 0.5. The raw score topped out near 0.8, so the rescaled score rarely cleared its own default threshold of 50, and enabling the filter silenced almost every signal. Separately, Bollinger tightness peaks during consolidation. It is a range detector, and it was being added to a trend score.

11. Signal Architecture: S1 to S4

Base trigger

A signal requires three things at once: price crosses the AVWAP, momentum agrees over the momentum lookback, and the session filter permits it.

Long:  close crosses above AVWAP  AND  close > close[momLen]  AND  in session
Short: close crosses below AVWAP  AND  close < close[momLen]  AND  in session

Everything above S1 is earned by factor count.

Tier assignment

TierRequirement
S1Base trigger only
S22 or more independent factors
S34 or more
S46 or more, and the Cantillon bonus agreeing directionally

S4 is the only tier that requires macro agreement. A six factor setup fighting the regime is an S3.

The SD2L override

An SD2L Extreme with four or more supporting factors is promoted to S3 even without a crossover. Capitulation and snapback is a legitimate entry that does not always produce a clean AVWAP cross on the same bar, and waiting for one costs the entry.

VIX downgrade

With the VIX layer enabled, a long at S3 or above is downgraded one tier when the VIX score is at or below -1.5. High and rising fear is where long setups fail regardless of how clean they look. There is no symmetric downgrade for shorts, deliberately.

Cooldown

TimeframeCooldown
5 min and below10 bars
1 hour and below5 bars
4 hour and below3 bars
Daily and above2 bars

A signal inside the cooldown is suppressed unless it is a higher tier than the one that fired. An S2 followed by an S4 still prints. An S2 followed by an S2 does not.

Strong Signals Only

Restricts display to S3 and above. Simple Mode restricts to S2 and above.

12. The 14 Independent Factors

The tier is set by counting these. Each contributes at most what is listed, and each is independent of the others, which is the entire point. Three correlated readings of the same thing are one factor, not three.

The dashboard can show which fired, as a debug string, via Show Last Signal Factor Breakdown.

#TagFactorBull conditionWeight
1VolVolume structureVolume above 1.5x average with positive delta1
2AbsAbsorptionHigh volume, small range, closing up1
3SweepLiquidity sweepRecent sweep of a prior low1
4DivCVD divergenceBullish divergence graded moderate or strong1
5POCPrice at POCWithin half an ATR of POC with non-negative delta1
6VAValue Area positionInside the Value Area, above its midpoint1
7ConvAVWAP convergenceAll three converged with positive delta slope1
8Coil2Compression biasQualified compression with bullish bias2
9CantRegime alignmentCantillon bonus at or above +21
10VPdPOC delta imbalanceAbove +15%1
11DevDeviation filterCrossover inside the deviation band1
12SD2LSD2L extremeCapitulation and snapback active2
13BrkBiasCompression breakoutQualified compression released in the biased direction1
14AVWAPRtnAVWAP returnFull return sequence confirmed1

Bearish mirrors are identical with signs reversed, except factor 12, which is a long-only mean-reversion signal, and factor 14, which prints as AVWAPDst for distribution.

Weighted score against factor count

They measure different things and you need both.

The confluence score is a weighted sum including the Cantillon bonus, which can be negative. It answers: how much supporting context is present, and is the macro helping or hurting.

The factor count is unweighted and directional. It answers: how many independent things agree on direction.

A setup can carry a high score and a low count, meaning plenty of context but little agreement. It can carry a low score and a high count, meaning several independent confirmations fighting a hostile regime. The tier follows the count. The score is what you read to understand the tier.

13. Special Signals

SD2L Extreme

Fires when price has closed below the SD2 lower band within the confirmation window and then closes back above it. Institutional capitulation followed by a snapback: forced selling into the band, then the band reclaimed.

The state stays active, contributing its factor, until price closes back above SD1 Lower. That is the recovery threshold, not the entry.

AVWAP Return

The full institutional return sequence, and all four legs must be true:

  1. Structure. Seven of the last ten closes above the anchored VWAP. Not one poke above, a sustained hold.
  2. Pullback. Price comes back down and touches or briefly breaches the line.
  3. Reclaim. Price closes back above it, on at least average volume.
  4. Slope. The anchor itself is still rising.

The reclaim is the leg people miss, because by the time it happens the candle looks unremarkable. What actually happened is that price returned to where a large buyer's cost basis sits and that buyer added rather than sold. Volume is how you separate an add from a dead-cat bounce back over a line. Below average volume is the same shape with no participation and no information.

The signal is suppressed in a STRESS RECOVERY regime, because a reclaim during a liquidity event is not what it looks like.

AVWAP Distribution is the mirror, anchored to the swing high: price living below the level where the last buyers were filled, rallying back into it, and being rejected there on volume.

v14 note. Both anchors now latch, per Section 2.3. The slope test is meaningful for the first time.

14. Order Flow and Bar Colouring

CVD

Cumulative volume delta, anchored to the same swing as the AVWAP. In Production mode delta is estimated per bar from the close relative to the open. In Research mode it is built from intrabar data at the chosen resolution, which is more accurate and repaints until the bar closes.

Bar colouring

ColourMeaning
GoldBullish absorption: closed down, positive delta
MagentaBearish absorption: closed up, negative delta
TealNormal positive delta
RedNormal negative delta

The first two are the informative ones. They mark bars where price and order flow disagreed, which is where absorption happens.

Divergence

Price slope and CVD slope pointing opposite ways over the divergence lookback, with a minimum price move to exclude noise. Graded by the size of the delta slope against its own standard deviation: strong above 2 sigma, moderate above 1, weak below.

Only moderate and strong contribute a factor.

v14 note. With strength grading enabled, moderate divergences used to print nothing at all, so the chart showed only strong ones while the scoring engine counted both. They print now.

15. Institutional Mechanics

Sweeps. Price trades through a prior extreme and closes back inside. Stops taken, no follow-through. Always computed, drawn only when enabled.

Fair value gaps. A three bar imbalance larger than the minimum ATR size. Cleared automatically when price trades back through.

Mitigation blocks. The last opposing candle before a decisive move. A down candle followed by a strong up candle is a bullish order block. A bullish block is invalidated by a close below its base, a bearish one by a close above its top.

v14 note. These were inverted. Bullish blocks were being filed and coloured as bearish and vice versa, which means every read taken from them was backwards. Separately, the volume profile's cleanup routine was deleting all fair value gaps and order blocks on every profile recalculation, so zones vanished from the chart for no visible reason.

16. The Dashboard

Three layouts: Simple, four rows. Minimal, six. Full, up to 32.

Full dashboard rows

RowReads
BiasPrice above or below AVWAP
VWAP DevDistance from the anchored average
Conf ScoreWeighted score, with factor count in brackets
Signal TierCurrent tier
Swing AgeBars since the anchor was set
Swing TypeBull or bear leg
StabilityDebounce counter
VP RecalcsLifetime profile rebuilds
Conv StatusConvergence state and strength
VP DeltaBuyer or seller dominance at POC
Vol CompCompression state, adaptive threshold, strength
SETUPCoiled spring badge when active
Instr TierDetected volatility tier
Suggested DevRecommended deviation band against the current setting
Dev FilterPASS, OPEN or FAIL with the current deviation
SD2L SuggestRecommended confirmation window
SD2L StatusFiring, active, or bars since
Cantillon FlowRegime state
Lqd / Eq / RskThe three layers
Macro BonusContribution to the score
CompositeScore against its true maximum
VIX LayerFear contribution
LeaderWhich layer leads
TransitionImproving, deteriorating or stable
Bd-Eq CorrBond-equity return correlation and stress flag
FitWhether the framework earns on this instrument
ExpectancyR per trade, resolved count, average duration
Avg W/L and PFAverage winner and loser in R, profit factor, open count
Anchor HoldBars per side, state, crossings
Last Buy / Last SellFactor breakdown, optional
DroppedUnresolved signals aged out of the buffer, if any

The Fit row

This is the verdict, and it grades on expectancy rather than win rate, because a win rate can be high on an instrument that loses money.

Two gates. Expectancy says whether there is an edge at all. Cushion says how fragile it is: how many points of win rate can be lost before the instrument turns unprofitable, calculated as the actual win rate minus the break-even win rate implied by the average win and loss.

  • GREEN: expectancy above the green threshold and cushion above its threshold. Full size.
  • AMBER: neither green nor red. Half size.
  • RED: expectancy below the red threshold or cushion below its threshold. No new entries.

A thin edge with a wide cushion survives a bad month. A similar edge with a one point cushion does not. The single-gate version could not tell them apart.

The row also compares the trailing window against lifetime and reports whether the edge is improving, holding, or fading.

17. Exit Targets

TargetLongShort
T1SD1 UpperSD1 Lower
T2POC or Value Area edgeValue Area edge or POC
T3SD2 UpperSD2 Lower
StopSwing low minus ATR multipleSwing high plus ATR multiple

T2 is structural rather than statistical, which is why it is not simply SD2. It is where the volume actually sits.

T2 must be beyond T1. The POC or Value Area edge is a structural level and is not necessarily in your favour. When it sits at or inside T1 it is not a target at all, and the record falls back to SD2. Without that guard, a long whose POC sat below the entry was recorded as resolved on its first bar, below entry.

18. Alerts

AlertFires on
BuyS2 and above long
SellS2 and above short
Coiled SpringConvergence and qualified compression begin together
Compression BreakoutQualified compression releases
Signal 4Either direction at maximum conviction
SD2L ExtremeCapitulation and snapback
AVWAP Return / DistributionFull sequence confirmed

Messages carry ticker, price, confluence score, regime state and instrument tier. The Signal 4 message additionally carries the factor count, the macro bonus and the composite.

v14 note. Alerts read the tier, and the regime filter previously modified only the plotted signal. That meant alerts fired for signals the chart never showed. The filter now zeroes the tier, so the chart, the alerts and the record are the same thing.

Set TradingView alerts to Once Per Bar Close. Everything in the script is built for that.

19. The Signal Record

Why expectancy, not win rate

A win rate is mostly a statement about where the target sits. Put the target near the entry and the stop far away, and the number rises, on any signal, in any market. Move them and it falls. The signal did not change. Only the geometry did.

Nine wins at +0.2R against one loss at -1R is a 90% win rate and a net loss of 0.8R. Four wins at +3R against six losses at -1R is a 40% win rate and a gain of 6R. The second is the better system by a distance, and no win rate would have told you that.

R is the risk taken on the trade. A stop is always exactly -1.00R, on every instrument and every timeframe, which makes a Bitcoin trade and a McDonald's trade directly comparable. Expectancy is the average R across every resolved signal. Above zero there is an edge before costs. Below zero there is not, whatever the percentage says.

Win rate is still on the dashboard. It sits next to the sample size and the average win and loss, which is the context needed to read it. On its own it tells you how a signal has been behaving on that instrument recently, which is useful. It does not tell you whether the signal makes money.

What gets recorded

By default, only setups that are actually tradeable: an S2 with sufficient confluence and the deviation gate open and the regime not against it, an S3 or better with the gate open, or an AVWAP return with a positive score. Recording every tier-2 crossover measures the raw signal rather than what you would enter, and buries a good selective entry among dozens that would never be taken. Record only tradeable setups can be switched off if you want the raw measurement.

How a trade resolves

Scaled exits by default. A third at T1, a third at T2, the runner held until a close breaks the anchor. Recorded R is the weighted blend of the three.

The stop moves to breakeven once T1 fills. R is always measured against the original risk, so a breakeven stop does not change the denominator. It changes the outcome: a trade that fills T1 and then reverses books the banked third instead of a full stop on the remainder.

The runner exit only arms after T1 fills. Entries qualify with the deviation gate open, which means price starts within a few percent of the anchor, so arming the anchor exit from bar one would close the trade on the first pullback and the trend leg would never be captured. Until a third is banked, the stop is what protects the position.

Stop is tested before targets, so a bar touching both books the loss. Conservative on purpose.

Sample floor

Below the minimum sample the dashboard reports how many signals it has rather than a percentage. A percentage computed on three trades is not evidence and should not be dressed up as one.

Lifetime counters

The record is held in counters independent of the display buffer, so it is not limited by the tracked-signal cap.

v14 note. The buffer trim used to discard still-open trades, which vanished from the record silently. It now only ever drops a resolved entry, and anything forcibly dropped is counted and shown on a Dropped row.

20. Session Filter

Off by default. When enabled, signals fire only inside the London or New York session.

v14 note. These were labelled EST but resolved in the exchange timezone, so on a European or Asian instrument the windows were hours away from where the labels said. They now resolve explicitly in New York time on every chart.

21. IVT Magnet Zones

A composite of POC, the golden pocket and the most recent sweep, drawn as a zone half an ATR either side. Where several independent structural levels agree, price tends to be drawn back. Off in Production mode.

22. Settings Reference

Group 1: Cantillon Regime

Proxies for all three layers, VIX ticker and thresholds, ROC length, fast and slow averages, correlation length. The correlation length governs the stress guard, and 60 bars is roughly three months on a daily chart.

Group 2: Volume Profile

Lookback and row resolution set the structural window and its granularity. Width percent, HVN multiple, Value Area percent and border settings are cosmetic. Lookback Bars also sets the swing window, so it governs the AVWAP anchor as well as the profile. It is the single most consequential setting in the script.

Group 3: Trend and AVWAP

Source, standard deviation multiples, band transparency, momentum lookback, strong-signals-only.

Group 4: Multi-AVWAP

Anchor 2 lookback and refresh frequency, Anchor 3 type, convergence threshold in ATR, zone display.

Group 5: Compression

Base threshold, adaptive mode and its ATR boundaries, lookback, minimum duration, bias period and confidence threshold.

Group 5b: Deviation Filter

Maximum deviation for the bonus. Overridden by the adaptive tier when adaptive compression is on.

Group 5c: SD2L

Enable, label, and the capitulation window. The window is scanned for at least one close below SD2 Lower.

Group 5d: AVWAP Return

Anchor lookback, minimum bars above of the last ten, label and reference line display.

Groups 6 to 10

Macro levels, bar colouring, institutional mechanics, delta and absorption, confluence weights.

Group 11: Dashboard

Layout, position, tooltips, the performance tracker, sample floor, Fit thresholds and size multipliers, recording selectivity, exit fractions and the breakeven rule.

Group 16: Anchor Hold

Lookback window and the two thresholds. Pre-registered at 250 bars, 40 and 20.

23. Repaint Policy

Signals confirm on bar close. All tier labels, the SD2L label and the return labels are drawn when the bar has closed. They never appear on a forming bar.

Intrabar CVD repaints on the forming bar. This is why Production mode disables it and why Research mode prints a warning on the chart. Divergence and absorption labels are gated on bar close to prevent alert misfires.

Anchored VWAPs are stable. Once a bar closes, its contribution is fixed.

Higher timeframe data uses lookahead off. The Cantillon proxies and the daily and weekly levels do not look forward. The current daily bar still updates intraday, which is expected, not repainting.

Volume profile recalculates on swing changes. Current-swing values shift until the swing is confirmed. Levels from completed swings are stable.

Set alerts to Once Per Bar Close.

24. How To Read Any Record, Including This One

Every historical figure this script reports is calculated over the same price history that was used to choose its settings. That will always flatter it. This is true of every indicator you will ever be shown, and most of them will not tell you.

The parameter set is frozen. Results from the freeze date forward are the ones worth weighing, and they are the ones I will report on.

Three habits that will serve you regardless of what the dashboard says:

  1. Read Fit before you read the signal. A GREEN S2 is worth more than a RED S4. The tier tells you about the setup. Fit tells you whether the framework earns on that instrument at all.
  2. Read Anchor Hold against average trade duration. If price cannot hold one side of the anchor for as long as a typical trade takes, the exit rule will cut you before the thesis resolves.
  3. Distrust a percentage without a sample size next to it. Including mine.

Educational content only. Not financial advice. Past performance does not guarantee future results.

Cantillon Research — IVT v14.0 | cantillonresearch.com