時序

使用 R 中的 quantmod 在一個矩陣中收集所有股票收益

  • June 12, 2018

我的問題類似於這個問題中的問題:如何使用 quantmod 和 ttr 遍歷所有股票?

為了估計股票收益的共變異數矩陣,我需要一個 $ NxT $ 矩陣 $ X $ 回報率 ( $ N $ 股票 $ T $ 觀察)。所以使用上面的連結,我有以下程式碼:

library(quantmod)

symbols <- stockSymbols(c("AMEX", "NYSE")) 
symbols <- symbols[,1]

dataset <- xts()


for(i in 1:length(symbols)){   
 symbol <- symbols[i]   
 tryit <- try(getSymbols(symbol,from = "1990-01-01", to = "2010-01-01"))   
 if(inherits(tryit, "try-error")){
   i <- i+1   }
 else{   
 getSymbols(symbol, from = "1990-01-01", to = "2010-01-01")   
 retx <- Ad(get(symbol)) %>%
   dailyReturn(type = "log")   
 colnames(retx) <- as.character(symbol)   
 dataset <- merge(dataset, retx)
 rm(symbol)
 } }

但是,由於某種原因,它也出現在上面的連結中,上面的 for 循環在 50 或 100 次迭代後中斷。描述了一個解決方案,它包括再次執行循環,從它中斷的地方開始,但我想知道為什麼它會中斷,因為它在開始時執行良好。

我有第二個問題,最後一行

rm(symbol)

實際上並沒有從數據庫中刪除符號的 xts 數據。相反,它會刪除臨時字元變數。相反,我希望從我的環境中刪除 xts 元素。我嘗試使用

rm(get(symbol))

但這也不起作用,並在第一次迭代時引發錯誤。

感謝您的幫助!

嘗試使用

stock<- lapply(as.list(tickers), function(x) {
tmp <- try(getSymbols(x, from="1990-01-01",   auto.assign= FALSE))
if(!inherits(tmp, 'try-error'))
tmp})

stock將返回所有可用庫存的 OHLCV 作為列表。您可以使用do.call合併所有調整後的收盤價,然後計算收益。

引用自:https://quant.stackexchange.com/questions/39756