DS中的Quantmod ...下载库存数据

时间:2014-12-09 21:57:27

标签: r quantmod

在R中的Quantmod包中,您可以按如下方式下载股价数据

my_portfolio <- c("AAPL", "SBUX")
getSymbols(my_portfolio)

这很好用。我可以通过输入AAPLSBUX来访问库存数据。例如

> head(AAPL)
           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2007-01-03     86.29     86.58    81.90      83.80   309579900         11.34
2007-01-04     84.05     85.95    83.82      85.66   211815100         11.59
2007-01-05     85.77     86.20    84.40      85.05   208685400         11.51
2007-01-08     85.96     86.53    85.28      85.47   199276700         11.56
2007-01-09     86.45     92.98    85.15      92.57   837324600         12.52
2007-01-10     94.75     97.80    93.45      97.00   738220000         13.12

......我可以用这种方式做很多不错的统计数据。

但这很不方便,因为如果我更改my_portfolio,例如将"AAPL"替换为"IBM",那么我必须更改AAPL&#39;的所有未来事件。在脚本的后面加IBM

我的问题: 如何找到与从my_portfolio获得的getSymbols相关联的下载数据,而无需再次明确键入AAPLSBUX

1 个答案:

答案 0 :(得分:1)

我倾向于这样做:

library(quantmod)
my_portfolio <- c("AAPL", "SBUX")
stocks <- lapply(my_portfolio,getSymbols,auto.assign=FALSE)
names(stocks) <- my_portfolio
# access the data
head(stocks[[my_portfolio[1]]])
#            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
# 2007-01-03     86.29     86.58    81.90      83.80   309579900         11.34
# 2007-01-04     84.05     85.95    83.82      85.66   211815100         11.59
# 2007-01-05     85.77     86.20    84.40      85.05   208685400         11.51
# 2007-01-08     85.96     86.53    85.28      85.47   199276700         11.56
# 2007-01-09     86.45     92.98    85.15      92.57   837324600         12.52
# 2007-01-10     94.75     97.80    93.45      97.00   738220000         13.12

因此,这会生成包含股票价格的xts对象的命名列表。列表元素与您的投资组合中的股票名称相同。

不幸的是,列名仍然是特定于库存的(例如,AAPL.Close而不仅仅是Close),但您可以使用例如Cl(...)函数来解决该问题。 {1}}。