Evolución del precio de Commodities: Descarga y análisis con R

Índice de Contenidos

En el presente post, se utilizará una vez más la librería “quantmod”, la cual emplearemos para descargar desde Oanda el precio tanto del oro (XAU) como de la plata (XAG) expresados en dólares norteamericanos.

Descarga de datos con quantmod

Las series que se obtienen van desde 01 de enero de 2012 hasta la fecha.

library(quantmod)

getMetals("XAU",
      from = "2012-01-01",
      base.currency="USD",
      env = .GlobalEnv,
      verbose = FALSE,
      warning = TRUE,
      auto.assign = TRUE,
      return.class='zoo')
## [1] "XAUUSD"
getMetals("XAG",
      from = "2012-01-01",
      base.currency="USD",
      env = .GlobalEnv,
      verbose = FALSE,
      warning = TRUE,
      auto.assign = TRUE,
      return.class='zoo')
## [1] "XAGUSD"

Gráficos con chartseries

A continuación con “chartseries” se graficará la evolución de dichos commodities y se le añadirá un promedio móvil simple de 20 (TA=“addSMA(20)):

chartSeries(XAUUSD, show.grid = TRUE,name = "Evolucion del precio del Oro", theme = chartTheme("white"), TA="addSMA(20)") 

plot of chunk unnamed-chunk-2

chartSeries(XAGUSD, show.grid = TRUE,name = "Evolucion del precio de la Plata", theme = chartTheme("white"), TA="addSMA(20)") 

plot of chunk unnamed-chunk-2

Si queremos conocer los valores máximos y mínimos:

ValorminXAUUSD <- min(XAUUSD)
ValorminXAGUSD <- min(XAGUSD)

ValormaxXAUUSD <- max(XAUUSD)
ValormaxXAGUSD <- max(XAGUSD)

Valormin = c(ValorminXAUUSD,ValorminXAGUSD)
valormax = c(ValormaxXAUUSD,ValormaxXAGUSD)

Tabla1= data.frame (rbind(Valormin,valormax))
colnames(Tabla1)<- c("Oro","Plata")

Tabla1
##               Oro   Plata
## Valormin 1054.685 13.7377
## valormax 1788.240 36.5895

Rendimiento promedio y volatilidad 

Por último, si queremos hallar el rendimiento promedio y la volatilidad (diaria):

Rendimiento promedio diario: se calcula la diferencia logarítmica de los precios o rentabilidad logarítmica, a la cual se le extrae la media.
Volatilidad diaria: se calcula la desviación estándar del rendimiento o retorno.

Para expresarlo en porcentajes se multiplica por 100 (Tabla2*100):

RetornoXAUUSD<-diff(log(XAUUSD))
RetornoXAGUSD<-diff(log(XAGUSD))

RendimientoPromedio = c(mean(RetornoXAUUSD),mean(RetornoXAGUSD))
Volatilidad= c(sd(RetornoXAUUSD),sd(RetornoXAGUSD))

Tabla2 = data.frame (rbind(RendimientoPromedio,Volatilidad))
colnames(Tabla2)<- c("Oro","Plata")

Tabla2*100
##                             Oro       Plata
## RendimientoPromedio -0.01615706 -0.03898427
## Volatilidad          0.67564574  1.07198044

Por último, en la página de finanzas cuantitativas, puedes encontrar más aplicaciones de R para finanzas y economía.

Facebook
Twitter
LinkedIn

2 respuestas

    1. Hola Andrés, muchas gracias! sí, se podría manejar con proyecciones estimando algún modelo, lo cual es el tema central de uno de mis siguientes post!
      Saludos,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Picture of Conney Marulanda López
Conney Marulanda López
Analista de Mercado. Certificada en el examen de Asesor Financiero de la CNMV por la Universidad Carlos III de Madrid. Apasionada por los mercados financieros, el emprendimiento y las nuevas tecnologías.
Artículos relacionados
Actualizado octubre 5, 2025

Valor en Riesgo (VaR) con R

Actualizado agosto 7, 2019

Análisis y optimización de portafolios con R (II)

Actualizado agosto 6, 2019

Análisis y optimización de portafolios con R (I)

Suscríbete y accede a contenido exclusivo, análisis semanales y oportunidades reales.
Sin spam. Sin humo. Solo lo que te interesa para que tomes mejores decisiones financieras. Te puedes borrar cuando quieras. Tu privacidad es sagrada.

Responsable: Conney Marulanda López. Finalidad de la recogida y tratamiento de los datos personales: 
Gestionar la solicitud que realizas en este formulario de contacto. 
Legitimación: Consentimiento. 
Destinatarios: Los datos personales serán tratados a través de los servidores de esta web, gestionados por un hosting español: Raiola Networks. No se cederá ni comunicará a ningún tercero tus datos, excepto en los casos legalmente previstos o cuando la prestación de un servicio implique la necesidad de una relación contractual con un Encargado de Tratamiento. 
Derechos: Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@finanzaszone.com así como el derecho a presentar una reclamación ante una autoridad de control.
Información adicional: En Política de privacidad de finanzaszone.com, encontrarás información adicional sobre la recopilación y el uso de su información personal, incluida información sobre acceso, conservación, rectificación, eliminación, seguridad, y otros temas.