R 中的相对性能循环
Relative Performance loop in R
我无论如何都不是程序员,并且一直在尝试学习 R 来编写各种交易策略。我正在尝试计算一系列股票与标准普尔 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))
尝试(查看添加的 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.
我无论如何都不是程序员,并且一直在尝试学习 R 来编写各种交易策略。我正在尝试计算一系列股票与标准普尔 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))
尝试(查看添加的 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.