historical (hv): realized of the recent past
median (mv): a long run average of realized
implied (iv): a user-defined
Historical and median are based on the EWMA, rather than standard deviation, method of calculating . Since Tradingview's built in function uses a window, the "window" parameter determines how much historical data is used to calculate these measures. E.g. 30 on a means the previous 30 days.
The plots above and below historical candles show past projections based on these measures. The "periods to expiration" dictates how far the projection extends. At 30 periods to expiration (default), the plot will indicate the one standard deviation range from 30 periods ago. This is calculated by multiplying the measure by the square root of time. For example, if the (hv) was 20% and the window is 30, then the plot is drawn over: close * 1.2 * sqrt(30/252).
At the most recent candle, this same calculation is simply drawn as a line projecting into the future.
This script is intended to be used with a particular options contract in mind. For example, if the option expires in 15 days and has an implied of 25%, choose 15 for the window and 25 for the implied options. The ranges drawn will reflect the two standard deviation range both in the future (lines) and at any point in the past (plots) for HV (blue), MV (red), and IV (grey).
historical (hv): a ema-derived volatility using a fixed window of historical returns.
median historical (mv): the median of a fixed-range of hv samples.
implied volatility (iv): a static implied volatility value that you derived elsewhere (e.g. copy/paste from your broker)
I hope to add more models in the future. The new features in this version are:
- Better comments and naming, to make the script more readable.
- The forecast plots are disabled by default. Use the settings to enable the ones you want to see.
- There is a table that shows how many periods price "breached" the forecast, as percentage and total. Every bar should have a forecast for hv and iv, but mv is limited to 4999 forecasts due to pinescript's limits.
- You can adjust the number of standard deviations to use in the forecast. This input replaces the 1 SD option from previous versions.
- The forecasts now use 365 days per year, not 252.
- theoretical values added to the table
- blended volatility model
- added a discount rate input
- (arguably) better names and comments, to make the code more readable
the theoretical values are computed by assuming a call was sold at a strike equal to each upper forecast, or a put at each lower forecast. If the closing price is above (below) the forecast, the contract is in the money; otherwise, it is worthless. the table shows the average value, at expiration, of a call ("t") or put ("b"), discounted to present value using the discount rate input.
the "blended volatility" (bv) is the more conservative of each historical (hv) and median historical (mv) forecast. for example, if the upper hv forecast is greater than the upper mv forecast, the upper bv forecast is equal to the upper hv forecast. there is no point drawing a line for this forecast, since it is obvious from looking at the hv and mv lines, but you can see the historical plots.
- normalized the theoretical values, which should make them much more accurate.
- changed some input defaults:
- range from 4999 to 365 (making it more compatible with most tickers)
- IV to 0, which the only default that is relevant for all tickers (since it shows the straddle)
In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.