Skip to content
All library documents

Forecasting VIX Spikes with Regime-Switching Volatility Models

Article Quant Q&A · Author: Wolfy

Summary

The document proposes a function that estimates the probability of a specified VIX increase over a chosen future horizon from a volatility time series. It suggests a Markov-switching regime model or another suitable forecasting approach, and gives an example framed as the probability of a one-point rise from a stated VIX close within one day. The document does not provide a completed model or evidence that this proposed probability estimate is calibrated.

The author reports difficulty fitting a MATLAB regime-switching regression using daily VIX closes as the dependent variable and a random value between the daily high and low as a predictor. A response points to a Python implementation of a Markov-switching multifractal model and claims an R-squared close to 0.9 when forecasting VIX from SPY data over 2006–2018. No validation procedure, benchmark, forecast target details, or out-of-sample performance is described, so that reported fit should not be treated as established predictive accuracy.

Key ideas

  • The proposed forecast maps a volatility history, horizon, and target jump size to a probability of a VIX increase.
  • The author considers Markov-switching approaches but does not present a completed forecasting method.
  • A regression using daily VIX closes and a random intraday-range predictor reportedly performed poorly.
  • The response reports a high in-sample fit for an MSM model using SPY data, without describing validation or out-of-sample evidence.

Tags

Full text
# Volatility Forecasting of VIX


# Volatility Forecasting of VIX












Background:

As we know, volatility in the long run is mean reverting. Given that volatility is mean reverting, when volatility is low, it tends to go up. When it is high and going down, it tends to go down, making it an interesting factor of analysis with broad potential usage.

We will design a volatility forecasting function (VolaProbFunction) in Matlab / C++ / both using a Markov Switching regime or a better model to see if the results are promising.

The model should provide a probability threshold % (going from 0 to 100%) of a volatility spike in the next (Y) days.

Parameters of the VolaProbFunction:

1- [input] Time in hours in the future to get the forecast point (T)

2- [input] volatility jump that we would like to get the probability for(Y)

3- [input] volatility evolution time series (in days or hours) (VOLSERIES)

4- [output] is the probability of having a Y jump in period T from now (PROB).

PROB = VolaProbFunction(VolSeries,T,Y)

0% < PROB < 100%

Example:

INPUT for VOLSERRIES is the series: DATE / VIX CLOSE in this file. http://www.cboe.com/publish/scheduledtask/mktdata/datahouse/vixcurrent.csv value for Close of 1-DEC-2017 is 11.43

INPUT for T: 1 day.

INPUT for Y: 1

Function will check the probability of a jump from 11.43 to 12.43 in the next day.

OUTPUT: 45% (45% chance of a 1% jump in VIX at 11.43%)

Question:

I thought of using Markov-switching multifractal but I am free to use whatever model I desire to forecast VIX. I was hoping to get some advice on this problem. If anyone has any models that they would recommend or papers I could look up to help code up the model please let me know. I can use whatever language I want i.e., C++, MATLAB, R, or Python.

Update:

I am currently trying to use the MS_Regression library on MATLAB. The problem I have is when I simply use the MS_Regression_Fit() function where my dependent variable being the daily close price of VIX and the independent variable as rand(vix_high - vix_low) + vix_low, I get very poor results. I am not sure how to accomplish this task with the library.

Any recommendations on this issue are greatly appreciated.

## Answer by Thanasarn Porthaveepong (score 2, accepted)

https://quant.stackexchange.com/a/39390

I am developing MSM model in python feel free to use and ask. all code is in MSM_g2.ipynb (using jupyter).

I can forecast VIX using only the spy data with almost .9 for r-sq, period is 2006-2018.

https://github.com/lawofearth/MSM_Thanasarn

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.