[英]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))
这将得到你想要的。
多个符号的答案:
做你正在做的事。
获取符号时运行并 lapply: stock_prices <- lapply(symbols, getSymbols, auto.assign = FALSE)
使用包 tidyquant 或 BatchGetSymbols 在一个大标题中获取所有数据。
...可能忘记了一些。 关于这个有多个 SO 答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.