Cargamos la librerías

options(warn = -1)

1. generemos una función que ayude a simplificar los tipos de datos que deseamos de la fuente de información financiera.

En este ejemplo, los datos de Cierre y Volúmenes, que dependerán del simbolo o ticker del activo y a partir de qué año se consultan:

Datos

precios_volumenes <- function(simbolo, year)
{
  # Obtener precios stocks de Yahoo Finance
  datos <- getSymbols(simbolo, src = "yahoo", auto.assign = FALSE) 
  # Eliminando valores faltantes
  datos <- na.omit(datos)
  # Mantenemos columnas con Precios de Cierre y Volúmenes, columnas 4 y 5 de cada stock:
  datos <- datos[, 4:5]
  # Para hacer los datos accesibles, asignamos a Global Environment:
  assign(simbolo, datos, envir = .GlobalEnv)
}

Llamamos la función para cada stock desde el 2014:

  precios_volumenes("AMZN", 2014)
  precios_volumenes("NFLX", 2014)
  precios_volumenes("IBM", 2014)
  precios_volumenes("SPY", 2014)

Juntamos los datos y renombramos las columnas:

PyV <- merge.xts(AMZN, NFLX, IBM, SPY)
  colnames(PyV) <- c("Amazon P.Cierre","Amazon Vol", "Netflix P.Cierre","Netflix Vol", 
                     "IBM P.Cierre", "IBM Vol", "SP500 P.Cierre", "SP500 Vol")

##Serie De Tiempo:

Podemos generar una gráfica interactiva las variables, en este caso de los precios:

Precios<-  dygraph(PyV[,c(1,3,5,7)], main = "Precios de Amazon, Netflix, IBM y SP&500") %>%
    dyAxis("y", label = "Precios") %>%
    dyRangeSelector(dateWindow = c("2014-01-01", "2020-07-01")) %>%
    dyOptions(colors = RColorBrewer::brewer.pal(4, "Set1")) 
Precios

Podemos ver los 5 ultimos datos redondeando hasta 3 decimales:

round(tail(PyV, n = 5), 3)
##            Amazon P.Cierre Amazon Vol Netflix P.Cierre Netflix Vol IBM P.Cierre
## 2023-01-11           95.09  103126200           327.26     9579700       145.26
## 2023-01-12           95.27   85254800           330.13    10856200       145.55
## 2023-01-13           98.12   85413600           332.82     8277200       145.89
## 2023-01-17           96.05   72755000           326.22     9247000       145.19
## 2023-01-18           95.46   79463000           326.33     7802400       140.41
##            IBM Vol SP500 P.Cierre SP500 Vol
## 2023-01-11 3268700         395.52  68881100
## 2023-01-12 2715900         396.96  90157700
## 2023-01-13 2455700         398.50  63863400
## 2023-01-17 2986500         397.77  62677300
## 2023-01-18 6444000         391.49  99456100

Ejemplo de Panel Data, generemos una list de objetos dygraphs, y para imprimirlos usamos htmltools:

library(dygraphs)
library(htmltools)
dy_graficos <- list(
 dygraphs::dygraph(PyV[,c(1,3,5,7)], main = "Precios de Amazon, Netflix, IBM y SP&500"), 
 dygraphs::dygraph(PyV[,c(2,4,6,8)], main = "Volumenes de Amazon, Netflix, IBM y SP&500"))

Representemos los objetos dygraphs usando htmltools

htmltools::browsable(htmltools::tagList(dy_graficos))

Datos tipo Transversales o Cross Sectional

Seleccionaremos los datos de AMZN del 2014 y del 2020.

Empecemos seleccionando los años 2014 de AMZN que es la 1ra columna.

AMZN_2014<-subset(PyV[,1], index(PyV)>="2014-01-01"& index(PyV)<="2014-12-31")
AMZN_2014[c(1:5, nrow(AMZN_2014))]
##            Amazon P.Cierre
## 2014-01-02         19.8985
## 2014-01-03         19.8220
## 2014-01-06         19.6815
## 2014-01-07         19.9015
## 2014-01-08         20.0960
## 2014-12-31         15.5175
#Para el año 2020:
AMZN_2020<-subset(PyV[,1], index(PyV)>="2020-01-01"& index(PyV)<="2020-12-31")
AMZN_2020[c(1:5, nrow(AMZN_2020))]
##            Amazon P.Cierre
## 2020-01-02         94.9005
## 2020-01-03         93.7485
## 2020-01-06         95.1440
## 2020-01-07         95.3430
## 2020-01-08         94.5985
## 2020-12-31        162.8465

Ahora, podemos tambien visualizarlo, elegimos un histograma

par(mfrow=c(2,1))
hist(AMZN_2014, freq = FALSE, col="yellow", border="blue",main= "Dansidades de los Precios AMZN en 2014", xlab = "Precios Cierre")
lines(density(AMZN_2014), lwd = 2, col = 'red')

hist(AMZN_2020, freq = FALSE, col="blue", border="blue",main= "Dansidades de los Precios AMZN en 2020", xlab = "Precios Cierre")
lines(density(AMZN_2020), lwd = 2, col = 'red')