時序
使用 R 中的 quantmod 在一個矩陣中收集所有股票收益
我的問題類似於這個問題中的問題:如何使用 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
合併所有調整後的收盤價,然後計算收益。