JustUncleL

Daily Historical Volatility StdDev Levels

2521 views
327
2521 12
Description:
This indicator plots Daily Standard deviation levels on price chart based on Historical Volatility (HV). It uses the most common approach for calculating historical volatility as standard deviation of logarithmic returns, based on daily closing/settlement prices.

Assets: Currency Pairs, Commodities , also works on stocks, some indices.
Time Frames: 5min to 60min. This will also work on Daily Chart , by setting "DaystoExpire" to 21

Options:
  • Use Daily Data to Calculate StdDev HV (default), otherwise use the charts Time Frame
  • Lookback = number of days/periods to calculate stddev of HV (21 by default)
  • Annual = number of trading days in a calender year (252 by default)
  • Days to Expiry = number of days for the life of this option ( for auto calculation
    this is 1 for intraday, 21 for daily and annual when chart TF used)
  • Settlement Source = close price by default, can use another source.
  • Settlement Volume Weighted Average Length = by setting this to >1 then an average
    is used for settlement.
  • Display ### Standard Deviation Levels = select what levels are to be displayed.

References:
Jul 31
Release Notes: Corrected Change of day detection for Intraday TFs
Corrected -0.75 Label.
Aug 14
Release Notes: Small changes:
  • Changed to only display background fill for upto +/- 1 Stddev.
  • Added option to Display Todays Only Levels.
Aug 15
Release Notes: ...
  • Made changes so that it also work with Renko Charts, BUT only works well with short TF (<=5min) and brick (<=6pip).
  • Added Option to display Previous Day's High Low Levels.
  • Added Option to display Current Day's High Low Levels.
  • Changed 0.75 level to 0.7 level.
  • Shortened short title to "HVSD" for easier visual when Indicator Labels are used.
Sep 09
Release Notes: ...
  • Modified the way displaying "Only Today" levels, now only show up within the current days price action.

Jun 04
Release Notes: Efficiency Update
  • Improved efficiency by reducing the number of plot lines required by adding "style=2" (Line with Breaks) to the plot options.
  • Added fill colour for 2nd and 3rd Stddevs.

Jun 07
Release Notes: Minor update
  • Corrected no History flag "nohist" calculation, would misread the number of days of data left in the history.
Remove from Favorite Scripts Add to Favorite Scripts
JustUncleL
Question: if you state: // get the Daily Settlement

settlement = sLength==1? src : vwma(src,sLength)
settlement := newDay ? settlement : nz(settlement)

Then you call:

// Calculate STDdev over life of the option (generally this is one day for 5min to 60min TFs,
// and 21 days for Daily TF)
stdhv = 0.0
DaystoExpire = DaystoExpire_==0? isintraday? useDaily? 1 : min(annual,1440/interval) : 21 : DaystoExpire_
stdhv := newDay? settlement*hv*sqrt(DaystoExpire/annual) : nz(stdhv)


To which of the settlements then the program is referring to?

Thanks.
Reply
JustUncleL syracusepro
@syracusepro, Settlement is generally the last close (src) value of the previous Day, there is an option to create a volume weighted average of close instead. So basically the value for settlement used in subsequent calculations is always the same until the next change of Day.
Reply
syracusepro JustUncleL
@JustUncleL, Thanks a lot.
Reply
Long waiting for this script to be here in TV. Thanks JustUncleL for your effort and generosity making this available for the whole community. Each line represents the EXPECTED move of the price based on the standard deviation formula using the historical volatility data of the underlying. Just drop the indicator on any chart and see for your self how nicely the price has reacted when has reached those lines. Nicely done UncleL thank you very much!
+2 Reply
Very very nice work.

Hopefully it can work on indices in the future. Thank you!
Reply
@edin228, I have updated the script with a correction on new Day detection. This update now seems to work OK on indices better, give it a try. I had a bit of trouble getting the new day detection to work until I added the flags barmerge.gaps_off and barmerge.lookahead_on to the security call for Daily time.
Reply
edin228 JustUncleL
@JustUncleL, Works perfectly! thank you very much, excellent work
Reply
It is start = security(tickerid,"D", time) such as NY trading start time and then
it is newDay = isintraday ? hour(time)==hour(start) and minute(time)==minute(start) : dayofmonth(time)<dayofmonth(time) such as time from start trading time to time before end if day?

Thanks.
Reply
JustUncleL syracusepro
@syracusepro, Yes, however, I have now changed the new day detection in the latest correction. The old code did not always work when there is a gap in the data stream at the start of day.
Reply
syracusepro JustUncleL
@JustUncleL, I see that on: newDay = isintraday ? change(start) : dayofmonth(time)<dayofmonth(time), it seems to me this means " it is intraday then the difference from start time to end time is less then todays dayofmonth time less than dayofmonth time"?
Reply
Home Stock Screener Forex Screener Crypto Screener Economic Calendar Shows How It Works Chart Features Pricing House Rules Moderators Website & Broker Solutions Widgets Charting Solutions Lightweight Charting Library Help Center Refer a friend Feature Request Blog & News Twitter
Profile Profile Settings Account and Billing Refer a friend My Support Tickets Help Center Ideas Published Followers Following Private Messages Chat Sign Out