如何通过Quantmod自动收集股票信息

问题描述 投票:1回答:1

尽管我可以手动使用Quantmod逐个库存地收集波动率,例如:

library(quantmod)
library(TTR)
getSymbols("SPY",from="2010-01-02", to="2020-01-02")
vol=volatility(SPY,n=252,N=252,calc="close"),

这需要我手动将符号(在上面的例子中是SPY)复制到波动率函数。

我一直在尝试为符号向量生成波动率,但是如果不必在波动率函数中手动输入每个符号就无法使其正常工作。

如何将getsymbols中的xts zoo输出传递给波动率函数?

xts zoo quantmod volatility
1个回答
0
投票

[创建一个新环境,将在其中保存下载的库存数据。循环浏览该环境中的对象,然后在每个对象上运行volatility函数。将结果保存在列表中,以免覆盖值。然后取消列表。

stockEnv <- new.env()

stocks <- c("AAPL", "AMZN", "FB", "GOOG", "JNJ")

getSymbols(stocks, src='yahoo', env=stockEnv)

vol <- vector("list", length = length(stocks))
names(vol) <- stocks

for (stock in ls(stockEnv)){
  x <- get(stock, envir = stockEnv)
  if(is.xts(x)) vol[[stock]] <- volatility(x,n=252,N=252,calc="close")     
}

vol <- do.call(cbind, vol)

tail(vol)
                AAPL      AMZN        FB      GOOG       JNJ
2020-04-02 0.3942074 0.2847975 0.3764976 0.3471883 0.2944110
2020-04-03 0.3944644 0.2847008 0.3773450 0.3477343 0.2944769
2020-04-06 0.4028379 0.2884106 0.3840943 0.3564780 0.2973116
2020-04-07 0.4030194 0.2883778 0.3843052 0.3564362 0.2977434
2020-04-08 0.4037249 0.2887164 0.3856355 0.3569687 0.3005816
2020-04-09 0.4036574 0.2887087 0.3856682 0.3569642 0.3009180
© www.soinside.com 2019 - 2024. All rights reserved.