Indicator

OBV with Kalman Filter Improv [TechnicalZen]Reversals, Breakouts & Re-Entries: OBV with Kalman Filter Improv
What This Indicator Does
This indicator transforms On-Balance Volume into a visual momentum instrument. Raw OBV is normalized to a 0-100 scale, rendered as stair-step candles with a continuous color gradient, and overlaid with a dual Kalman-filtered ribbon that tracks the flow trend with adaptive precision.
The result is a single pane that answers three questions at a glance: Is volume flow accumulating or distributing? How strong is the conviction? Where are the reversal, breakout, and re-entry points?
No footprint data required. No premium subscription needed. Pure price action and volume.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Why OBV Matters More Than Raw Volume
Raw volume bars tell you how much traded. They do not tell you which direction the volume was pushing. A high-volume bar during a selloff looks identical to a high-volume bar during a breakout rally.
On-Balance Volume assigns direction. When price closes up, the bar's volume is added. When price closes down, it is subtracted. The running total — OBV — reveals the persistent pressure beneath the surface. Rising OBV with flat price means accumulation. Falling OBV with rising price means distribution. These divergences are invisible on a standard volume histogram.
This indicator takes OBV further by normalizing it into a bounded oscillator, smoothing it for clarity, and applying Kalman filtering for adaptive trend detection.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How It Works
The indicator processes OBV through four stages.
Stage 1 — Normalize to 0-100
Raw OBV is an unbounded cumulative number that grows indefinitely. This makes it difficult to compare across time periods or instruments. The indicator applies a rolling min-max normalization over a configurable lookback window (default 100 bars), mapping OBV into a 0-100 scale.
At 100, OBV is at its highest point within the lookback. At 0, its lowest. At 50, it sits at the midpoint of its recent range. This creates a bounded oscillator from a trending series.
Stage 2 — Stair-Step Candles
The normalized OBV is rendered as candles where each bar's open equals the previous bar's close. This creates seamless stair-step blocks with no gaps and no overlaps. The candles show the direction and magnitude of each bar's contribution to the flow — a tall green block means a strong volume push upward, a tall red block means aggressive selling pressure.
Stage 3 — Position-Based Color Gradient
Candle color is determined by where the candle sits in the 0-100 range, not merely whether it went up or down:
Bright green (above 70) — strong bullish accumulation zone
Yellow-green (50-70) — moderate bullish flow
Yellow (around 50) — neutral, transition zone
Orange (30-50) — weakening flow, bearish lean
Red (below 30) — strong bearish distribution zone
This gradient reveals the market's volume state at a glance. Candles clustered at the top in green signal sustained accumulation. Candles dropping through yellow into red signal a regime shift.
Stage 4 — Dual Kalman Ribbon
Two Kalman-filtered lines track the normalized OBV at different speeds:
Short KF (default 20) — responsive to recent flow shifts
Long KF (default 80) — tracks the underlying flow trend
When the short line is above the long line, the ribbon fills bullish. When below, bearish. The Kalman filter adapts its responsiveness automatically — smoothing through noise while responding quickly to genuine regime changes. This is fundamentally superior to any fixed-length moving average.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Reading the Three Signals
Reversals
A reversal signal appears when candles have been clustered at one extreme (above 70 or below 30) and begin migrating toward the midline. The color gradient shifts — green fading to yellow, or red fading to orange. The Kalman ribbon begins to narrow as the short line approaches the long line. When the ribbon flips color, the reversal is confirmed by volume flow, not just price action.
Breakouts
A breakout appears as a large candle that punches through the 70 or 30 threshold line with expanding body size. The Kalman ribbon is already aligned in the breakout direction (short above long for bullish, below for bearish). This confirms that volume flow is supporting the price move — not just a wick or a fake breakout.
Re-Entries
After a breakout, price often pulls back. During a healthy pullback, the candles dip toward the midline (50) but the Kalman ribbon stays in the trend direction . Candles may turn yellow briefly but do not reach the opposite extreme. When candles resume their original color and move away from the midline, that is the re-entry — volume flow confirms the trend is intact.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Why Kalman Filtering — Not EMA, SMA, or Hull
Traditional moving averages apply a fixed smoothing recipe regardless of market conditions. In a quiet market, they lag. In a volatile market, they whipsaw. The trader is forced to manually change the length setting as conditions change.
The Kalman filter solves this structurally. It maintains an internal estimate of both the value and its uncertainty . On every bar, it computes a gain that automatically balances between trusting the new data and trusting its prediction. When data is noisy, the gain drops and the filter smooths aggressively. When a genuine shift occurs, the gain rises and the filter responds immediately.
Two parameters control this behavior:
R (Measurement Noise) — how much noise is expected in each bar's data. Higher values produce smoother output.
Q (Process Noise) — how quickly the underlying trend is expected to change. Higher values allow faster adaptation.
The dual-line ribbon (short KF vs long KF) combines the adaptive smoothing with trend direction detection. The crossover of two Kalman-filtered lines is more reliable than traditional MA crossovers because the filter has already absorbed the noise before the crossover happens.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Reading the Indicator
The Candles
Green blocks at top — strong sustained buying pressure. Trend is healthy.
Red blocks at bottom — strong sustained selling. Downtrend confirmed by volume.
Yellow/orange blocks at midline — indecision. Flow is balanced. Wait for direction.
Color transition — the gradient shift (green to yellow, or red to orange) often leads price by several bars.
The Kalman Ribbon
Green fill (short above long) — volume flow trend is bullish
Red fill (short below long) — volume flow trend is bearish
Ribbon narrowing — trend weakening, potential flip ahead
Ribbon widening — trend conviction increasing
The Threshold Lines
70 line — overbought in volume flow terms. Sustained presence above = strong trend, not necessarily a sell signal.
50 line — equilibrium. Transitions through this level signal regime changes.
30 line — oversold in volume flow terms. Sustained presence below = strong downtrend.
Line colors match the candle gradient — they shift with the regime.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Key Settings
Normalization Lookback (default: 100)
Rolling window for min-max scaling. Higher values produce smoother oscillation with fewer extremes. Lower values make the indicator more reactive to recent volume changes.
HA Smoothing Passes (default: 1)
Number of additional smoothing passes on the normalized OBV. 1 = standard stair-step. 2-3 = smoother candles with less noise.
Short KF / Long KF Length (default: 20 / 80)
Controls the responsiveness of the two Kalman lines. The gap between them determines how quickly the ribbon detects trend changes.
Measurement Noise R (default: 0.01)
Higher = smoother Kalman output. Lower = more reactive to each bar.
Process Noise Q (default: 0.10)
Higher = faster adaptation to regime shifts. Lower = more rigid trend following.
Upper / Lower Threshold (default: 70 / 30)
Defines the overbought/oversold boundaries for the volume flow oscillator.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Divergence — The Most Powerful Signal
When price makes a new high but the OBV candles fail to reach the upper zone (or are falling), volume is not confirming the move. This bearish divergence often precedes reversals by several bars. The Kalman ribbon will begin narrowing before the price chart shows any weakness.
Conversely, when price makes a new low but OBV candles hold above the lower zone or begin rising, that is bullish divergence — accumulation is happening beneath the surface.
The gradient coloring makes these divergences immediately visible. Price may look strong, but if the candles are orange instead of green, the volume story disagrees.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What This Indicator Is Not
It does not generate automated buy or sell signals . It provides visual regime information for the trader to interpret.
It does not use footprint or order flow data . It is built on standard OBV which infers direction from price close. For actual bid/ask decomposition, a footprint-based indicator is required.
It does not predict future price direction . It reveals the current state and trend of volume flow. What the market does with that flow is never guaranteed.
It is not a standalone trading system . It is a confirmation and divergence detection tool designed to complement price action analysis.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice, and it does not constitute a recommendation to buy, sell, or hold any financial instrument.
All trading involves risk. Past performance of any signal, regime detection system, or volume analysis mechanism does not guarantee future results. The normalized OBV readings, Kalman-filtered trend lines, and color gradient zones represent a computational assessment of publicly available price and volume data. They are not predictions and should not be treated as certainties.
On-Balance Volume assigns all of a bar's volume to one direction based solely on whether the close was higher or lower than the previous close. This is an approximation. A bar that closes up by one tick with heavy selling throughout will register as entirely bullish volume in OBV. Traders should be aware of this limitation.
The Kalman filter parameters (R and Q) affect responsiveness. Poorly tuned parameters can produce either excessive lag or excessive noise. The default values are designed for general use but may require adjustment for specific instruments or timeframes.
No indicator, algorithm, or model can account for all market variables including liquidity events, news-driven gaps, exchange outages, or sudden regime changes. Traders should always use independent risk management, position sizing, and their own judgment before entering any trade.
By using this indicator, you acknowledge that you are solely responsible for your own trading decisions and that the authors accept no liability for any losses incurred.
Indicator

Footprint Interpreter [TechnicalZen]Footprint Interpreter
⚠ Requires PulseWire Premium or Ultimate subscription. This indicator uses request.footprint() which is not available on free or Essential plans.
What This Indicator Does
The Footprint Interpreter reads real order flow — actual buy-side and sell-side execution data from PulseWire's footprint engine — and translates it into a visual language that reveals what the market is doing beneath the surface of price action.
You do not need the footprint chart open. You do not need to read bid/ask ladders, decode volume profiles, or interpret heat maps. The indicator extracts the essential signal from footprint data and presents it as candles, a Kalman-filtered trend ribbon, and a regime engine — all in a single pane.
The core question it answers: "Where is the real money flowing, and is it accelerating or decelerating?"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Why Footprint Data Matters
Price tells you where the market went. Volume tells you how much participated. But neither tells you who was the aggressor .
Every trade has a buyer and a seller. Footprint data decomposes each bar's volume into buy-side executions (orders hitting the ask) and sell-side executions (orders hitting the bid). The difference — the delta — reveals which side was actively pursuing fills.
This matters because:
Absorption — Price goes sideways while one side relentlessly absorbs the other's aggression. Invisible on a price chart. Clearly visible in footprint delta.
Pre-breakout accumulation — Before a move begins, aggressive buying or selling often builds in the delta while price hasn't yet responded. The Footprint Interpreter catches this divergence.
Exhaustion — A strong price trend continues but the delta weakens. The aggressive side is running out of conviction. The indicator's regime engine detects this deceleration.
Confirmation — Price breaks a level and the delta confirms with expanding aggression in the same direction. Confidence in the move increases.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How It Works
The indicator runs three engines simultaneously, each operating on raw footprint data — no price-derived inputs.
Engine 1 — Footprint Delta (FPD) Candles
The cumulative footprint delta is computed bar by bar: each bar's buy volume minus sell volume, accumulated over time. This running total is detrended by subtracting a slow moving average so the display oscillates around zero rather than growing indefinitely.
The result is plotted as candles. Green candles mean the FPD rose during that bar (net buying pushed the cumulative total higher). Red candles mean it fell. The candle body directly represents the flow direction and magnitude.
Engine 2 — Dual Kalman Ribbon
Two Kalman-filtered lines track the FPD at different speeds:
Short KF (default length 20) — responsive, tracks recent flow shifts
Long KF (default length 80) — stable, tracks the underlying flow trend
When the short KF is above the long KF, the ribbon fills bullish. When below, bearish. The ribbon's width indicates the strength of the directional conviction — a wide ribbon means the fast and slow flow assessments strongly agree.
Engine 3 — Volume-Native DX/ADX Regime
The regime engine is a faithful translation of the classic Directional Movement system into the volume domain. Every component has a proper analog:
Directional Movement — Instead of comparing today's high vs yesterday's high, it compares today's buy volume vs yesterday's buy volume. Is buying expanding ? Is selling expanding? Only the winning side scores — the same competitive logic as the price-based original.
True Range — Instead of max(high-low, |high-close |, |low-close |), it uses max(totalVol, |buyVol-delta |, |sellVol+delta |). This captures both the bar's flow range and the gap from the previous bar's net settlement — detecting sudden flow reversals the way price TR detects overnight gaps.
DI+, DI-, DX, ADX — computed identically to the price version, but fed entirely by volume data.
The result is a four-state regime: Bull Strong, Bull Weak, Bear Strong, Bear Weak — telling you not just which side dominates but whether that dominance is accelerating or fading .
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Why Kalman Filtering — Not Hull, EMA, or SMA
The Kalman filter is fundamentally different from traditional moving averages. A moving average is a fixed recipe: take N bars, weight them, output a number. It has no concept of whether the data it is processing is noisy or clean, fast-moving or stable.
The Kalman filter is an adaptive estimator . It maintains two quantities internally:
State estimate — its current best guess of the true value
Uncertainty estimate — how confident it is in that guess
On every bar, it computes a Kalman gain that automatically balances between trusting the new measurement and trusting its prediction. When the data is stable, the gain drops and the filter smooths heavily. When the data shifts, the gain rises and the filter responds quickly.
This matters for footprint data specifically because volume flow is inherently noisier and burstier than price. A single large institutional order can spike the delta for one bar and vanish the next. Hull or EMA will whipsaw on these spikes. The Kalman filter recognizes the spike as high-uncertainty data and dampens its response — unless the spike is sustained, in which case it adapts.
The two tunable parameters — R (measurement noise) and Q (process noise) — give precise control over this behavior without changing the filter's length or structure.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What It Reveals — Hidden Price Action
The most powerful use of this indicator is seeing what price alone cannot show:
Divergence Between Price and Flow
Price is rising but the FPD candles are falling or flat. This means the price advance is happening on declining aggressive buying — the move is running on fumes. The Kalman ribbon will begin to narrow and eventually flip before price confirms the reversal.
Pre-Breakout Energy
Price is consolidating in a tight range. The FPD candles begin trending directionally with expanding bodies. Aggressive flow is building on one side before the breakout occurs. The regime engine shifts from weak to strong. This gives the trader a heads-up — not a prediction, but evidence of building pressure.
Absorption Detection
Price pushes into a level and stalls. The FPD shows persistent negative delta despite bullish price action — sellers are absorbing every push. The Kalman short line begins diverging from the long line in the opposite direction of price. The regime stays weak or flips. The breakout attempt is likely to fail.
Trend Confirmation
Price breaks out and the FPD confirms: expanding candles in the same direction, both KF lines aligned and rising, regime at Bull Strong. This is the highest-confidence scenario — price and flow agree, and flow is accelerating.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Reading the Indicator
The Candles
Green body — FPD rose during this bar (net buying dominated)
Red body — FPD fell (net selling dominated)
Body size — magnitude of the net flow shift
Position relative to zero — above zero = cumulative flow above its recent average; below = below average
The Kalman Ribbon
Thin line (Short KF) — fast flow tracker, colored by slope
Thick line (Long KF) — slow flow trend, colored by direction
Ribbon fill — bullish when short above long, bearish when below
Ribbon width — wider = stronger conviction, narrower = indecision or transition
The Dashboard
Regime — four-state flow regime (Bull Strong / Bull Weak / Bear Strong / Bear Weak)
Kalman — current Kalman ribbon direction
FPD Position — whether FPD is above or below the fast Kalman line
Vol DX — signed directional strength from the volume DM engine
Bar Delta — this bar's net buy minus sell volume
Buy / Sell Vol — raw buy-side and sell-side execution volumes
Imbalance — ratio of dominant side to weak side
FPD — cumulative footprint delta total
When footprint data is unavailable (instrument or plan limitation), the dashboard title turns red with a warning indicator.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Key Settings
DX/ADX Period (default: 25)
Smoothing length for the directional movement engine. Higher values produce more stable regime readings at the cost of responsiveness.
Detrend Period (default: 50)
Length of the SMA subtracted from FPD for display centering. Does not affect any calculations — purely visual. Higher values show longer-term flow trends. Lower values focus on recent action.
Short KF / Long KF Length (default: 20 / 80)
Controls the responsiveness of the two Kalman-filtered lines. Shorter = more reactive. Longer = more stable. The gap between them determines how quickly the ribbon responds to flow reversals.
Measurement Noise R (default: 0.01)
How much the Kalman filter trusts new data versus its own prediction. Higher = smoother. Lower = more reactive to each bar.
Process Noise Q (default: 0.10)
How quickly the Kalman filter allows its internal state to change. Higher = adapts faster to regime shifts. Lower = more rigid model.
Ticks Per Row (default: 1)
Resolution of the footprint histogram. 1 = maximum precision. Increase for very high-volatility instruments if you encounter data limits.
Value Area % (default: 70)
Percentage of total volume that defines the Value Area in the footprint data. Industry standard is 70%.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Requirements
PulseWire Premium or Ultimate plan (required for request.footprint())
Instruments with footprint data available (most major futures, equities, and crypto pairs)
Pine Script v6
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What This Indicator Is Not
It is not a replacement for the footprint chart. It is a complementary interpretation layer. Traders who read raw footprint data will find additional context here. Traders who do not will gain access to footprint intelligence without needing to learn footprint chart reading.
It does not generate buy or sell signals . It provides directional regime information, flow momentum, and divergence detection. Trade decisions remain with the trader.
It does not predict price direction. It reveals the state of aggressive order flow and how that flow is evolving. What the market does with that information is never guaranteed.
It is not a volume indicator in the traditional sense. It does not use the standard volume series. It uses decomposed bid/ask execution data from PulseWire's footprint engine — a fundamentally different and richer data source.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice, and it does not constitute a recommendation to buy, sell, or hold any financial instrument.
All trading involves risk. Past performance of any signal, regime detection system, or flow analysis mechanism does not guarantee future results. The regime states, Kalman-filtered trend readings, and flow analysis displayed represent a computational assessment of order flow data available through PulseWire's footprint engine. They are not predictions and should not be treated as certainties.
Footprint data availability and accuracy depend on the instrument, exchange, and PulseWire's data feed. The indicator requires a Premium or Ultimate PulseWire subscription. Data gaps, exchange outages, or instruments without footprint support will produce missing or incomplete readings. The dashboard provides a visual warning when footprint data is unavailable.
No indicator, algorithm, or model can account for all market variables including liquidity events, news-driven gaps, exchange outages, dark pool activity, or sudden regime changes. Order flow data represents only the visible portion of market activity — significant volume may execute through channels not captured by footprint data.
Traders should always use independent risk management, position sizing, and their own judgment before entering any trade.
By using this indicator, you acknowledge that you are solely responsible for your own trading decisions and that the authors accept no liability for any losses incurred.
Indicator

Triple Derivative EngineMost momentum indicators tell you where the price is. The Triple Derivative Engine tells you how fast it's getting there, whether that speed is increasing or fading, and whether the acceleration itself is changing direction — three layers of motion analysis extracted from a single smoothed price signal, all normalized to a common ±100 scale so every layer is directly comparable at a glance.
How It Works
Step 1 — Smoothing
Raw price is too noisy to differentiate reliably. TDE first passes your source through one of three selectable filters to extract the underlying motion curve before computing any derivatives.
Savitzky-Golay (default) fits a 2nd-order polynomial to a moving window of bars using Gram polynomial coefficients. Unlike a moving average, it preserves the shape of peaks and troughs rather than smoothing them away. Window sizes of 5, 7, 9, 11, 13, and 15 are supported, each with exact integer coefficients — no approximation. This gives the best phase response of the three filters: signals appear earlier and with less distortion.
Gaussian weights each past bar by a bell-curve function of its distance from the current bar. Sigma controls how quickly the weights fall off. Softer and more trailing than SG, useful when you want a cleaner curve at the cost of a slight lag.
Kalman is a single-state recursive filter that continuously estimates the "true" price by balancing how much it trusts the new measurement (R) versus how much the underlying process is expected to move (Q). It adapts bar-to-bar, making it the most responsive of the three with the least lag, but also the most sensitive to sharp moves.
Step 2 — Finite Difference Derivatives
Once the smoothed signal sm is computed, three derivatives are calculated using standard finite difference formulas:
Velocity (1st derivative): sm − sm — the rate of change of price. Positive means price is rising, negative means it is falling. The magnitude tells you how fast.
Acceleration (2nd derivative): sm − 2·sm + sm — the rate of change of velocity. Positive means momentum is building; negative means it is fading, even if price is still moving in the same direction.
Jerk (3rd derivative): sm − 3·sm + 3·sm − sm — the rate of change of acceleration. A leading indicator of acceleration reversals. When jerk crosses zero, acceleration is about to change direction.
Step 3 — Normalization
Each derivative is divided by its rolling peak absolute value over the normalization lookback window, then scaled to ±100. This keeps all three series on the same axis and comparable to each other, regardless of the instrument's price level or volatility. A velocity reading of +80 and an acceleration reading of +80 carry equivalent relative meaning within their own histories.
Signals
Zero Crosses
Every time a derivative crosses the zero line, a marker appears at the top or bottom of the panel. Each derivative has a distinct shape to avoid confusion:
Velocity (Circle): Bottom (bullish) / Top (bearish)
Acceleration (Diamond): Bottom (bullish) / Top (bearish)
Jerk (Square): Bottom (bullish) / Top (bearish)
Each set of markers is independently gated by its visibility toggle, so you only see the crosses for the series you have enabled.
Velocity cross — the most direct signal. When velocity crosses above zero, price momentum has turned positive on the source timeframe. Below zero, it has turned negative.
Acceleration cross — a timing tool, not a trend signal. When acceleration crosses above zero while velocity is still positive, the move is re-accelerating. When acceleration crosses below zero while velocity is still positive, the move is losing steam — the trend continues, but is starting to exhaust. Acceleration reversals frequently precede velocity reversals by several bars.
Jerk cross — the earliest signal in the chain. Jerk crossing zero means acceleration is about to change direction. By itself, jerk is noisy, but when it aligns with acceleration near a zero cross, it can give a meaningful early warning.
Divergence Markers (Triangles)
Divergence fires when acceleration crosses zero while velocity is still extreme — specifically when |vn| > 30. This combination means the move has been strong enough to be considered extended, but the underlying force driving it is already reversing.
Bear divergence (▼ triangle, top): Acceleration crosses below zero while velocity is still elevated above +30. The upswing's engine is cutting out while the price is still high. Historically, this precedes deceleration into a stall or reversal.
Bull divergence (▲ triangle, bottom): Acceleration crosses above zero while velocity is still depressed below −30. The downswing is losing power from the bottom. Historically, this precedes a deceleration of selling and a potential recovery.
Divergence markers are rarer than zero crosses by design. They represent a specific confluence, not a general crossover signal.
Regime Background
The panel background is tinted to reflect the current momentum regime:
Velocity > 0 and Acceleration > 0: Accelerating bull - Cyan tint
Velocity < 0 and Acceleration < 0: Accelerating bear - Red tint
No tint: Decelerating or mixed - Neutral
The regime is also displayed in the info table with four states: ▲ Accelerating, ↗ Decelerating, ↘ Recovering, ▼ Falling.
Signal Line
An EMA of velocity (default length 9) is plotted as a thin white line over the velocity histogram. Velocity crossing its own signal line is an additional early entry cue, analogous to the MACD signal cross but applied directly to the derivative layer.
Settings
⏱ Timeframe
Source Timeframe — the timeframe on which the smoothed signal is computed before derivatives are taken. Options: Auto, Chart, 5m, 15m, 1H, 4H, 1D, 1W.
Auto scales to a fixed higher timeframe based on your current chart: below 5m → 15m, below 15m → 1H, below 1H → 4H, below 4H → 1D, otherwise 1W. This allows the indicator to show higher-timeframe derivative structure on any intraday chart without manual adjustment.
The chart uses the same timeframe as the chart is on. Useful when you want the derivatives of the chart's own bars rather than a higher context.
🔬 Smoothing Filter
Filter — selects the smoothing method: Savitzky-Golay (recommended), Gaussian, or Kalman.
SG Window (SG only) — odd integer from 5 to 15. Controls the width of the polynomial fitting window. Larger windows produce smoother derivatives with (window−1)/2 additional bars of lag. Window 9 is the default and a good general-purpose choice. Use 5 or 7 for faster signals on volatile instruments; 13 or 15 for cleaner derivatives on smooth trends.
Gaussian Length (Gaussian only) — number of bars in the weighted sum. Longer = smoother.
Gaussian Sigma (Gaussian only) — controls the standard deviation of the bell curve. Lower values concentrate weight on recent bars; higher values spread it more evenly.
Kalman Q — Process Noise (Kalman only) — how much the filter expects the price to move on its own each bar. Higher Q makes the filter track price more closely with less smoothing. Range 0.0001–1.0, default 0.01.
Kalman R — Measurement Noise (Kalman only) — how much the filter distrusts the raw price measurement. Higher R produces more smoothing and more lag. Range 0.01–50.0, default 1.0.
📈 Derivatives & Display
Price Source — the input series to smooth and differentiate. Defaults to close. Can be set to any source, including hl2, ohlc4, or another indicator's output via the source selector.
Normalization Lookback — the rolling window (in bars) over which each derivative is scaled to ±100. Shorter windows (e.g., 50) make the indicator more responsive to recent extremes; longer windows (e.g., 200–500) provide a more stable baseline. Default 100.
Signal EMA Length — the length of the EMA applied to normalized velocity to produce the signal line. Default 9.
Velocity (1st deriv) — show/hide the velocity histogram and line, and its zero-crossing markers.
Acceleration (2nd deriv) — show/hide the acceleration line and its zero-cross diamond markers.
Jerk (3rd deriv) — show/hide the jerk line and its zero-crossing square markers. Hidden by default as it is primarily useful for advanced analysis.
Signal Line on Velocity — show/hide the EMA signal line overlay on velocity.
Divergence Markers — show/hide the bear/bull divergence triangle markers.
🎨 Colors
All seven colour elements are individually configurable: Velocity (up/down), Acceleration (up/down), Jerk (up/down), and the Signal line.
Alerts
Eight alert conditions are available:
Velocity → Positive: Velocity crosses above zero
Velocity → Negative: Velocity crosses below zero
Momentum Trough: Acceleration crosses above zero
Momentum Peak: Acceleration crosses below zero
Jerk → Positive: Jerk crosses above zero
Jerk → Negative: Jerk crosses below zero
Bullish Divergence: Acceleration recovers while velocity is below −30
Bearish Divergence: Acceleration rolls over while velocity is above +30
Reading the Indicator Together
The three layers are designed to be read in sequence, from slowest to fastest signal:
Check velocity for trend direction — is the move positive or negative?
Check acceleration for conviction — is the move building or fading?
Check jerk for early warning — is acceleration about to change?
A high-confidence setup aligns all three: velocity positive, acceleration positive and rising, jerk positive. As a move matures, acceleration will peak and roll over first, while velocity remains elevated — that is the divergence condition. Velocity eventually follows. Jerk will often signal the peak of acceleration one step earlier still.
No single cross is a trade signal on its own. TDE is a momentum structure tool. It is most useful when combined with price structure, support/resistance levels, and a defined higher timeframe bias. Indicator

Kalman Absorption/Distribution Tracker 3-State EKFQuant-Grade Institutional Flow: 3-State EKF Absorption Tracker
SUMMARY
An advanced, open-source implementation of a 3-State Extended Kalman Filter (EKF) designed to track institutional Order Flow. By analyzing 1-second intrabar microstructure data, this script estimates the true Position, Velocity, and Volatility of the Cumulative Volume Delta (CVD), revealing hidden Absorption and Distribution events in real-time.
INTRODUCTION: THE SIGNAL AMIDST THE NOISE
In the world of technical analysis, noise is the enemy. Traditional indicators rely on Moving Averages (SMA, EMA) to smooth out price and volume data. The problem is the "Lag vs. Noise" paradox: to get a smooth signal, you must accept lag; to get a fast signal, you must accept noise.
This indicator solves that paradox by introducing aerospace-grade mathematics to the PulseWire community: The 3-State Extended Kalman Filter (EKF).
Unlike moving averages that blindly average past data, a Kalman Filter is a probabilistic state-space model. It constantly predicts where the order flow "should" be, compares it to the actual measurement, and updates its internal model based on the calculated uncertainty of the market.
This script is not just another volume oscillator. It is a full microstructure analysis engine that digests intrabar data (down to 1-second resolution) to track the true intent of "Smart Money" while filtering out the noise of retail chop.
THE INNOVATION: WHY 3 STATES?
Most Kalman Filters found in public libraries are "1-State" (tracking price only) or occasionally "2-State" (tracking price and velocity). This script introduces a highly advanced 3-State EKF.
The filter tracks three distinct variables simultaneously in a feedback loop:
State 1: Position (The True CVD)
This is the noise-filtered estimate of the Cumulative Volume Delta. It represents the actual inventory accumulation of aggressive buyers versus sellers, stripped of random noise.
State 2: Velocity (The Momentum)
This tracks the rate of change of the order flow. Is buying accelerating? Is selling pressure fading even as price drops? This provides a leading signal before the cumulative value even turns.
State 3: Volatility (The Adaptive Regime)
This is the game-changer. The filter estimates the current volatility of the order flow (Log-Volatility). In high-volatility environments (like news events), the filter automatically widens its uncertainty bands (Covariance) and reacts faster. In low-volatility environments (chop), it tightens up and ignores minor fluctuations.
THE LOGIC: DETECTING ABSORPTION AND DISTRIBUTION
The core philosophy of this indicator is based on Wyckoff Logic: Effort vs. Result.
-- Effort: Represented by the CVD (Buying/Selling pressure).
-- Result: Represented by Price Movement.
When these two diverge, we have an actionable signal. The script uses the EKF Velocity state to detect these moments:
Absorption (Bullish)
This occurs when the EKF detects high negative Velocity (aggressive selling), but Price refuses to drop. The "Smart Money" is absorbing the sell orders via limit buys. The indicator highlights this as a Blue Event in the dashboard.
Distribution (Bearish)
This occurs when the EKF detects high positive Velocity (aggressive buying), but Price refuses to rise. Limit sellers are capping the market. The indicator highlights this as an Orange Event.
TECHNICAL DEEP DIVE: UNDER THE HOOD
For the developers and quants, here is how the Pine Script is architected using the "type" and "method" features of Pine Script v5.
1. Data Ingestion (Microstructure)
The script uses "request.security_lower_tf" to pull intrabar data regardless of your chart timeframe. This allows the script to see "inside" the bar. A 5-minute candle might look green, but the microstructure might reveal that 80% of the volume was selling absorption at the wick. This script sees that.
2. Tick Classification
Standard CVD assumes that if Price Close is greater than Price Open, all volume is buying. This is often flawed. This script offers three modes of tick handling, including a "High-Low Distribution" method that statistically apportions volume based on where the tick closed relative to its high and low.
3. The EKF Mathematics
The script implements the standard Extended Kalman Filter equations manually. It calculates the Jacobian matrix to handle the non-linear relationship between volatility and price. The "Process Noise Matrix" (Q) is dynamically scaled by the Volatility State. This means the mathematics of the indicator literally "breathe" with the market conditions—expanding during expansion and contracting during consolidation.
THE DASHBOARD & VISUALS:
The indicator features a professional-grade HUD (Heads Up Display) located on the chart table.
-- EKF State Vector: Displays the real-time Position, Velocity, and Volatility values derived from the matrix.
-- Ease of Movement (Wyckoff): Calculates how much price moves per 1,000 contracts of CVD. For example, if Price moves +5 points per 1k Buy CVD, but only -2 points per 1k Sell CVD, the "Path of Least Resistance" is clearly UP.
-- Session State: Tracks cumulative confirmed Bullish vs. Bearish events for Today, Yesterday, and the Day Before (3-Day Profile).
-- Bias Summary: An algorithmic conclusion telling you if the day is "Confirmed Bullish," "Accumulating," or "Neutral."
HOW TO TRADE THIS INDICATOR
Strategy A: The Reversal (Absorption Play)
Look for price making a Lower Low.
Look for the EKF Velocity (Histogram) to be Deep Red (High Selling Pressure).
Watch the Dashboard "Absorption" count increase.
SIGNAL: When EKF Velocity crosses back toward zero and turns grey/green, the absorption is complete. This indicates sellers are exhausted and limit buyers have control.
Strategy B: The Trend Continuation (Ease of Movement)
Check the Dashboard "Ease of Movement" section.
If "Price per +1K CVD" is significantly higher than "Price per -1K CVD", buyers are efficient.
Wait for a pullback where EKF Velocity hits the "Neutral Zone" (Gray).
SIGNAL: Enter Long when Velocity ticks positive again, aligning with the dominant Ease of Movement stats.
CONFIGURATION GUIDE:
Because this is a quant-grade tool, the settings allow for fine-tuning the physics of the filter.
-- Velocity Decay: Controls how fast momentum resets to zero. Set high (0.98) for trending markets, or lower (0.85) for mean-reverting chop.
-- Volatility Persistence: Controls how "sticky" volatility regimes are.
-- Process Noise: Increase this if the filter feels too laggy; decrease it if the filter feels too jittery (noisy).
-- Measurement Noise: Increase this to trust the Mathematical Model more than the Price Data (smoother output).
WHY OPEN SOURCE?
Complex statistical filtering is often sold behind closed doors in expensive "Black Box" algorithms. By releasing this 3-State EKF open source, the goal is to raise the standard of development on PulseWire.
I encourage the community to inspect the code, specifically the "ekf_update_3state" function, to understand how matrix operations can be simulated in Pine Script to create adaptive, self-correcting indicators. And also update me for improvements.
DISCLAIMER:
This tool analyzes microstructure volume data. It requires a subscription plan that supports Intrabar inspection (Premium/Pro recommended for best results). Past performance of the Kalman Filter logic does not guarantee future results. Volume analysis is subjective and should be used as part of a comprehensive strategy.
SUGGESTED SETTINGS
-- Timeframe: Works best on 1m, 3m, or 5m charts (Intrabar data is fetched from 1S).
-- Asset Class: Highly effective on Futures (ES, NQ, BTC) and high-volume Forex/Crypto pairs where volume data is reliable.
-- Background: Dark mode recommended for Dashboard visibility.
WHAT IS A KALMAN FILTER?
Imagine driving a car into a tunnel where your GPS signal is lost.
Prediction: Your car knows its last speed (Velocity) and position. It predicts where you are every second inside the tunnel.
Update: When you exit the tunnel, the GPS connects again. The system compares where it thought you were versus where the satellite says you are.
Correction: It corrects your position and updates its estimate of your speed.
Now apply this to trading:
-- The Tunnel: Market Noise, wicks, and Fake-outs.
-- The Car: The True Market Trend.
-- This Indicator: The navigation system that tells you where the market actually is, ignoring the noise of the tunnel.
Enjoy the indicator and trade safe!
Dr. Jay Desai
(Investment Management & Derivatives Area, Gujarat University)
Indicator

Indicator

Kalman Volume Filter [ChartPrime]The "Kalman Volume Filter" , aims to provide insights into market volume dynamics by filtering out noise and identifying potential overbought or oversold conditions. Let's break down its components and functionality:
Settings:
Users can adjust various parameters to customize the indicator according to their preferences:
Volume Length: Defines the length of the volume period used in calculations.
Stabilization Coefficient (k): Determines the level of noise reduction in the signals.
Signal Line Length: Sets the length of the signal line used for identifying trends.
Overbought & Oversold Zone Level: Specifies the threshold levels for identifying overbought and oversold conditions.
Source: Allows users to select the price source for volume calculations.
Volume Zone Oscillator (VZO):
Calculates a volume-based oscillator indicating the direction and intensity of volume movements.
Utilizes a volume direction measurement over a specified period to compute the oscillator value.
Normalizes the oscillator value to improve comparability across different securities or timeframes.
// VOLUME ZONE OSCILLATOR
VZO(get_src, length) =>
Volume_Direction = get_src > get_src ? volume : -volume
VZO_volume = ta.hma(Volume_Direction, length)
Total_volume = ta.hma(volume, length)
VZO = VZO_volume / (Total_volume)
VZO := (VZO - 0) / ta.stdev(VZO, 200)
VZO
Kalman Filter:
Applies a Kalman filter to smooth out the VZO values and reduce noise.
Utilizes a stabilization coefficient (k) to control the degree of smoothing.
Generates a filtered output representing the underlying volume trend.
// KALMAN FILTER
series float M_n = 0.0 // - the resulting value of the current calculation
series float A_n = VZO // - the initial value of the current measurement
series float M_n_1 = nz(M_n ) // - the resulting value of the previous calculation
float k = input.float(0.06) // - stabilization coefficient
// Kalman Filter Formula
kalm(k)=>
k * A_n + (1 - k) * M_n_1
Volume Visualization:
Displays the volume histogram, with color intensity indicating the strength of volume movements.
Adjusts bar colors based on volume bursts to highlight significant changes in volume.
Overbought and Oversold Zones:
Marks overbought and oversold levels on the chart to assist in identifying potential reversal points.
Plotting:
Plots the Kalman Volume Filter line and a signal line for visual analysis.
Utilizes different colors and fills to distinguish between rising and falling trends.
Highlights specific events such as local buy or sell signals, as well as overbought or oversold conditions.
This indicator provides traders with a comprehensive view of volume dynamics, trend direction, and potential market turning points, aiding in informed decision-making during trading activities.
Indicator

Indicator

Indicator

Indicator
