L&S Volatility IndexOverview
L&S Volatility Index is a tool designed to helps traders identify overpriced or underpriced moments in the market and adjust their trading strategies accordingly.
Calculations
This tool calculates how far the price is from the 21-period simple moving average as a ratio of the average historical volatility calculated over the last 21 candles.
How It Works
A L&S Volatility Index with a value greater than 30% may indicate that the asset is overpriced or underpriced relative to its average price.
How To Use
If the L&S Volatility Index > 30, the asset is overpriced or underpriced. This means that there is a good probability of initiating a mean reversion.
If the L&S Volatility Index < 30, the asset is in a fair price region. This means that it is acceptable to buy or sell in that price region.
Where To Use
Mean Reversion Strategy
Breakout Strategy
What Makes it Original
There is already an indicator that use a normalized calculation and a different approach to calculate historical volatility, whereas this script calculation is non-normalized and historical volatility is calculated using Don Fishback's formula. All calculations are used as originally described.
Credits
The L&S Volatility Index indicator was originally written by L&S Educação Financeira.
Historical Volatility calculation is based on the book "Odds: The Key to 90% Winners" written by Don Fishback.
Историческая волатильность
Intraday Mean Reversion Money Performance indicatorThe diagram shows Money Performance when buying stocks for 10 000 at every buy signal from the Intraday Mean Reversion indicator.
The indicator is best used in combination with Intraday Mean Reversion Main Indicator
The rules for trading are: Buy on Open price if the Intraday Mean Reversion Main indicator gives a buy signal. Sell on the daily close price.
According to my knowledge it is not possible to create a PineScript strategy based on these rules, because the indicator is used on Day to Day graph. Therefore this indicator can be used to analyze Money performance of this strategy.
The lines show the performance of the Intraday Mean Reversion Strategy, based on the different levels in the strategy (from 0.5 Standard deviation to 1.1 standard deviation)
Using this indicator it is possible to find stocks that often reverse towards mean after open.
Use this strategy on stocks with high positive performance. Do not use on stocks with negative performance.
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!
Volatility patterns / quantifytools- Overview
Volatility patterns detect various forms of indecisive price action, on a larger scale as a compressed range and on a smaller scale as indecision candles. Indecisive and volatility suppressing price action can be thought of as a spring being pressed down. The more suppression, the more tension is built and eventually released as a spike or series of spikes in volatility. Each volatility pattern is assigned an influence period, during which average and peak relative volatility is recorded and stored to volatility metrics.
- Patterns
The following scenarios are qualified as indecision candles: inside candles, indecision engulfing candles and volatility shifts.
By default, each indecision candle is considered a valid pattern only when another indecision candle has taken place within 3 periods, e.g. prior inside candle + indecision engulfing candle = valid volatility pattern. This measurement is taken to filter noise by looking for multiple hints of pending volatility, rather than just one. Level of tolerated noise can be changed via input menu by using sensitivity setting, by default set to 2.
Sensitivity at 1: Any single indecision candle is considered a valid pattern
Sensitivity at 2: 2 indecision candles within 3 bars is considered a valid pattern
Sensitivity at 3: 2 indecision candles within 2 bars (consecutive) is considered a valid pattern
The following scenarios are qualified as range patterns: series of lower highs/higher lows and series of low volatility pivots.
A pivot is defined by highest/lowest point in price, by default within 2 periods back and 2 periods forward. When 4 pivots with qualities mentioned above are found, a box indicating compressed range will appear. Both required pivots and pivot definition can be adjusted via input menu.
- Influence time and metrics
By default, influence time for each volatility pattern is set to 6 candles, a period for which spike(s) in volatility is expected. For each influence period, average relative volatility (volatility relative to volatility SMA 20) and peak relative volatility is recorded and stored to volatility metrics. All metrics used in calculations are visible in "Data Window "tab. Average and peak volatility during influence period will vary depending on chart, timeframe and chosen settings. Tweaking the settings might result in an improvement and is worth experimenting with.
- Visuals
By default, indecision candles are visualized as yellow lines and range patterns as orange boxes. Influence time periods are respectively visualized as colored candle borders, applied as long as influence time period is active. All colors are fully customizable via input menu.
- Practical guide
Volatility patterns depict moments of equal strength from both bulls and bears. While this equilibrium is in place, price is stagnant and compresses until either side initiates volatility, releasing the built up tension. On top of hedging and playing the volatility using volatility based instruments, some other methods can be applied to take advantage of the somewhat tricky areas of indecision.
Example #1: Trading volatility
Volatility is not a bad thing from a trading perspective, but can actually be fertile ground for executing trade setups. Trading volatility influence periods from higher timeframes on lower timeframes gives greater resolution to work with and opportunities to take advantage of the wild swings created.
Example #2: Finding bias for patterns
Points of confluence where it anyway makes sense to favor one side over the other can be used for establishing bias for indecisive price action as well. At face value, it makes sense to expect bearish reactions at range highs and bullish reactions at range low, for which volatility patterns can provide a catalyst.
Example #3: Betting on initiation direction
Betting on direction of the first volatile move can easily go against you, but if risk/reward is able to compensate for the poor win rate, it's a valid idea to consider and explore.
Historical VolatilityThis script calculates the historical volatility of a given market using the standard deviation of its returns over a specified lookback period.
The indicator also includes a volatility Simple Moving Average (SMA), a VIX SMA, and the VIX index as reference market.
The script uses the inputs from the user to adjust the calculation, such as lookback period, volatility SMA period, and reference market.
The Historical Volatility indicator can be a useful tool for traders and investors who want to measure the degree of variation of a market's price over time, which can help them to better understand market trends and potential risks. This script is licensed under the Mozilla Public License 2.0, which means that it can be used, modified, and distributed under the terms of this license.
Fixed Volatility OscillatorA fixed volatility plotter set to a 0-100 range - Plots the current volatility % using the formula to calculate volatility and stdev (standard deviation) based on the candle lookback.
The indicator is Fixed, which means that regardless of the chart, the volatility will be plotted on a percentage of 0% - 100% with a 101% threshold set to indicate a volatility reset. While the volume of volatility will change depending on the chart, the volatility will ALWAYS stay within this range.
if a plot exceeds 100% it should be marked as volatility reset - not an expansion
and should also be noted that the volatility spikes are also very inconsistent in volume and vary greatly.
The candle lookbacks on standard are organized be from 10 candles to 100 candles. I found the best results using the 50 candles lookback, and therefore have set it as the default value. These different values can be used to pull the information from the # of candles on the selected option - and therefore the volatility will be calculated from the number of candles selected.
// note for other people versed in pinescript
While this indicator may be useful in trading or strategies, it is more meant to incorporated into other scripts or used as a basis that can be further expanded on. The visuals are not built at all - for that purpose.
This script has not been listed as a library for the fact that it can be used as an actual indicator within a strategy - hope you enjoy.
Nonfarm [TjnTjn]This indicator will draw a line on your chart to show the Nonfarm announcement date and a line showing the Nonfarm announcement time for that day.
Because normally the Nonfarm announcement date is not simply the first Friday of the month. Because there are days Nonfarm days can be 8 or 9 or 10.
By checking the entire history of nonfarm announcements, I found some more rules such as if the first Friday of the month hits a holiday, the nonfarm day will be the friday of the following week. The previous months are 28, 29, or 30 days and if the first Friday of this month is on the 3, 2 or 1, the nonfarm day will be the friday of the following week.
Since this type of indicator is not available on the Tradingview library, I have put it up for everyone's convenience to backtest the price movement on nonfarm days to better support trading or simply to avoid trading at time of announed nonfarm.
Historical Volatility Scale [ChartPrime]This indicator outputs a visual scale representing the level of volatility in the market relative to the timeframe selected on the users chart. The method of volatility used is "historical volatility" which is calculated by taking the standard deviation of a series of "x" length which contains the current closing price divided by the previous closing price for all nodes. The output of the volatility is standardized by also running an additional percentrank calculation over the raw volatility values to allow the volatility scale to oscillate properly between its minimum of 0 and maximum of 100.
📗 SETTINGS
Length: The length determines how many bars/nodes should be considered when calculating the standard deviation. In simple terms, the higher the length, the less sensitive and less reactive the scale will be to current price action, and larger moves would be required to trigger the scale.
🧰 UTILITY
The arrow or "The Pin" will move upwards towards the "fire" emoji when the volatility is higher than the majority of values for the amount of bars back that you set the "length" setting to. Vise Versa for when the pin is lowering towards the "snooze" emoji, the volatility is less than the majority of nodes/values for the past "length" amount of values.
When the volatility is low, a trader could consider utilizing more leading indicators to make their trading decisions as opposed to lagging indicator such as trend indicators. When the volatility is low, the price action is consolidation which would be bad for a trend following strategy. Vise Versa for trend strategies, having a higher volatility may be better for such strategies.
Its important to remember that this indicator itself is a lagging indicator, in that it relies on historical data to showcase the current state of the markets volatility. This means that although the recommendation in the previous paragraph may make logical sense, it is not a guarantee that if the volatility is showcasing a trending market, that your trend strategies will necessarily be profitable.
Inter-Exchanges Crypto Price Spread Clouds (Tartigradia)Display variations in min-max and median values of high, low and close across exchanges. It's a kind of realized volatility indicator, as the idea is that in times of high volatility (high emotions, fear, uncertainty), it's more likely that market inefficiencies will appear for the same asset between different market makers, ie, the price can temporarily differ a lot. This indicator will catch these instants of high differences between exchanges, even if they lasted only an instant (because we use high and low values).
Compared with my other "Inter-Exchanges Crypto Price Spread Deviation" indicator, this one overlays directly on the chart, and offers a different take based on the same premisses. Instead of summarizing volatility via standard deviation, here we display clouds of the range of values that were observed.
A big advantage of this approach is that it can also be used to determine safe stop loss levels, especially the values of percentile rank (i.e., what are the high values that were observed in at least 50% of exchanges?).
Indeed, all price levels are displayed in the indicator's status bar:
green for high values,
red for low values,
aqua for median,
purple for average,
The first two values are max and min values of high across exchanges (in green).
The next two values are max and min of low across exchanges (in red).
The next two values are median (aqua) and average (purple).
The last two values are percentile rank values for high (green) and low (red) respectively.
Another advantage is that the high (green) vs low (red) clouds can be seen as representing the buying or selling pressure respectively across exchanges, and this may in itself provide a signal to know whether one side is winning.
Link to my other complementary indicator:
Compared to other inter-exchanges spread indicators, this one offers two major features:
The symbol automatically adapts to the symbol currently selected in user's chart. Hence, switching between tickers does not require the user to modify any option, everything is dynamically updated behind the scenes.
It's easy to add more exchanges (requires some code editing because PineScript v5 does not allow dynamical request.security() calls).
Limitations/things to know:
History is limited to what the ticker itself display. Ie, even if the exchanges specified in this indicator have more data than the ticker currently displayed in the user's chart, the indicator will show only a timeperiod as long as the chart.
The indicator can manage multiple exchanges of different historical length (ie, some exchanges having more data going way earlier in the past than others), in which case they will simply be ignored from calculations when far back in the past. Hence, you should be aware that the further you go in the past, the less exchanges will have such data, and hence the less accurate the measures will be (because the deviation will be calculated from less sources than more recent bars). This is thanks to how the array.* math functions behave in case of na values, they simply skip them from calculations, contrary to math.* functions.
Volatility Gap TrackerThe Volatility Gap Tracker ( *VGT ) indicator calculates the historical volatility of an asset using the standard deviation of the natural logarithm of the closing price relative to the previous period's closing price. *VGT visualizes the HV with gap lines to highlight when the current HV has increased or decreased significantly compared to the previous period, and adds labels to show the HV value for each of those bars.
Low HV calculated by *VGT can potentially signify a potential move up or down in the price of an asset. When HV is low, it indicates that the price of the asset has been relatively stable or range-bound over the specified period of time. This can sometimes be a precursor to a significant move in either direction, as the price may be building up energy to break out of its range.
*VGT can be used for any market that TradingView supports, including stocks, forex, and cryptocurrencies. It is especially useful for traders who want to identify periods of high volatility or sudden changes in volatility , which can indicate potential trading opportunities or risks. However, it's important to note that HV is a historical measure and may not always accurately predict future volatility .
The indicator can be used under various market conditions, but is especially useful during periods of high volatility , such as market crashes or major news events. It can also be useful for traders who want to monitor the volatility of specific stocks or assets over a longer period of time.
*VGT is provided for informational purposes only and is not a guarantee of future performance or accuracy. Traders should use multiple indicators and analysis methods to make informed trading decisions. Trading involves risks and traders should always conduct their own research and analysis before making any investment decisions.
Implied and Historical Volatility v4There is a famous option strategy📊 played on volatility📈. Where people go short on volatility, generally, this strategy is used before any significant event or earnings release. The basic phenomenon is that the Implied Volatility shoots up before the event and drops after the event, while the volatility of the security does not increase in most of the scenarios. 💹
I have tried to create an Indicator using which you
can analyse the historical change in Implied Volatility Vs Historic Volatility.
To get a basic idea of how the security moved during different events.
Notes:
a) Implied Volatility is calculated using the bisection method and Black 76 model option pricing model.
b) For the risk-free rate I have fetched the price of the “10-Year Indian Government Bond” price and calculated its yield to be used as our Risk-Free rate.
BTC Performance Table / BTC Seasonality Visualization
This script visualizes Bitcoins "seasonality", in form of a colored table (based on the idea from "BigBangTheory")
The history table shows you which months do statistically perform better/worse in comparison to other months.
How to use this script:
Choose ticker "BLX" ("BraveNewCoin Liquid Index for Bitcoin").
Set the charts time frame to weekly or daily. Tables position on the screen and its colors are configurable.
Table explanation:
Cells show whether a gain or a loss occured from month to month, since BTC came out in 2010.
The price difference, between monthly open and monthly close, determines the cell color (negative -> red, positive -> green).
The year column shows total gain (green) or loss (red) for that particular year.
Each value is presented as a rounded percentage number.
How this script works:
The script calculates the price difference between each monthly and yearly open and close, storing those numbers inside arrays.
Then it populates the table, by using those numbers and doing the cell coloring (there will be a yellow cell, in case no change should occur).
German Short-Description
Prozentuale Übersicht in Tabellenform, der monatlichen, sowie jährlichen, Performance des Bitcoin (basierend auf der Idee von "BigBangTheory").
Hierdurch wird die "Saisonalität" des Bitcoin sichtbar. D.h. welche Monate des Jahres, im Vergleich zu anderen Monaten, statistisch gesehen öfter positiv/negativ schließen.
Zwecks vollständiger Darstellung muss der Ticker "BLX" ("BraveNewCoin Liquid Index for Bitcoin") im weekly oder daily time frame aktiv sein.
Cryptos Pump Hunter[liwei666]🔥 Cryptos Pump Hunter captured high volatility symbols in real-time, Up to 40 symbols can be monitored at same time.
Help you find the most profitable symbol with excellent visualization.
🔥 Indicator Design logic
🎯 The core pump/dump logic is quite simple
1. calc past bars highest and lowest High price, get movement by this formula
" movement = (highest - lowest) / lowest * 100 "
2. order by 'movement' value descending, you will get a volatility List
3. use Table tool display List, The higher the 'movement', the higher the ranking.
🔥 Settings
🎯 2 input properties impact on the results, 2 input impact on display effects, others look picture below.
pump_bars_cnt : lookback bar to calc pump/dump
resolution for pump : 1min to 1D
show_top1 : when ranking list top1 change, will draw a label
show pump : when symbol over threhold, draw a pump lable
🔥 How TO USE
🎯 only trade high volatility symbols
1. focus on top1 symbol on Table panel at top-right postion, trading symbols at label in chart.
2. Short when 'postion' ~ 0, Long when 'postion' ~ 1 on Table Cell
🎯 Monitor the symbols you like
1. 100+ symbols added in script, cancel remarks in code line if symbol is your want
2. add 1 line code if symbol not exist. if you want monitor 'ETHUSDTPERP ', then add
" ETHUSDTPERP = create_symbol_obj('BINANCE:ETHUSDTPERP'), array.unshift(symbol_a, ETHUSDTPERP ) "
🎯 Alert will be add soon, any questions or suggestion please comment below, I would appreciate it greatly.
Hope this indicator will be useful for you :)
enjoy! 🚀🚀🚀
Average True Range PercentWhen writing the Quickfingers Luc base scanner (Marvin) script, I wanted a measure of volatility that would be comparable between charts. The traditional Average True Range (ATR) indicator calculates a discrete number providing the average true range of that chart for a specified number of periods. The ATR is not comparable across different price charts.
Average True Range Percent (ATRP) measures the true range for the period, converts it to a percentage using the average of the period's range ((high + low) / 2) and then smooths the percentage. The ATRP provides a measure of volatility that is comparable between charts showing their relative volatility.
Enjoy.
OHLC ToolOHLC Tool allows you to display Current or Historical OHLC Values as horizontal lines that extend to the right on your chart.
Features
Variable Lookback to display a specific historical bar's values. Default = 1 (Previous Candle)
Customizable Timeframe to view HTF Candle values.
Custom Line Colors, Styles, and Thicknesses.
Price Scale Value Display Capability.
For displaying the line values and labels on the price scale you will need to enable:
"Indicator and financials name labels"
and
"Indicator and financials value labels"
These options are found in the Price Scale Menu under Labels. Price Scale Menu > Labels
When you do this you will notice your other indicator values will also be on the price scale,
if you wish to disable these, go to the indicator settings under the "Style" Tab, Uncheck the "Labels on price scale" box.
Indicator Settings > Style > "Labels on price scale"
Enjoy!
Volatility Compression Ratio by M-CarloHello traders. I created this simple indicator to use as a FILTER.
He does not provide any operational signals but tells us if we are in a period of volatility compression or expansion and it can work on all market.
This filter works great for all strategies that work on breakouts
The concept is this: I will enter at breakout of a price level that I consider important, only if there is a volatility compression and not in the case of expansion of volatility.
Technically the calculation is very simple:
Step 1: I calculate the ATR at "x" periods, I set 7 by default because I get better results but you can change it as you like using the "atr length" field. You can also choose whether to calculate the ATR via RMA, SMA or EMA.
Step 2: I Calculate a simple average of the previous ATR over a longer period, longer period than set with the "length multiplier" parameter, which multiplies the "atr length" value by "x" times. Here I set the default 3 but you can change it as you like.
Step 3: I divide the ATR value calculated in step1 by its long-term average calculated in step2, obtaining a value that will oscillate above and below the value of 1
So:
if the indicator is above the value of 1 it means that volatility is expanding
If the indicator is below the value of 1 it means that we are in a period of volatility compression (and as we know volatility explodes sooner or later)
If you have any questions write to me and I hope this filter helps you! Have good Trading!
Seasonal tendency: week-on-week % change and 10yr Averages-shows week-on-week % change, and 10yr averages of these % changes
-scan across the 10yr averages to get a good idea of the seasonality of an asset
-best used on commodities with strong seasonal tendencies (Gold, Wheat, Coffee, Lean hogs etc)
-works only on daily timeframe
-by default it will compare SMA(length) in the following way, BTC: Sunday cf previous Sunday | ES/Gold: Monday cf previous Monday
-for most assets, 5 daily bars in a week (SMA(5)) => that's the default. For BTC can change this to 7.
~~inputs:
-change input year to show any previous decade of asset's history; the table will display over that year on the chart
-choose expression for Average of % change week on week: SMA, ohlc4, vwma, vwap (default SMA)
-choose number of daily bars in a week (i.e. SMA length)
-change label sizes/colors
~~notes:
-When applied to current year: will print the 10yr average for previous weeks in the year; 9yr average for future weeks in the year
-drawings and SMA plot on the above chart are just to show visually how the week's average is calculated, and how this lines up with the label
-current week of year will highlight in large font orange by default
-the first 2 weeks of the year are omitted because of a bug i can't figure out, which throws out bad numbers.
-cannot print all the values for each of previous 10yrs; 'code too long' error. Could likely do this via using matrices but would require a rewrite
17th Dec 2022
@twingall
Average True Range Refurbished💡 Objective
This script is a rebuild of the pre-existing ATR indicator, with improvements and fine-tuning.
🪄Improvements
1. Normalization option (range 0 to 100)
2. Optional calculation of the ratio between current volatility and average volatility
3. Optional smoothing
4. Show a moving average
5. Show Bollinger Bands with 3 bands
6. Change bar colors according to ATR and Bollinger Bands
📚 Definition
'The Average True Range (ATR) is a tool used in technical analysis to measure volatility. Unlike many of today's popular indicators, the ATR is not used to indicate the direction of price. Rather, it is a metric used solely to measure volatility, especially volatility caused by price gaps or limit moves.'
(TradingView)
Visible RangeA quick and easy "at a glance" display for the viewable candles. It does repaint, but that is a non-issue, as it is simply a quick and handy tool to visually see a quick peek at the visible range.
The highest, lowest, and average are displayed, with labels for the percentage distance from the current close value and total range.
Automatic color for each based on relative distance for consistency in stable or volatile conditions.
Implied Volatility Suite (TG Fork)Displays the Implied Volatility, which is usually calculated from options, but here is calculated indirectly from spot price directly, either using a model or model-free using the VIXfix.
The model-free VIXfix based approach can detect times of high volatility, which usually coincides with panic and hence lowest prices. Inversely, the model-based approach can detect times of highest greed.
Forked and updated by Tartigradia to fix some issues in the calculations, convert to pinescript v5 and reverse engineered to reproduce the "Implied Volatility Rank & Model Free IVR" indicator by the same author (but closed source) and allow to plot both model-based and model-free implied volatilities simultaneously.
If you like this indicator, please show the original author SegaRKO some love:
Asymmetric Dispersion High Lowdear fellows,
this indicator is an effort to determine the range where the prices are likely to fall within in the current candle.
how it is calculated
1. obtain
a. gain from the open to the high
b. loss from the open to the low
in the last 20 (by default) candles and
in the last 200 (10*20 by default) candles
2. perform
a. the geometric average (sma of the log returns) over these gains and losses
b. their respective standard deviation
3. plot from the open of each candle
a. the average + 2 standard deviations (2 by default) of the short window size
b. same for the long window size (which is overlapped)
what it shows
1. where the current candle is likely to move with 95% likelyhood
how it can be interpreted
1. a gauge for volatility in the short and long term
2. a visual inbalance between likelyhood to go up or down according to dispersion in relation to current prices or candle open.
3. a confirmation of crossings of, for instance, support and resistances once the cloud is completely above or below.
in regard to bollinger bands (which are and excellent well proven indicator)
1. it segregates upward moves from the downward ones.
2. it is hardly crossed by prices
3. it is centered on the current candle open, instead of the moving average.
we welcome feedback and critic.
best regards and success wishes.
HMA w/ SSE-Dynamic EWMA Volatility Bands [Loxx]This indicator is for educational purposes to lay the groundwork for future closed/open source indicators. Some of thee future indicators will employ parameter estimation methods described below, others will require complex solvers such as the Nelder-Mead algorithm on log likelihood estimations to derive optimal parameter values for omega, gamma, alpha, and beta for GARCH(1,1) MLE and other volatility metrics. For our purposes here, we estimate the rolling lambda (λ) value used to calculate EWMA by minimizing of the sum of the squared errors minus the long-run variance--a rolling window of the one year mean of squared log-returns. In practice, practitioners will use a λ equal to a standardized value put out by institutions such as JP Morgan. Even simpler than this, others use a ratio of (per - 1) / (per + 1) to derive λ where per is the lookback period for EWMA. Due to computation limits in Pine, we'll likely not see a true GARCH(1,1) MLE on Pine for quite some time, but future closed source indicators will contain some very interesting industry hacks to get close by employing modifications to EWMA. Enjoy!
Exponentially weighted volatility and its relationship to GARCH(1,1)
Exponentially weighted volatility--also called exponentially weighted moving average volatility (EWMA)--puts more weight on more recent observations. EWMA is calculated as follows:
σ*2 = λσ(n - 1)^2 + (1 − λ)u(n - 1)^2
The estimate, σn, of the volatility for day n (made at the end of day n − 1) is calculated from σn −1 (the estimate that was made at the end of day n − 2 of the volatility for day n − 1) and u^n−1 (the most recent daily percentage change).
The EWMA approach has the attractive feature that the data storage requirements are modest. At any given time, we need to remember only the current estimate of the variance rate and the most recent observation on the value of the market variable. When we get a new observation on the value of the market variable, we calculate a new daily percentage change to update our estimate of the variance rate. The old estimate of the variance rate and the old value of the market variable can then be discarded.
The EWMA approach is designed to track changes in the volatility. Suppose there is a big move in the market variable on day n − 1 so that u2n−1 is large. This causes our estimate of the current volatility to move upward. The value of λ governs how responsive the estimate of the daily volatility is to the most recent daily percentage change. A low value of λ leads to a great deal of weight being given to the u(n−1)^2 when σn is calculated. In this case, the estimates produced for the volatility on successive days are themselves highly volatile. A high value of λ (i.e., a value close to 1.0) produces estimates of the daily volatility that respond relatively slowly to new information provided by the daily percentage change.
The RiskMetrics database, which was originally created by JPMorgan and made publicly available in 1994, used the EWMA model with λ = 0.94 for updating daily volatility estimates. The company found that, across a range of different market variables, this value of λ gives forecasts of the variance rate that come closest to the realized variance rate. In 2006, RiskMetrics switched to using a long memory model. This is a model where the weights assigned to the u(n -i)^2 as i increases decline less fast than in EWMA.
GARCH(1,1) Model
The EWMA model is a particular case of GARCH(1,1) where γ = 0, α = 1 − λ, and β = λ. The “(1,1)” in GARCH(1,1) indicates that σ^2 is based on the most recent observation of u^2 and the most recent estimate of the variance rate. The more general GARCH(p, q) model calculates σ^2 from the most recent p observations on u2 and the most recent q estimates of the variance rate.7 GARCH(1,1) is by far the most popular of the GARCH models. Setting ω = γVL, the GARCH(1,1) model can also be written:
σ(n)^2 = ω + αu(n-1)^2 + βσ(n-1)^2
What this indicator does
Calculate log returns log(close/close(1))
Calculates Lambda (λ) dynamically by minimizing the sum of squared errors. I've restricted this to the daily timeframe so as to not bloat the code with additional logic required to derive an annualized EWMA historical volatility metric.
After the Lambda is derived, EWMA is calculated one last time and the result is the daily volatility
This daily volatility is multiplied by the source and the multiplier +/- the HMA to create the volatility bands
Finally, daily volatility is multiplied by the square-root of days per year to derive annualized volatility. Years are trading days for the asset, for most everything but crypto, its 252, for crypto is 365.
Reset Strike Options-Type 2 (Gray Whaley) [Loxx]For a reset option type 2, the strike is reset in a similar way as a reset option 1. That is, the strike is reset to the asset price at a predetermined future time, if the asset price is below (above) the initial strike price for a call (put). The payoff for such a reset call is max(S - X, 0), and max(X - S, 0) for a put, where X is equal to the original strike X if not reset, and equal to the reset strike if reset. Gray and Whaley (1999) have derived a closed-form solution for the price of European reset strike options. The price of the call option is then given by (via "The Complete Guide to Option Pricing Formulas")
c = Se^(b-r)T2 * M(a1, y1; p) - Xe^(-rT2) * M(a2, y2; p) - Se^(b-r)T1 * N(-a1) * N(z2) * e^-r(T2-T1) + Se^(b-r)T2 * N(-a1) * N(z1)
p = Se^(b-r)T1 * N(a1) * N(-z2) * e^-r(T2-T1) + Se^(b-r)T2 * N(a1) * N(-z1) + Xe^(-rT2) * M(-a2, -y2; p) - Se^(b-r)T2 * M(-a1, -y1; p)
where b is the cost-of-carry of the underlying asset, a is the volatility of the relative price changes in the asset, and r is the risk-free interest rate. K is the strike price of the option, T1 the time to reset (in years), and T2 is its time to expiration. N(x) and M(a,b; p) are, respectively, the univariate and bivariate cumulative normal distribution functions. Further
a1 = (log(S/X) + (b+v^2/2)T1) / v*T1^0.5 ... a2 = a1 - v*T1^0.5
z1 = ((b+v^2/2)(T2-T1)) / v*(T2-T1)^0.5 ... z2 = z1 - v*(T2-T1)^0.5
y1 = (log(S/X) + (b+v^2/2)T1) / v*T1^0.5 ... y2 = a1 - v*T1^0.5
and p = (T1/T2)^0.5. For reset options with multiple reset rights, see Dai, Kwok, and Wu (2003) and Liao and Wang (2003).
Inputs
Asset price ( S )
Strike price ( K )
Reset time ( T1 )
Time to maturity ( T2 )
Risk-free rate ( r )
Cost of carry ( b )
Volatility ( s )
Numerical Greeks or Greeks by Finite Difference
Analytical Greeks are the standard approach to estimating Delta, Gamma etc... That is what we typically use when we can derive from closed form solutions. Normally, these are well-defined and available in text books. Previously, we relied on closed form solutions for the call or put formulae differentiated with respect to the Black Scholes parameters. When Greeks formulae are difficult to develop or tease out, we can alternatively employ numerical Greeks - sometimes referred to finite difference approximations. A key advantage of numerical Greeks relates to their estimation independent of deriving mathematical Greeks. This could be important when we examine American options where there may not technically exist an exact closed form solution that is straightforward to work with. (via VinegarHill FinanceLabs)
Numerical Greeks Outputs
Delta D
Elasticity L
Gamma G
DGammaDvol
GammaP G
Vega
DvegaDvol
VegaP
Theta Q (1 day)
Rho r
Rho futures option r
Phi/Rho2
Carry
DDeltaDvol
Speed
Strike Delta
Strike gamma
Things to know
Only works on the daily timeframe and for the current source price.
You can adjust the text size to fit the screen