尺寸数量不正确的股票价格

时间:2020-04-04 05:14:43

标签: r

我正在尝试使用第6列的数据,也就是调整后的股价。我想查找多只股票的月收益。在查看股票的第六列时,我总是遇到错误。 这是我的代码。

ticker <- c('DPZ','SPY','AMD','AAPL','TSLA')

Portfolio1 <- getSymbols(ticker[1], src="yahoo", 
from='2014-01-01', to='2018-12-31', auto.asign = TRUE)
Portfolio2 <- Portfolio1[, 6]

my.portfolio <- monthlyReturn(Portfolio1)

for( i in 2:length(ticker)){
  Portfolio1 <- getSymbols(ticker[i], src="yahoo", 
from='2014-01-01', to='2018-12-31', auto.asign = TRUE)
  Portfolio2 <- Portfolio1[, 6]
  my.portfolio.a <- monthlyReturn(Portfolio2)
  my.portfolio <- cbind(my.portfolio, my.portfolio.a)
  }

第二个问题是,此循环是否将创建具有全部5个每月返回值的xts?

1 个答案:

答案 0 :(得分:0)

使用getSymbols时,默认情况下,数据存储在股票代号中,而不是您为其分配的名称中。

library(quantmod)

Portfolio1 <- getSymbols(ticker[1], src="yahoo", 
                     from='2014-01-01', to='2018-12-31', auto.asign = TRUE)
Portfolio1
#[1] "DPZ"

如果对该值进行子集化,则会收到错误消息

Portfolio1[, 6]

Portfolio1 [,6]中的错误:维数错误

这很有意义,因为Portfolio1只是一个矢量和一维对象。实际数据显示在股票代号中。

head(DPZ)

#           DPZ.Open DPZ.High DPZ.Low DPZ.Close DPZ.Volume DPZ.Adjusted
#2014-01-02    69.65    69.65   68.74     68.94     407300     64.57759
#2014-01-03    69.01    69.25   68.81     68.98     415500     64.61507
#2014-01-06    69.11    69.40   68.68     69.10     799600     64.72745
#2014-01-07    69.54    69.97   69.35     69.67     487000     65.26139
#2014-01-08    69.62    70.18   69.41     69.78     851400     65.36441
#2014-01-09    70.12    70.59   69.54     70.28     576500     65.83280

因此,我们可以将符号的所有数据收集在一起,并使用lapply进行绑定。

getSymbols(ticker, src="yahoo", 
             from='2014-01-01', to='2018-12-31', auto.asign = TRUE)

data <- setNames(do.call(cbind, lapply(ticker, function(x) {
                          Portfolio1 <- get(x)
                          monthlyReturn(Portfolio1[, 6])
         })), ticker)

 head(data)
#                   DPZ          SPY         AMD        AAPL          TSLA
#2014-01-31  0.02422370 -0.025913218 -0.13164557 -0.09496826  0.2085942488
#2014-02-28  0.11967181  0.045515825  0.08163265  0.05751062  0.3494845521
#2014-03-31 -0.02334707  0.008295903  0.08086253  0.01995296 -0.1485233499
#2014-04-30 -0.03364960  0.006951531  0.01995012  0.09939627 -0.0026864860
#2014-05-30 -0.02594769  0.023205889 -0.02200489  0.07870922 -0.0005772043
#2014-06-30  0.01229755  0.020645189  0.04750000  0.02766200  0.1554122028