Extraer datos de Yahoo Finance

Existen códigos en R que extraen información de algunas páginas web. Los paquetes quantmod y tseries nos ayudan a descargar los históricos de los precios de las acciones directamente desde la página de Yahoo Finance.

Estos paquetes se deben instalar de la siguiente manera:

install.packages('quantmod')

install.packages("tseries")

Para usar las librerías de estos paquetes debemos activarlos en R de la siguiente forma:

library(quantmod)

library(tseries)

getSymbols para descargar precios de acciones

library(quantmod)

Dentro de esta librería se usa la función getSymbols.

Descargar precios con fechas específicas

El siguiente ejemplo extrae los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el 14 de abril de 2020. Note que descarga hasta un día bursátil antes del indicado, que fue el 15 de abril de 2020.

getSymbols(c("NFLX","AAPL"), from = "2015-01-01", to = "2020-04-15")
  1. 'NFLX'
  2. 'AAPL'

El resultado del código anterior muestra que existen dos objetos que almacenan los precios de las acciones descargadas. Estos objetos tienen el nombre de NFLX y AAPL, que son los nemotécnicos de las acciones.

head(NFLX)
           NFLX.Open NFLX.High NFLX.Low NFLX.Close NFLX.Volume NFLX.Adjusted
2015-01-02  49.15143  50.33143 48.73143   49.84857    13475000      49.84857
2015-01-05  49.25857  49.25857 47.14714   47.31143    18165000      47.31143
2015-01-06  47.34714  47.64000 45.66143   46.50143    16037700      46.50143
2015-01-07  47.34714  47.42143 46.27143   46.74286     9849700      46.74286
2015-01-08  47.12000  47.83571 46.47857   47.78000     9601900      47.78000
2015-01-09  47.63143  48.02000 46.89857   47.04143     9578100      47.04143
head(AAPL)
           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2015-01-02    111.39    111.44   107.35     109.33    53204600     100.21645
2015-01-05    108.29    108.65   105.41     106.25    64285500      97.39318
2015-01-06    106.54    107.43   104.63     106.26    65797100      97.40237
2015-01-07    107.20    108.20   106.70     107.75    40105900      98.76815
2015-01-08    109.23    112.15   108.70     111.89    59364500     102.56307
2015-01-09    112.67    113.25   110.21     112.01    53699500     102.67305

Descargar precios hasta la fecha actual

El siguiente ejemplo descarga los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el día que se corre el código, hasta el día de hoy. Esto se hace colocando la fecha del sistema con to = Sys.Date().

getSymbols(c("NFLX","AAPL"), from="2015-01-01", to = Sys.Date())
  1. 'NFLX'
  2. 'AAPL'

Los precios descargados se trabajará solo con la columna de los precios ajustados .Adjusted que es la columna 6. De cada uno de los objetos que se descargaron y que contienen los precios de las acciones se deberá extraer sólo la columna de los precios descargados y se guardaran en objeto que se llamará precios.

La función merge une los vectores en uno solo objeto que sería una matriz.

Matriz de precios.

precios = merge( NFLX[,6], AAPL[,6])
precios = ts(precios)
head(precios)
A matrix: 6 × 2 of type dbl
NFLX.AdjustedAAPL.Adjusted
49.84857100.21645
47.31143 97.39318
46.50143 97.40237
46.74286 98.76815
47.78000102.56307
47.04143102.67305
dim(precios)
  1. 1337
  2. 2

De cada acción se descargó 1337 filas que corresponden a 1337 precios.

Gráfico del precio

plot(precios, main = "Precios")
../../_images/output_22_01.png

Matriz de rendimientos

rendimientos = diff(log(precios))
head(rendimientos)
A matrix: 6 × 2 of type dbl
NFLX.AdjustedAAPL.Adjusted
-0.052237977-2.857619e-02
-0.017268873 9.438614e-05
0.005178495 1.392460e-02
0.021945626 3.770276e-02
-0.015578461 1.071722e-03
-0.032280783-2.494930e-02
dim(rendimientos)
  1. 1336
  2. 2
head(rendimientos)
A matrix: 6 × 2 of type dbl
NFLX.AdjustedAAPL.Adjusted
-0.052237977-2.857619e-02
-0.017268873 9.438614e-05
0.005178495 1.392460e-02
0.021945626 3.770276e-02
-0.015578461 1.071722e-03
-0.032280783-2.494930e-02

Gráfico de rendimientos

plot(rendimientos, main = "Rendimientos")
../../_images/output_29_0.png

tseries para descargar precios de acciones

library(quantmod)
library(tseries)

Dentro de esa librería se usa la función get.hist.quote.

A diferencia que la función getSymbols, se debe repetir el código por cada acción que se quiera descargar y es posible sólo descargar la columna del precio ajustado con quote = "AdjClose".

Descargar precios con fechas específicas

El siguiente ejemplo extrae los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el 14 de abril de 2020. Note que descarga hasta un día bursátil antes del indicado, que fue el 15 de abril de 2020.

NFLX = get.hist.quote(instrument = "NFLX", start = as.Date("2015-01-01"), end= as.Date("2020-04-15"), quote = "AdjClose")
time series starts 2015-01-02
time series ends   2020-04-14
head(NFLX)
           Adjusted
2015-01-02 49.84857
2015-01-05 47.31143
2015-01-06 46.50143
2015-01-07 46.74286
2015-01-08 47.78000
2015-01-09 47.04143
AAPL = get.hist.quote(instrument = "AAPL", start = as.Date("2015-01-01"), end= as.Date("2020-04-15"), quote = "AdjClose", provider = c("yahoo"))
time series starts 2015-01-02
time series ends   2020-04-14
head(AAPL)
            Adjusted
2015-01-02 100.21645
2015-01-05  97.39318
2015-01-06  97.40237
2015-01-07  98.76815
2015-01-08 102.56307
2015-01-09 102.67305

Descargar precios hasta la fecha actual

El siguiente ejemplo descarga los precios de las acciones de Netflix y Apple desde el primero de enero de 2015 hasta el día que se corre el código, hasta el día de hoy. Esto se hace colocando la fecha del sistema con to = Sys.Date().

NFLX = get.hist.quote(instrument = "NFLX", start = as.Date("2015-01-01"), end = Sys.Date(), quote = "AdjClose")
time series starts 2015-01-02
time series ends   2020-04-24
AAPL = get.hist.quote(instrument = "AAPL", start = as.Date("2015-01-01"), end = Sys.Date(), quote = "AdjClose")
time series starts 2015-01-02
time series ends   2020-04-24

Matriz de precios.

precios = merge( NFLX, AAPL)
precios = ts(precios)
head(precios)
A matrix: 6 × 2 of type dbl
Adjusted.NFLXAdjusted.AAPL
49.84857100.21645
47.31143 97.39318
46.50143 97.40237
46.74286 98.76815
47.78000102.56307
47.04143102.67305
dim(precios)
  1. 1337
  2. 2

De cada acción se descargó 1337 filas que corresponden a 1337 precios.

Gráfico del precio

plot(precios, main = "Precios")
../../_images/output_52_01.png

Matriz de rendimientos.

rendimientos = diff(log(precios))
head(rendimientos)
A matrix: 6 × 2 of type dbl
Adjusted.NFLXAdjusted.AAPL
-0.052237977-2.857619e-02
-0.017268873 9.438614e-05
0.005178495 1.392460e-02
0.021945626 3.770276e-02
-0.015578461 1.071722e-03
-0.032280783-2.494930e-02

Se observa que los nombres de la matriz de rendimientos tienen los mismos nombres que la matriz de precios.

dim(rendimientos)
  1. 1336
  2. 2

Gráfico de rendimientos

plot(rendimientos, main = "Rendimientos")
../../_images/output_59_0.png