4 de enero de 2018

INTRODUCCIÓN

La importancia de los métodos cuantitativos en los negocios y las finanzas ha aumentado sustancialmente en los últimos años porque nos encontramos en un entorno rico en datos y las economías y los mercados financieros están más integrados que nunca. Los datos se recopilan sistemáticamente para miles de variables en muchos países y en una escala de tiempo más fina. Las instalaciones informáticas y los paquetes estadísticos para analizar datos financieros complejos y de gran dimensión están ahora ampliamente disponibles. De hecho, con una conexión a Internet, uno puede descargar fácilmente datos financieros de fuentes abiertas dentro de un paquete de software como R. Todas estas características y capacidades buenas son gratuitas y ampliamente accesibles.

R es un software gratuito disponible en http://www.r-project.org/ . Se ejecuta en muchos sitemas operativos, incluidos Linux, MacOS X y Window, R Studio esta disponible en https://www.rstudio.com/products/rstudio/download/

INSTALACIÓN DE PAQUETES EN R STUDIO

Para instalar paquetes en R Studio, uno puede hacer clip en el comando Tools para seleccionar Install Packages. Aparece una ventana emergente que pide a los usuarios que escriba el paquete a instalar.

INSTALACIÓN DE PAQUETES FINANCIEROS

El paquete Quantmod

Para empezar, consideramos que es un paquete R útil para descargar datos financieros directamente de algunas fuentes abiertas, incluidas Yahoo Finance, Google Finance y Federal Reserve Economic Data (FRED) del Federal Reserve Bank of St. Louis. El paquete es quantmod de Jeffry A. Ryan. Es muy recomendable que uno lo instale. El paquete requiere tres paquetes adicionales que deben instalarse también. Ellos son TTR, xts y zoo.

Instalacion

El paquete Quantmod se instala con el siguiente comando install.packages("quantmod")

Demostración con paquete quantmod - R

Descargamos el conjunto de datos desde Yahoo Finance con la siguiente linea de comando getSymbols("AAPL")

library(quantmod) #Cargue el paquete quantmod 
getSymbols("AAPL") #Descargue los precios diarios de las acciones de Apple de Yahoo
## [1] "AAPL"
dim(AAPL) #(dimensión): vea el tamaño de los datos descargados.
## [1] 2771    6

head(AAPL) #Veremos la 6 primeras filas
           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
2007-01-03  12.32714  12.36857 11.70000   11.97143   309579900
2007-01-04  12.00714  12.27857 11.97429   12.23714   211815100
2007-01-05  12.25286  12.31428 12.05714   12.15000   208685400
2007-01-08  12.28000  12.36143 12.18286   12.21000   199276700
2007-01-09  12.35000  13.28286 12.16429   13.22429   837324600
2007-01-10  13.53571  13.97143 13.35000   13.85714   738220000
           AAPL.Adjusted
2007-01-03      10.73159
2007-01-04      10.96978
2007-01-05      10.89166
2007-01-08      10.94545
2007-01-09      11.85469
2007-01-10      12.42201

chartSeries(AAPL, theme="white") #Plot the daily price and volume

#El theme del subcomando se usa para obtener un fondo blanco del gráfico.

chartSeries(AAPL) #No se muestra el trama con fondo blanco

getSymbols("AAPL",from="2005-01-02", to="2010-12-31") 
## [1] "AAPL"
#from y to para especificar el intervalo de datos de interés

head(AAPL)
           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
2005-01-03  4.627143  4.650714 4.471428   4.520714   172998000
2005-01-04  4.556428  4.676429 4.497857   4.567143   274202600
2005-01-05  4.604286  4.660714 4.575000   4.607143   170108400
2005-01-06  4.619286  4.636428 4.523571   4.610714   176388800
2005-01-07  4.642857  4.973571 4.625000   4.946429   556862600
2005-01-10  4.987857  5.050000 4.848571   4.925714   431327400
           AAPL.Adjusted
2005-01-03      4.052520
2005-01-04      4.094139
2005-01-05      4.129996
2005-01-06      4.133199
2005-01-07      4.434144
2005-01-10      4.415576

getSymbols("UNRATE", src = "FRED") #Descarga las tasas de desempleo de FRED
[1] "UNRATE"
head(UNRATE)
           UNRATE
1948-01-01    3.4
1948-02-01    3.8
1948-03-01    4.0
1948-04-01    3.9
1948-05-01    3.5
1948-06-01    3.6

chartSeries(UNRATE, theme = "white") #Trazar las tasas de desempleo mensuales

Descargamos un nuevo conjunto de datos desde google utilizamos la siguiente linea de comandos:

  • src se usa para especificar la fuente de datos
  • El valor predeterminado es Yahoo
getSymbols("INTC", src = "google")
[1] "INTC"
head(INTC)
           INTC.Open INTC.High INTC.Low INTC.Close INTC.Volume
2007-01-03     20.45     20.88    20.14      20.35    69803965
2007-01-04     20.63     21.33    20.56      21.17    89514297
2007-01-05     21.09     21.15    20.76      21.10    64596375
2007-01-08     21.25     21.34    20.95      21.01    52844607
2007-01-09     21.18     21.21    20.86      21.03    54414980
2007-01-10     21.09     21.62    21.03      21.52    76369883

getSymbols("^TNX") #Descargamos la tasa de interés CBOE 10 años
[1] "TNX"
head(TNX)
           TNX.Open TNX.High TNX.Low TNX.Close TNX.Volume TNX.Adjusted
2007-01-03    4.658    4.692   4.636     4.664          0        4.664
2007-01-04    4.656    4.662   4.602     4.618          0        4.618
2007-01-05    4.587    4.700   4.583     4.646          0        4.646
2007-01-08    4.668    4.678   4.654     4.660          0        4.660
2007-01-09    4.660    4.670   4.644     4.656          0        4.656
2007-01-10    4.666    4.700   4.660     4.682          0        4.682

chartSeries(TNX, theme = "white", TA = NULL) #Obtenemos el trama sin volumen

EJEMPLOS DE DATOS FINANCIEROS

#Especificando el período
getSymbols("AAPL", from = "2007-01-03", to = "2011-12-02")
[1] "AAPL"
head(AAPL)
           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume
2007-01-03  12.32714  12.36857 11.70000   11.97143   309579900
2007-01-04  12.00714  12.27857 11.97429   12.23714   211815100
2007-01-05  12.25286  12.31428 12.05714   12.15000   208685400
2007-01-08  12.28000  12.36143 12.18286   12.21000   199276700
2007-01-09  12.35000  13.28286 12.16429   13.22429   837324600
2007-01-10  13.53571  13.97143 13.35000   13.85714   738220000
           AAPL.Adjusted
2007-01-03      10.73159
2007-01-04      10.96978
2007-01-05      10.89166
2007-01-08      10.94545
2007-01-09      11.85469
2007-01-10      12.42201

AAPL.rtn <- diff(log(AAPL$AAPL.Adjusted)) #Diferenciamos la serie y aplicamos logaritmo
chartSeries(AAPL.rtn, theme = "white") #Trazamos la serie diferenciada 

#Cargamos el conjunto de datos ^TNX
getSymbols("^TNX", from = "2007-01-03", to = "2011-12-02")
[1] "TNX"
head(TNX)
           TNX.Open TNX.High TNX.Low TNX.Close TNX.Volume TNX.Adjusted
2007-01-03    4.658    4.692   4.636     4.664          0        4.664
2007-01-04    4.656    4.662   4.602     4.618          0        4.618
2007-01-05    4.587    4.700   4.583     4.646          0        4.646
2007-01-08    4.668    4.678   4.654     4.660          0        4.660
2007-01-09    4.660    4.670   4.644     4.656          0        4.656
2007-01-10    4.666    4.700   4.660     4.682          0        4.682

#Trabajaremos con la variable TNX.Adjusted
TNX.rtn <- diff(log(TNX$TNX.Adjusted)) #Diferenciamos la serie y aplicamos logaritmo
chartSeries(TNX.rtn, theme = "white") #Trazamos la serie diferenciada

getSymbols("DEXUSEU", src = "FRED") #Obtenemos los tipos de cambio de FRED
[1] "DEXUSEU"
head(DEXUSEU)
           DEXUSEU
1999-01-04  1.1812
1999-01-05  1.1760
1999-01-06  1.1636
1999-01-07  1.1672
1999-01-08  1.1554
1999-01-11  1.1534
tail(DEXUSEU) #Mostramos lo ultimos datos de la serie
##            DEXUSEU
## 2017-12-22  1.1839
## 2017-12-25      NA
## 2017-12-26  1.1867
## 2017-12-27  1.1902
## 2017-12-28  1.1952
## 2017-12-29  1.2022

USEU.rtn <- diff(log(DEXUSEU$DEXUSEU))
chartSeries(DEXUSEU, theme = "white")

chartSeries(USEU.rtn, theme = "white")

basicStats(mmm)#Cálculo de estadísticas de resumen 
                    mmm
nobs        2704.000000
NAs            0.000000
Minimum       -0.089569
Maximum        0.098784
1. Quartile   -0.007161
3. Quartile    0.007987
Mean           0.000278
Median         0.000350
Sum            0.751082
SE Mean        0.000298
LCL Mean      -0.000306
UCL Mean       0.000862
Variance       0.000240
Stdev          0.015488
Skewness       0.027949
Kurtosis       4.630925

#Pruebas simples
t.test(mmm) #Prueba de retorno medio = 0
## 
##  One Sample t-test
## 
## data:  mmm
## t = 0.93258, df = 2703, p-value = 0.3511
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.0003062688  0.0008618028
## sample estimates:
##   mean of x 
## 0.000277767

normalTest(mmm, method = "jb") #jarque bera test
## 
## Title:
##  Jarque - Bera Normalality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 2422.4384
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16 
## 
## Description:
##  Thu Jan 04 18:07:38 2018 by user: USER

VISUALIZACIÓN DE DATOS FINANCIEROS

Los gráficos son herramientas útiles para analizar datos financieros. Además de la gráfica de series de tiempo mostrada anteriormente, descutiremos algunos gráficos adicionales para mostrar datos financieros en esta sección. Para obtener una mejor visualización de la distribución de los retornos de activos, podemos examinar el histograma o la función de densidad empírica de los datos

hist(mmm, nclass = 30, col = "red", main = "") #Histograma

d1 <- density(mmm) #Obtener estimación de densidad
range(mmm) #Rango de retornos de 3M
## [1] -0.089569  0.098784
x <- seq(-.1, .1, .001) #Crea una secuencia de x con incremento de 0.001.
#El siguiente comando crea densidad normal
y1 <- dnorm(x, mean = (mmm), stdev(mmm))

plot(d1$x,d1$y,xlab='rtn',ylab='density',type='l')