gpt4 book ai didi

滚动应用时间序列

转载 作者:行者123 更新时间:2023-12-04 02:53:25 24 4
gpt4 key购买 nike

我正在尝试计算滚动的 20 周期历史波动率。我接受每日返回:

ret<-ROC(data1)

然后我使用 rollapply 获取每列的 20 天 HV:
vol<-rollapply(ret,20,sd,by.column=T,fill=NA)

问题是 vol 中的观察结果在十天后开始出现,这是错误的,因为我指定了 20。

为了演示,这里是数据示例:
0.000000000, 0.005277045, 0.023622047, 0.002564103,-0.002557545, -0.020512821,
0.007853403,-0.012987013, 0.007894737, 0.015665796, 0.000000000, -0.002570694,
0.002577320, -0.015424165, 0.002610966, 0.010416667, 0.002577320, 0.015424165,
0.000000000, -0.002531646, -0.002538071, 0.030534351, 0.014814815, -0.007299270,
-0.009803922, -0.012376238, 0.002506266, -0.015000000,-0.002538071, 0.002544529

假设上面的数据存储在x中,那么:
rollapply(x,20,sd,fill=NA)

将在第 10 行而不是 20 行产生第一个观察结果。sd 也是错误的。

我应该在这里遗漏了一些东西......

最佳答案

您需要使用 align='right'而不是使用默认值 align='center' ,或者不使用 rollapply ,使用 rollapplyr wrapper 有 align='right'作为默认值。

来自 ?rollapply :

align specifyies whether the index of the result should be left- or right-aligned or centered (default) compared to the rolling window of observations. This argument is only used if width represents widths.



虽然,为此,就个人而言,我会使用 runSD来自 TTR package 因为它使用编译的代码并且会更快。

其中任何一个都应该符合您的预期,但第二个会更快。
library(zoo)
rollapply(x, 20, sd, fill=NA, align='right')

library(TTR)
runSD(x, 20)

关于滚动应用时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com