gpt4 book ai didi

r - 如何使用 xts 对象处理 TTR 库中的 'Series contains non-leading NAs'?

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

在建模量化交易模型时,我经常遇到如何处理 NA 值的相同问题。下面的示例是关于自 1997 年 1 月 1 日起存储在 xts 对象中的股票的 EOD 数据,该对象具有名为“High”、“Low”、“Close”、“Volume”的四列。数据来自彭博社。当我想要计算滚动 20 天交易量时,出现错误消息:

SMA(stock$Volume, 20)
Error in runSum(x, n) : Series contains non-leading NAs

我很快找到了问题所在(我知道这是 NA 值,因为我已经尝试了 1000 次)并发现了这两天体积数据丢失的情况。我将那几天的数据复制如下。快速观察一下,如果 TTR 中的 SMAEMA 等函数前面有数字且后面有数字,则它们无法处理 NA。

stock <- as.xts(matrix(c(94.46,92.377,94.204,NA,71.501,70.457,70.979,NA), 2, 4,
byrow = TRUE, dimnames = list(NULL, c("High","Low","Close","Volume"))),
as.Date(c("1998-07-07", "1999-02-22")))

处理此问题的最佳方法是什么?是否将stock$Volume存储为临时对象,其中删除NA值,然后计算滚动量并将其与merge.xts合并回来,同时添加fill = NA 所以再次插入 NA 值?但是,由于您采用的是最近 20 个交易日,而不仅仅是 20 天窗口中可用的 19 个交易日,这种说法正确吗?

我希望本文能够得出某种“最佳实践”,因为我认为金融领域的其他 R 用户也会遇到这个问题,无论他们是从彭博社、雅虎财经还是其他来源获取数据。

最佳答案

采用包含 NA 的初始时间序列,例如 a.ts使用 na.approx 来近似 NA,这是一个用插值替换每个 NA 的通用函数(更多详细信息请参见动物园包文档)

b.ts=na.approx(a.ts)

b.ts 是时间

关于r - 如何使用 xts 对象处理 TTR 库中的 'Series contains non-leading NAs'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903606/

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