【问题标题】:Using xts with slightly different date structures使用日期结构略有不同的 xts
【发布时间】:2015-11-12 21:49:08
【问题描述】:

我正致力于在 R 中实现财务模型。我正在使用quantmod::getSymbols(),它返回一个 xts 对象。我正在使用来自谷歌(或雅虎)的股票数据和来自 FRED 的经济/收益数据。现在,在尝试进行比较时,我收到了不合格数组的错误。

require(quantmod)
fiveYearsAgo = Sys.Date() - (365 * 5)
bondIndex <- getSymbols("LQD",src="google",from = fiveYearsAgo, auto.assign = FALSE)[,c(0,4)]

bondIndex$score <- 0

bondIndex$low <- runMin(bondIndex,365)
bondIndex$high <- runMax(bondIndex,365)

bondIndex$score <- ifelse(bondIndex > (bondIndex$low * 1.006), bondIndex$score + 1, bondIndex$score)
# Error in `>.default`(bondIndex, (bondIndex$low * 1.006)) : 
#   non-conformable arrays 
bondIndex$score <- ifelse(bondIndex < (bondIndex$high * .994), bondIndex$score - 1, bondIndex$score)
# Error in `<.default`(bondIndex, (bondIndex$high * 0.994)) : 
#   non-conformable arrays
print (bondIndex$score)

我在违规行之前添加了以下内容:

print (length(bondIndex))
print (length(bondIndex$low))
print (length(bondIndex$high))

我的结果是 5024、1256 和 1256。我希望它们的长度相同,每天都有收盘价、52 周高点和 52 周低点。我还想添加更多数据,因此这些天也有 50 天移动平均线。此外,真正影响我进步的是实施来自 FRED 的产量数据。我的理论是股票和债券市场有不同的假期,导致每天略有不同。在这种情况下,我想na.spline() 丢失的数据。

我知道我要走错路了,做我正在尝试的事情的最佳方法是什么?我想让每一行都是一天,然后有收盘价、高点、低点、移动平均线、当天的几个不同收益率的列,最后是一个“分数”,它具有基于当天其他数据的每日价值.

感谢您的帮助,如果您想要或需要更多信息,请告诉我。

【问题讨论】:

    标签: r xts quantmod


    【解决方案1】:

    你需要告诉你的语句你想要什么变量。现在你在问bondIndex 是大于还是小于低或高。这没有意义。大概你想要bondIndex[,1] aka bondIndex$LQD.Close

    bondIndex$score <- ifelse(bondIndex[,1] > (bondIndex$low * 1.006), bondIndex$score + 1, bondIndex$score)
    bondIndex$score <- ifelse(bondIndex[,1] < (bondIndex$high * .994), bondIndex$score - 1, bondIndex$score)
    

    附带说明,Sys.Date() - (365 * 5) 不是五年前(提示,闰年)。这将是一个可能会咬你的错误。

    【讨论】:

    • 感谢您的帮助。我知道这不完全是 5 年,但我不想尝试合并可能相隔 50 年的数据集。我现在的问题是整合不同的数据集。 bondIndex 看起来不错,直到我做bondIndex$fedFund &lt;- na.spline(getSymbols("DFF", src = "FRED", from = fiveYearsAgo, auto.assign = FALSE),na.rm = TRUE)。然后我得到NA的列。我有充分的理由相信日子并不准确(股票和债券有不同的假期)。如何强制它尝试匹配日期然后样条任何缺失值?
    • 没问题。你应该把这个问题当作一个新问题来问 - 我不是 100% 确定你想要什么。
    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 2018-08-10
    • 2017-11-12
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多