STD-Filtered, N-Pole Gaussian Filter [Loxx]This is a Gaussian Filter with Standard Deviation Filtering that works for orders (poles) higher than the usual 4 poles that was originally available in Ehlers Gaussian Filter formulas. Because of that, it is a sort of generalized Gaussian filter that can calculate arbitrary (order) pole Gaussian Filter and which makes it a sort of a unique indicator. For this implementation, the practical mathematical maximum is 15 poles after which the precision of calculation is useless--the coefficients for levels above 15 poles are so high that the precision loss actually means very little. Despite this maximal precision utility, I've left the upper bound of poles open-ended so you can try poles of order 15 and above yourself. The default is set to 5 poles which is 1 pole greater than the normal maximum of 4 poles.
The purpose of the standard deviation filter is to filter out noise by and by default it will filter 1 standard deviation. Adjust this number and the filter selections (price, both, GMA, none) to reduce the signal noise.
What is Ehlers Gaussian filter?
This filter can be used for smoothing. It rejects high frequencies (fast movements) better than an EMA and has lower lag. published by John F. Ehlers in "Rocket Science For Traders".
A Gaussian filter is one whose transfer response is described by the familiar Gaussian bell-shaped curve. In the case of low-pass filters, only the upper half of the curve describes the filter. The use of gaussian filters is a move toward achieving the dual goal of reducing lag and reducing the lag of high-frequency components relative to the lag of lower-frequency components.
A gaussian filter with...
One Pole: f = alpha*g + (1-alpha)f
Two Poles: f = alpha*2g + 2(1-alpha)f - (1-alpha)2f
Three Poles: f = alpha*3g + 3(1-alpha)f - 3(1-alpha)2f + (1-alpha)3f
Four Poles: f = alpha*4g + 4(1-alpha)f - 6(1-alpha)2f + 4(1-alpha)3f - (1-alpha)4f
and so on...
For an equivalent number of poles the lag of a Gaussian is about half the lag of a Butterworth filters: Lag = N*P / pi^2, where,
N is the number of poles, and
P is the critical period
Special initialization of filter stages ensures proper working in scans with as few bars as possible.
From Ehlers Book: "The first objective of using smoothers is to eliminate or reduce the undesired high-frequency components in the eprice data. Therefore these smoothers are called low-pass filters, and they all work by some form of averaging. Butterworth low-pass filters can do this job, but nothing comes for free. A higher degree of filtering is necessarily accompanied by a larger amount of lag. We have come to see that is a fact of life."
References John F. Ehlers: "Rocket Science For Traders, Digital Signal Processing Applications", Chapter 15: "Infinite Impulse Response Filters"
Included
Loxx's Expanded Source Types
Signals
Alerts
Bar coloring
Related indicators
STD-Filtered, Gaussian Moving Average (GMA)
STD-Filtered, Gaussian-Kernel-Weighted Moving Average
One-Sided Gaussian Filter w/ Channels
Fisher Transform w/ Dynamic Zones
R-sqrd Adapt. Fisher Transform w/ D. Zones & Divs .
Meanreversion
+ Dynamic Fibo-Donchian ChannelsThis is my second Donchian Channels indicator (and will probably be my last because how many does one really need). This version is different from my other one in that, well, it's 'dynamic' which simply means that it self adjusts based on the same formula that my Ultimate Moving Average does. What does that mean? It just means that the script takes an average of 8 different length, in this case, highest highs and lowest lows. The user doesn't need to pick a lookback/length/period/what-have-you. The indicator does it all itself. This, I think, makes for a very nice baseline or bias indicator to fit within a system that utilizes something like that. I also think it makes for a more accurate gauge of higher highs and lower lows within a timeframe, because honestly what does it mean to make a lower low over 20 periods or 8 periods or 50 periods? I don't know. What I do know is that traditional Donchian Channels never made much sense to me, but this does.
Additionally, I've kept (I guess that's not 'additionally') the fibonacci retracement levels from my other Donchian Channels indicator. These are calculated off the high and the low of the Donchian Channels themselves. You will see that there are only three retracement levels (.786, .705, .382), one of which is not a fib level, but what some people call the 'OTE,' or 'optimal trade entry.'' If you want more info on the OTE just web search it. So, why no .618 or .236? Reason being that the .618 overlaps the .382, and the .236 is extremely close to the .786. This sounds confusing, but the retracement levels I'm using are derived from the high and low, so it was unnecessary to have all five levels from each. I could have just calculated from the high, or just from the low, and used all the levels, but I chose to just calculate three levels from the high and three from the low because that gives a sort of mirror image balance, and that appeals to me, and the utility of the indicator is the same.
The plot lines are all colored, and I've filled certain zones between them. There is a center zone filled between both .382 levels, an upper and lower zon filled between the .786 and either the high or the low, and a zone between the .705 and .785
If you like the colored zones, but don't like the plots because they cause screen compression, turn off the plots under the "style" tab, or much more simply right click on the price scale and click 'scale price chart only.' Voila! No more screen compression due to a moving average or some other annoyance.
Besides that basis being a nice baseline indicator the various fib bands (or just the high and low bands) make for excellent mean reversion extremes in ranging environments.
There are alerts for candle closes across every line.
Below is an image of the indicator at default settings.
Below is an image of the indicator with the center .382 channel turned off.
Below is an image of the indicator with just the .786/.705 channel showing .
KAIRI RELATIVE INDEXAn old but gold Japanese indicator for Mean Reverting strategies and ideal for Pairs Trading...
The Kairi Relative Index measures the distance between closing prices and a Moving Average in percent value (generally SMA).
Extreme reading in the KRI are considered buy and sell signals.
Extreme readings will vary by asset, with more volatile assets reaching much higher and lower extremes that more sedate assets.
The KRI is not an accurate timing signal, and therefore, should be combined with other forms of analysis to generate trade signals.
You can calculate percent difference between the price and 10 different types of Moving Averages in this version of KAIRI as:
SMA : Simple Moving Average
EMA : Exponential Moving Average
WMA : Weighted Moving Average
TMA : Triangular Moving Average
VAR : Variable Index Dynamic Moving Average a.k.a. VIDYA
WWMA : Welles Wilder's Moving Average
ZLEMA : Zero Lag Exponential Moving Average
TSF : True Strength Force
HULL : Hull Moving Average
VWMA: Volume Veighted Moving Average
Personal advice: try using bigger length of Moving Averages like 50-100-200 for pairs and mean reversion strategies
[Sidders]Std. Deviation from Mean/MA (Z-score)This indicator visualizes in a straight forward way the distance price is away from the mean in absolute standard deviations (Z-score) over a certain lookback period (can be configured). Additionally I've included a moving average of the distance, the MA type can be configured in the settings.
Personally using this indicator for some of my algo mean reversion strategies. Price reaching the extreme treshold (can be configured in settings, standard is 3) could be seen as a point where price will revert to the mean.
I've included alerts for when price crosses into extreme areas, as well as alerts for when crosses back into 'normal' territory again. Both are also plotted on the indicator through background coloring/shapes.
Since I've learned so much from other developers I've decided to open source the code. Let me know if you have any ideas on how to improve, I'll see if I can implement them.
Enjoy!
Peak Reversal v2This is a brand new version of my Peak Reversal indicator. As with the older version, the idea behind this indicator is simple: identify potential price reversal areas, and identifying markets which are trending. In this new version I focused on improving on the old concept, but introduced a bunch of features heavily inspired by Adam Grimes' ideas from The Art and Science of Trading. (I also blatantly stole the way he colors candles outside of the bands. Sorry.)
As you can see below this indicator gives traders a plethora of tools to judge whether a market is trending, and might be mean reverting soon.
Follow me, join my group, like the script. You know the drill.
Basic functions:
You have a triplet of Keltner (ATR-based) bands in Peak Reversal. They are defined by a multiplier and an EMA, which is referred to as "the mean". There's a tight, normal, and an extreme band. The multiplier defines how far apart your bands are. By default the indicator uses 1.125, 2.25, and 3.375. The tight band is off by default, but you can turn it on in the options. The mean is also off by default. This is more a personal preference thing for me, because I happen to use a different indicator to show a couple of moving averages.
Band crosses:
Peak Reversal can indicate whenever price crosses one of the bands. This can help traders identify points where a mean reversal play could be an option. Triangles indicate these crosses. New in version 2 is the ability to choose which of the bands to use to show these crosses. If you are more of an aggressive trader, you might find it better to show tight band crosses. If you are looking for more extreme market conditions, then choose extreme. The default is "normal".
Free bars:
Indicating free bars is also a concept from the book. A "free bar" is one which stands "freely" above the bands, which means its low price is completely outside of the bands. It can be argued that a freely standing bar is an even more extreme mean deviation, than just a band cross. Traders can gain an additional advantage studying the markets this way. Free bars are not shown by default, when on, a star shape on the candles indicates free bars. Both band crosses and free bars can be shown at the same time, but there might be overlap.
Deviations:
Also based on a concept from The Art and Science of Trading, is an indication of price "deviations". You will notice that when a candle "touches" a band (high and close above band), its colored. The idea here is to show traders when a market is in motion, but also when a mean reversal might be coming next. To accomplish this, the more colors deviate, the darker the color is. The idea here is also simple, the more price deviates off the mean, the likelier it is to return to it. This uses three different shades to show these deviations. 1-2 is one shade, 3-4 another, and upwards of 5 there's only the darkest shade. I didn't make extensive studies, which color for how many candles would be appropriate to use, but I do believe it doesn't matter that much in usage. It's clear what traders gain from using this information: more deviation, the likelier a snapback becomes.
Advanced mode:
Last but not least, I decided to add an advanced mode for advanced traders. This does nothing more than flip all colors and shapes upside down. Everything that is red, becomes green. The idea is where some traders say "buy low, sell high" (standard mode), other traders might say "buy high, sell higher" (advanced mode). See for yourself, which one you like better.
Infiten's Return Candle OscillatorInfiten's Return Candle Oscillator is an oscillator which shows the percentage return on the open, high, close and low over a customizable period in the form of candlesticks. It may be helpful for seeing volatility, swing trading, or mean reversion trading.
The RCO consists of two plotted elements :
RCO Candles (short length): candlesticks which are plotted with low = the product of the percentage changes in the low over a period, high = the product of the percentage changes in the high over a period, close = the product of the percent changes in close over a period, and open = the product of the percentage changes in return over a period. Similarly to with standard candlesticks, if the percentage change on the close is higher than the percentage change on the open, the candlestick is green, otherwise it is red.
Smoothed RCO Line (long length) : a moving average of the average of the low, close, open and high calculated for the RCO Candles. The line's transparency is determined by the percentage difference between the RCO and the highest or lowest RCO over the long length. A more transparent line means that the RCO is closer to the highest or lowest RCO, and may be indicative of a reversal, or weakening trend.
LNL Keltner ExhaustionLNL Keltner Exhaustion resolves the constant issue of Bands vs. EMAs
With the keltner exhaustion wedges, you can easily see the keltner channel extremes witout using the actual bands. That way, you will know whether the price is outside of the keltner channels + you can use other indicators (such as EMAs) on chart without the bands so the chart does not look messy & hard to read.
Two Types of Wedges:
1. Green/Red Wedge - Price action is extended outside the regular band. More of a "profit taking" zone rather than "entry taking" (default set to 3.0 ATR factor).
2. Purple Wedge - Price action is extended outside of the extreme band. Chances are price will revert to mean soon (default set to 4.0 ATR factor).
Works great as a target tool with the squeeze setup or as an overall extension gauge.
Hope it helps.
LS Volatility Index█ OVERVIEW
This indicator serves to measure the volatility of the price in relation to the average.
It serves four purposes:
1. Identify abnormal prices, extremely stretched in relation to an average;
2. Identify acceptable prices in the context of the main trend;
3. Identify market crashes;
4. Identify divergences.
█ CONCEPTS
The LS Volatility Index was originally described by Brazilian traders Alexandre Wolwacz (Stormer) , Fabrício Lorenz , and Fábio Figueiredo (Vlad)
Basically, this indicator can be used in two ways:
1. In a mean reversion strategy , when there is an unusual distance from it;
2. In a trend following strategy , when the price is in an acceptable region.
Perhaps the version presented here may have some slight differences, but the core is the same.
The original indicator is presented with a 21-period moving average, but here this value is customizable.
I made some fine tuning available, namely:
1. The possibility of smoothing the indicator;
2. Choose the type of moving average;
3. Customizable period;
4. Possibility to show a moving average of the indicator;
5. Color customization.
█ CALCULATION
First, the distance of the price from a given average in percentage terms is measured.
Then, the historical average volatility is obtained.
Finally the indicator is calculated through the ratio between the distance and the historical volatility.
To facilitate visualization, the result is normalized in a range from 0 to 100.
When it reaches 0, it means the price is on average.
When it hits 100, it means the price is way off average (stretched).
█ HOW TO USE IT
Here are some examples:
1. In a return-to-average strategy
2. In a trend following strategy
3. Identification of crashes and divergences
█ THANKS AND CREDITS
- Alexandre Wolwacz (Stormer), Fabrício Lorenz, Fábio Figueiredo (Vlad)
- Feature scaler (for normalization)
- HPotter (for calc of Historical Volatility)
Trend Day IndentificationVolatility is cyclical, after a large move up or down the market typically "ranges" during the next session. Directional order flow that enters the market during this subsequent session tends not to persist, this non-persistency of transactions leads to a non-trend day which is when I trade intraday reversionary strategies.
This script finds trend days in BTC with the purpose of:
1) counting trend day frequency
2) predicting range contraction for the next 1-2 days so I can run intraday reversion strategies
Trend down is defined as daily bar opening within X% of high and closing within X% of low
Trend up is defined as daily bar opening within X% of low and closing within X% of high
default parameters are:
1) open range extreme = 15% (open is within 15% of high or low)
2) close range extreme = 15% (close is within 15% of high or low)
There is also an atr filter that checks that the trend day has a larger range than the previous 4 bars this is to make sure we find true range expansion vs recent ranges.
Notes:
If a trend day occurs after a prolonged sideways contraction it can signal a breakout - this is less common but is an exception to the rule. These types of occurrences can lead to the persistency of order flow and result in extended directional daily runs.
If a trend day occurs close to 20 days high or low (stopping just short OR pushing slightly through) then wait an additional day before trading intraday reversion strategies.
Mean Shift Pivot ClusteringCore Concepts
According to Jeff Greenblatt in his book "Breakthrough Strategies for Predicting Any Market", Fibonacci and Lucas sequences are observed repeated in the bar counts from local pivot highs/lows. They occur from high to high, low to high, high to low, or low to high. Essentially, this phenomenon is observed repeatedly from any pivot points on any time frame. Greenblatt combines this observation with Elliott Waves to predict the price and time reversals. However, I am no Elliottician so it was not easy for me to use this in a practical manner. I decided to only use the bar count projections and ignore the price. I projected a subset of Fibonacci and Lucas sequences along with the Fibonacci ratios from each pivot point. As expected, a projection from each pivot point resulted in a large set of plotted data and looks like a huge gong show of lines. Surprisingly, I did notice clusters and have observed those clusters to be fairly accurate.
Fibonacci Sequence: 1, 2, 3, 5, 8, 13, 21, 34...
Lucas Sequence: 2, 1, 3, 4, 7, 11, 18, 29, 47...
Fibonacci Ratios (converted to whole numbers): 23, 38, 50, 61, 78, 127, 161...
Light Bulb Moment
My eyes may suck at grouping the lines together but what about clustering algorithms? I chose to use a gimped version of Mean Shift because it doesn't require me to know in advance how many lines to expect like K-Means. Mean shift is computationally expensive and with Pinescript's 500ms timeout, I had to make due without the KDE. In other words, I skipped the weighting part but I may try to incorporate it in the future. The code is from Harrison Kinsley . He's a fantastic teacher!
Usage
Search Radius: how far apart should the bars be before they are excluded from the cluster? Try to stick with a figure between 1-5. Too large a figure will give meaningless results.
Pivot Offset: looks left and right X number of bars for a pivot. Same setting as the default TradingView pivot high/low script.
Show Lines Back: show historical predicted lines. (These can change)
Use this script in conjunction with Fibonacci price retracement/extension levels and/or other support/resistance levels. If it's no where near a support/resistance and there's a projected time pivot coming up, it's probably a fake out.
Notes
Re-painting is intended. When a new pivot is found, it will project out the Fib/Lucas sequences so the algorithm will run again with additional information.
The script is for informational and educational purposes only.
Do not use this indicator by itself to trade!
Channel of linear regression of rate of change from the mean The indicator calculates the difference between the closing price and the average as a percentage and after that it calculates the average linear regression and then draws it in the form of a channel.
Preferably use it on 30 min or 15 min or 1 Hour or 2H time frames .
Exiting outside the upper or lower channel limits represents high price inflation, and returning inside the channel means the possibility of the price rising or falling for the average or the other limit of the channel.
Channel lines may represent places of support and resistance.
Nasdaq VXN Volatility Warning IndicatorToday I am sharing with the community a volatility indicator that uses the Nasdaq VXN Volatility Index to help you or your algorithms avoid black swan events. This is a similar the indicator I published last week that uses the SP500 VIX, but this indicator uses the Nasdaq VXN and can help inform strategies on the Nasdaq index or Nasdaq derivative instruments.
Variance is most commonly used in statistics to derive standard deviation (with its square root). It does have another practical application, and that is to identify outliers in a sample of data. Variance is defined as the squared difference between a value and its mean. Calculating that squared difference means that the farther away the value is from the mean, the more the variance will grow (exponentially). This exponential difference makes outliers in the variance data more apparent.
Why does this matter?
There are assets or indices that exist in the stock market that might make us adjust our trading strategy if they are behaving in an unusual way. In some instances, we can use variance to identify that behavior and inform our strategy.
Is that really possible?
Let’s look at the relationship between VXN and the Nasdaq100 as an example. If you trade a Nasdaq index with a mean reversion strategy or algorithm, you know that they typically do best in times of volatility . These strategies essentially attempt to “call bottom” on a pullback. Their downside is that sometimes a pullback turns into a regime change, or a black swan event. The other downside is that there is no logical tight stop that actually increases their performance, so when they lose they tend to lose big.
So that begs the question, how might one quantitatively identify if this dip could turn into a regime change or black swan event?
The Nasdaq Volatility Index ( VXN ) uses options data to identify, on a large scale, what investors overall expect the market to do in the near future. The Volatility Index spikes in times of uncertainty and when investors expect the market to go down. However, during a black swan event, historically the VXN has spiked a lot harder. We can use variance here to identify if a spike in the VXN exceeds our threshold for a normal market pullback, and potentially avoid entering trades for a period of time (I.e. maybe we don’t buy that dip).
Does this actually work?
In backtesting, this cut the drawdown of my index reversion strategies in half. It also cuts out some good trades (because high investor fear isn’t always indicative of a regime change or black swan event). But, I’ll happily lose out on some good trades in exchange for half the drawdown. Lets look at some examples of periods of time that trades could have been avoided using this strategy/indicator:
Example 1 – With the Volatility Warning Indicator, the mean reversion strategy could have avoided repeatedly buying this pullback that led to this asset losing over 75% of its value:
Example 2 - June 2018 to June 2019 - With the Volatility Warning Indicator, the drawdown during this period reduces from 22% to 11%, and the overall returns increase from -8% to +3%
How do you use this indicator?
This indicator determines the variance of VXN against a long term mean. If the variance of the VXN spikes over an input threshold, the indicator goes up. The indicator will remain up for a defined period of bars/time after the variance returns below the threshold. I have included default values I’ve found to be significant for a short-term mean-reversion strategy, but your inputs might depend on your risk tolerance and strategy time-horizon. The default values are for 1hr VXN data/charts. It will pull in variance data for the VXN regardless of which chart the indicator is applied to.
Disclaimer: Open-source scripts I publish in the community are largely meant to spark ideas or be used as building blocks for part of a more robust trade management strategy. If you would like to implement a version of any script, I would recommend making significant additions/modifications to the strategy & risk management functions. If you don’t know how to program in Pine, then hire a Pine-coder. We can help!
S&P500 VIX Volatility Warning IndicatorToday I am sharing with the community a volatility indicator that can help you or your algorithms avoid black swan events. Variance is most commonly used in statistics to derive standard deviation (with its square root). It does have another practical application, and that is to identify outliers in a sample of data. Variance in statistics is defined as the squared difference between a value and its mean. Calculating that squared difference means that the farther away the value is from the mean, the more the variance will grow (exponentially). This exponential difference makes outliers in the variance data more apparent.
Why does this matter?
There are assets or indices that exist in the stock market that might make us adjust our trading strategy if they are behaving in an unusual way. In some instances, we can use variance to identify that behavior and inform our strategy.
Is that really possible?
Let’s look at the relationship between VIX and the S&P500 as an example. If you trade an S&P500 index with a mean reversion strategy or algorithm, you know that they typically do best in times of volatility. These strategies essentially attempt to “call bottom” on a pullback. Their downside is that sometimes a pullback turns into a regime change, or a black swan event. The other downside is that there is no logical tight stop that actually increases their performance, so when they lose they tend to lose big.
So that begs the question, how might one quantitatively identify if this dip could turn into a regime change or black swan event?
The CBOE Volatility Index (VIX) uses options data to identify, on a large scale, what investors overall expect the market to do in the near future. The Volatility Index spikes in times of uncertainty and when investors expect the market to go down. However, during a black swan event, the VIX spikes a lot harder. We can use variance here to identify if a spike in the VIX exceeds our threshold for a normal market pullback, and potentially avoid entering trades for a period of time (I.e. maybe we don’t buy that dip).
Does this actually work?
In backtesting, this cut the drawdown of my index reversion strategies in half. It also cuts out some good trades (because high investor fear isn’t always indicative of a regime change or black swan event). But, I’ll happily lose out on some good trades in exchange for half the drawdown. Lets look at some examples of periods of time that trades could have been avoided using this strategy/indicator:
Example 1 – With the Volatility Warning Indicator, the mean reversion strategy could have avoided repeatedly buying this pullback that led to SPXL losing over 75% of its value:
Example 2 - June 2018 to June 2019 - With the Volatility Warning Indicator, the drawdown during this period reduces from 22% to 11%, and the overall returns increase from -8% to +3%
How do you use this indicator?
This indicator determines the variance of the VIX against a long term mean. If the variance of the VIX spikes over an input threshold, the indicator goes up. The indicator will remain up for a defined period of bars/time after the variance returns below the threshold. I have included default values I’ve found to be significant for a short-term mean-reversion strategy, but your inputs might depend on your risk tolerance and strategy time-horizon. The default values are for 1hr VIX data. It will pull in variance data for the VIX regardless of which chart the indicator is applied to.
Disclaimer : Open-source scripts I publish in the community are largely meant to spark ideas or be used as building blocks for part of a more robust trade management strategy. If you would like to implement a version of any script, I would recommend making significant additions/modifications to the strategy & risk management functions. If you don’t know how to program in Pine, then hire a Pine-coder. We can help!
Deviation BandsThis indicator plots the 1, 2 and 3 standard deviations from the mean as bands of color (hot and cold). Useful in identifying likely points of mean reversion.
Default mean is WMA 200 but can be SMA, EMA, VWMA, and VAWMA.
Calculating the standard deviation is done by first cleaning the data of outliers (configurable).
34 EMA BandsThis is quite a simple script, just plotting a 34EMA on high's and low's of candles. Appears to work wonders though, so here it is.
There is some //'d code which I haven't finished working on, but it looks to be quite similar to Bollinger Bands, just using different math rather than standard deviations from the mean.
The bands itself is pretty self explanatory, price likes to use it as resistance when under it, it can trade inside it and it can use the upper EMA as support when in a strong upward trend.
Augmented Dickey–Fuller (ADF) mean reversion testThe augmented Dickey-Fuller test (ADF) is a statistical test for the tendency of a price series sample to mean revert .
The current price of a mean-reverting series may tell us something about the next move (as opposed, for example, to a geometric Brownian motion). Thus, the ADF test allows us to spot market inefficiencies and potentially exploit this information in a trading strategy.
Mathematically, the mean reversion property means that the price change in the next time period is proportional to the difference between the average price and the current price. The purpose of the ADF test is to check if this proportionality constant is zero. Accordingly, the ADF test statistic is defined as the estimated proportionality constant divided by the corresponding standard error.
In this script, the ADF test is applied in a rolling window with a user-defined lookback length. The calculated values of the ADF test statistic are plotted as a time series. The more negative the test statistic, the stronger the rejection of the hypothesis that there is no mean reversion. If the calculated test statistic is less than the critical value calculated at a certain confidence level (90%, 95%, or 99%), then the hypothesis of a mean reversion is accepted (strictly speaking, the opposite hypothesis is rejected).
Input parameters:
Source - The source of the time series being tested.
Length - The number of points in the rolling lookback window. The larger sample length makes the ADF test results more reliable.
Maximum lag - The maximum lag included in the test, that defines the order of an autoregressive process being implied in the model. Generally, a non-zero lag allows taking into account the serial correlation of price changes. When dealing with price data, a good starting point is lag 0 or lag 1.
Confidence level - The probability level at which the critical value of the ADF test statistic is calculated. If the test statistic is below the critical value, it is concluded that the sample of the price series is mean-reverting. Confidence level is calculated based on MacKinnon (2010) .
Show Infobox - If True, the results calculated for the last price bar are displayed in a table on the left.
More formal background:
Formally, the ADF test is a test for a unit root in an autoregressive process. The model implemented in this script involves a non-zero constant and zero time trend. The zero lag corresponds to the simple case of the AR(1) process, while higher order autoregressive processes AR(p) can be approached by setting the maximum lag of p. The null hypothesis is that there is a unit root, with the alternative that there is no unit root. The presence of unit roots in an autoregressive time series is characteristic for a non-stationary process. Thus, if there is no unit root, the time series sample can be concluded to be stationary, i.e., manifesting the mean-reverting property.
A few more comments:
It should be noted that the ADF test tells us only about the properties of the price series now and in the past. It does not directly say whether the mean-reverting behavior will retain in the future.
The ADF test results don't directly reveal the direction of the next price move. It only tells wether or not a mean-reverting trading strategy can be potentially applicable at the given moment of time.
The ADF test is related to another statistical test, the Hurst exponent. The latter is available on TradingView as implemented by balipour , QuantNomad and DonovanWall .
The ADF test statistics is a negative number. However, it can take positive values, which usually corresponds to trending markets (even though there is no statistical test for this case).
Rigorously, the hypothesis about the mean reversion is accepted at a given confidence level when the value of the test statistic is below the critical value. However, for practical trading applications, the values which are low enough - but still a bit higher than the critical one - can be still used in making decisions.
Examples:
The VIX volatility index is known to exhibit mean reversion properties (volatility spikes tend to fade out quickly). Accordingly, the statistics of the ADF test tend to stay below the critical value of 90% for long time periods.
The opposite case is presented by BTCUSD. During the same time range, the bitcoin price showed strong momentum - the moves away from the mean did not follow by the counter-move immediately, even vice versa. This is reflected by the ADF test statistic that consistently stayed above the critical value (and even above 0). Thus, using a mean reversion strategy would likely lead to losses.
Percentile Rank [racer8]The Percentile is a mathematical tool developed in the field of statistics. It determines how a value compares to a set of values.
There are many applications for this like ...
... determining your rank in your college math class
... your rank in terms of height, weight, economic status, etc.
... determining the 3-month percentile of the current stock price (which is what this indicator performs)
This indicator calculates the percentile rank for the current stock price for n periods.
For example, if the stock's current price is above 80% of the previous stock's prices over a 100-period span, then it has a percentile rank of 80.
For traders, this is extremely valuable information because it tells you if the current stock price is overbought or oversold.
If the stock's price is in the 95th percentile, then it is highly likely that it is OVERBOUGHT, and that it will revert back to the mean price.
Helplful TIP: I recommend that you set the indicator to look back over at LEAST 100 periods for accuracy!
Thanks for reading! 👍
Bitcoin - CME Futures Friday Close
This indicator displays the weekly Friday closing price according to the CME trading hours (Friday 4pm CT).
A horizontal line is displayed until the CME opens again on Sunday 5pm CT.
This indicator is based on the thesis, that during the weekend the Bitcoin price tends to mean reverse to the CME closing price of the prior Friday. The level can also act as support/resistance. This indicator gives a visualization of this key level for the relevant time window.
Furthermore the indicator helps to easily identify, if there is an up or down gap in the CME Bitcoin contract.
Roc Mean Reversion (ValueRay)This Indicator shows the Absolute Rate of Change in correlation to its Moving Average.
Values over 3 (gray dotted line) can savely be considered as a breakout; values over 4.5 got a high mean-reverting chance (red dotted line).
This Indicator can be used in all timeframes, however, i recommend to use it <30m, when you want search for meaningful Mean-Reverting Signals.
Please like, share and subscribe. With your love, im encouraged to write and publish more Indicators.
Percentile - Price vs FundamentalsThis is done in the same lines of below scripts
Drawdown-Price-vs-Fundamentals
Drawdown-Range
Instead of using drawdown, here we are only plotting percentile of drawdown. Also added few more fundamental stats to the indicator. Also using part of the code from Random-Color-Generator/ to automatically generate colors. This in turn uses code from @RicardoSantos for convering color based on HSL to RGB
This is how the study can be used:
Study plots percentile of price and each of the listed fundamentals based on history. History can be chose All time or particular window. If any fundamental or price is near 100 - which means it is nearer to its peak. And if something is near its bottom, it is nearer to its 0th percentile.
Price of the stock is considered undervalued based on historical levels when it is below most of the fundamentals. Price is considered overvalued based on historical levels when it is above all the fundamentals. Please note, being undervalued does not guarantee immediate mean reversion. Stocks can stay undervalued for prolonged time and can go further down. Similarly overvalued stock can stay overvalued for prolonged time before correcting itself or justifying the position. Hence, further discretion needs to be used while using this study.
Few examples:
AMZN seems to be trading in range and so are the fundamentals:
MSFT at peak along with half of the fundamentals. But, debt levels are going up along with margins reducing.
LPX is trading at 15% discount whereas most of the fundamentals are at the peak.
FLGT price seems to have gone down further whereas fundamentals look pretty healthy.
MA Visualizer™TradeChartist MA Visualizer is a Moving Average based indicator aimed to visualize price action in relation to the Moving Average in a visually engaging way.
===================================================================================================================
█ MA Visualizer Features
11 different Moving Averages to choose from the settings to visualize based on MA Visualizer Length (Default - 55 period SMA).
2 Smoothing options (default - 0, 0 uses MA length as Smoothing factor, 1 uses no Smoothing).
4 colour themes to choose from and option to adjust Visualizer Vibrance.
█ Example Charts
1. 1hr chart of OANDA:XAUUSD using 55 period WMA.
2. 15m chart of OANDA:EURUSD using 144 period Tillson T3 MA.
3. 4 hr chart of OANDA:US30USD using 55 period SMMA.
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
===================================================================================================================
HYE Combo Market [Indicator] (Vwap Mean Reversion+Trend Hunter)Indicator version of the strategy:
* Alerts added.
TIPS AND WARNINGS
1-) The standard settings of this combo script is designed and tested with daily timeframe. For lower timeframes, you should change the indicator settings and find the best value for yourself.
2-) Only the mean vwap line is displayed on the graph. For a detailed view, you can delete the "//" marks from the plot codes in the script code.
3-) This is an indicator for educational and experimental purposes. It cannot be considered as investment advice. You should be careful and make your own risk assessment when opening real market trades using this indicator.
HYE Mean Reversion SMAIndicator version of the strategy "HYE Mean Reversion SMA "
"Long", "Short", "Exit Long" and "Exit Short" alarms added.
Use with "Once Per Bar Close".
GMS: GW-VWAPAlright, as per usual with these, I end up adapting an existing indicator to what I want to accomplish. So this is based off the built in VWAP indicator. I added in the gummy worm to easily identify the trend, as well as the related bands to identify potential areas to either reverse position or to trim an existing one.
The middle part of the bands are the gummy worm version of VWAP. It is the VWAP using the high and another VWAP using the low. The black line is HL2 VWAP (technically 3 VWAPs).
The bands follow what I was mentioning above. So the outer most part of the bands are the high & low VWAP (with the same multiplier) and the inner bands are the HL2 VWAP.
Of course you can set whatever input source you want for these. The default is how I use it. If you want to get rid of the bar color just go to the indicator settings and un-select it at the bottom.
Source code is open so feel free to poke around.
Hope this helps,
Andre