For the Geeks
This page is for the reader who wants to understand, at mental-model altitude, what the estimator is doing under the pane. Not "how do I use this tool" — the other pages cover that. This one answers "what is this thin...
Written By Axiom Admin
Last updated 22 days ago
For the Geeks
This page is for the reader who wants to understand, at mental-model altitude, what the estimator is doing under the pane. Not "how do I use this tool" — the other pages cover that. This one answers "what is this thing actually reading, and how should I think about what it tells me?"
It is written for a reader who has been bitten by black-box tools that looked sharp and turned out to be hollow, and who would rather walk away from this one after an honest read than be flattered into trusting it. If you finish this page and decide the estimator's boundaries are not where you want your process to lean, that is a good outcome. Good tools survive their readers' skepticism; the ones that cannot are not worth the trust they are asking for.
One caveat before we start, because it matters for how this page is written. The goal here is a mental model sufficient to defend the pane's readings in a conversation with yourself — enough to know what the estimator is looking at, enough to know what it refuses to do, enough to know when it is working on a favorable shape of evidence and when it is working on an ambiguous one. It is deliberately not enough to reproduce the estimator in isolation, and it is not enough to tune it with the precision of the engineer who wrote it. Specific thresholds, weight coefficients, and carry magnitudes are not published on this page. If you need that level of detail for your process, the honest answer is that this indicator is not the tool that will give you those; it is the tool that will be candid about where it stops and will give you a mental model rich enough to decide whether to keep going.
What this estimator is trying to answer
CVD's core question, phrased plainly: over the bars inside this window, was the volume more likely the product of buying pressure or selling pressure, and how decisively?
That sounds simple. Its hard edge is this: a tool built from OHLCV data alone cannot measure net aggressor volume. That measurement requires tick-level data with the aggressor side marked, which neither Pine nor this pane has. What this pane can do is build a defensible estimator — a model of the bar that looks at the shape of its OHLCV and assigns it an intent score consistent with the bar's structure.
Think of the estimator as a detective. It cannot watch the tape happen. It can inspect the bar after the fact and ask, of the five numbers it has, what story the numbers most plausibly tell. A bar with a strong body closing near its high and a thin upper wick has a different story than a bar with a narrow body, a long upper wick, and a close near the open. The estimator's job is to assign those stories an intent score that carries information — more than a naive close-minus-open, less than a true aggressor-side feed.
The three things the estimator reads from each bar
Each bar at the slot's lower-timeframe precision is scored on three components.
Body direction
Did the bar close above, below, or essentially at its open? Body direction is the coarsest of the three components. A strong body tells a simple story about the direction of the bar's close; a weak body says the bar did not resolve in either direction.
Close location
Where did the close land inside the bar's high-low range? A close pinned at the high, on the same volume as a close near the middle, means something different. A close near the top of the range is more consistent with buying pressure that held through the bar. A close near the middle, even with a positive body, is more ambiguous.
Wick asymmetry
Are the bar's wicks symmetric (roughly equal upper and lower wicks), or is one wick dominant? A bar with a long upper wick and a short lower wick suggests that price was rejected at higher levels — buyers lifted, sellers responded. The opposite wick pattern suggests the mirror. How much weight the estimator gives to wick evidence is controlled by the Wick Weight: setting.
The three components combine into a per-bar intent score. The combination is not "body plus close location plus wick"; the components are weighted and combined such that the result is more informative on clear bars and more conservative on ambiguous ones. The specific weights are what is protected under the estimator boundary; the existence of the three inputs and the rough character of how they combine is what this page commits to teaching.
Strong, weak, and indecisive — the classifier
Once the per-bar intent score is computed, the estimator classifies each bar into one of three broad postures. You can think of the classifier as the detective's summary, one sentence per bar.
Strong
The bar's OHLCV shape tells a decisive story. Body, close location, and wicks agree. The estimator commits to a directional signed-volume attribution near the full magnitude of the bar's volume.
Weak
The bar tells a directional story, but a softer one. There is agreement across the three components, but the evidence is less overwhelming. The estimator commits a smaller signed-volume contribution, attenuated from the bar's full volume.
Indecisive
The bar does not tell a clear story. Body is small relative to range, close location is near the middle, wicks are symmetric or mixed. The estimator does not have confident directional evidence on this bar alone.
The third bucket is where the estimator earns its keep over a naive close-minus-open tool. A naive tool reads an indecisive bar's direction off its tiny body and produces a confident reading from a bar that was objectively ambiguous. This estimator refuses to do that; on indecisive bars it does something else, described next.
Participation continuity through indecision
The classifier does not zero out indecisive bars. Doing that would be tempting — "if the bar is unclear, contribute nothing" — but it would mean that a slow, ambiguous stretch in the tape produces a flat, uninformative line, even if the preceding clear bars told a strong story and nothing has come along to reverse it.
Instead, the estimator carries the prior posture forward through indecisive bars, at a partial magnitude. The posture the line was taking before the indecisive bar continues to exert a pull, but attenuated. A decisive stretch followed by three slow bars does not flatten to zero; it continues at reduced intensity until the classifier gets a confident read again.
This is the "participation continuity" posture in the pack's vocabulary. It is what makes the line behave plausibly through slow patches of tape rather than oscillating between confident and zero. It is also the reason a slot's line can appear to drift gently in one direction across a quiet session — the line is not inventing information out of thin air; it is respecting the carry from the last decisive evidence.
The exact carry magnitude is what is protected. What matters to a reader is the shape of the behavior: indecision does not reset, it attenuates.
What Pressure Sensitivity: changes, in this vocabulary
The Pressure Sensitivity: knob (per slot, in the main Inputs group, range 0.25 to 4.0) changes how quickly the classifier commits to a decisive read versus extending the carry through indecision. You can read it as a "conviction threshold" knob — not the literal threshold, but the character of one.
Low Pressure Sensitivity (near
0.25) — the classifier is cautious. Bars need clearer evidence to be labeled strong, and the prior posture carries with less force when the next bar is still ambiguous. The slot's line usually spends more time muted or undecided.High Pressure Sensitivity (near
4.0) — the classifier is aggressive. Bars that look only mildly directional get read as stronger evidence, and still-ambiguous bars carry the prior posture more strongly. The slot's line becomes more decisive and can persist hard in the prior direction until clear opposite evidence arrives.Default (
1.50) — a middle posture. Enough discrimination to reject low-quality evidence, enough responsiveness to read a developing bias.
The knob does not change the inputs the classifier reads (body, close location, wicks are always the three inputs). It changes how generous the classifier is about calling their evidence "strong enough."
The honest interval for most instruments and timeframes is closer to the middle than to either end. Push one slot to the extremes — not all of them at once — and watch the character change, and you will feel the knob's grain. The Quick Start and Settings pages invite this experiment; it is cheap and it teaches.
What Wick Weight: changes
The Wick Weight: knob (per slot, range 0.0 to 0.50) controls how much the wick asymmetry component contributes to the per-bar intent score.
At
0.0, wicks are ignored. The score is built from body direction and close location only. The estimator reads the bar as if it were candle-body-and-close, with no information from rejection behavior.At
0.50, wick asymmetry has a much larger influence on the score. Rejection bars — long upper wick with flat body, long lower wick with flat body — can materially shift the classification.Default (
0.20) — a moderate influence. Clear wick evidence nudges the classifier but does not dominate.
The honest use of this knob: raise it on instruments where rejection wicks routinely tell a real story (highly reactive symbols, news-driven bars, certain crypto pairs). Leave it low on instruments where wicks are short and close-plus-body already contains most of the directional information.
Normalization — why the pane is bounded
The slot's signed-volume contributions are accumulated across its window. The accumulation is a single number per bar — the running total of signed volume from the start of the window to the current bar. Raw, that number can have any magnitude. Two slots running on different instruments would produce totals on different scales, and comparing them directly would be meaningless.
Normalization solves the scale problem. Each slot tracks the observed high and low of its own accumulation within its window, and rescales the current value into a 0-to-100 band where 0 is the window's observed low and 100 is the window's observed high. Clamped so nothing leaks out.
Three consequences worth knowing:
Portability. A slot at 80 on SPY and a slot at 80 on BTCUSDT are both "near the top of what this slot has observed in its own window." The same number means the same thing on any instrument.
Per-slot, not global. Two slots on the same pane are each normalized against their own windows. A CVD 01 reading of 80 and a CVD 03 reading of 80 are both "near the top" — but of different windows with different ranges. Compare positions as "which slot is highest inside its own window," not as "slot N is higher than slot M by so-many points."
Extremes can be misleading on quiet windows. If a window's actual CVD range was compressed — a slow session, nothing much happening — the extremes of that window are still 0 and 100, even though the absolute magnitudes were small. An 80 reading on a quiet window is still "near the top," but the top may not represent much activity. Use the blend shape and the slot spread as cross-checks.
Why bucket classification plus carry plus bounded normalization adds up to a usable read
Each of the three components on its own is defensible but thin. Together they produce a pane with specific properties worth naming.
The bucket classifier refuses to fake conviction. Naive close-minus-open tools lie most loudly on weak-body bars; this estimator reads them as indecisive and attenuates their contribution. The line does not pretend to know things it does not.
Carry through indecision keeps the line plausible without inventing information. A quiet stretch does not zero the line, but it does not build momentum out of nothing either. The prior conviction attenuates as it carries.
Bounded normalization makes the read portable and compact. You can put ten slots on the same pane, each on a different instrument or timeframe, and their relative positions are legible on a single axis.
Those properties are what let the pane function as a bench of comparable reads rather than a pile of unbounded, uncomparable lines. They are also the boundary of what the estimator commits to. Beyond them, the pane goes quiet — it does not over-interpret single bars, does not announce turns, does not predict reversals. It reads participation. That is the whole promise.
What the estimator does not do
Listed deliberately, for the reader who wants to know where the model stops.
It does not read the order book. No bid, no ask, no queue, no order placement behavior. Order book events are invisible to the estimator.
It does not infer aggressor side from tick sequences. Tick sequences are not in the input set.
It does not distinguish absorption from active selling. A bar where a large seller gets absorbed by passive buyers and a bar where buyers lift through resistance can produce similar OHLCV signatures. The estimator cannot tell them apart.
It does not model multi-venue order flow. A single slot reads a single symbol. Cross-venue aggregation is the reader's job, via multiple slots and the blend weights.
It does not know about news events, session opens, macro data releases, or anything that requires context outside the OHLCV stream. The estimator reads bars, not calendars.
If your trading process needs any of the above, the estimator is not the right reading for that part of the process. Pair it with a tool that covers the rest.
How to stress-test the estimator for yourself
Three cheap exercises, each worth more than reading this page twice.
Exercise 1 — Watch a news bar
Find a moment of sharp, news-driven movement on an instrument you know well. Watch the slot's behavior during the bar and at its close. Did the estimator catch the directional read that price action made obvious? Did the intent score match the rejection pattern if there was one? If the answer is "yes, in rough shape," the estimator is doing its job. If the answer is "no, the line went sideways through a bar that was obviously directional," you have found an edge where the estimator struggles and you should note it.
Exercise 2 — Push Pressure Sensitivity to the edges
Set one slot's Pressure Sensitivity to 0.25 and another slot's to 4.0. Let them run. The 0.25 slot will look stuck; the 4.0 slot will look frantic. You are watching the same data interpreted under two different conviction postures. Feel the difference between the ends, and you will be able to pick a value in the middle on purpose rather than by accepting the default.
Exercise 3 — Compare against a footprint tool, if you have one
If you have access to a footprint chart on the same instrument and the same timeframe, put them side by side for a session. Watch where they agree and where they disagree. The estimator will be directionally right most of the time on clear bars; it will be vague or wrong on bars whose OHLCV signature does not match the aggressor-side story. The places where it fails are as instructive as the places where it succeeds. They are the boundary of the estimate in practice, not just in theory.
Where to go next
For the knobs that feed the estimator, and the ranges they accept, Settings.
For the MTF posture the estimator sits inside, MTF & Repainting.
For the honest limits spelled out in reader-facing language, Limitations & Trust Boundaries.
For the visual vocabulary the estimator's output produces on the pane, Visuals & Logic.
For the workflows that assume this estimator's character and run with it, Workflows.