繁体   English   中英

R 中的 Quantmod - 如何有效地处理多个符号?

[英]Quantmod in R - How to work on multiple symbols efficiently?

我正在使用 quantmod 处理 R 中的多个符号。 我的直觉是将符号组合成 xts 对象列表,然后使用 lapply 做我需要做的事情。 然而,一些让 quantmod 方便的东西(对于这个新手来说)似乎不能很好地处理列表。 一个例子:

> symbols <- c("SPY","GLD")
> getSymbols(symbols)
> prices.list <- mget(symbols)
> names(prices.list) <- symbols
> returns.list <- lapply(prices.list, monthlyReturn, leading = FALSE)

这行得通。 但我不清楚它使用的是哪一列价格。 如果我尝试指定调整关闭,则会引发错误:

> returns.list <- lapply(Ad(prices.list), monthlyReturn, leading = FALSE)
Error in Ad(prices.list) :
  subscript out of bounds: no column name containing "Adjusted"

Ad() 的帮助确认它适用于“合适的 OHLC object”,而不适用于 OHLC 对象列表。 在这种特殊情况下,我如何指定 lapply 应该将monthlyReturn function 应用于调整列?

更一般地说,在 quantmod 中使用多个符号的最佳实践是什么? 是使用列表,还是另一种更适合的方法?

回答monthlyReturn

所有的**Return函数都基于periodReturn periodReturn的默认检查是确保它是一个 xts 对象,然后以开盘价作为起始值,以收盘价作为最后一个值并计算收益。 如果这些至少可用。 如果这些不可用,它将根据时间序列的第一个值和时间序列的最后一个值计算回报,同时考虑所需的时间间隔(月、日、年等)。

回答lapply

您想对列表 object 执行 2 次操作,因此应在 lapply 内使用lapply

lapply(prices.list, function(x) monthlyReturn(Ad(x), leading = FALSE))

这将得到你想要的。

多个符号的答案:

  1. 做你正在做的事。

  2. 获取符号时运行并 lapply: stock_prices <- lapply(symbols, getSymbols, auto.assign = FALSE)

  3. 使用包 tidyquant 或 BatchGetSymbols 在一个大标题中获取所有数据。

  4. ...可能忘记了一些。 关于这个有多个 SO 答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM