This script calculates and analyses the following historical volatility estimators:
- the traditional
Close-to-Close
estimator (and a variant of it that uses demeaned returns); - the
Parkinson
estimator (1980); - the
Garman-Klass
estimator (1980) and a variant proposed by Yang & Zhang (2000); - the
Rogers-Satchell
estimator (1991); - the
Hodges-Tompkins
estimator (2002); - the
Yang-Zhang
estimator (2000); - the
Meilijson
estimator (2009).
The minimum Matlab version required is R2014a
. In addition, the following products and toolboxes must be installed in order to properly execute the script:
- Statistics and Machine Learning Toolbox
- System Identification Toolbox
- Edit the
run.m
script following your needs. - Execute the
run.m
script.
Datasets can be fetched from Yahoo! Finance
using the function fetch_data
, or parsed from Excel
sheets using the function parse_dataset
. The example script provides a good overview of both approaches.
Every dataset passed as input argument to analyze_volatility
, compare_estimators
and estimate_volatility
functions must be structured as a table of historical time series having the following columns:
- Date (numeric observation dates)
- Open (opening prices)
- High (highest prices)
- Low (lowest prices)
- Close (closing prices)
- Return (log returns)