Kalman Filter (Smoothed)The Kalman Filter is a recursive statistical algorithm that smooths noisy price data while adapting dynamically to new information. Unlike simple moving averages or EMAs, it minimizes lag by balancing measurement noise (R) and process noise (Q), giving traders a clean, adaptive estimate of true price action.
🔹 Core Features
Real-time recursive estimation
Adjustable noise parameters (R = sensitivity to price, Q = smoothness vs. responsiveness)
Reduces market noise without heavy lag
Overlay on chart for direct comparison with raw price
🔹 Trading Applications
Smoother trend visualization compared to traditional MAs
Spotting true direction during volatile/sideways markets
Filtering out market “whipsaws” for cleaner signals
Building blocks for advanced quant/trading models
⚠️ Note: The Kalman Filter is a state-space model; it doesn’t predict future price, but smooths past and present data into a more reliable signal.
Kalman-filter
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.
Dynamically Adjustable FilterIntroduction
Inspired from the Kalman filter this indicator aim to provide a good result in term of smoothness and reactivity while letting the user the option to increase/decrease smoothing.
Optimality And Dynamical Adjustment
This indicator is constructed in the same manner as many adaptive moving averages by using exponential averaging with a smoothing variable, this is described by :
x= x_1 + a(y - x_1)
where y is the input price (measurements) and a is the smoothing variable, with Kalman filters a is often replaced by K or Kalman Gain , this Gain is what adjust the estimate to the measurements. In the indicator K is calculated as follow :
K = Absolute Error of the estimate/(Absolute Error of the estimate + Measurements Dispersion * length)
The error of the estimate is just the absolute difference between the measurements and the estimate, the dispersion is the measurements standard deviation and length is a parameter controlling smoothness. K adjust to price volatility and try to provide a good estimate no matter the size of length . In order to increase reactivity the price input (measurements) has been summed with the estimate error.
Now this indicator use a fraction of what a Kalman filter use for its entire calculation, therefore the covariance update has been discarded as well as the extrapolation part.
About parameters length control the filter smoothness, the lag reduction option create more reactive results.
Conclusion
You can create smoothing variables for any adaptive indicator by using the : a/(a+b) form since this operation always return values between 0 and 1 as long as a and b are positive. Hope it help !
Thanks for reading !
One Dimensional Parametric Kalman FilterA One Dimensional Kalman Filter, the particularity of Kalman Filtering is the constant recalculation of the Error between the measurements and the estimate.This version is modified to allow more/less filtering using an alternative calculation of the error measurement.
Camparison of the Kalman filter Red with a moving average Black of both period 50
Can be used as source for others indicators such as stochastic/rsi/moving averages...etc
For any questions/suggestions feel free to contact me