Mi problema es similar al de esta pregunta: cómo hago un bucle a través de todas las acciones con quantmod y ttr?
Para estimar la matriz de covarianza de los rendimientos de las acciones, necesito una matriz $NxT$ $X$ de rendimientos (acciones $N$ observaciones $T$). Así que usando el enlace de arriba, tengo el siguiente código:
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)
} }
Sin embargo, por alguna razón y parece que también aparece en el enlace de arriba, el bucle for anterior se rompe después de 50 o 100 iteraciones. Se describe una solución y consiste en ejecutar nuevamente el bucle comenzando donde se rompe, pero me pregunto por qué se rompe en absoluto si funciona bien al principio.
Tengo una segunda pregunta, la última línea
rm(symbol)
en realidad no elimina los datos xts del símbolo de la base de datos. En cambio, elimina la variable temporal de carácter. En su lugar, quiero eliminar el elemento xts de mi entorno. Intenté usar
rm(get(symbol))
pero esto tampoco funciona y arroja un error en la primera iteración.
¡Gracias por la ayuda!
0 votos
Cuando se rompe el bucle, simplemente se detiene sin lanzar un error.
0 votos
¿La respuesta de @Rime te ayudó? Sería genial si pudieras aceptarla.