Kalman Hull RSI [BackQuant]Kalman Hull RSI
At its core, this indicator uses a Kalman filter of price, put inside of a hull moving average function (replacing the weighted moving averages) and then using that as a price source for the the RSI, very similar to the Kalman Hull Supertrend just processing price for a different indicator.
This also allows it to make it more adaptive to price and also sensitive to recent price action. This indicator is also mainly built for trend-following systems
PLEASE Read the following, knowing what an indicator does at its core before adding it into a system is pivotal. The core concepts can allow you to include it in a logical and sound manner.
1. What is a Kalman Filter
The Kalman Filter is an algorithm renowned for its efficiency in estimating the states of a linear dynamic system amidst noisy data. It excels in real-time data processing, making it indispensable in fields requiring precise and adaptive filtering, such as aerospace, robotics, and financial market analysis. By leveraging its predictive capabilities, traders can significantly enhance their market analysis, particularly in estimating price movements more accurately.
If you would like this on its own, with a more in-depth description please see our Kalman Price Filter.
OR our Kalman Hull Supertrend
2. Hull Moving Average (HMA) and Its Core Calculation
The Hull Moving Average (HMA) improves on traditional moving averages by combining the Weighted Moving Average's (WMA) smoothness and reduced lag. Its core calculation involves taking the WMA of the data set and doubling it, then subtracting the WMA of the full period, followed by applying another WMA on the result over the square root of the period's length. This methodology yields a smoother and more responsive moving average, particularly useful for identifying market trends more rapidly.
3. Combining Kalman Filter with HMA
The innovative combination of the Kalman Filter with the Hull Moving Average (KHMA) offers a unique approach to smoothing price data. By applying the Kalman Filter to the price source before its incorporation into the HMA formula, we enhance the adaptiveness and responsiveness of the moving average. This adaptive smoothing method reduces noise more effectively and adjusts more swiftly to price changes, providing traders with clearer signals for market entries or exits.
The calculation is like so:
KHMA(_src, _length) =>
f_kalman(2 * f_kalman(_src, _length / 2) - f_kalman(_src, _length), math.round(math.sqrt(_length)))
Use Case
The Kalman Hull RSI is particularly suited for traders who require a highly adaptive indicator that can respond to rapid market changes without the excessive noise associated with typical RSI calculations. It can be effectively used in markets with high volatility where traditional indicators might lag or produce misleading signals.
Application in a Trading System
The Kalman Hull RSI is versatile in application, suitable for:
Trend Identification: Quickly identify potential reversals or confirmations of existing trends.
Overbought/Oversold Conditions: Utilize the dynamic RSI thresholds to pinpoint potential entry and exit points, adapting to current market conditions.
Risk Management: Enhance trading strategies by integrating a more reliable measure of momentum, which can lead to improved stop-loss placements and exit strategies.
Core Calculations and Benefits
Dynamic State Estimation: By applying the Kalman Filter, the indicator continually adjusts its calculations based on incoming price data, providing a real-time, smoothed response to price movements.
Reduced Lag: The integration with HMA significantly reduces lag, offering quicker responses to price changes than traditional moving averages or RSI alone.
Increased Accuracy: The dual filtering effect minimizes the impact of price spikes and noise, leading to more accurate signaling for trades.
Thus following all of the key points here are some sample backtests on the 1D Chart
Disclaimer: Backtests are based off past results, and are not indicative of the future.
INDEX:BTCUSD
INDEX:ETHUSD
BINANCE:SOLUSD
Kalmanfilter
Kalman Filter Volume Bands by TenozenHello there! I am excited to introduce a new original indicator, the Kalman Filter Volume Bands. This indicator is calculated using the Kalman Filter, which is an adaptive-based smoothing quantitative tool. The Kalman Filter Volume Bands have two components that support the calculation, namely VWAP and VaR.
VWAP is used to determine the weight of the Kalman Filter Returns, but it doesn't have a significant impact on the calculation. On the other hand, VaR or Value at risk is calculated using the 99th percentile, which means that there is a 1% chance for the returns to exceed the 99th percentile level. After getting the VaR value, I manually adjust the bands based on the current market I'm trading on. I take the highest point (VaR*2) and the lowest point (-(VaR*2)) from the Kalman Filter, and then divide them into segments manually based on my preference.
This process results in 8 segments, where 2 segments near the Kalman Filter are further divided, making a total of 12 segments. These segments classify the current state of the price based on code-based coloring. The five states are very bullish, bullish, very bearish, bearish, and neutral.
I created this indicator to have an adaptive band that is not biased toward the volatility of the market. Most band-based indicators don't capture reversals that well, but the Kalman Filter Volume Bands can capture both trends and reversals. This makes it suitable for both trend-following and reversal trading approaches.
That's all for the explanation! Ciao!
Additional Reminder:
- Please use hourly timeframes or higher as lower timeframes are too noisy for reliable readings of this indicator.
Kalman Price Filter [BackQuant]Kalman Price Filter
The Kalman Filter, named after Rudolf E. Kálmán, is a algorithm used for estimating the state of a linear dynamic system from a series of noisy measurements. Originally developed for aerospace applications in the early 1960s, such as guiding Apollo spacecraft to the moon, it has since been applied across numerous fields including robotics, economics, and, notably, financial markets. Its ability to efficiently process noisy data in real-time and adapt to new measurements has made it a valuable tool in these areas.
Use Cases in Financial Markets
1. Trend Identification:
The Kalman Filter can smooth out market price data, helping to identify the underlying trend amidst the noise. This is particularly useful in algorithmic trading, where identifying the direction and strength of a trend can inform trade entry and exit decisions.
2. Market Prediction:
While no filter can predict the future with certainty, the Kalman Filter can be used to forecast short-term market movements based on current and historical data. It does this by estimating the current state of the market (e.g., the "true" price) and projecting it forward under certain model assumptions.
3. Risk Management:
The Kalman Filter's ability to estimate the volatility (or noise) of the market can be used for risk management. By dynamically adjusting to changes in market conditions, it can help traders adjust their position sizes and stop-loss orders to better manage risk.
4. Pair Trading and Arbitrage:
In pair trading, where the goal is to capitalize on the price difference between two correlated securities, the Kalman Filter can be used to estimate the spread between the pair and identify when the spread deviates significantly from its historical average, indicating a trading opportunity.
5. Optimal Asset Allocation:
The filter can also be applied in portfolio management to dynamically adjust the weights of different assets in a portfolio based on their estimated risks and returns, optimizing the portfolio's performance over time.
Advantages in Financial Applications
Adaptability: The Kalman Filter continuously updates its estimates with each new data point, making it well-suited to markets that are constantly changing.
Efficiency: It processes data and updates estimates in real-time, which is crucial for high-frequency trading strategies.
Handling Noise: Its ability to distinguish between the signal (e.g., the true price trend) and noise (e.g., random fluctuations) is particularly valuable in financial markets, where price data can be highly volatile.
Challenges and Considerations
Model Assumptions: The effectiveness of the Kalman Filter in financial applications depends on the accuracy of the model used to describe market dynamics. Financial markets are complex and influenced by numerous factors, making model selection critical.
Parameter Sensitivity: The filter's performance can be sensitive to the choice of parameters, such as the process and measurement noise values. These need to be carefully selected and potentially adjusted over time.
Despite these challenges, the Kalman Filter remains a potent tool in the quantitative trader's arsenal, offering a sophisticated method to extract useful information from noisy financial data. Its use in trading strategies should, however, be complemented with sound risk management practices and an awareness of the limitations inherent in any model-based approach to trading.
Kalman Filter by TenozenAnother useful indicator is here! Kalman Filter is a quantitative tool created by Rudolf E. Kalman. In the case of trading, it can help smooth out the price data that traders observe, making it easier to identify underlying trends. The Kalman Filter is particularly useful for handling price data that is noisy and unpredictable. As an adaptive-based algorithm, it can easily adjust to new data, which makes it a handy tool for traders operating in markets that are prone to change quickly.
Many people may assume that the Kalman Filter is the same as a Moving Average, but that is not the case. While both tools aim to smooth data and find trends, they serve different purposes and have their own sets of advantages and disadvantages. The Kalman Filter provides a more dynamic and adaptive approach, making it suitable for real-time analysis and predictive capabilities, but it is also more complex. On the other hand, Moving Averages offer a simpler and more intuitive way to visualize trends, which makes them a popular choice among traders for technical analysis. However, the Moving Average is a lagging indicator and less adaptive to market change, if it's adjusted it may result in overfitting. In this case, the Kalman Filter would be a better choice for smoothing the price up.
I hope you find this indicator useful! It's been an exciting and extensive journey since I began diving into the world of finance and trading. I'll keep you all updated on any new indicators I discover that could benefit the community in the future. Until then, take care, and happy trading! Ciao.
Kalman Filtered ROC & Stochastic with MA SmoothingThe "Smooth ROC & Stochastic with Kalman Filter" indicator is a trend following tool designed to identify trends in the price movement. It combines the Rate of Change (ROC) and Stochastic indicators into a single oscillator, the combination of ROC and Stochastic indicators aims to offer complementary information: ROC measures the speed of price change, while Stochastic identifies overbought and oversold conditions, allowing for a more robust assessment of market trends and potential reversals. The indicator plots green "B" labels to indicate buy signals and blue "S" labels to represent sell signals. Additionally, it displays a white line that reflects the overall trend for buy signals and a blue line for sell signals. The aim of the indicator is to incorporate Kalman and Moving Average (MA) smoothing techniques to reduce noise and enhance the clarity of the signals.
Rationale for using Kalman Filter:
The Kalman Filter is chosen as a smoothing tool in the indicator because it effectively reduces noise and fluctuations. The Kalman Filter is a mathematical algorithm used for estimating and predicting the state of a system based on noisy and incomplete measurements. It combines information from previous states and current measurements to generate an optimal estimate of the true state, while simultaneously minimizing the effects of noise and uncertainty. In the context of the indicator, the Kalman Filter is applied to smooth the input data, which is the source for the Rate of Change (ROC) calculation. By considering the previous smoothed state and the difference between the current measurement and the predicted value, the Kalman Filter dynamically adjusts its estimation to reduce the impact of outliers.
Calculation:
The indicator utilizes a combination of the ROC and the Stochastic indicator. The ROC is smoothed using a Kalman Filter (credit to © Loxx: ), which helps eliminate unwanted fluctuations and improve the signal quality. The Stochastic indicator is calculated with customizable parameters for %K length, %K smoothing, and %D smoothing. The smoothed ROC and Stochastic values are then averaged using the formula ((roc + d) / 2) to create the blended oscillator. MA smoothing is applied to the combined oscillator aiming to further reduce fluctuations and enhance trend visibility. Traders are free to choose their own preferred MA type from 'EMA', 'DEMA', 'TEMA', 'WMA', 'VWMA', 'SMA', 'SMMA', 'HMA', 'LSMA', and 'PEMA' (credit to: © traderharikrishna for this code: ).
Application:
The indicator's buy signals (represented by green "B" labels) indicate potential entry points for buying assets, suggesting a bullish trend. The white line visually represents the trend, helping traders identify and follow the upward momentum. Conversely, the sell signals (blue "S" labels) highlight possible exit points or opportunities for short selling, indicating a bearish trend. The blue line illustrates the bearish movement, aiding in the identification of downward momentum.
The "Smoothed ROC & Stochastic" indicator offers traders a comprehensive view of market trends by combining two powerful oscillators. By incorporating the ROC and Stochastic indicators into a single oscillator, it provides a more holistic perspective on the market's momentum. The use of a Kalman Filter for smoothing helps reduce noise and enhance the accuracy of the signals. Additionally, the indicator allows customization of the smoothing technique through various moving average types. Traders can also utilize the overbought and oversold zones for additional analysis, providing insights into potential market reversals or extreme price conditions. Please note that future performance of any trading strategy is fundamentally unknowable, and past results do not guarantee future performance.
Local Model Kalman Market ModeIntroduction
Heyo guys, I made a new (repainting) indicator called Local Model Kalman Market Mode.
I created it, because I wanted a reliable market mode filter for a potential mean-reversion strategy (e. g. BB Scalping).
On the screenshot you can see an example of how to use it in a BB strategy.
E.g. you would enter long when you have bullish divergence, price is under lower BB, price is under PoC and this indicator here shows range-bound market phase.
You would exit long on cross of the middle band.
Description
The indicator attempts to model the underlying market using different local models (i.e., trending, range-bound, and choppy) and combines them using the T3 Six Pole Kalman Filter to generate an overall estimate of the market.
The Fisher Transform is applied on the price to reach a Gaussian distribution, which increases the accuracy of the indicator itself.
The script first defines state variables for each local model, which include trend direction, trend strength, upper and lower bounds of the range, volatility of the range, level of choppiness, and strength of noise.
Then, likelihood functions are defined for each local model based on the state variables.
Next, the script calculates weights for each local model based on their likelihoods and uses them to calculate state variables for the overall estimate.
Finally, the script combines the state variables using the T3 Six Pole Kalman Filter to generate the overall estimate of the market, which is plotted in blue.
Fundamental Knowledge
To understand the explanation of the indicator and the script, there are a few fundamental concepts that you need to know:
Market: A market is a place where buyers and sellers come together to exchange goods or services.
In the context of trading, the market refers to the exchange where financial instruments such as stocks, currencies, and commodities are bought and sold.
Local models: Local models are statistical models that attempt to capture the characteristics of a particular market regime.
For example, a trending market may have different characteristics than a range-bound market or a choppy market.
The indicator uses different local models to capture the different market regimes.
Trend direction and strength: The trend direction refers to the direction in which the market is moving, either up or down.
The trend strength refers to the magnitude of the trend and how likely it is to continue.
Range-bound market: A range-bound market is a market where prices are trading within a specific range, with a clear upper and lower bound.
Choppiness: Choppiness refers to the degree of irregularity in price movements, often seen in sideways or range-bound markets.
Volatility: Volatility refers to the degree of variation in the price of an asset over time. High volatility implies larger price swings, while low volatility implies smaller price swings.
Kalman filter: A Kalman filter is a mathematical algorithm used to estimate an unknown variable from a series of noisy measurements.
In the context of the indicator, the Kalman filter is used to generate an overall estimate of the market by combining the local models.
T3 Six Pole Kalman Filter: The T3 Six Pole Kalman Filter is a specific type of Kalman filter that is used to smooth and filter time-series data, such as the price data of a financial instrument.
Fisher Transform: The Fisher Transform is a mathematical formula used to transform any probability distribution into a Gaussian normal distribution. It is commonly used in technical analysis to transform non-Gaussian indicators into ones that are more suitable for statistical analysis.
By understanding these fundamental concepts, you should have a basic understanding of how the indicator works and how it generates an overall estimate of the market.
Usage
You can use this indicator on every timeframe.
Users can customize the parameters of the T3 Six Pole Kalman Filter (T3 length, alpha, beta, gamma, and delta) using input functions.
Try out different parameter combinations and use the one you like most.
Thank you for checking this out. Leave me a comment or boost the script, when you wanna support me! 👌
--
Credits to:
▪@HPotter - Fisher Transform
▪@loxx - T3
▪ChatGPT - Helped me to make the research for this indicator and helped to build the core algorithm.
HMA-Kahlman Trend & Trendlines (v.2)This is an upgrade to the HMA-Kahlman Trend & Trendlines script ().
This version gives more flexibility because you can play around with 2 parameters to Kalman function (Sharpness and K (aka. step size)).
R-squared Adaptive T3 [Loxx]R-squared Adaptive T3 is an R-squared adaptive version of Tilson's T3 moving average. This adaptivity was originally proposed by mladen on various forex forums. This is considered experimental but shows how to use r-squared adapting methods to moving averages. In theory, the T3 is a six-pole non-linear Kalman filter.
What is the T3 moving average?
Better Moving Averages Tim Tillson
November 1, 1998
Tim Tillson is a software project manager at Hewlett-Packard, with degrees in Mathematics and Computer Science. He has privately traded options and equities for 15 years.
Introduction
"Digital filtering includes the process of smoothing, predicting, differentiating, integrating, separation of signals, and removal of noise from a signal. Thus many people who do such things are actually using digital filters without realizing that they are; being unacquainted with the theory, they neither understand what they have done nor the possibilities of what they might have done."
This quote from R. W. Hamming applies to the vast majority of indicators in technical analysis. Moving averages, be they simple, weighted, or exponential, are lowpass filters; low frequency components in the signal pass through with little attenuation, while high frequencies are severely reduced.
"Oscillator" type indicators (such as MACD, Momentum, Relative Strength Index) are another type of digital filter called a differentiator.
Tushar Chande has observed that many popular oscillators are highly correlated, which is sensible because they are trying to measure the rate of change of the underlying time series, i.e., are trying to be the first and second derivatives we all learned about in Calculus.
We use moving averages (lowpass filters) in technical analysis to remove the random noise from a time series, to discern the underlying trend or to determine prices at which we will take action. A perfect moving average would have two attributes:
It would be smooth, not sensitive to random noise in the underlying time series. Another way of saying this is that its derivative would not spuriously alternate between positive and negative values.
It would not lag behind the time series it is computed from. Lag, of course, produces late buy or sell signals that kill profits.
The only way one can compute a perfect moving average is to have knowledge of the future, and if we had that, we would buy one lottery ticket a week rather than trade!
Having said this, we can still improve on the conventional simple, weighted, or exponential moving averages. Here's how:
Two Interesting Moving Averages
We will examine two benchmark moving averages based on Linear Regression analysis.
In both cases, a Linear Regression line of length n is fitted to price data.
I call the first moving average ILRS, which stands for Integral of Linear Regression Slope. One simply integrates the slope of a linear regression line as it is successively fitted in a moving window of length n across the data, with the constant of integration being a simple moving average of the first n points. Put another way, the derivative of ILRS is the linear regression slope. Note that ILRS is not the same as a SMA (simple moving average) of length n, which is actually the midpoint of the linear regression line as it moves across the data.
We can measure the lag of moving averages with respect to a linear trend by computing how they behave when the input is a line with unit slope. Both SMA(n) and ILRS(n) have lag of n/2, but ILRS is much smoother than SMA.
Our second benchmark moving average is well known, called EPMA or End Point Moving Average. It is the endpoint of the linear regression line of length n as it is fitted across the data. EPMA hugs the data more closely than a simple or exponential moving average of the same length. The price we pay for this is that it is much noisier (less smooth) than ILRS, and it also has the annoying property that it overshoots the data when linear trends are present.
However, EPMA has a lag of 0 with respect to linear input! This makes sense because a linear regression line will fit linear input perfectly, and the endpoint of the LR line will be on the input line.
These two moving averages frame the tradeoffs that we are facing. On one extreme we have ILRS, which is very smooth and has considerable phase lag. EPMA has 0 phase lag, but is too noisy and overshoots. We would like to construct a better moving average which is as smooth as ILRS, but runs closer to where EPMA lies, without the overshoot.
A easy way to attempt this is to split the difference, i.e. use (ILRS(n)+EPMA(n))/2. This will give us a moving average (call it IE/2) which runs in between the two, has phase lag of n/4 but still inherits considerable noise from EPMA. IE/2 is inspirational, however. Can we build something that is comparable, but smoother? Figure 1 shows ILRS, EPMA, and IE/2.
Filter Techniques
Any thoughtful student of filter theory (or resolute experimenter) will have noticed that you can improve the smoothness of a filter by running it through itself multiple times, at the cost of increasing phase lag.
There is a complementary technique (called twicing by J.W. Tukey) which can be used to improve phase lag. If L stands for the operation of running data through a low pass filter, then twicing can be described by:
L' = L(time series) + L(time series - L(time series))
That is, we add a moving average of the difference between the input and the moving average to the moving average. This is algebraically equivalent to:
2L-L(L)
This is the Double Exponential Moving Average or DEMA, popularized by Patrick Mulloy in TASAC (January/February 1994).
In our taxonomy, DEMA has some phase lag (although it exponentially approaches 0) and is somewhat noisy, comparable to IE/2 indicator.
We will use these two techniques to construct our better moving average, after we explore the first one a little more closely.
Fixing Overshoot
An n-day EMA has smoothing constant alpha=2/(n+1) and a lag of (n-1)/2.
Thus EMA(3) has lag 1, and EMA(11) has lag 5. Figure 2 shows that, if I am willing to incur 5 days of lag, I get a smoother moving average if I run EMA(3) through itself 5 times than if I just take EMA(11) once.
This suggests that if EPMA and DEMA have 0 or low lag, why not run fast versions (eg DEMA(3)) through themselves many times to achieve a smooth result? The problem is that multiple runs though these filters increase their tendency to overshoot the data, giving an unusable result. This is because the amplitude response of DEMA and EPMA is greater than 1 at certain frequencies, giving a gain of much greater than 1 at these frequencies when run though themselves multiple times. Figure 3 shows DEMA(7) and EPMA(7) run through themselves 3 times. DEMA^3 has serious overshoot, and EPMA^3 is terrible.
The solution to the overshoot problem is to recall what we are doing with twicing:
DEMA(n) = EMA(n) + EMA(time series - EMA(n))
The second term is adding, in effect, a smooth version of the derivative to the EMA to achieve DEMA. The derivative term determines how hot the moving average's response to linear trends will be. We need to simply turn down the volume to achieve our basic building block:
EMA(n) + EMA(time series - EMA(n))*.7;
This is algebraically the same as:
EMA(n)*1.7-EMA(EMA(n))*.7;
I have chosen .7 as my volume factor, but the general formula (which I call "Generalized Dema") is:
GD(n,v) = EMA(n)*(1+v)-EMA(EMA(n))*v,
Where v ranges between 0 and 1. When v=0, GD is just an EMA, and when v=1, GD is DEMA. In between, GD is a cooler DEMA. By using a value for v less than 1 (I like .7), we cure the multiple DEMA overshoot problem, at the cost of accepting some additional phase delay. Now we can run GD through itself multiple times to define a new, smoother moving average T3 that does not overshoot the data:
T3(n) = GD(GD(GD(n)))
In filter theory parlance, T3 is a six-pole non-linear Kalman filter. Kalman filters are ones which use the error (in this case (time series - EMA(n)) to correct themselves. In Technical Analysis, these are called Adaptive Moving Averages; they track the time series more aggressively when it is making large moves.
Included:
Bar coloring
Signals
Alerts
Loxx's Expanded Source Types