Options

How to approximate the time to mean reversion for implied volatility

  • February 26, 2015

給定一個期權及其隱含波動率,以及過去 30 天隱含波動率的平均值,如果我們發現目前 IV 顯著(> 1 標準偏差)偏離平均值,則:

如何估計 IV 意味著恢復的時間?

一個非常流行的均值回歸選擇是Ornstein-Uhlenbeck 過程(此處為離散形式):

$$ L_{t+1}-L_t=\alpha(L^-L_t)+\sigma\epsilon_t $$ Here you see that the level change is governed by some parameter [Math Processing Error] $ \alpha $ , the mean reversion rate (or speed), and the distance between the long run mean [Math Processing Error] $ L^ $ and the actual level [Math Processing Error] $ 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.

我在 R 中編寫了以下範例,其中包含這個玩具範例作為註釋以及從 2014 年 1 月到今天的 VIX 的實際計算:

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]])

執行程式碼給出:

> (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

解釋是 VIX 的長期平均值(從相應的時間範圍估計)是[數學處理錯誤],這意味著恢復大約 $ 14.6 $ $ 9% $ 每個 VIX 百分點,需要大約[數學處理錯誤]天才能恢復 $ 7.5 $ $ 50% $ .

引用自:https://quant.stackexchange.com/questions/16738