Как автоматизировать сбор информации об акциях через Quantmod - PullRequest
1 голос
/ 30 марта 2020

Хотя я могу вручную использовать 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), к функции волатильности.

Я пытался сгенерировать волатильность для вектора символов, но не смог заставить это работать без необходимости вручную вводить каждый символ в функцию волатильности.

Как я могу передать вывод xts zoo из getsymbols в функцию волатильности?

1 Ответ

0 голосов
/ 12 апреля 2020

Создать новую среду, в которой будут сохранены загруженные данные о запасах L oop через объекты в этой среде, затем запустите функцию volatility для каждого объекта. Сохраните результат в списке, чтобы не перезаписывать значения. Тогда unlist.

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
...