我想计算一组指数的滚动20天实现波动率.这是我用来下载指数价格,计算每日回报和20天实现波动率的代码.
library(quantmod)
library(PerformanceAnalytics)
tickers = c("^RUT","^STOXX50E","^HSI", "^N225", "^KS11")
myEnv <- new.env()
getSymbols(tickers, src='yahoo', from = "2003-01-01", env = myEnv)
index <- do.call(merge, c(eapply(myEnv, Ad), all=FALSE))
#Calculate daily returns for all indices and convert to arithmetic returns
index.ret <- exp(CalculateReturns(index,method="compound")) - 1
index.ret[1,] <- 0
#Calculate realized volatility
realizedvol <- rollapply(index.ret, width = 20, FUN=sd.annualized)
Run Code Online (Sandbox Code Playgroud)
一切都很快,直到最后一行.我还没有计时,但是它的分数是几分钟,而我希望它只需几秒钟.有没有更快的方法来计算实现的波动率?
谢谢.
Jos*_*ich 10
您可以runSD在TTR包中使用(由quantmod加载),但是您需要应用于runSD每个列,将结果转换apply回xts对象,并手动对结果进行年度化.
realized.vol <- xts(apply(index.ret,2,runSD,n=20), index(index.ret))*sqrt(252)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10110 次 |
| 最近记录: |