R中的相对性能循环



我无论如何都不是程序员,一直在努力学习R来编写各种交易策略。我试图计算一系列股票相对于标准普尔500指数的相对表现;P 500并将其保存到矩阵中。我写的东西似乎只经过第一个符号,然后就停止了。下面是我想出的代码。我感谢任何关于如何进行的帮助、意见和建议。非常感谢。

library(quantmod)
library(PerformanceAnalytics)
Sys.setenv(TZ = "UTC")
symbols <- c('IBM', 'GE', '^GSPC')
getSymbols(symbols, src = "yahoo", from = "2010-12-31", to = Sys.Date())
symadj <- cbind(IBM[,6], GE[,6])
sp5adj <- GSPC[,6]
# Calculate Relative Performance vs S&P and save data
for (i in length(symadj)) {
  rp <- matrix(symadj[,1]/sp5adj, nrow = 1070, ncol = 3)
  print(tail(rp))
}

_您不是在数组上循环,而是在单个数字上循环:

for (i in length(symadj))

Try(请参阅添加的seq,注意括号。另外,注意长度,迭代超过ncol(即列):

for (i in seq(1,ncol(rp),1))

_此外,你总是在浏览同一列:

  rp <- matrix(symadj[,1]/sp5adj, nrow = 1070, ncol = 3)

_我跳过了一件事:你应该在循环之前构建你的矩阵:

rp <- matrix(0,nrow=1071,ncol=2) 

然后在不覆盖先前矩阵的情况下进行分配-您已经构建了它(另外,看看1所在的i,现在您正在迭代)

rp[,i] <- symadj[,i]/sp5adj #This inside the loop

_你的for循环最终应该是这样的:

rp <- matrix(0,nrow=1071,ncol=2) 
for (i in seq(1,ncol(rp),1)) {
    rp[,i] <- symadj[,i]/sp5adj #This inside the loop
  print(tail(rp))
}

\!/现在这段时间有1071天,所以矩阵应该还有一行——这就是为什么1071天。

最新更新