R para finanzas y economía

Evolución del IBEX 35 en 2016: Descarga, Análisis y más gráficos con R

5
(1)

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") 

plot of chunk unnamed-chunk-3

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")

plot of chunk unnamed-chunk-4

chart.Bar(Rent, col="darkgreen", main = "Rentabilidad diaria del IBEX 35")

plot of chunk unnamed-chunk-4

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")

plot of chunk unnamed-chunk-6

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))")

plot of chunk unnamed-chunk-7

library(latticeExtra)

asTheEconomist(
  xyplot(
    IBEX,
    scales = list( y = list( rot = 0 ) ),
    main = "IBEX 35 (lattice::xyplot.xts)"  
  )
)

plot of chunk unnamed-chunk-7

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: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

No Comments

    Leave a Reply

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.