首页 文章

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

提问于
浏览
0

在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 ,比如用 "IBM" 替换 "AAPL" ,那么我必须在后面的脚本中用 IBM 更改 AAPL 的所有未来出现 .

My Question: 如何找到从 getSymbols 获取的与 my_portfolio 相关的下载数据,而无需再次显式输入 AAPLSBUX

1 回答

  • 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 ),但您可以使用例如 quantmod 中的 Cl(...) 函数来克服该问题 .

相关问题