Relación del Oro y el Cobre

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/"))

Primero instalar paquetes y librerías

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

Carga de Datos

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

Graficando los datos

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()

Conclusiones

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.