【问题标题】:Calculate Rolling Realized Volatility on a Forward Looking Basis在前瞻性的基础上计算滚动已实现波动率
【发布时间】:2012-11-12 09:13:16
【问题描述】:

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

【问题讨论】:

    标签: r xts


    【解决方案1】:

    一种方法是用否定的k“滞后”您的系列(请注意,klag.xts 中的解释与lag.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)
    

    【讨论】:

    • 感谢您的回复。我尝试了这个解决方案,但我不认为它完全符合我的要求。当我滞后 -125 时,我失去了前 125 个观察值。因此,当我运行 runSD 时,我得到了前 125 个观察值的 NA,因此错过了前 125 个远期实际波动率读数。
    【解决方案2】:

    好的,我解决了。其实很简单,就是想错了。

    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)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2020-05-03
      • 2017-11-13
      相关资源
      最近更新 更多