我正在努力在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()
缺少数据。
我知道我会采用这种错误的方式,做出我正在尝试的最好方法是什么?我希望每行都是一天,然后列出收盘价,高点,低点,移动平均线,当天的几种不同收益率,最后是根据当天其他数据的每日价值的“得分”
感谢您的帮助,如果您需要或需要更多信息,请与我们联系。
答案 0 :(得分:2)
您需要告诉您的陈述您想要的变量。现在你问的是bondIndex
是大于还是小于低或高。这没有意义。大概你想要bondIndex[,1]
又名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)
不是五年前(暗示,闰年)。这将是一个可能会让你失望的错误。