En la dinámica de los mercados financieros muchos activos tienen un comportamiento acorde a la visión de mercado que poseen los inversores, muchos utilizan el movimiento de estos activos para tratar de predecir o tener un aproximado de hacia donde se dirigen los mercados en corto o largo plazo. La relación de los activos del Oro y el Cobre es un ejemplo de cómo algunos inversores interpretan el comportamiento de ambas variables para intentar entender el movimiento en los mercados, la premisa de ambas variables son que “el oro al ser un activo refugio en tiempos de crisis económica se aprecia, pero al llegar periodos de estabilidad económica los inversionistas prefieren otros activos con mejor rendimiento” más sin embargo el cobre al ser un metal de alta utilidad en la industria propenso a ser usado en altas fases de producción “cuando hay periodos de crisis se desprecia por su poca utilidad, pero cuando hay un auge y crecimiento económico se aprecia”. Veremos brevemente que nos muestran los gráficos históricos de esta relación.
options(repos = c(CRAN = "https://cran.rstudio.com/"))
Para este ejercicio usaremos la librería de Quandl que proporciona acceso a una amplia gama de datos financieros y económicos esta librería facilita la importación de datos financieros directamente en R. Las librerías xts y zoo que son herramientas para trabajar con series de tiempo. Y las otras librerías de formato y para graficar los datos como dplyr, lubridate y dygraphs.
install.packages("Quandl")
## Installing package into 'C:/Users/nesmi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'Quandl' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\nesmi\AppData\Local\Temp\RtmpuWmM9T\downloaded_packages
install.packages("dplyr")
## Installing package into 'C:/Users/nesmi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'dplyr' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\nesmi\AppData\Local\Temp\RtmpuWmM9T\downloaded_packages
install.packages("xts")
## Installing package into 'C:/Users/nesmi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'xts' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\nesmi\AppData\Local\Temp\RtmpuWmM9T\downloaded_packages
install.packages("lubridate")
## Installing package into 'C:/Users/nesmi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'lubridate' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\nesmi\AppData\Local\Temp\RtmpuWmM9T\downloaded_packages
install.packages("dygraphs")
## Installing package into 'C:/Users/nesmi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'dygraphs' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\nesmi\AppData\Local\Temp\RtmpuWmM9T\downloaded_packages
install.packages("zoo")
## Installing package into 'C:/Users/nesmi/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'zoo' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\nesmi\AppData\Local\Temp\RtmpuWmM9T\downloaded_packages
library(zoo)
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(xts)
## Warning: package 'xts' was built under R version 4.3.3
##
## ######################### Warning from 'xts' package ##########################
## # #
## # The dplyr lag() function breaks how base R's lag() function is supposed to #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
## # source() into this session won't work correctly. #
## # #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## # #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## ###############################################################################
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
library(Quandl)
## Warning: package 'Quandl' was built under R version 4.3.3
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.3.3
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(dygraphs)
## Warning: package 'dygraphs' was built under R version 4.3.3
Usando librería de Quandl utilizamos los dataset de series de tiempo “CHRIS/CME_GC1” que contiene los datos del oro y “CHRIS/CME_HG1” que es su homologo pero para los valores del cobre, ambos los trabajaremos como tipo “xts” [type = “xts”] (es decir series temporales), con una temporalidad diaria [collapse = “daily”], las fechas de inicio y final será desde 01/01/2005 hasta 10/04/2024, con este intervalo de tiempo analizaremos si se cumplen las condiciones de la teoría de ambos activos durante las crisis inmobiliaria del 2009 y la pandemia del 2020.
Oro <- Quandl("CHRIS/CME_GC1", type = "xts", collapse = "daily", start_date = "2005-01-01", end_date = "2024-04-10")
print(Oro)
## Open High Low Last Change Settle Volume
## 2005-01-03 436.0 436.3 427.8 429.7 NA 429.7 82846
## 2005-01-04 427.4 429.7 424.8 429.2 NA 429.2 54829
## 2005-01-05 426.8 429.3 426.1 427.3 NA 427.3 43721
## 2005-01-06 426.2 427.0 421.1 421.6 NA 421.6 65179
## 2005-01-07 421.8 425.8 417.1 419.5 NA 419.5 97972
## 2005-01-10 420.5 421.3 419.5 419.7 NA 419.7 34177
## 2005-01-11 421.5 423.3 421.1 422.4 NA 422.4 46900
## 2005-01-12 422.0 428.3 421.1 426.6 NA 426.6 64043
## 2005-01-13 424.3 425.5 423.6 425.1 NA 425.1 35087
## 2005-01-14 421.5 423.5 421.2 423.0 NA 423.0 30925
## ...
## 2021-06-16 1859.4 1860.1 1809.2 1802.8 5.0 1859.5 117
## 2021-06-17 1811.8 1823.3 1769.6 1777.9 -85.7 1773.8 1135
## 2021-06-18 1775.7 1792.4 1772.8 1774.2 -5.9 1767.9 354
## 2021-06-21 1768.8 1785.2 1766.8 1781.9 13.9 1781.8 38
## 2021-06-22 1783.4 1786.9 1775.9 1781.7 -5.5 1776.3 101
## 2021-06-23 1780.7 1793.2 1780.6 1772.0 6.0 1782.3 136
## 2021-06-24 1778.9 1786.4 1775.8 1772.4 -6.7 1775.6 78
## 2021-06-25 1777.7 1788.0 1775.2 1786.9 1.0 1776.6 35
## 2021-06-28 NA NA NA 1784.7 3.0 1779.6 61
## 2021-06-29 1778.8 1779.2 1750.1 1761.6 -17.1 1763.6 234242
## Previous.Day.Open.Interest
## 2005-01-03 208448
## 2005-01-04 202128
## 2005-01-05 196268
## 2005-01-06 188605
## 2005-01-07 176117
## 2005-01-10 172080
## 2005-01-11 164267
## 2005-01-12 164973
## 2005-01-13 161127
## 2005-01-14 157529
## ...
## 2021-06-16 1012
## 2021-06-17 735
## 2021-06-18 958
## 2021-06-21 579
## 2021-06-22 437
## 2021-06-23 397
## 2021-06-24 110
## 2021-06-25 146
## 2021-06-28 34
## 2021-06-29 347497
Vemos que esta base de datos tiene varias columnas Open, High, Low, etc. para este ejercicio usaremos la columna “Settle” que hace referencia al precio de liquidación del activo al cierre del día. Por lo tanto, analizaremos tanto para ambas datasets si estas columnas no contienen valores NA.
colSums(is.na(Oro))
## Open High
## 1133 1124
## Low Last
## 1129 1120
## Change Settle
## 2300 0
## Volume Previous Day Open Interest
## 0 0
Al ser dos series temporales se utilizo unicamente plot para graficar ambos activos.
plot(Oro$Settle,col = "blue", lty = 1,main = "Grafico del Oro 2005-2024", xlab = "Fecha",
ylab = "Precio USD")
En este primer gráfico, se puede ver ligeramente como el activo del Oro ha incrementado en periodos de incertidumbre económica como las crisis 2009 y 2020, esto quiere decir que, si hay una propensión de los inversionistas en refugiarse en el oro durante recesiones económicas, aunque no con una gran fuerza en el cambio del precio del activo.
Cobre <- Quandl("CHRIS/CME_HG1", type = "xts", collapse = "daily", start_date = "2005-01-01", end_date = "2024-04-10")
print(Cobre)
## Open High Low Last Change Settle Volume
## 2005-01-03 1.5000 1.5240 1.5000 NA NA 1.5235 401
## 2005-01-04 1.4570 1.4570 1.3830 NA NA 1.3950 570
## 2005-01-05 1.4040 1.4220 1.4040 NA NA 1.4220 534
## 2005-01-06 1.4100 1.4230 1.4100 NA NA 1.4200 184
## 2005-01-07 1.4325 1.4325 1.4100 NA NA 1.4150 279
## 2005-01-10 1.4100 1.4200 1.4100 NA NA 1.4135 251
## 2005-01-11 1.4300 1.4430 1.4300 NA NA 1.4400 290
## 2005-01-12 1.4430 1.4520 1.4380 NA NA 1.4440 264
## 2005-01-13 1.4330 1.4330 1.4080 NA NA 1.4115 354
## 2005-01-14 1.4180 1.4350 1.4160 NA NA 1.4340 255
## ...
## 2021-06-16 4.3380 4.3380 4.2950 4.3295 0.0525 4.3925 101
## 2021-06-17 4.2950 4.3390 4.2205 4.1615 -0.2080 4.1845 40
## 2021-06-18 4.1475 4.1575 4.1460 4.1260 -0.0220 4.1625 89
## 2021-06-21 4.1290 4.1940 4.1285 4.1775 0.0250 4.1875 64
## 2021-06-22 4.1880 4.2560 4.1880 4.2325 0.0470 4.2345 133
## 2021-06-23 4.3245 4.3245 4.3245 4.3125 0.0965 4.3310 96
## 2021-06-24 4.3070 4.3070 4.3060 4.2880 -0.0195 4.3115 73
## 2021-06-25 4.3200 4.3290 4.2825 4.2740 -0.0125 4.2990 323
## 2021-06-28 4.2885 4.2885 4.2885 4.2675 -0.0210 4.2780 141
## 2021-06-29 4.2745 4.2815 4.2020 4.2690 -0.0015 4.2765 8368
## Previous.Day.Open.Interest
## 2005-01-03 3658
## 2005-01-04 3546
## 2005-01-05 2082
## 2005-01-06 2091
## 2005-01-07 2032
## 2005-01-10 1927
## 2005-01-11 1825
## 2005-01-12 1651
## 2005-01-13 1530
## 2005-01-14 1417
## ...
## 2021-06-16 1294
## 2021-06-17 1205
## 2021-06-18 1172
## 2021-06-21 1068
## 2021-06-22 941
## 2021-06-23 786
## 2021-06-24 615
## 2021-06-25 476
## 2021-06-28 228
## 2021-06-29 9444
colSums(is.na(Cobre))
## Open High
## 21 18
## Low Last
## 18 2497
## Change Settle
## 2301 0
## Volume Previous Day Open Interest
## 0 0
plot(Cobre$Settle,col = "red", lty = 1,main = "Grafico del Cobre 2005-2024", xlab = "Fecha",
ylab = "Precio USD")
En este otro gráfico, se puede ver como el activo del Cobre tiene una fuerte caída en periodos de incertidumbre económica como las crisis 2009 y 2020, esto quiere decir que, si hay una propensión inversa de los inversionistas en refugiarse en el cobre en auges económicos, pero no durante recesiones económicas.
Metales <- merge.xts(Oro$Settle, Cobre$Settle)
colnames(Metales) <- c("Oro", "Cobre")
print(Metales)
## Oro Cobre
## 2005-01-03 429.7 1.5235
## 2005-01-04 429.2 1.3950
## 2005-01-05 427.3 1.4220
## 2005-01-06 421.6 1.4200
## 2005-01-07 419.5 1.4150
## 2005-01-10 419.7 1.4135
## 2005-01-11 422.4 1.4400
## 2005-01-12 426.6 1.4440
## 2005-01-13 425.1 1.4115
## 2005-01-14 423.0 1.4340
## ...
## 2021-06-16 1859.5 4.3925
## 2021-06-17 1773.8 4.1845
## 2021-06-18 1767.9 4.1625
## 2021-06-21 1781.8 4.1875
## 2021-06-22 1776.3 4.2345
## 2021-06-23 1782.3 4.3310
## 2021-06-24 1775.6 4.3115
## 2021-06-25 1776.6 4.2990
## 2021-06-28 1779.6 4.2780
## 2021-06-29 1763.6 4.2765
Para ver en un mismo grafico la relación de ambos activos combinamos ambos datasets con “merge.xts” esto por ambas series temporales, únicamente con columnas settle de ambos activos, para el posterior grafico usaremos “dygraph” para hacerlo interactivo, especificamos dos axis para graficar en el eje vertical, se ajustó a su vez la escala en el eje y, para al final agregar un rango ajustable para consultar en los periodos de gran divergencia de los activos.
dygraph(Metales) %>% dyRoller(rollPeriod = 3) %>% dyAxis("y", label = "Precio del Oro (USD)") %>% dyAxis("y2", label = "Precio del Cobre (USD)", independentTicks = TRUE) %>% dySeries("Oro", axis = 'y', label = "Precio Oro") %>%
dySeries("Cobre", axis = 'y2', label = "Precio Cobre") %>% dyRangeSelector()
Dentro de ambos gráficos en conjunto y separados podemos ver la relación de ambos activos según el supuesto de cada uno “oro sube en periodos de incertidumbre, pero se reduce su demanda en grandes auges y crecimiento económico” y el cobre es lo contrario “sube proporcionalmente al ciclo económico pero disminuye en recesiones”, pero es preciso aclara que según el análisis de estos activos, solo el cobre tiene una tendencia extremadamente marcada a la teoría, en cambio, el oro aunque ha presentado cierta relación no es una muy fuerte, esto puede deberse a que hay otros activos que pueden ofrecer un mejor retorno o refugio frente a recesiones y este metal es usado como parte de un portafolio de contingencia o de resguardo a crisis.