En este post analizaremos la evolución del IBEX 35 en lo corrido de este año; para ello, comenzaremos descargando los precios de cierre ajustado (AdjClose) desde Yahoo Finance con get.hist.quote del paquete tseries, precios diarios desde 01 de enero hasta el 08 de abril de este año, lo cual se realiza con compression que por defecto descarga datos diarios (“d”), si se desean semanales en su lugar habría que escribir “w” o mensuales “m”.
Descarga de datos con el paquete tseries
library(tseries)
IBEX35<- get.hist.quote(instrument = "^IBEX", start=as.Date("2016-01-01"), end=as.Date("2016-04-08"),
quote = "AdjClose", provider = "yahoo", compression = "d", retclass = "zoo")
Ahora miramos la estructura de nuestros datos; las primeras cinco y las últimas cinco observaciones con head y tail respectivamente:
head(IBEX35,5)
## AdjClose ## 2016-01-04 9313.2 ## 2016-01-05 9335.2 ## 2016-01-06 9197.4 ## 2016-01-07 9059.3 ## 2016-01-08 8909.2
tail(IBEX35,5)
## AdjClose ## 2016-04-04 8597.5 ## 2016-04-05 8387.7 ## 2016-04-06 8398.6 ## 2016-04-07 8292.9 ## 2016-04-08 8427.6
Y podemos ver que descargó los datos desde el 04 de enero de 2016 (primer día bursátil para este año según el calendario) hasta el 08 de abril.
Gráficos y cálculo de rentabilidad con el paquete PerformanceAnalytics
Ahora graficaremos la evolución de nuestro índice con chart.TimeSeries de la librería PerformanceAnalytics:
library(PerformanceAnalytics)
chart.TimeSeries(IBEX35, col="darkgreen", legend.loc = "bottomright", main="Evolucion del IBEX 35")
Para calcular la rentabilidad (rendimiento continuo) y graficarla (en líneas y barras):
Rent <- CalculateReturns(IBEX35, method = "log")
chart.TimeSeries(Rent, col="darkgreen", main="Rentabilidad diaria del IBEX 35")
chart.Bar(Rent, col="darkgreen", main = "Rentabilidad diaria del IBEX 35")
Para calcular el rendimiento promedio diario:
RetornoIBEX35<-diff(log(IBEX35))
RendimientoProm = mean(RetornoIBEX35)
RendimientoProm*100
## [1] -0.1491355
Como vemos, el rendimiento promedio diario es de -0,149%.
Si queremos ver en un gráfico el valor de una inversión de 1 Euro (wealth.index = TRUE) realizada al inicio del año:
chart.CumReturns(CalculateReturns(IBEX35, method = "discrete"),col="darkgreen",
wealth.index = TRUE, main="Inversion de 1 Euro")
Y como podemos comprobar dicha inversión no ha sido una brillante idea!!!
Gráficos con ggplot2 y lattice
Así mismo, podemos generar nuestros gráficos con ggplot2 y lattice (usando en este caso un tema inspirado The Economist), pero antes tenemos que convertir nuestros datos en un data.frame:
IBEX <- get.hist.quote(instrument = "^IBEX", start=as.Date("2016-01-01"), end=as.Date("2016-04-08"),
quote = "AdjClose", provider = "yahoo", compression = "d", retclass = "zoo")
IBEX.df <- data.frame(
index(IBEX),
coredata(IBEX),
stringsAsFactors=FALSE
)
colnames( IBEX.df ) <- c( "date", "IBEX" )
library(ggplot2)
ggplot( IBEX.df, aes(date) ) +
geom_line( aes( y = IBEX ) ) +
labs( title = "Evolucion IBEX 35 en 2016 (ggplot2::ggplot))")
library(latticeExtra)
asTheEconomist(
xyplot(
IBEX,
scales = list( y = list( rot = 0 ) ),
main = "IBEX 35 (lattice::xyplot.xts)"
)
)
Con R, se pueden descargar datos económicos y financieros de distintas fuentes, puedes ver ejemplos en la entrada sobre paquetes para descargar datos económicos y financieros con R o más aplicaciones de R para finanzas en la página de finanzas cuantitativas.
¿Te ha parecido útil? ¡Puntúa esta entrada!
¡Haz clic en una estrella para puntuar!
Promedio de puntuación 5 / 5. Recuento de votos: 2
Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.