Práctica 3: Estadísticas Descriptivas para Rendimientos.

En esta sección se aplicarán las estadísticas descriptivas y conceptos básicos que se están estudiando. Además, se estudirá la diferencia entre rendimientos contínuos y discretos.

Estadísticas para los precios de las acciones:

Para comenzar, se llama la libería fBasics

Luego, se cargan los datos de las acciones con la función read.csv(), en un objeto llamado datos= tal como se vió en la sección anterior Conceptos Previos: Introducción a R y R-Studio. El archivo con el cual se trabajó se encuentra en aquí.

y se define el objeto precios = como una serie de tiempo con la función ts() aplicada a datos para las columnas 2 a la 5, las cuales contienen las acciones, ya que en el archivo la columna 1 solo es una columna de numeración.

Se muestra los 5 primeros registros de precios con la función head.

library('fBasics')
datos= read.csv(file.choose(), header=TRUE, sep =';', dec=",")
precios= ts(datos[,2:5])
print(head(precios,5))
     WMT.Adjusted PG.Adjusted NFLX.Adjusted KO.Adjusted
[1,]     95.04511    96.73402        359.97    47.71631
[2,]     95.99585    96.71452        351.77    47.84123
[3,]     96.56432    95.95438        359.07    43.80561
[4,]     98.00515    95.97388        356.87    43.46932
[5,]    100.17127    97.44544        361.92    43.07536

Histograma:

Se realiza el histograma de los precios de la acción 1 que para este caso particular pertenece a Walmart. Aqui se usa la función hist() sobre el objeto precios[,1] en la posición 1 (WMT), se le aplican los argumentos:título del gráfico “histograma Precios WMT” (main = "histograma Precios WMT"), color en azul (col='blue'), bordes en negro (border='black'), etiqueta del eje X en USD (xlab= USD) y tamaño del eje Y (ylim = c(0,50))

hist(precios[,1], main = "histograma Precios WMT", col = 'blue', border = 'black', xlab = 'USD',ylim = c(0,50))
../../_images/output_6_01.png

Con el fin de graficar los histogrmas con diferentes colores, se hace uso de la librería qualiPalette() para crear una paleta de n colores dentro de la gama Dark2 , los cuales están determinados por el número de acciones que contenga el objeto precios.

colores= qualiPalette(n=ncol(precios), name=c("Dark2"))

Preparación de la ventana de gráficos.

Con el fin de crear una ventana, que coloque los histogramas de los precios en una matríz gráfica de 4x2, se crean el objeto tamano=c(seq(ncol(cartera))), el cual crea una secuencia de 1 hasta el número total de acciones con el que cuenta el objeto precios, y luego con el objeto matriz se crea la matriz gráfica.

Con la ayuda de un ciclo for se crean los histogramas para cada una de las acciones pertenecientes a precios

win.graph(15,13)
tamano=c(seq(ncol(precios)))
matriz=matrix(tamano, ncol=2)
C=layout(matriz)
#layout.show(C) opcional para Rstudio en consola.
for (i in 1:ncol(precios)){
  hist(precios[,i], breaks=40, col=colores[i], xlab="Precios", ylab ="Frecuencia", main = names(precios[,i]), freq=F)
}
../../_images/output_10_02.png

Estadísticas Descriptivas:

Con el fin de obtener un resumen general de las estadísticas principales como media, mediana, mínimo, máximo y cuartiles, se utiliza la función summary() sobre precios, para todas las acciones.

#estadísticas
descriptivos= summary(precios)
print(descriptivos)
 WMT.Adjusted     PG.Adjusted     NFLX.Adjusted    KO.Adjusted
Min.   : 95.05   Min.   : 95.91   Min.   :254.6   Min.   :42.94
1st Qu.:101.39   1st Qu.:104.12   1st Qu.:299.1   1st Qu.:47.64
Median :113.30   Median :116.09   Median :343.3   Median :52.18
Mean   :110.27   Mean   :113.76   Mean   :333.5   Mean   :51.13
3rd Qu.:117.51   3rd Qu.:121.93   3rd Qu.:362.8   3rd Qu.:53.73
Max.   :121.28   Max.   :127.14   Max.   :387.8   Max.   :59.61

Con la función range() se puede obtener el rango en el que se mueve el precio de una acción, en este caso la acción ubicada en la posición 3 (precios[,3]) NFLX.Adjusted que irá desde el mín= 254.6 a max= 387.8, esta información se observa igualmente en el recuadro anterior de las estadísticas resumen.

rango= range(precios[,3])
print(rango)
[1] 254.59 387.78

La varianza de una acción se puede hallar con la función var().

#Matriz de varianzas
varianza= var(precios[ ,3])
print(varianza)
[1] 1227.86

Asimismo, la desviación estandar de una acción se puede hallar con la función sd().

sigma=sd(precios[ ,3])
print(sigma)
[1] 35.04084

La asimetría o sesgo, se puede hallar con la función skewness(), pero hay que aclarar que esta función no se encuentra dentro de los paquetes básicos de R, por tanto, siempre antes de utilizar esta función, se debe instalar el paquete 'fBasics'.

asimetria= skewness(precios[,3])
print(asimetria)
[1] -0.3791279
attr(,"method")
[1] "moment"

Igualmente con la función kurtosis() se debe tener instalado la librería 'fBasics'

curtosis= kurtosis(precios[ ,3])
print(curtosis)
[1] -1.177376
attr(,"method")
[1] "excess"

Los cuantiles o percentiles del precio de una acción o de cualquier variable, se pueden calcular con la función quantile(), lo importante es indicar el percentil que se desea hallar, para ello, se utiliza el argumento prob = c(), en donde se colocará el valor de los perncentiles entre 0 y 1.

Q=quantile(precios[3], prob = c(0.25, 0.5, 0.75), na.rm = TRUE)
print(Q)
     25%      50%      75%
96.56432 96.56432 96.56432

Rendimientos:

Los rendimientos calculados en esta sección, son basados en las distribuciones continuas por lo que se utilizan los rendimientos logarítmicos, determinados por la fórmula:

\[Rdto = ln(Vf/Vi)\]

La funciones diff() y log() aplicadas de forma anidada sobre el objeto precios, producen la matriz de rendimientos continuos, que se observa a continuación.

Para comprender el uso de los rendimientos logarítmicos ver el vídeo explicativo: Rendimientos discreto vs continuos.

Rdtos=diff(log(precios))
print(head(Rdtos,5))
     WMT.Adjusted   PG.Adjusted NFLX.Adjusted  KO.Adjusted
[1,]  0.009953393 -0.0002015316  -0.023043176  0.002614405
[2,]  0.005904385 -0.0078906655   0.020539853 -0.088125733
[3,]  0.014810682  0.0002031280  -0.006145819 -0.007706627
[4,]  0.021861413  0.0152165405   0.014051673 -0.009104239
[5,] -0.022962154 -0.0071259700  -0.005569218  0.006004729

A modo de ejemplo, aquí se crean los histogramas para los rendimientos de las acciones, de forma similar a la ya vista.

win.graph(15,13)
tamano=c(seq(ncol(Rdtos)))
matriz=matrix(tamano, ncol=2)
C=layout(matriz)
#layout.show(C) opcional para Rstudio en consola.
for (i in 1:ncol(Rdtos)){
  hist(Rdtos[,i], breaks=40, col=colores[i], xlab="Rendimientos", ylab ="Frecuencia", main = names(Rdtos[,i]), freq=F)
}
../../_images/output_28_0.png

con el objetivo de obtener una matriz que reúna los coeficientes de curtosis y asimetría en una sola tabla se hace uso de un ciclo For{}, ya que estas funciones por si solas solo se aplican a los activos individuales.

asimetria=vector()
curtosis=vector()

for (i in 1:ncol(Rdtos)) {
    asimetria[i]= skewness(Rdtos[,i])
    curtosis[i]= kurtosis(Rdtos[ ,i])
    }

matriz=cbind(asimetria, curtosis)
print(matriz)
       asimetria  curtosis
[1,]  0.02079609 17.580065
[2,]  0.02442168 15.601142
[3,] -0.94786033  4.384105
[4,] -2.06507309 14.358641

Práctica:

Con las acciones que descargaron y manipularon en las Prácticas 1y 2, saque los rendimientos logarítmicos de las acciones que eligió y responda lo siguiente:

1. Los histogrmas muestran un comportamiento platicúrtico, mesocúrtico o leptocúrtico.

2. Concluya sobre las estadísticas descriptivas básicas de los rendimientos (summary).

3. Confirme por medio de los coeficientes de asimetría y curtosis, si los rendimientos de sus acciones contienen colas pesadas (sesgo) o estan demasiado centradas(curtosis altas)