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")
- 'NFLX'
- '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())
- 'NFLX'
- '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)
NFLX.Adjusted | AAPL.Adjusted |
---|---|
49.84857 | 100.21645 |
47.31143 | 97.39318 |
46.50143 | 97.40237 |
46.74286 | 98.76815 |
47.78000 | 102.56307 |
47.04143 | 102.67305 |
dim(precios)
- 1337
- 2
De cada acción se descargó 1337 filas que corresponden a 1337 precios.
Gráfico del precio#
plot(precios, main = "Precios")
Matriz de rendimientos#
rendimientos = diff(log(precios))
head(rendimientos)
NFLX.Adjusted | AAPL.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)
- 1336
- 2
head(rendimientos)
NFLX.Adjusted | AAPL.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")
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)
Adjusted.NFLX | Adjusted.AAPL |
---|---|
49.84857 | 100.21645 |
47.31143 | 97.39318 |
46.50143 | 97.40237 |
46.74286 | 98.76815 |
47.78000 | 102.56307 |
47.04143 | 102.67305 |
dim(precios)
- 1337
- 2
De cada acción se descargó 1337 filas que corresponden a 1337 precios.
Gráfico del precio#
plot(precios, main = "Precios")
Matriz de rendimientos.#
rendimientos = diff(log(precios))
head(rendimientos)
Adjusted.NFLX | Adjusted.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)
- 1336
- 2
Gráfico de rendimientos#
plot(rendimientos, main = "Rendimientos")