0

我正在寻找一种在滚动前瞻基础上快速计算已实现波动率的方法。所以我想用今天作为接下来 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 个观察值,我希望它采用最后一个“正确”计算并将其用于该系列的其余部分。

4

2 回答 2

3

一种方法是用否定“滞后”你的系列k(注意在than和k中的解释不同)。lag.xtslag.tslag.zoo

getSymbols("SPY")
spy <- ROC(Cl(SPY))
# note that k is interpreted differently from lag.ts and lag.zoo
spy$SPY.Lag <- lag(spy,-125)
# remove trailing NA
spy <- na.omit(spy)
rv <- runSD(spy$SPY.Lag,n=125)*sqrt(252)
于 2012-11-12T12:41:50.657 回答
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)

只需按正常计算已实现的波动率,然后将其滞后适当的数字,使其具有“前瞻性”。

于 2012-11-13T04:33:09.817 回答