Mean Reversion Cloud (Ornstein-Uhlenbeck) // AlgoFyreThe Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator detects mean-reversion opportunities by applying the Ornstein-Uhlenbeck process. It calculates a dynamic mean using an Exponential Weighted Moving Average, surrounded by volatility bands, signaling potential buy/sell points when prices deviate.
TABLE OF CONTENTS
🔶 ORIGINALITY
🔸Adaptive Mean Calculation
🔸Volatility-Based Cloud
🔸Speed of Reversion (θ)
🔶 FUNCTIONALITY
🔸Dynamic Mean and Volatility Bands
🞘 How it works
🞘 How to calculate
🞘 Code extract
🔸Visualization via Table and Plotshapes
🞘 Table Overview
🞘 Plotshapes Explanation
🞘 Code extract
🔶 INSTRUCTIONS
🔸Step-by-Step Guidelines
🞘 Setting Up the Indicator
🞘 Understanding What to Look For on the Chart
🞘 Possible Entry Signals
🞘 Possible Take Profit Strategies
🞘 Possible Stop-Loss Levels
🞘 Additional Tips
🔸Customize settings
🔶 CONCLUSION
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
🔶 ORIGINALITY The Mean Reversion Cloud (Ornstein-Uhlenbeck) is a unique indicator that applies the Ornstein-Uhlenbeck stochastic process to identify mean-reverting behavior in asset prices. Unlike traditional moving average-based indicators, this model uses an Exponentially Weighted Moving Average (EWMA) to calculate the long-term mean, dynamically adjusting to recent price movements while still considering all historical data. It also incorporates volatility bands, providing a "cloud" that visually highlights overbought or oversold conditions. By calculating the speed of mean reversion (θ) through the autocorrelation of log returns, this indicator offers traders a more nuanced and mathematically robust tool for identifying mean-reversion opportunities. These innovations make it especially useful for markets that exhibit range-bound characteristics, offering timely buy and sell signals based on statistical deviations from the mean.
🔸Adaptive Mean Calculation Traditional MA indicators use fixed lengths, which can lead to lagging signals or over-sensitivity in volatile markets. The Mean Reversion Cloud uses an Exponentially Weighted Moving Average (EWMA), which adapts to price movements by dynamically adjusting its calculation, offering a more responsive mean.
🔸Volatility-Based Cloud Unlike simple moving averages that only plot a single line, the Mean Reversion Cloud surrounds the dynamic mean with volatility bands. These bands, based on standard deviations, provide traders with a visual cue of when prices are statistically likely to revert, highlighting potential reversal zones.
🔸Speed of Reversion (θ) The indicator goes beyond price averages by calculating the speed at which the price reverts to the mean (θ), using the autocorrelation of log returns. This gives traders an additional tool for estimating the likelihood and timing of mean reversion, making the signals more reliable in practice.
🔶 FUNCTIONALITY The Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator is designed to detect potential mean-reversion opportunities in asset prices by applying the Ornstein-Uhlenbeck stochastic process. It calculates a dynamic mean through the Exponentially Weighted Moving Average (EWMA) and plots volatility bands based on the standard deviation of the asset's price over a specified period. These bands create a "cloud" that represents expected price fluctuations, helping traders to identify overbought or oversold conditions. By calculating the speed of reversion (θ) from the autocorrelation of log returns, the indicator offers a more refined way of assessing how quickly prices may revert to the mean. Additionally, the inclusion of volatility provides a comprehensive view of market conditions, allowing for more accurate buy and sell signals.
Let's dive into the details:
🔸Dynamic Mean and Volatility Bands The dynamic mean (μ) is calculated using the EWMA, giving more weight to recent prices but considering all historical data. This process closely resembles the Ornstein-Uhlenbeck (OU) process, which models the tendency of a stochastic variable (such as price) to revert to its mean over time. Volatility bands are plotted around the mean using standard deviation, forming the "cloud" that signals overbought or oversold conditions. The cloud adapts dynamically to price fluctuations and market volatility, making it a versatile tool for mean-reversion strategies. 🞘 How it works Step one: Calculate the dynamic mean (μ) The Ornstein-Uhlenbeck process describes how a variable, such as an asset's price, tends to revert to a long-term mean while subject to random fluctuations. In this indicator, the EWMA is used to compute the dynamic mean (μ), mimicking the mean-reverting behavior of the OU process. Use the EWMA formula to compute a weighted mean that adjusts to recent price movements. Assign exponentially decreasing weights to older data while giving more emphasis to current prices. Step two: Plot volatility bands Calculate the standard deviation of the price over a user-defined period to determine market volatility. Position the upper and lower bands around the mean by adding and subtracting a multiple of the standard deviation. 🞘 How to calculate Exponential Weighted Moving Average (EWMA)
The EWMA dynamically adjusts to recent price movements:
mu_t = lambda * mu_{t-1} + (1 - lambda) * P_t
Where mu_t is the mean at time t, lambda is the decay factor, and P_t is the price at time t. The higher the decay factor, the more weight is given to recent data.
Autocorrelation (ρ) and Standard Deviation (σ)
To measure mean reversion speed and volatility: rho = correlation(log(close), log(close ), length) Where rho is the autocorrelation of log returns over a specified period.
To calculate volatility:
sigma = stdev(close, length)
Where sigma is the standard deviation of the asset's closing price over a specified length.
Upper and Lower Bands
The upper and lower bands are calculated as follows:
upper_band = mu + (threshold * sigma)
lower_band = mu - (threshold * sigma)
Where threshold is a multiplier for the standard deviation, usually set to 2. These bands represent the range within which the price is expected to fluctuate, based on current volatility and the mean.
🞘 Code extract // Calculate Returns
returns = math.log(close / close )
// Calculate Long-Term Mean (μ) using EWMA over the entire dataset
var float ewma_mu = na // Initialize ewma_mu as 'na'
ewma_mu := na(ewma_mu ) ? close : decay_factor * ewma_mu + (1 - decay_factor) * close
mu = ewma_mu
// Calculate Autocorrelation at Lag 1
rho1 = ta.correlation(returns, returns , corr_length)
// Ensure rho1 is within valid range to avoid errors
rho1 := na(rho1) or rho1 <= 0 ? 0.0001 : rho1
// Calculate Speed of Mean Reversion (θ)
theta = -math.log(rho1)
// Calculate Volatility (σ)
sigma = ta.stdev(close, corr_length)
// Calculate Upper and Lower Bands
upper_band = mu + threshold * sigma
lower_band = mu - threshold * sigma
🔸Visualization via Table and Plotshapes
The table shows key statistics such as the current value of the dynamic mean (μ), the number of times the price has crossed the upper or lower bands, and the consecutive number of bars that the price has remained in an overbought or oversold state.
Plotshapes (diamonds) are used to signal buy and sell opportunities. A green diamond below the price suggests a buy signal when the price crosses below the lower band, and a red diamond above the price indicates a sell signal when the price crosses above the upper band.
The table and plotshapes provide a comprehensive visualization, combining both statistical and actionable information to aid decision-making.
🞘 Code extract // Reset consecutive_bars when price crosses the mean
var consecutive_bars = 0
if (close < mu and close >= mu) or (close > mu and close <= mu)
consecutive_bars := 0
else if math.abs(deviation) > 0
consecutive_bars := math.min(consecutive_bars + 1, dev_length)
transparency = math.max(0, math.min(100, 100 - (consecutive_bars * 100 / dev_length)))
🔶 INSTRUCTIONS
The Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator can be set up by adding it to your TradingView chart and configuring parameters such as the decay factor, autocorrelation length, and volatility threshold to suit current market conditions. Look for price crossovers and deviations from the calculated mean for potential entry signals. Use the upper and lower bands as dynamic support/resistance levels for setting take profit and stop-loss orders. Combining this indicator with additional trend-following or momentum-based indicators can improve signal accuracy. Adjust settings for better mean-reversion detection and risk management.
🔸Step-by-Step Guidelines
🞘 Setting Up the Indicator
Adding the Indicator to the Chart:
Go to your TradingView chart.
Click on the "Indicators" button at the top.
Search for "Mean Reversion Cloud (Ornstein-Uhlenbeck)" in the indicators list.
Click on the indicator to add it to your chart.
Configuring the Indicator:
Open the indicator settings by clicking on the gear icon next to its name on the chart.
Decay Factor: Adjust the decay factor (λ) to control the responsiveness of the mean calculation. A higher value prioritizes recent data.
Autocorrelation Length: Set the autocorrelation length (θ) for calculating the speed of mean reversion. Longer lengths consider more historical data.
Threshold: Define the number of standard deviations for the upper and lower bands to determine how far price must deviate to trigger a signal.
Chart Setup:
Select the appropriate timeframe (e.g., 1-hour, daily) based on your trading strategy.
Consider using other indicators such as RSI or MACD to confirm buy and sell signals.
🞘 Understanding What to Look For on the Chart
Indicator Behavior:
Observe how the price interacts with the dynamic mean and volatility bands. The price staying within the bands suggests mean-reverting behavior, while crossing the bands signals potential entry points.
The indicator calculates overbought/oversold conditions based on deviation from the mean, highlighted by color-coded cloud areas on the chart.
Crossovers and Deviation:
Look for crossovers between the price and the mean (μ) or the bands. A bullish crossover occurs when the price crosses below the lower band, signaling a potential buying opportunity.
A bearish crossover occurs when the price crosses above the upper band, suggesting a potential sell signal.
Deviations from the mean indicate market extremes. A large deviation indicates that the price is far from the mean, suggesting a potential reversal.
Slope and Direction:
Pay attention to the slope of the mean (μ). A rising slope suggests bullish market conditions, while a declining slope signals a bearish market.
The steepness of the slope can indicate the strength of the mean-reversion trend.
🞘 Possible Entry Signals
Bullish Entry:
Crossover Entry: Enter a long position when the price crosses below the lower band with a positive deviation from the mean.
Confirmation Entry: Use additional indicators like RSI (above 50) or increasing volume to confirm the bullish signal.
Bearish Entry:
Crossover Entry: Enter a short position when the price crosses above the upper band with a negative deviation from the mean.
Confirmation Entry: Look for RSI (below 50) or decreasing volume to confirm the bearish signal.
Deviation Confirmation:
Enter trades when the deviation from the mean is significant, indicating that the price has strayed far from its expected value and is likely to revert.
🞘 Possible Take Profit Strategies
Static Take Profit Levels:
Set predefined take profit levels based on historical volatility, using the upper and lower bands as guides.
Place take profit orders near recent support/resistance levels, ensuring you're capitalizing on the mean-reversion behavior.
Trailing Stop Loss:
Use a trailing stop based on a percentage of the price deviation from the mean to lock in profits as the trend progresses.
Adjust the trailing stop dynamically along the calculated bands to protect profits as the price returns to the mean.
Deviation-Based Exits:
Exit when the deviation from the mean starts to decrease, signaling that the price is returning to its equilibrium.
🞘 Possible Stop-Loss Levels
Initial Stop Loss:
Place an initial stop loss outside the lower band (for long positions) or above the upper band (for short positions) to protect against excessive deviations.
Use a volatility-based buffer to avoid getting stopped out during normal price fluctuations.
Dynamic Stop Loss:
Move the stop loss closer to the mean as the price converges back towards equilibrium, reducing risk.
Adjust the stop loss dynamically along the bands to account for sudden market movements.
🞘 Additional Tips
Combine with Other Indicators:
Enhance your strategy by combining the Mean Reversion Cloud with momentum indicators like MACD, RSI, or Bollinger Bands to confirm market conditions.
Backtesting and Practice:
Backtest the indicator on historical data to understand how it performs in various market environments.
Practice using the indicator on a demo account before implementing it in live trading.
Market Awareness:
Keep an eye on market news and events that might cause extreme price movements. The indicator reacts to price data and might not account for news-driven events that can cause large deviations.
🔸Customize settings 🞘 Decay Factor (λ): Defines the weight assigned to recent price data in the calculation of the mean. A value closer to 1 places more emphasis on recent prices, while lower values create a smoother, more lagging mean.
🞘 Autocorrelation Length (θ): Sets the period for calculating the speed of mean reversion and volatility. Longer lengths capture more historical data, providing smoother calculations, while shorter lengths make the indicator more responsive.
🞘 Threshold (σ): Specifies the number of standard deviations used to create the upper and lower bands. Higher thresholds widen the bands, producing fewer signals, while lower thresholds tighten the bands for more frequent signals.
🞘 Max Gradient Length (γ): Determines the maximum number of consecutive bars for calculating the deviation gradient. This setting impacts the transparency of the plotted bands based on the length of deviation from the mean.
🔶 CONCLUSION
The Mean Reversion Cloud (Ornstein-Uhlenbeck) indicator offers a sophisticated approach to identifying mean-reversion opportunities by applying the Ornstein-Uhlenbeck stochastic process. This dynamic indicator calculates a responsive mean using an Exponentially Weighted Moving Average (EWMA) and plots volatility-based bands to highlight overbought and oversold conditions. By incorporating advanced statistical measures like autocorrelation and standard deviation, traders can better assess market extremes and potential reversals. The indicator’s ability to adapt to price behavior makes it a versatile tool for traders focused on both short-term price deviations and longer-term mean-reversion strategies. With its unique blend of statistical rigor and visual clarity, the Mean Reversion Cloud provides an invaluable tool for understanding and capitalizing on market inefficiencies.
Mean
Standard Deviation based Upper Lower RangeThis script makes use of historical data for finding the standard deviation on daily returns. Based on the mean and standard deviation, the upper and lower range for the stock is shown upto 2x standard deviation. These bounds can be treated as volatility range for the next n trading sessions. This volatility is based on historical data. Users can change the lookback historical period, and can also set the time period (days) for upcoming trading sessions.
This indicator can be useful in determining stoploss and target levels along with the traditional support/resistance levels. It can also be useful in option trading where one needs to determine a range beyond which it is safe to sell an option.
A range of 1 SD has around 65% to 68% probability that it will not be breached. A range of 2 SD has around 95% probability that it will not be breached.
The indicator is based on Normal distribution theory. In future editions, I envision to also calculate the skewness and kurtosis so that we can determine if a stock is properly following Normal Distribution theory. That may further favor the calculated range.
Dynamic Volume RSI (DVRSI) [QuantAlgo]Introducing the Dynamic Volume RSI (DVRSI) by QuantAlgo 📈✨
Elevate your trading and investing strategies with the Dynamic Volume RSI (DVRSI) , a powerful tool designed to provide clear insights into market momentum and trend shifts. This indicator is ideal for traders and investors who want to stay ahead of the curve by using volume-responsive calculations and adaptive smoothing techniques to enhance signal clarity and reliability.
🌟 Key Features:
🛠 Customizable RSI Settings: Tailor the indicator to your strategy by adjusting the RSI length and price source. Whether you’re focused on short-term trades or long-term investments, DVRSI adapts to your needs.
🌊 Adaptive Smoothing: Enable adaptive smoothing to filter out market noise and ensure cleaner signals in volatile or choppy market conditions.
🎨 Dynamic Color-Coding: Easily identify bullish and bearish trends with color-coded candles and RSI plots, offering clear visual cues to track market direction.
⚖️ Volume-Responsive Adjustments: The DVRSI reacts to volume changes, giving greater significance to high-volume price moves and improving the accuracy of trend detection.
🔔 Custom Alerts: Stay informed with alerts for key RSI crossovers and trend changes, allowing you to act quickly on emerging opportunities.
📈 How to Use:
✅ Add the Indicator: Set up the DVRSI by adding it to your chart and customizing the RSI length, price source, and smoothing options to fit your specific strategy.
👀 Monitor Visual Cues: Watch for trend shifts through the color-coded plot and candles, signaling changes in momentum as the RSI crosses key levels.
🔔 Set Alerts: Configure alerts for critical RSI crossovers, such as the 50 line, ensuring you stay on top of potential market reversals and opportunities.
🔍 How It Works:
The Dynamic Volume RSI (DVRSI) is a unique indicator designed to provide more accurate and responsive signals by incorporating both price movement and volume sensitivity into the RSI framework. It begins by calculating the traditional RSI values based on a user-defined length and price source, but unlike standard RSI tools, the DVRSI applies volume-weighted adjustments to reflect the strength of market participation.
The indicator dynamically adjusts its sensitivity by factoring in volume to the RSI calculation, which means that price moves backed by higher volumes carry more weight, making the signal more reliable. This method helps identify stronger trends and reduces the risk of false signals in low-volume environments. To further enhance accuracy, the DVRSI offers an adaptive smoothing option that allows users to reduce noise during periods of market volatility. This adaptive smoothing function responds to market conditions, providing a cleaner signal by reducing erratic movements or price spikes that could lead to misleading signals.
Additionally, the DVRSI uses dynamic color-coding to visually represent the strength of bullish or bearish trends. The candles and RSI plots change color based on the RSI values crossing critical thresholds, such as the 50 level, offering an intuitive way to recognize trend shifts. Traders can also configure alerts for specific RSI crossovers (e.g., above 50 or below 40), ensuring that they stay informed of potential trend reversals and significant market shifts in real-time.
The combination of volume sensitivity, adaptive smoothing, and dynamic trend visualization makes the DVRSI a robust and versatile tool for traders and investors looking to fine-tune their market analysis. By incorporating both price and volume data, this indicator delivers more precise signals, helping users make informed decisions with greater confidence.
Disclaimer:
The Dynamic Volume RSI is designed to enhance your market analysis but should not be used as a sole decision-making tool. Always consider multiple factors before making any trading or investment decisions. Past performance is not indicative of future results.
MeanRevert Matrix [StabTrading]MeanRevert Matrix is a sophisticated trading tool designed to detect when prices significantly deviate from their historical averages, signalling potential market trends and reversals.
Leveraging complex algorithms that incorporate human emotions and mean reversion theory, this indicator is the first stage in a comprehensive system for identifying market entry points. Its versatility allows it to be applied across all charts and timeframes, providing traders with clear visual cues for trend analysis and decision-making.
This indicator is purposefully straightforward, allowing traders to observe how the different algorithms work in confluence. The MeanRevert Matrix can be customized to fit individual trading styles, particularly in terms of aggressiveness, making it adaptable to various market conditions. Working in tandem with the FloWave Oscillator, it offers an additional layer of confluence, ensuring that trading signals are more reliable.
💡 Features
Reversal Zones - These zones are integral to the MeanRevert Matrix, highlighting areas where trader emotions and money flow suggest potential longer-term reversals. The lighter shaded zones indicate early-stage reversals, while darker shades signal stronger reversal potential. This feature is designed to help traders anticipate market shifts and prepare for them accordingly.
Localized Mean Reversion Signals - These signals are triggered when the price deviates significantly from the mean, unaffected by longer-term price movements. This localized algorithm helps traders focus on short-term market fluctuations without being influenced by broader trends.
Yellow Signals - These signals identify isolated overbought or oversold conditions. While they often indicate reversal points, they can also signal the beginning of accelerated buying or selling, giving traders early warning of potential market shifts.
Trading Style Customization - The MeanRevert Matrix allows traders to tailor their strategy by adjusting the indicator’s aggressiveness. A more aggressive setting will produce more frequent reversal signals, offering flexibility based on the trader’s risk tolerance and market outlook.
Noise Eliminator - This feature helps traders filter out market noise or manipulation by increasing the noise value. By removing unwanted or misleading signals, it ensures that traders are acting on the most reliable data.
📈 Implementing the System
Step 1 - Begin by observing the localized blue trend to identify reversal points below the mean. Green or red signals within this trend indicate that the price remains within the current market parameters, suggesting that a reversal may occur more quickly. Yellow signals, however, indicate that the trend is likely to continue, so it’s advisable to wait for clearer reversal zones to develop. To avoid misleading signals, consider using higher noise values.
Step 2 - Wait for the reversal zone algorithm to indicate a potential market reversal by showing either light or dark red/green colour. A lighter zone suggests that the overall trend is beginning to reverse, while a darker zone indicates a higher likelihood of reversal.
Step 3 - Once a reversal zone is identified, monitor the trend line for signals that the price is moving significantly away from the mean. This indicates a strong localized price movement that is poised for a reversal. At this stage, you can reduce the noise value and increase the aggressiveness of the trading style to capture more reversal signals.
🛠️ Usage/Practice
In the example above, the indicator is set with neutral aggression for buy signals and lower aggression for sell signals, reflecting the current bull market cycle
Red Reversal Zone - A bearish reversal zone emerges, followed by a darker bearish zone, indicating an increased probability of a trend reversal. The red signals show price reversion from the localized mean, but the absence of yellow signals suggests the reversion isn't abnormally aggressive, making this a good area to consider a short position.
Strong Reversal Opportunity - Similar to point 1, but this time a green signal appears within the bullish dark green zone, highlighting a strong reversal potential. Subsequent red signals suggest opportunities to take profits as the trend faces resistance.
Opportunity to Strengthen Long Position - Once again, the indicator shows a bullish reversal zone without yellow signals. This suggests an area of increased resistance at this price point, offering traders another chance to increase their long positions before the market enters the long bull cycle.
Excessive Buying Pressure - The price has deviated significantly from the mean, triggering a yellow signal. This indicates excessive buying pressure, suggesting the trend is likely to continue upward. Although not an immediate bearish area, the red sell signals suggest it could be a time to conservatively take partial profits.
Trend Weakening - As the trend slows down, bearish zones appear, indicating potential reversal points. As the market shows signs of losing upward momentum, this suggests an opportunity to reduce their long exposure or enter a short trade and take advantage of the correction in the bull cycle.
Potential for Additional Long Position - Despite the earlier sell signals, the overall uptrend remains strong. This presents an opportunity either to add to the long position or to take profits from a previous sell position. The strength of the upward trend suggests that the market may continue higher.
Abnormal Upward Momentum - Similar to points 4 and 5, the yellow signals indicate abnormal price action with aggressive upward momentum. As the trend corrects to a normal range, the price hitting a resistance level is confirmed by the appearance of red reversal zones, suggesting a potential pullback.
Sideways Market Signals - In a sideways market, the indicator shows signals that remain within the normal mean reversion range. These signals are not abnormal and suggest potential entry points for trades within a sideways market, indicating periods where the market lacks strong directional momentum.
🔶 Conclusion
With its seamless integration into various charts and timeframes, the MeanRevert Matrix stands as a reliable and adaptable tool, essential for navigating the complexities of modern markets. By following the implementation guidelines and leveraging its features, traders have the potential to effectively anticipate market movements and optimize their entry and exit points.
We developed this indicator to help traders enhance their understanding of market trends and achieve their trading objectives with greater precision.
HMA Z-Score Probability Indicator by Erika BarkerThis indicator is a modified version of SteverSteves's original work, enhanced by Erika Barker. It visually represents asset price movements in terms of standard deviations from a Hull Moving Average (HMA), commonly known as a Z-Score.
Key Features:
Z-Score Calculation: Measures how many standard deviations the current price is from its HMA.
Hull Moving Average (HMA): This moving average provides a more responsive baseline for Z-Score calculations.
Flexible Display: Offers both area and candlestick visualization options for the Z-Score.
Probability Zones: Color-coded areas showing the statistical likelihood of prices based on their Z-Score.
Dynamic Price Level Labels: Displays actual price levels corresponding to Z-Score values.
Z-Table: An optional table showing the probability of occurrence for different Z-Score ranges.
Standard Deviation Lines: Horizontal lines at each standard deviation level for easy reference.
How It Works:
The indicator calculates the Z-Score by comparing the current price to its HMA and dividing by the standard deviation. This Z-Score is then plotted on a separate pane below the main chart.
Green areas/candles: Indicate prices above the HMA (positive Z-Score)
Red areas/candles: Indicate prices below the HMA (negative Z-Score)
Color-coded zones:
Green: Within 1 standard deviation (high probability)
Yellow: Between 1 and 2 standard deviations (medium probability)
Red: Beyond 2 standard deviations (low probability)
The HMA line (white) shows the trend of the Z-Score itself, offering insight into whether the asset is becoming more or less volatile over time.
Customization Options:
Adjust lookback periods for Z-Score and HMA calculations
Toggle between area and candlestick display
Show/hide probability fills, Z-Table, HMA line, and standard deviation bands
Customize text color and decimal rounding for price levels
Interpretation:
This indicator helps traders identify potential overbought or oversold conditions based on statistical probabilities. Extreme Z-Score values (beyond ±2 or ±3) often suggest a higher likelihood of mean reversion, while consistent Z-Scores in one direction may indicate a strong trend.
By combining the Z-Score with the HMA and probability zones, traders can gain a nuanced understanding of price movements relative to recent trends and their statistical significance.
Dickey-Fuller Test for Mean Reversion and Stationarity **IF YOU NEED EXTRA SPECIAL HELP UNDERSTANDING THIS INDICATOR, GO TO THE BOTTOM OF THE DESCRIPTION FOR AN EVEN SIMPLER DESCRIPTION**
Dickey Fuller Test:
The Dickey-Fuller test is a statistical test used to determine whether a time series is stationary or has a unit root (a characteristic of a time series that makes it non-stationary), indicating that it is non-stationary. Stationarity means that the statistical properties of a time series, such as mean and variance, are constant over time. The test checks to see if the time series is mean-reverting or not. Many traders falsely assume that raw stock prices are mean-reverting when they are not, as evidenced by many different types of statistical models that show how stock prices are almost always positively autocorrelated or statistical tests like this one, which show that stock prices are not stationary.
Note: This indicator uses past results, and the results will always be changing as new data comes in. Just because it's stationary during a rare occurrence doesn't mean it will always be stationary. Especially in price, where this would be a rare occurrence on this test. (The Test Statistic is below the critical value.)
The indicator also shows the option to either choose Raw Price, Simple Returns, or Log Returns for the test.
Raw Prices:
Stock prices are usually non-stationary because they follow some type of random walk, exhibiting positive autocorrelation and trends in the long term.
The Dickey-Fuller test on raw prices will indicate non-stationary most of the time since prices are expected to have a unit root. (If the test statistic is higher than the critical value, it suggests the presence of a unit root, confirming non-stationarity.)
Simple Returns and Log Returns:
Simple and log returns are more stationary than prices, if not completely stationary, because they measure relative changes rather than absolute levels.
This test on simple and log returns may indicate stationary behavior, especially over longer periods. (The test statistic being below the critical value suggests the absence of a unit root, indicating stationarity.)
Null Hypothesis (H0): The time series has a unit root (it is non-stationary).
Alternative Hypothesis (H1): The time series does not have a unit root (it is stationary)
Interpretation: If the test statistic is less than the critical value, we reject the null hypothesis and conclude that the time series is stationary.
Types of Dickey-Fuller Tests:
1. (What this indicator uses) Standard Dickey-Fuller Test:
Tests the null hypothesis that a unit root is present in a simple autoregressive model.
This test is used for simple cases where we just want to check if the series has a consistent statistical property over time without considering any trends or additional complexities.
It examines the relationship between the current value of the series and its previous value to see if the series tends to drift over time or revert to the mean.
2. Augmented Dickey-Fuller (ADF) Test:
Tests for a unit root while accounting for more complex structures like trends and higher-order correlations in the data.
This test is more robust and is used when the time series has trends or other patterns that need to be considered.
It extends the regular test by including additional terms to account for the complexities, and this test may be more reliable than the regular Dickey-Fuller Test.
For things like stock prices, the ADF would be more appropriate because stock prices are almost always trending and positively autocorrelated, while the Dickey-Fuller Test is more appropriate for more simple time series.
Critical Values
This indicator uses the following critical values that are essential for interpreting the Dickey-Fuller test results. The critical values depend on the chosen significance levels:
1% Significance Level: Critical value of -3.43.
5% Significance Level: Critical value of -2.86.
10% Significance Level: Critical value of -2.57.
These critical values are thresholds that help determine whether to reject the null hypothesis of a unit root (non-stationarity). If the test statistic is less than (or more negative than) the critical value, it indicates that the time series is stationary. Conversely, if the test statistic is greater than the critical value, the series is considered non-stationary.
This indicator uses a dotted blue line by default to show the critical value. If the test-static, which is the gray column, goes below the critical value, then the test-static will become yellow, and the test will indicate that the time series is stationary or mean reverting for the current period of time.
What does this mean?
This is the weekly chart of BTCUSD with the Dickey-Fuller Test, with a length of 100 and a critical value of 1%.
So basically, in the long term, mean-reversion strategies that involve raw prices are not a good idea. You don't really need a statistical test either for this; just from seeing the chart itself, you can see that prices in the long term are trending and no mean reversion is present.
For the people who can't understand that the gray column being above the blue dotted line means price doesn't mean revert, here is a more simple description (you know you are):
Average (I have to include the meaning because they may not know what average is): The middle number is when you add up all the numbers and then divide by how many numbers there are. EX: If you have the numbers 2, 4, and 6, you add them up to get 12, and then divide by 3 (because there are 3 numbers), so the average is 4. It tells you what a typical number is in a group of numbers.
This indicator checks if a time series (like stock prices) tends to return to its average value or time.
Raw prices, which is just the regular price chart, are usually not mean-reverting (It's "always" positively autocorrelating but this group of people doesn't like that word). Price follows trends.
Simple returns and log returns are more likely to have periods of mean reversion.
How to use it:
Gray Column (the gray bars) Above the Blue Dotted Line: The price does not mean revert (non-stationary).
Gray Column Below Blue Line: The time series mean reverts (stationary)
So, if the test statistic (gray column) is below the critical value, which is the blue dotted line, then the series is stationary and mean reverting, but if it is above the blue dotted line, then the time series is not stationary or mean reverting, and strategies involving mean reversion will most likely result in a loss given enough occurrences.
True Market Mean BandsIntroducing the "True Market Mean Bands" (TMMB) , a technical analysis tool designed for Bitcoin. TMMB provides a model of market valuation by integrating the concept of Vaulted Realized Price with dynamic volatility bands, offering traders insights into potential market movements.
Core Concept and Utility:
The TMMB centers around the Vaulted Realized Price, an advanced metric that refines the realized price by accounting for Bitcoin that is "vaulted" - or held out of active circulation. This metric offers a deeper understanding of market valuation by considering not just the last transaction prices but also the long-term holding behaviors of investors.
Innovative Bands:
Building on this core concept, the TMMB introduces multiple bands that reflect market volatility and supply dynamics. These bands are derived using a combination of statistical analysis and customizable multipliers, allowing for adaptation to varying market conditions. The bands include:
Standard Deviation Bands: Adjusted for market volatility, providing a dynamic measure of overbought and oversold conditions.
Vaulted Realized Price Multiplier Bands: These bands use multipliers inspired by the price distribution around the mean, aligning with key psychological and mathematical levels in the market.
Technical Insight:
At the heart of TMMB lies a robust calculation framework that leverages:
Security Function: To fetch relevant market data, ensuring real-time accuracy and relevance.
Customizable Multipliers: Allowing users to adjust the sensitivity of the bands according to their trading strategies.
Statistical Analysis: Utilizing standard deviation and mean calculations to dynamically adapt the bands to market conditions.
Originality and Usefulness:
The TMMB stands out by offering a unique perspective on Bitcoin's market valuation, taking into account long-term holding patterns which are often overlooked in traditional indicators. This approach not only enriches market analysis but also provides traders with actionable insights, potentially enhancing trading strategies.
Application and Value:
TMMB is especially useful for traders and analysts looking for a deeper understanding of market dynamics, beyond surface-level price movements. It offers a valuable tool for identifying potential entry and exit points, assessing market sentiment, and making informed trading decisions.
Realized volatility differentialAbout
This is a simple indicator that takes into account two types of realized volatility: Close-Close and High-Low (the latter is more useful for intraday trading).
The output of the indicator is two values / plots:
an average of High-Low volatility minus Close-Close volatility (10day period is used as a default)
the current value of the indicator
When the current value is:
lower / below the average, then it means that High-Low volatility should increase.
higher / above then obviously the opposite is true.
How to use it
It might be used as a timing tool for mean reversion strategies = when your primary strategy says a market is in mean reversion mode, you could use it as a signal for opening a position.
For example: let's say a security is in uptrend and approaching an important level (important to you).
If the current value is:
above the average, a short position can be opened, as High-Low volatility should decrease;
below the average, a trend should continue.
Intended securities
Futures contracts
RWEDT Weighted Moving Average Overview:
The RWEDT MA, which is short for rolling, weighted, exponential, double exponential, and triple exponential, is a group of moving averages that were subjected to a log transformation to deal with the skewness of price, and the weight of each of these moving averages was also used for calculating the standard deviations from the mean.
Clearing a misunderstanding on Standard Deviation Bands and Moving Averages
Bands, such as standard deviation bands, are frequently misinterpreted as indicators of support and resistance levels or as "mean-reverting" indicators." However, this is not their intended purpose. Bands are statistical tools that provide ranges within which price (in this case) movements are expected to occur based on historical data. Deviations beyond these bands suggest a decrease in confidence in the model rather than a reversal back to a moving average or a "support/resistance level."
Example : Assuming you correctly applied a log transformation to your standard deviation bands to remove the right skew, and assuming your data closely resembles a normal distribution or some other type of symmetrical distribution, then the probability of a value being in the 2 standard deviation range is around 95%. This does not mean it will reject or go up, or mean revert. The price won't bounce from -2 STDEV 95% of the time; that is incorrect. It just tells you that around 95% of the values will be within the 2 SD range.
Moving averages, including the ones in this indicator, are often misinterpreted as signals of trend reversals or levels of "bouncing." What moving averages actually tell you is what the expected value is. It does not show where you expect the price to be in the future; it tells you that based on the lookback, the expected value is in the center, and the confidence you have in the estimate is the confidence interval or the standard deviation range.
Example: Let's say you enter a trade with a positive expected value (expecting the price to drift up), and we have the limits set at 95%. What it tells you is that as long as the price stays within the limits, you can be 95% certain the model isn't completely random. As the price moves further away from the average, or expected value, it tells you that the model is less likely to be correct.
RWEDT MA
This indicator comes with 5 moving averages, each log transformed to reduce the skewness and asymmetry of price as much as possible
Rolling
Weighted
Exponential
Double Exponential
Triple Exponential
The band standard deviation can be adjusted, and the standard deviations have the weight of all of the moving averages that are present in the indicator. The weight is not customizable.
Why this indicator is useful:
This indicator can tell you what the expected value is. Above the moving average signifies a positive expected value, and below the moving average signifies a negative expected value. As previously stated above, the price moving further from the expected value lets you know that you should have less confidence that the model is "correct," and you could see this as taking profits as the price deviates further from the expected value.
The importance of log-transforming prices for standard deviations and moving averages.
Symmetry: Logarithmic transformations can help achieve symmetry in the distribution of price data. Stock prices, for example, exhibit some type of right-skewed distribution, where large positive price movements are more common than large negative movements. Price also can't go below 0 but can go towards positive infinity, so having a right-skew makes sense; all the outliers will be towards infinity, while all the average occurrences are "near" 0.
Stabilizing Variance: Price data typically exhibit heteroscedasticity, meaning that the variance of price movements changes over time. Log transformations can stabilize the variance and make it more consistent across different price levels. This is important for ensuring that the variability in price moves is not disproportionately influenced by extreme values.
Statistical Assumptions: Many retail indicators like Bollinger Bands use the standard deviation and moving average models of a normal distribution to attempt to model price, whose distribution more closely resembles some type of right-skew distribution. Even with the log-transformation, it still won't always resemble a perfect symmetrical distribution, and you still should not use it for mean reversion. You can still use it to understand the expected value and whether or not you should have confidence in your model.
NormalDistributionFunctionsLibrary "NormalDistributionFunctions"
The NormalDistributionFunctions library encompasses a comprehensive suite of statistical tools for financial market analysis. It provides functions to calculate essential statistical measures such as mean, standard deviation, skewness, and kurtosis, alongside advanced functionalities for computing the probability density function (PDF), cumulative distribution function (CDF), Z-score, and confidence intervals. This library is designed to assist in the assessment of market volatility, distribution characteristics of asset returns, and risk management calculations, making it an invaluable resource for traders and financial analysts.
meanAndStdDev(source, length)
Calculates and returns the mean and standard deviation for a given data series over a specified period.
Parameters:
source (float) : float: The data series to analyze.
length (int) : int: The lookback period for the calculation.
Returns: Returns an array where the first element is the mean and the second element is the standard deviation of the data series for the given period.
skewness(source, mean, stdDev, length)
Calculates and returns skewness for a given data series over a specified period.
Parameters:
source (float) : float: The data series to analyze.
mean (float) : float: The mean of the distribution.
stdDev (float) : float: The standard deviation of the distribution.
length (int) : int: The lookback period for the calculation.
Returns: Returns skewness value
kurtosis(source, mean, stdDev, length)
Calculates and returns kurtosis for a given data series over a specified period.
Parameters:
source (float) : float: The data series to analyze.
mean (float) : float: The mean of the distribution.
stdDev (float) : float: The standard deviation of the distribution.
length (int) : int: The lookback period for the calculation.
Returns: Returns kurtosis value
pdf(x, mean, stdDev)
pdf: Calculates the probability density function for a given value within a normal distribution.
Parameters:
x (float) : float: The value to evaluate the PDF at.
mean (float) : float: The mean of the distribution.
stdDev (float) : float: The standard deviation of the distribution.
Returns: Returns the probability density function value for x.
cdf(x, mean, stdDev)
cdf: Calculates the cumulative distribution function for a given value within a normal distribution.
Parameters:
x (float) : float: The value to evaluate the CDF at.
mean (float) : float: The mean of the distribution.
stdDev (float) : float: The standard deviation of the distribution.
Returns: Returns the cumulative distribution function value for x.
confidenceInterval(mean, stdDev, size, confidenceLevel)
Calculates the confidence interval for a data series mean.
Parameters:
mean (float) : float: The mean of the data series.
stdDev (float) : float: The standard deviation of the data series.
size (int) : int: The sample size.
confidenceLevel (float) : float: The confidence level (e.g., 0.95 for 95% confidence).
Returns: Returns the lower and upper bounds of the confidence interval.
Geometrical Mean Moving AverageThe geometric moving average is a type of moving average that calculates the geometric mean of the previous n-periods of the price time series. Unlike the simple moving average that uses the arithmetic mean to continuously calculate the moving average as new price data comes in, the geometric moving average uses the geometric mean formula to get the moving average of the price data as new ones come in.
Why use a geometric moving average?
The geometric moving average differs from the simple moving average in how it is calculated. Most importantly, the geometric mean takes into account the compounding that occurs from period to period.
How can you use a geometric mean moving average?
You can use the GMMA just as you would use any other moving average indicator. You can use it to identify the direction of the trend, and in this case, it can also serve as a support level during an uptrend or a resistance level during a downtrend.
Drawbacks with a geometric moving average
Just like other moving average indicators, the GMA has limitations. Some of them are as follows:
It lags because it uses past price data.
It is pretty useless when the price action is choppy or moving predominantly sideways. During such periods, it can give multiple false signals.
Median of Means Estimator Median of Means (MoM) is a measure of central tendency like mean (average) and median. However, it could be a better and robust estimator of central tendency when the data is not normal, asymmetric, have fat tails (like stock price data) and have outliers. The MoM can be used as a robust trend following tool and in other derived indicators.
Median of means (MoM) is calculated as follows, the MoM estimator shuffles the "n" data points and then splits them into k groups of m data points (n= k*m). It then computes the Arithmetic Mean of each group (k). Finally, it calculate the median over the resulting k Arithmetic Means. This technique diminishes the effect that outliers have on the final estimation by splitting the data and only considering the median of the resulting sub-estimations. This preserves the overall trend despite the data shuffle.
Below is an example to illustrate the advantages of MoM
Set A Set B Set C
3 4 4
3 4 4
3 5 5
3 5 5
4 5 5
4 5 5
5 5 5
5 5 5
6 6 8
6 6 8
7 7 10
7 7 15
8 8 40
9 9 50
10 100 100
Median 5 5 5
Mean 5.5 12.1 17.9
MoM 5.7 6.0 17.3
For all three sets the median is the same, though set A and B are the same except for one outlier in set B (100) it skews the mean but the median is resilient. However, in set C the group has several high values despite that the median is not responsive and still give 5 as the central tendency of the group, but the median of means is a value of 17.3 which is very close to the group mean 17.9. In all three cases (set A, B and C) the MoM provides a better snapshot of the central tendency of the group. Note: The MoM is dependent on the way we split the data initially and the value might slightly vary when the randomization is done sevral time and the resulting value can give the confidence interval of the MoM estimator.
Relational Quadratic Kernel Channel [Vin]The Relational Quadratic Kernel Channel (RQK-Channel-V) is designed to provide more valuable potential price extremes or continuation points in the price trend.
Example:
Usage:
Lookback Window: Adjust the "Lookback Window" parameter to control the number of previous bars considered when calculating the Rational Quadratic Estimate. Longer windows capture longer-term trends, while shorter windows respond more quickly to price changes.
Relative Weight: The "Relative Weight" parameter allows you to control the importance of each data point in the calculation. Higher values emphasize recent data, while lower values give more weight to historical data.
Source: Choose the data source (e.g., close price) that you want to use for the kernel estimate.
ATR Length: Set the length of the Average True Range (ATR) used for channel width calculation. A longer ATR length results in wider channels, while a shorter length leads to narrower channels.
Channel Multipliers: Adjust the "Channel Multiplier" parameters to control the width of the channels. Higher multipliers result in wider channels, while lower multipliers produce narrower channels. The indicator provides three sets of channels, each with its own multiplier for flexibility.
Details:
Rational Quadratic Kernel Function:
The Rational Quadratic Kernel Function is a type of smoothing function used to estimate a continuous curve or line from discrete data points. It is often used in time series analysis to reduce noise and emphasize trends or patterns in the data.
The formula for the Rational Quadratic Kernel Function is generally defined as:
K(x) = (1 + (x^2) / (2 * α * β))^(-α)
Where:
x represents the distance or difference between data points.
α and β are parameters that control the shape of the kernel. These parameters can be adjusted to control the smoothness or flexibility of the kernel function.
In the context of this indicator, the Rational Quadratic Kernel Function is applied to a specified source (e.g., close prices) over a defined lookback window. It calculates a smoothed estimate of the source data, which is then used to determine the central value of the channels. The kernel function allows the indicator to adapt to different market conditions and reduce noise in the data.
The specific parameters (length and relativeWeight) in your indicator allows to fine-tune how the Rational Quadratic Kernel Function is applied, providing flexibility in capturing both short-term and long-term trends in the data.
To know more about unsupervised ML implementations, I highly recommend to follow the users, @jdehorty and @LuxAlgo
Optimizing the parameters:
Lookback Window (length): The lookback window determines how many previous bars are considered when calculating the kernel estimate.
For shorter-term trading strategies, you may want to use a shorter lookback window (e.g., 5-10).
For longer-term trading or investing, consider a longer lookback window (e.g., 20-50).
Relative Weight (relativeWeight): This parameter controls the importance of each data point in the calculation.
A higher relative weight (e.g., 2 or 3) emphasizes recent data, which can be suitable for trend-following strategies.
A lower relative weight (e.g., 1) gives more equal importance to historical and recent data, which may be useful for strategies that aim to capture both short-term and long-term trends.
ATR Length (atrLength): The length of the Average True Range (ATR) affects the width of the channels.
Longer ATR lengths result in wider channels, which may be suitable for capturing broader price movements.
Shorter ATR lengths result in narrower channels, which can be helpful for identifying smaller price swings.
Channel Multipliers (channelMultiplier1, channelMultiplier2, channelMultiplier3): These parameters determine the width of the channels relative to the ATR.
Adjust these multipliers based on your risk tolerance and desired channel width.
Higher multipliers result in wider channels, which may lead to fewer signals but potentially larger price movements.
Lower multipliers create narrower channels, which can result in more frequent signals but potentially smaller price movements.
Average True Range Trailing Mean [Alifer]Upgrade of the Average True Range default indicator by TradingView. It adds and plots a trailing mean to show periods of increased volatility more clearly.
ATR TRAILING MEAN
A trailing mean, also known as a moving average, is a statistical calculation used to smooth out data over time and identify trends or patterns in a time series.
In our indicator, it clearly shows when the ATR value spikes outside of it's average range, making it easier to identify periods of increased volatility.
Here's how the ATR Trailing Mean (atr_mean) is calculated:
atr_mean = ta.cum(atr) / (bar_index + 1) * atr_mult
The ta.cum() function calculates the cumulative sum of the ATR over all bars up to the current bar.
(bar_index + 1) represents the number of bars processed up to the current bar, including the current one.
By dividing the cumulative ATR ta.cum(atr) by (bar_index + 1) and then multiplying it by atr_mult (Multiplier), we obtain the ATR Trailing Mean value.
If atr_mult is set to 1.0, the ATR Trailing Mean will be equal to the simple average of the ATR values, and it will follow the ATR's general trend.
However, if atr_mult is increased, the ATR Trailing Mean will react more strongly to the ATR's recent changes, making it more sensitive to short-term fluctuations.
On the other hand, reducing atr_mult will make the ATR Trailing Mean less responsive to recent changes in ATR, making it smoother and less prone to reacting to short-term volatility.
In summary, adjusting the atr_mult input allows traders to fine-tune the ATR Trailing Mean's responsiveness based on their preferred level of sensitivity to recent changes in market volatility.
IMPLEMENTATION IN A STRATEGY
You can easily implement this indicator in an existing strategy, to only enter positions when the ATR is above the ATR Trailing Mean (with Multiplier-adjusted sensitivity). To do so, add the following lines of codes.
Under Inputs:
length = input.int(title="Length", defval=20, minval=1)
atr_mult = input.float(defval=1.0, step = 0.1, title = "Multiplier", tooltip = "Adjust the sensitivity of the ATR Trailing Mean line.")
smoothing = input.string(title="Smoothing", defval="RMA", options= )
ma_function(source, length) =>
switch smoothing
"RMA" => ta.rma(source, length)
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
=> ta.wma(source, length)
This will allow you to define the Length of the ATR (lookback length over which the ATR is calculated), the Multiplier to adjust the Trailing Mean's sensitivity and the type of Smoothing to be used for the ATR.
Under Calculations:
atr= ma_function(ta.tr(true), length)
atr_mean = ta.cum(atr) / (bar_index+1) * atr_mult
This will calculate the ATR based on Length and Smoothing, and the resulting ATR Trailing Mean.
Under Entry Conditions, add the following to your existing conditions:
and atr > atr_mean
This will make it so that entries are only triggered when the ATR is above the ATR Trailing Mean (adjusted by the Multiplier value you defined earlier).
ATR - DEFINITION AND HISTORY
The Average True Range (ATR) is a technical indicator used to measure market volatility, regardless of the direction of the price. It was developed by J. Welles Wilder and introduced in his book "New Concepts in Technical Trading Systems" in 1978. ATR provides valuable insights into the degree of price movement or volatility experienced by a financial asset, such as a stock, currency pair, commodity, or cryptocurrency, over a specific period.
ATR - CALCULATION AND USAGE
The ATR calculation involves three components:
1 — True Range (TR): The True Range is a measure of the asset's price movement for a given period. It takes into account the following factors:
The difference between the high and low prices of the current period.
The absolute value of the difference between the high price of the current period and the closing price of the previous period.
The absolute value of the difference between the low price of the current period and the closing price of the previous period.
Mathematically, the True Range (TR) for the current period is calculated as follows:
TR = max(high - low, abs(high - previous_close), abs(low - previous_close))
2 — ATR Calculation: The ATR is calculated as a Moving Average (MA) of the True Range over a specified period.
The ATR is calculated as follows:
ATR = MA(TR, length)
3 — ATR Interpretation: The ATR value represents the average volatility of the asset over the chosen period. Higher ATR values indicate higher volatility, while lower ATR values suggest lower volatility.
Traders and investors can use ATR in various ways:
Setting Stop Loss and Take Profit Levels: ATR can help determine appropriate stop-loss and take-profit levels in trading strategies. A larger ATR value might require wider stop-loss levels to allow for the asset's natural price fluctuations, while a smaller ATR value might allow for tighter stop-loss levels.
Identifying Market Volatility: A sharp increase in ATR might indicate heightened market uncertainty or the potential for significant price movements. Conversely, a decreasing ATR might suggest a period of low volatility and possible consolidation.
Comparing Volatility Between Assets: Since ATR uses absolute values, it shouldn't be used to compare volatility between different assets, as assets with higher prices will consistently have higher ATR values, while assets with lower prices will consistently have lower ATR values. However, the addition of a trailing mean makes such a comparison possible. An asset whose ATR is consistently close to its ATR Trailing Mean will have a lower volatility than an asset whose ATR continuously moves far above and below its ATR Trailing Mean. This can help traders and investors decide which markets to trade based on their risk tolerance and trading strategies.
Determining Position Size: ATR can be used to adjust position sizes, taking into account the asset's volatility. Smaller position sizes might be appropriate for more volatile assets to manage risk effectively.
Intraday Mean Reversion MainThe Intraday Mean Reversion Indicator works well on certain stocks. It should be used for day trading stocks but need to be applied on the Day to Day timeframe.
The logic behind the indicator is that stocks that opens substantially lower than yesterdays close, very often bounces back during the day and closes higher than the open price, thus the name Intraday Mean reversal. The stock so to speak, reverses to the mean.
The indicator has 7 levels to choose from:
0.5 * standard deviation
0.6 * standard deviation
0.7 * standard deviation
0.8 * standard deviation
0.9 * standard deviation
1.0 * standard deviation
1.1 * standard deviation
The script can easily be modified to test other levels as well, but according to my experience these levels work the best.
The info box shows the performance of one of these levels, chosen by the user.
Every Yellow bar in the graph shows a buy signal. That is: The stocks open is substantially lower (0.5 - 1.1 standard deviations) than yesterdays close. This means we have a buy signal.
The Multiplier shows which multiplier is chosen, the sum shows the profit following the strategy if ONE stock is bought on every buy signal. The Ratio shows the ratio between winning and losing trades if we followed the strategy historically.
We want to find stocks that have a high ratio and a positive sum. That is More Ups than downs. A ratio over 0.5 is good, but of course we want a margin of safety so, 0.75 is a better choice but harder to find.
If we find a stock that meets our criteria then the strategy will be to buy as early as possible on the open, and sell as close as possible on the close!
range_statA basic statistic to describe "ranges". There are three inputs:
- short range
- long range
- moving average length
The output is a ratio of the short range to the long range. In the screenshot example, the short range is a single day (bar) and the long range is five days. A value near "1" would mean that every day entirely fills the five day range, and that a consolidation is likely present. A value near 0 would mean that each day fills only a small portion of the five day range, and price is probably "trending".
The moving average length is for smoothing the result (which also lags it of course).
The mean, and +- 2 standard deviations are plotted as fuchsia colored lines.
Keltner Channels Bands (RMA)Keltner Channel Bands
These normally consist of:
Keltner Channel Upper Band = EMA + Multiplier ∗ ATR
Keltner Channel Lower Band = EMA − Multiplier ∗ ATR
However instead of using ATR we are using RMA
This gives us a much smoother take of the KCB
We are also using 2 sets of bands built on 1 Moving average, this is a common set up for mean reversion strategies.
This can often be paired with RSI for lower timeframe divergences
Divergence
This is using the RSI to calculate when price sets new lows/highs whilst the RSI movement is in the opposite direction.
The way this is calculated is slightly different to traditional divergence scripts. instead of looking for pivot highs/lows in the RSI we are logging the RSI value when price makes it pivot highs/lows.
Gradient Bands
The Gradient Colouring on the bands is measuring how long price has been either side of the MA.
As Keltner bands are commonly used as a mean reversion strategy, I thought it would be useful to see how long price has been trending in a certain direction, the stronger the colours get,
the longer price has been trending that direction which could suggest we are looking for a retrace soon.
Alerts
Alerts included let you choose whether you want to receive an alert for the inside, outside or both band touches.
To set up these alerts, simply toggle them on in the settings, then click on the 3 dots next to the indicators name, from there you click 'Add Alert'.
From there you can customise the alert settings but make sure to leave the 2 top boxes which control the alert conditions. They will be default selected onto your correct settings, the rest you may want to change.
Once you create the alert, it will then trigger as soon as price touches your chosen inside/outside band.
Suggestions
Please feel free to offer any suggestions which you think could improve the script
Disclaimer
The default settings/parameters were shared by Jimtalbott, feel free to play about with the and use this code to make your own strategies.
Mean Reversion DotsMarkets tend to mean revert. This indicator plots a moving average from a higher time frame (type of MA and length selectable by the user). It then calculates standard deviations in two dimensions:
- Standard deviation of move of price away from this moving average
- Standard deviations of number of bars spent in this extended range
The indicator plots a table in the upper right corner with the % of distance of price from the moving average. It then plots 'mean reversion dots' once price has been 1 or more standard deviations away from the moving average for one or more standard deviations number of bars. The dots change color, becoming more intense, the longer the move persists. Optionally, the user can display the standard deviations in movement away from the moving average as channels, and the user can also select which levels of moves they want to see. Opting to see only more extreme moves will result in fewer signals, but signals that are more likely to imminently result in mean reversion back to the moving average.
In my opinion, this indicator is more likely to be useful for indices, futures, commodities, and select larger cap names.
Combinations I have found that work well for SPX are plotting the 30min 21ema on a 5min chart and the daily 21ema on an hourly chart.
In many cases, once mean reversion dots for an extreme enough move (level 1.3 or 2.2 and above) begin to appear, a trade may be initiated from a support/resistance level. A safer way to use these signals is to consider them as a 'heads up' that the move is overextended, and then look for a buy/sell signal from another indicator to initiate a position.
Note: I borrowed the code for the higher timeframe MA from the below indicator. I added the ability to select type of MA.
normsinvLibrary "normsinv"
Description:
Returns the inverse of the standard normal cumulative distribution.
The distribution has a mean of zero and a standard deviation of one; i.e.,
normsinv seeks that value z such that a normal distribtuion of mean of zero
and standard deviation one is equal to the input probability.
Reference:
github.com
normsinv(y0)
Returns the inverse of the standard normal cumulative distribution. The distribution has a mean of zero and a standard deviation of one.
Parameters:
y0 : float, probability corresponding to the normal distribution.
Returns: float, z-score
MTFT Last HML wOpen, TheStrat Suite (3of5)Multi Time Frame Tools
Multi Time Frame Tools (MTFT) is a suite of scripts aimed to establish a standard timeframe-based color scheme. This can be utilized to overlay different timeframes calculations/values over a single timeframe. As one example, this would allow to observe the 5-month moving average, 5-week moving average, and 5-day moving average overlaid over each other. This would allow to study a chart, get accustomed to the color scheme and study all these at the same time much easier.
All indicators calculated using the below specific timeframes as input, will always use the color scheme outlined below. This is to get you in habit of recognizing the different timeframes overlaid in top of each other. These can be personalized.
Longer TF analysis.
Yearly - Black
Semi-Annual - Yellow
Quarterly - White
Monthly - Maroon
Weekly - Royal Blue
Daily - Lime
Shorter TF analysis.
4 hour - Fuchsia
1 hour - Orange
30 min - Red
15 min - Brown
10 min - Purple
5 min - Lilac
All color coordination is able to be modified in either the “Inputs” or “Style” section. If you need to make changes, make sure to select “Save as Default” on the bottom right of the settings menu.
Recommended Chart Color Layout
I played around with color coordination a lot. The final product was what worked best for me. I personally use the following chart settings to accent all available TF colors.
-> Click on the settings wheel on your chart. -> Click on “Appearance”.
Background - Solid -> On the top row pick the 6th color from the left.
Vert Grid Lines and Horz Grid Lines -> On the top row pick the 7th color from the left.
You may of course change these and the indicator line colors as you like.
Adding indicator to Chart
-> Open the TradingView “Indicators & Strategies” library, the icon has “ƒx”. -> All premium scripts will be located under “Invite-Only Scripts” -> Click indicator to add to your chart.
MTFT TheStrat Suite (5 Scripts)
Rob Smith is the creator of ‘TheStrat’ trading strategy. For ‘TheStrat’ I have put together a suite of 5 premium scripts that combined will offer people interested in learning ‘TheStrat’ a cleaner learning process. For 2 of the 5 scripts specifically, the MTFT approach of overlaying multiple longer timeframes(TF) over a shorter TF selected as a display cannot be utilized. The other 2 scripts will have full MTFT functionality and they are my personal favorite. I will be providing very basic info to utilize this script; it is up to you to dive deep into learning this strategy. I am not an expert with the tool or a financial advisor. As with all aspects of life, I recommend you research, learn, discern and practice extensively in order to become a master.
1. MTFT Patterns Pro/Noob
2. MTFT Full Time Frame Continuity Table
*3. MTFT Last HML wOpen
4. MTFT Actionable Signal Targets
5. MTFT Reversal Lines
MTFT Last HML wOpen, TheStrat Suite (3of5)
Plots previous High, Mean(50% line), and Low of the previous candlestick and the open for the active TF. This allows you to see how TheStrat Absolute Truths move within the different timeframes. In the image below you see the monthly TF selected. Price on the monthly candlestick has created several reversals up and down.
Now Utilizing this tool, you get to see how priced moved on the daily TF with the previous monthly HML lines plotted(Maroon lines) over the active month so you can see exactly how the absolute truths occur inside each month. Notice the previous High/Low are a thicker width then the Mean, this outlines more clearly which of the lines you are looking at. I’ve included some comments on basic observations.
Now for contrast, below I show you the daily TF selected with the previous quarter HML lines plotted(White lines) over the active quarter.
Script Features includes:
1. Three Timeframes per script instance. Example below shows 3 timeframes in use, Yearly(Black Lines), Quarterly( White Lines), and Monthly (Maroon Lines) on the weekly timeframe candlestick. This is where using a timeframe-based color scheme per individual timeframe will come in very handy. The open of the active timeframe is displayed using the small circles that make a line. The displayed open feature is another way to track full time frame continuity if you are tracking the open of several timeframes. The open of the active timeframe is displayed using the small circles that make a line.
2. 20 different TF to pick from per slot. Timeframes(TF) include: Yearly(Y), Semi-annually(S), Quarterly(Q), Monthly(M), 2-Week(2W), Weekly(W), 3-Day(3D), Daily(D), 12 hour, 8 hour, 6 hour, 4 hour, 3 hour, 2 hour, 1 hour, 30 min, 15 min, 10 min, 5 min. Notice: 2W, 3D, 2D, 12h, 8h, 6h, 3h, and 2h don’t have a supported color scheme as I do not personally use them. They are available to pick from in the timeframe selection and you can set a color for these timeframes under the “Unsupported Color Scheme” section in the settings menu for the script if you would like to use them.
3. Enable/Disable High, Mean, Low or Open on any of the timeframe slots. Custom selection of plots will create clarity in observing timeframe-based analysis. Example below shows the Yearly Open enabled on a Monthly timeframe candlestick selected, along with the 6-month HML lines(This is similar to the quarter, the semi-annual)it shows how the start of the year gave a clear direction several times in the past few years for BTC/USD. A similar analysis can be done across multiple settings. TheStrat Actionable Signals paired with ideas like these can be great setups.
4. Auto-hide timeframes based on specific timeframes selected. For this script, I look for HML lines to have at least 4 total candlesticks within the selected TF. I disable any setting that has 3 or less candlesticks. This applies to all timeframes. This will allow for you to leave several instances of the script in your chart and zoom in and out to see macro/micro levels of a chart. The example below has 2 different instances of the script enabled, first instance (Y, Q, M), and second instance (W, D, 4h). with the Month candlestick selected. Notice how only the Year HML plots are displayed. All other lower timeframes are hidden, this will allow for an easy transition into a lower timeframe analysis.
Same example as above, but now with the Weekly timeframe candlestick selected. Notice that without changing any settings on the scripts the Quarterly (White) and Monthly (Maroon) are now visible.
One more time, this time with the 30m candlestick timeframe selected. Notice that without changing any settings on the scripts the Day(Green) and the 4 hour(Pink) plots appear.
5. Custom Width Selection in script settings per plot type, High, Mean, Low and Open.
IMPORTANT NOTE for TradingView Admin: One of the lessons I would consider most important in attaining clarity regarding trading, is “TheStrat” by Rob Smith. His lesson on “actionable signals” is something that can be applied to any strategy. For this reason, I am including “MTFT TheStrat Patterns Pro” script in all images that will depict confluence for a better trade selection.
Example using TheStrat Pro MTFT with this indicator.
Look for a “TheStrat actionable signal” or a “TheStrat Reversal signal” on a smaller timeframe that has an instance of this indicator on a larger timeframe calculation that is in range of the candlestick that formed your actionable signal. This means that the indicators plot you are observing must be above the low and below the high of the candlestick that is the actionable signal/reversal signal. Image below shows what this would look like with this indicator.
The Image below shows what this would look like with this indicator. The selected timeframe is the Daily, it shows an ‘H’ char below which is an indication of a Hammer Actionable signal and the low from last week is in range showing some potential support. This actionable signal is meant to be played for LONGS. If the high is breached than you would enter a LONG position. For targets you would look at the previous pivots, for this example all targets were hit. This won’t always play out so nice and clean, but given that there is so many stocks and so many signals this is just a thought to improve the quality of the signal as it has extra confluence.
Strength Volatility Killer - The Quant ScienceStrength Volatility Killer - The Quant Science™ is based on a special version of RSI (Relative Strength Index), created with the simple average and standard deviation.
DESCRIPTION
The algorithm analyses the market and opens positions following three different volatility entry conditions. Each entry has a specific and personal exit condition. The user can setting trailing stop loss from user interface.
USER INTERFACE SETTING
Configures the algorithm from the user interface.
AUTO TRADING COMPLIANT
With the user interface, the trader can easily set up this algorithm for automatic trading.
BACKTESTING INCLUDED
The trader can adjust the backtesting period of the strategy before putting it live. Analyze large periods such as years or months or focus on short-term periods.
NO LIMIT TIMEFRAME
This algorithm can be used on all timeframes.
GENERAL FEATURES
Multi-strategy: the algorithm can apply long strategy or short strategy.
Built-in alerts: the algorithm contains alerts that can be customized from the user interface.
Integrated indicator: indicator is included.
Backtesting included: quickly automatic backtesting of the strategy.
Auto-trading compliant: functions for auto trading are included.
ABOUT BACKTESTING
Backtesting refers to the period 13 June 2022 - today, ticker: AVAX/USDT, timeframe 5 minutes.
Initial capital: $1000.00
Commission per trade: 0.03%
Mean Reverse Grid Algorithm - The Quant ScienceMean Reverse Grid Algorithm - The Quant Science™ is a dynamic grid algorithm that follows the trend and run a mean reverting strategy on average percentage yield variation.
DESCRIPTION
Trades on different price levels of the grid, following the trend. The grid consists of 10 levels, 5 higher and 5 lower. The grids together create a channel, this channel represents the total percentage change where the algorithm works. The channel also represents the average change yields of the asset, identified during analysis with the "Yield Trend Indicator".
The algorithm can be set long or short.
1. Long algorithm: opens long positions with 20% of the capital every time the price crossunder a lower grid, for a maximum total of 5 simultaneous trades. Trades are closed each time the price crossover a higher grid.
2. Short algorithm: opens short positions with 20% of the capital every time the price crossover a higher grid, for a maximum total of 5 simultaneous trades. Trades are closed each time the price crossunder a lower grid.
USER INTERFACE SETTING
The user configures the percentage value of each grid from the user interface.
AUTO TRADING COMPLIANT
With the user interface, the trader can easily set up this algorithm for automatic trading. Automating it is very simple, activate the alert functions and enter the links generated by your broker.
BACKTESTING INCLUDED
With the user interface, the trader can adjust the backtesting period of the strategy before putting it live. You can analyze large periods such as years or months or focus on short-term periods.
NO LIMIT TIMEFRAME
This algorithm can be used on all timeframes and is ideal for lower timeframes.
GENERAL FEATURES
Multi-strategy: the algorithm can apply either the long strategy or the short strategy.
Built-in alerts: the algorithm contains alerts that can be customized from the user interface.
Integrated grid: the grid indicator is included.
Backtesting included: automatic backtesting of the strategy is generated based on the values set.
Auto-trading compliant: functions for auto trading are included.
ABOUT BACKTESTING
Backtesting refers to the period 1 August 2022 - today, ticker: ETH/USDT, timeframe 1H.
Initial capital: $1000.00
Commission per trade: 0.03%
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.