Skip to content
All library documents

Estimating Implied Volatility Mean-Reversion Half-Life with an OU Model

Article Quant Q&A · Author: Victor123

Summary

The document explains how to estimate the speed and half-life of mean reversion in an implied-volatility series. It proposes a discretized Ornstein–Uhlenbeck model, where changes in volatility depend on the gap between the current level and a long-run mean, plus noise. A linear regression of level changes on lagged levels can estimate the reversion rate and implied long-run mean.

A worked example applies this approach to VIX data and reports an estimated long-run level, reversion speed, and half-life. These figures illustrate how to translate a fitted regression into an approximate time for half of a deviation to disappear. The method is presented as crude and relies on the selected sample period and model assumptions; it does not establish that volatility is stationary or that the estimate will remain stable. The question mentions a recent 30-day mean, but the example instead estimates parameters over a longer historical series.

Key ideas

  • A discretized Ornstein–Uhlenbeck process models changes as a function of distance from a long-run level and random noise.
  • Regress volatility changes on lagged volatility levels to estimate the mean-reversion rate.
  • The fitted intercept and slope can be used to estimate a long-run mean and a half-life.
  • The example illustrates the calculation with VIX data, while its estimates depend on the chosen historical window.

Tags

Full text
# How to approximate the time to mean reversion for implied volatility


# How to approximate the time to mean reversion for implied volatility












Given an option and its implied volatility, and also the mean value of the implied volatility over the last 30 days, if we find that the current IV is significantly (> 1 std dev.) away from the mean, then:

How to approximate the time for the IV to mean revert?

## Answer by vonjd (score 9, accepted)

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

A very popular choice for mean reversion is the Ornstein–Uhlenbeck process (here in discretized form): $$L_{t+1}-L_t=\alpha(L^*-L_t)+\sigma\epsilon_t$$

Here you see that the level change is governed by some parameter $\alpha$, the mean reversion rate (or speed), and the distance between the long run mean $L^*$ and the actual level $L_t$ plus some noise.

A very crude, yet intuitive way is to estimate the parameters of this process via a linear regression. Have a look at the following paper: http://www.fea.com/resources/a_meanrevert.pdf

There you see a toy example on page 71: The idea is that you do a regression where the level change of the time series is the dependent and the actual level of the time series is the independent variable.

I coded the following example in R which contains this toy example as a comment and the actual calculation for the VIX from January 2014 till today:

```
library(quantmod)
getSymbols("^VIX", from='2014-01-01')
level_t <- VIX$VIX.Adjusted
#level_t <- c(15,18,15.5,12,14.5,13,15,17,15.5,14)
change <- na.omit(diff(level_t))
level_t_1 <- level_t[-length(level_t)]
para <- lm(change ~ level_t_1)
summary(para)
(long_run_mean <- -para$coefficients[[1]]/para$coefficients[[2]])
(mean_reversion_speed <- -para$coefficients[[2]]*100)
(halflife <- -log(2)/para$coefficients[[2]])
```

Running the code gives:

```
> (long_run_mean <- -para$coefficients[[1]]/para$coefficients[[2]])
[1] 14.61876
> (mean_reversion_speed <- -para$coefficients[[2]]*100)
[1] 9.083576
> (halflife <- -log(2)/para$coefficients[[2]])
[1] 7.630774
```

The interpretation is that the long run mean of the VIX (estimated from the respective timeframe) is $14.6$, it mean reverts by about $9\%$ per VIX percentage point and needs about $7.5$ days to mean revert by $50\%$.

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.