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”.

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.

Ahora graficaremos la evolución de nuestro índice con chart.TimeSeries de la libreria 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!!!

Así mismo, podemos generar nuestros gráficos con ggplo2 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

Evolución del IBEX 35 en 2016http://www.finanzaszone.com/wp-content/uploads/2016/04/Evolucion-IBEX35.pnghttp://www.finanzaszone.com/wp-content/uploads/2016/04/Evolucion-IBEX35-150x150.pngConney Marulanda LópezMercados FinancierosRBolsa,Datos,ggplot2,IBEX35,lattice,Mercados Financieros,PerformanceAnalytics,REn 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...