How to approximate the time to mean reversion for implied volatility
給定一個期權及其隱含波動率,以及過去 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% $ .