我正在寻找一种快速计算实际波动率的方法。所以我想用今天计算标准偏差作为接下来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次观测,我希望它采用最后的“正确”计算并将其用于本系列的其余部分。
答案 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)
只需按照正常情况计算实现的波动率,然后将其滞后于适当的数字,使其“向前看”。