计算前瞻性基础上的滚动实现波动率

时间:2012-11-12 09:13:16

标签: r xts

我正在寻找一种快速计算实际波动率的方法。所以我想用今天计算标准偏差作为接下来n天的第一次观察。

目前,我使用以下代码计算向后方向的已实现波动率:

index.realized <- xts(apply(index.ret,2,runSD,n=125), index(index.ret))*sqrt(252)
index.realized <- na.locf(index.realized, fromLast=TRUE)

我尝试设置n = -125,但毫不奇怪,这不起作用。

谢谢。

修改

为了澄清我想要做的事情,这里是我用来完成这个的for循环:

for(i in 1:nrow(index.ret)){   
   bear.realized[i,] = sd(bear.ret[i:(i+124),]) * sqrt(252)   
   index.realized[i,] = sd(index.ret[i:(i+124),]) * sqrt(252) 
}

对于我没有足够数据来计算波动率的最后124次观测,我希望它采用最后的“正确”计算并将其用于本系列的其余部分。

2 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是使用k为负数“延迟”系列(请注意,k的{​​{1}}与lag.xts的解释不同lag.ts和{{1} }})。

lag.zoo

答案 1 :(得分:0)

好的,我解决了。它实际上非常简单,只是想到了完全错误的方式。

index.realized <- xts(apply(index.ret,2,runSD,n=125), index(index.ret))*sqrt(252)
index.realized <- lag(index.realized, -124)
index.realized <- na.locf(index.realized)

只需按照正常情况计算实现的波动率,然后将其滞后于适当的数字,使其“向前看”。