Hi, I'm just starting to get in to options, and I was wondering how most traders calculate historic volatility? I'd really appreciate it if some traders take the time to answer this newb question. Thanks! The New Guy
the standard deviation of the movement of the stock historically. excel has a function to calculate this.
fantastic, thanks for your reply. very familiar with excel, so that should be no problem. i assume you use a timeframe similar to the time til expiration for the option in question? Thanks The New Guy
I use the method as described on pages 461 and 462 in Options as a Strategic Investment by McMillan. Basically you take the log of the ratio of each day's price and the previous day's price. Then you compute the standard deviation of those values. Next, multiply the standard deviation by the square-root of the number of trading days in a year to convert to an annualized volatility so that you can use it in the Black-Scholes model. Here's my C# source code to compute a series of historical volatilities. public class OptionMath { const double AnualTradingDays = 260.0; public static double[] HistoricalVolitilitySeries(double[] prices, int period) { Debug.Assert(prices.Length-1 >= period); double[] v = new double[prices.Length-period]; for (int j=0,i=1; j < v.Length; j++,i++) { v[j] = HistoricalVolitility(prices, i, period); } return v; } public static double HistoricalVolitility(double[] prices, int index, int period) { double[] P = prices; double[] X = new double[period]; double mean = 0; // get the logarithms of the daily price ratio for (int j = 0, i=index; j < period; j++,i++) { X[j] = Math.Log(P/P[i-1]); mean += X[j]; } // compute the mean of the logarithms of the price changes mean /= period; // compute the deviations from the mean double sum = 0; for (int k = 0; k < period; k++) { double d = (X[k] - mean); sum += d*d; } // standard deviation of the daily volatilities over the period double v = Math.Sqrt(sum/(period-1)); // scale to an annualized value for use in the BS equation double annualVolatility = v*Math.Sqrt(AnualTradingDays); return annualVolatility; } }
There are a variety of volatility estimators some of which perform better or converge faster than a simple standard deviation, and are included in Peter Hoadley's option tools: http://www.hoadley.net/options/develtoolsFAQs.htm#historicvolatility All except GARCH models are very easy to replicate in a few dozen lines of code from the references in Hoadley's FAQ. Martin
What's the theoretical basis or justification for using something other than the standard deviation? TIA.
Open-high-low-close estimators converge faster and with a given amount of data tend to produce a more accurate result. If your strategy is sensitive to fast changes in volatility you might want to use a shorter window with one of these estimators. Similar logic applies for exponentially weighted moving averages, for any time series, not just volatility. EWMAs react faster than a plain moving average yet still incorporate longer term historical trends to some extent. GARCH incorporates mean reversion and volatility clustering, which theoretically makes it a stronger estimator since these are well known characteristics of volatility. Unfortunately it is also somewhat unstable. For me, GARCH has always proven to be more of a hassle than it is worth. But, I recommend you look up the original papers because they go into much more detail and use hard data to justify their estimators. Martin
This latter is a fallacy. I can see the theoretical basis for the standard deviation definition of volatility, if we accept all the assumptions that allow Black-Scholes to operate. But the rest of these volatility estimators look ad hoc, with a lot of hand-waving to rationalize them. EMA has the exact same lag characteristic as the simple moving average. Those who claim it is closer to the weighted moving average ignore the fact that the EMA represents an infinite series, whereas the SMA and WMA are finite series. I don't have access to a university library to look up academic papers. Thanks for the info on GARCH.