Logo UNHEVAL

Universidad Nacional Hermilio Valdizán

Facultad de Economía - semestre VI

Pronóstico y Volatilidad del Precio del Petróleo WTI:
Modelos ARIMA-GARCH (2010-2025)

Cuadros Zumaeta, María Mercedes - 2023110383

Docente: MSc. Jeel Cueva

Huánuco, Perú –febrero de 2026



1 Resumen Ejecutivo

Resumen Ejecutivo

El presente estudio analiza la dinámica y pronóstico de los retornos logarítmicos del precio del petróleo (WTI) mediante modelos de series temporales para el período 2010-2025, utilizando datos mensuales de la Reserva Federal de St. Louis (FRED). Se especifica un modelo ARIMA(2,0,0) para la media combinado con GARCH(1,1) para modelar la volatilidad condicional de los residuos.

Los resultados indican que existe persistencia positiva de corto plazo (ar1 = 0.3040, p < 0.001) y una corrección negativa (ar2 = -0.2444, p < 0.001), junto con una alta persistencia de volatilidad (β ≈ 0.95 en el modelo GARCH). Los tests de diagnóstico confirman estacionariedad de los retornos (ADF y PP: p < 0.01), ausencia de autocorrelación serial en los residuos (Ljung-Box p > 0.05) y correcta especificación del modelo, aunque se rechazan la normalidad y la homocedasticidad, lo cual justifica el uso de GARCH.

Se concluye que el mercado del petróleo WTI es altamente volátil e impredecible, con fuerte clustering de volatilidad.

Palabras clave: econometría, series temporales, ARIMA, GARCH, precio del petróleo, volatilidad, pronóstico.

Clasificación JEL: C22, C53, Q41.

Abstract
This study analyzes the dynamics and forecast of the logarithmic returns of WTI crude oil prices using time series models for the period 2010-2025, with monthly data from the Federal Reserve Economic Data (FRED). An ARIMA(2,0,0) model is specified for the mean and a GARCH(1,1) model for conditional volatility.

The results show positive short-term persistence (ar1 = 0.3040, p < 0.001) and negative correction (ar2 = -0.2444, p < 0.001), along with high volatility persistence (β ≈ 0.95). Diagnostic tests confirm stationarity (ADF and PP: p < 0.01), no serial correlation in residuals, and correct specification, although normality and homoscedasticity are rejected, justifying the GARCH extension.

It is concluded that the WTI oil market is highly volatile and unpredictable, with strong volatility clustering.

Keywords: econometrics, time series, ARIMA, GARCH, oil price, volatility, forecasting.

JEL Classification: C22, C53, Q41.


2 Introducción

El precio del petróleo WTI (West Texas Intermediate) representa uno de los principales indicadores del mercado energético global y uno de los commodities con mayor volatilidad en los mercados internacionales. A nivel mundial, su dinámica está determinada por factores estructurales y de corto plazo, tales como la producción de shale oil en Estados Unidos, las decisiones de la OPEP+, la correlación entre la demanda energética y el crecimiento del PIB global, así como eventos geopolíticos y shocks climáticos (Hamilton, 2011; U.S. Energy Information Administration [EIA], 2025). En el caso específico del Perú, como economía importadora neta de combustibles derivados del petróleo, las fluctuaciones del precio del WTI impactan directamente en los costos de producción, la inflación, el tipo de cambio y la estabilidad macroeconómica, lo que genera un interés particular en su pronóstico y análisis de volatilidad para la formulación de políticas públicas y estrategias de gestión de riesgos (Banco Central de Reserva del Perú [BCRP], 2024; Ministerio de Economía y Finanzas [MEF], 2025).

A pesar de la abundante literatura existente, persiste un vacío importante en el análisis conjunto de la media y la volatilidad condicional de los retornos del petróleo WTI en el período 2010-2025. La mayoría de estudios recientes se limitan a modelos ARIMA tradicionales, sin integrar la modelación de la volatilidad mediante GARCH (Valverde Frias, 2024; Li, 2024). Asimismo, muchos trabajos utilizan datos anteriores a la pandemia de COVID-19 o periodos más cortos, dejando sin analizar el impacto de shocks recientes como la guerra en Ucrania y las tensiones geopolíticas de 2022-2025 (Xiang, 2022; Mohammadi & Su, 2010). Este estudio busca llenar dicho vacío mediante la estimación de un modelo ARIMA(2,0,0)-GARCH(1,1) con datos mensuales actualizados hasta diciembre de 2025 y un enfoque explícito en las consecuencias para la economía peruana.

2.1 Objetivos

Objetivo general
Pronosticar la dinámica de los retornos logarítmicos del precio del petróleo WTI mediante modelos de series temporales ARIMA-GARCH para el período 2010-2025.

Objetivos específicos
1. Verificar la estacionariedad de la serie de retornos logarítmicos mediante los tests DickeyFuller Aumentado (ADF) y Phillips-Perron (PP).
2. Estimar los parámetros del modelo ARIMA y evaluar su significancia estadística.
3. Diagnosticar el modelo ARIMA mediante los tests de normalidad, homocedasticidad, no autocorrelación y especificación correcta.
4. Extender el análisis con un modelo GARCH(1,1) para corregir la heterocedasticidad residual y modelar la volatilidad condicional.

2.2 Hipótesis

Hipótesis principal (H₁)
Los retornos logarítmicos del precio del petróleo WTI presentan persistencia positiva de corto plazo (coeficiente ar1 > 0) y corrección negativa de segundo orden (coeficiente ar2 < 0), junto con alta persistencia de volatilidad (coeficiente β > 0.9 en GARCH), lo que refleja inercia temporal y clustering de volatilidad en el mercado petrolero (sustentado en Hamilton, 2011; Muñoz-Santiago et al., 2017).

Hipótesis nula (H₀)
No existe persistencia significativa en los retornos logarítmicos (ar1 = ar2 = 0) ni persistencia de volatilidad (β = 0), es decir, los retornos son ruido blanco sin estructura temporal ni heteroscedasticidad condicional.

Sustento teórico
La hipótesis se fundamenta en la literatura de series temporales financieras, donde los precios de commodities exhiben momentum de corto plazo y reversión parcial (Box et al., 2015), así como clustering de volatilidad persistente que requiere modelos GARCH para su modelación adecuada (Bollerslev, 1986).


3 Marco Teórico

El análisis del precio del petróleo WTI requiere modelos que capturen tanto la dinámica de la media (tendencia y autocorrelación) como la volatilidad condicional (heterocedasticidad). Por ello se emplean ARIMA para la media y GARCH para la varianza, métodos estándar en series financieras con no estacionariedad, autocorrelación y volatilidad cambiante (Bollerslev, 1986; Hamilton, 1994; Box et al., 2015).

3.1 Modelo ARIMA

El modelo ARIMA(p,d,q) combina tres componentes:

  1. Componente autoregresivo AR(p)
    \[ y_t = c + \phi_1 y_{t-1} + \phi_2 y_{t-2} + \dots + \phi_p y_{t-p} + \epsilon_t \]
    Donde \(\phi_i\) miden la influencia de valores pasados.

  2. Componente de integración I(d)
    \[ \Delta^d y_t = (1 - L)^d y_t \]
    Donde d es el número de diferenciaciones para lograr estacionariedad.

  3. Componente de media móvil MA(q)
    \[ y_t = c + \epsilon_t + \theta_1 \epsilon_{t-1} + \dots + \theta_q \epsilon_{t-q} \]
    Donde \(\theta_j\) capturan el efecto de shocks pasados.

Ecuación combinada:

\[ y_t = c + \sum_{i=1}^{p} \phi_i y_{t-i} + \sum_{j=1}^{q} \theta_j \epsilon_{t-j} + \epsilon_t \]

  • y_t:Valor de la serie temporal en el período t.

  • c:Término constante (intercepto o media).

  • ϕ_i :Coeficientes autoregresivos de orden p.
    Miden la influencia directa de los valores pasados en y_t.

  • y_{t-i}:Valores rezagados de la serie (autoregresión).

  • θ_j:Coeficientes de media móvil de orden q.

  • ε_{t-j}:Errores (shocks) rezagados.

  • ε_t:Error aleatorio del período actual (innovación).

3.2 Modelo GARCH

Para modelar la volatilidad condicional de los residuos del ARIMA, se aplica GARCH:

\[ \sigma_t^2 = \omega + \alpha \epsilon_{t-1}^2 + \beta \sigma_{t-1}^2 \]

Donde:
- \(\sigma_t^2\): Varianza condicional en t.
- \(\omega > 0\): Componente constante de la varianza.
- \(\alpha \geq 0\): Impacto de shocks pasados (efecto ARCH).
- \(\beta \geq 0\): Persistencia de la volatilidad (efecto GARCH).

Condición de estacionariedad: \(\alpha + \beta < 1\).

3.3 Supuestos del modelo

Los supuestos del MCRL adaptados a series temporales son:

  1. Linealidad en parámetros
  2. Estacionariedad: \(E(y_t) = \mu\) constante, \(\text{Var}(y_t) = \sigma^2\) constante, \(\text{Cov}(y_t, y_{t-k}) = \gamma_k\) (depende solo de k).
  3. No autocorrelación en residuos: \(\rho_k = 0\) para todo k ≠ 0.
  4. Homoscedasticidad: \(\text{Var}(\epsilon_t) = \sigma^2\) constante.
  5. Normalidad de errores: \(\epsilon_t \sim N(0, \sigma^2)\).

3.4 Propiedades del estimador

Los parámetros se estiman por máxima verosimilitud (MLE), que es consistente (\(\hat{\theta} \xrightarrow{p} \theta\)), asintóticamente eficiente y asintóticamente normal:

\[ \sqrt{n} (\hat{\theta} - \theta) \xrightarrow{d} N(0, I(\theta)^{-1}) \]

3.5 Propiedades del estimador

Los parámetros del modelo ARIMA(2,0,0) se estiman por máxima verosimilitud (MLE), método estándar para modelos de series temporales que incorpora la estructura de dependencia temporal y es consistente, asintóticamente eficiente y asintóticamente normal en muestras grandes (Greene, 2018; Box et al., 2015).

Aunque el estimador de mínimos cuadrados ordinarios (MCO) tiene propiedades BLUE (Best Linear Unbiased Estimator) bajo los supuestos del modelo clásico de regresión lineal —insesgado (E(β̂) = β), eficiente (mínima varianza entre estimadores insesgados lineales) y consistente (β̂ → β cuando n → ∞)—, en series temporales con autocorrelación y heterocedasticidad condicional, MLE es superior y más apropiado (Hamilton, 1994).

3.6 Definición precisa de todos los parámetros del modelo

El modelo estimado es ARIMA(2,0,0) con media cero, cuya ecuación es:

\[ y_t = 0.3040 \cdot y_{t-1} - 0.2444 \cdot y_{t-2} + \epsilon_t \]

Donde cada parámetro se define con precisión como sigue:

  • y_t
    Valor de la serie temporal en el período t.
    Definición operacional: retorno logarítmico mensual del precio del petróleo WTI, expresado en porcentaje (%).
    Fórmula: y_t = 100 × (ln P_t − ln P_{t-1}), donde P_t es el precio spot mensual en USD por barril.

  • c (intercepto)
    Término constante o media incondicional de la serie.
    Valor estimado: c = 0 (no significativo, fijado como media cero).
    Interpretación: los retornos esperados a largo plazo son nulos, coherente con la hipótesis de mercados eficientes en retornos de commodities.

  • ϕ₁ (ar1)
    Coeficiente autoregresivo de orden 1.
    Valor estimado: ϕ₁ = 0.3040 (significativo al 0.1 %).
    Interpretación: mide la persistencia de corto plazo. Un aumento de 1 punto porcentual en el retorno del mes anterior genera un aumento esperado de 0.304 puntos porcentuales en el retorno actual (efecto momentum).

  • ϕ₂ (ar2)
    Coeficiente autoregresivo de orden 2.
    Valor estimado: ϕ₂ = -0.2444 (significativo al 0.1 %).
    Interpretación: indica corrección de segundo orden. Un aumento de 1 punto porcentual en el retorno de hace dos meses genera una disminución esperada de 0.244 puntos porcentuales en el retorno actual (efecto estabilizador).

  • y_{t-1}
    Retorno logarítmico rezagado un período (mes anterior).
    Rol: variable explicativa interna del componente autoregresivo de orden 1.

  • y_{t-2}
    Retorno logarítmico rezagado dos períodos (hace dos meses).
    Rol: variable explicativa interna del componente autoregresivo de orden 2.

  • ε_t
    Perturbación aleatoria o error del período actual (innovación).
    Distribución: ε_t ~ N(0, σ_t²), donde σ_t² es la varianza condicional (modelada posteriormente con GARCH).
    Interpretación: captura shocks no explicados por la estructura temporal (noticias, eventos geopolíticos, decisiones OPEP, etc.).

  • θ_j y ε_{t-j}
    Coeficientes y errores rezagados del componente de media móvil (MA).
    En este modelo: q = 0 → θ_j = 0 y ε_{t-j} = 0 (no hay componente MA).

En síntesis, el modelo estimado es:

\[ y_t = 0.3040 \cdot y_{t-1} - 0.2444 \cdot y_{t-2} + \epsilon_t \]

con todos los parámetros significativos y coherentes con la dinámica de retornos de commodities expuestos a shocks persistentes.


4 Revisión de Literatura

A continuación se presentan cinco antecedentes relevantes, organizados cronológicamente. Tres son internacionales y dos nacionales. Cada estudio analiza el precio del petróleo u otras series energéticas con modelos de series temporales, permitiendo justificar la metodología ARIMA-GARCH elegida en este proyecto.

Mohammadi y Su (2010) analizaron la relación entre el precio del petróleo crudo y sus determinantes en mercados internacionales para el periodo 1985-2008, utilizando un modelo ARIMA-GARCH. Los resultados evidenciaron que los modelos híbridos ARIMA-GARCH superan a los ARIMA simples en la captura de la volatilidad condicional, con coeficientes estadísticamente significativos al 1 %. Este antecedente sustenta la presente investigación en cuanto al uso combinado de ARIMA para la media y GARCH para modelar la heteroscedasticidad en precios del petróleo.

Muñoz-Santiago et al. (2017) analizaron el precio de la energía en bolsa en Colombia para el periodo 2004-2016, utilizando modelos ARIMA con IGARCH. Los resultados evidenciaron una alta persistencia de volatilidad y que el modelo ARIMA-IGARCH ofrece mejor pronóstico que el ARIMA tradicional, con coeficientes significativos al 5 %. Este antecedente sustenta la presente investigación en cuanto a la necesidad de extender ARIMA con modelos GARCH cuando la serie presenta clustering de volatilidad, especialmente en economías latinoamericanas.

Xiang (2022) analizó la fluctuación del precio internacional del petróleo WTI para el periodo 2010-2020, utilizando un modelo ARIMA-GARCH. Los resultados evidenciaron que el componente GARCH mejora significativamente la precisión del pronóstico al capturar la heteroscedasticidad, con coeficientes estadísticamente significativos al 1 %. Este antecedente sustenta la presente investigación en cuanto al uso de GARCH para modelar la volatilidad persistente en la serie del WTI.

Valverde Frias (2024) analizó el precio del petróleo WTI en 2022, comparando modelos ARIMA y redes neuronales. Los resultados evidenciaron que ARIMA(3,0,1) presenta limitaciones en periodos de alta volatilidad, con coeficientes significativos al 5 %, pero es superado por enfoques no lineales. Este antecedente sustenta la presente investigación en cuanto a la necesidad de combinar ARIMA con modelos que capturen mejor la volatilidad (como GARCH) en contextos recientes de alta incertidumbre.

Li (2024) analizó el precio del petróleo WTI utilizando modelos ARIMA y ARIMA-GARCH para datos mensuales recientes. Los resultados evidenciaron que el modelo híbrido ARIMA-GARCH ofrece menor error de pronóstico y mejor captura de la volatilidad condicional, con coeficientes significativos al 1 %. Este antecedente sustenta la presente investigación en cuanto al uso de GARCH como extensión necesaria cuando los residuos del ARIMA presentan heterocedasticidad.


5 Metodología

5.1 Fuente y descripción de los datos

La variable principal de estudio es el precio del petróleo WTI (West Texas Intermediate), uno de los benchmarks internacionales más importantes del crudo ligero dulce. Este precio representa el valor spot del barril de petróleo extraído principalmente en Texas y Oklahoma (Estados Unidos) y sirve como referencia global para contratos futuros, derivados financieros y la fijación de precios en el comercio internacional de hidrocarburos (Parisi Fernández et al., 2019; Valverde Frias, 2024).

Se obtiene de la base de datos económica pública de la Reserva Federal de St. Louis (FRED), administrada por el Federal Reserve Bank of St. Louis, una fuente oficial, gratuita y ampliamente utilizada en investigación académica y económica a nivel mundial por su confiabilidad y actualización continua.

La serie específica es MCOILWTICO — Crude Oil Prices: West Texas Intermediate (WTI) - Cushing, Oklahoma (Dollars per Barrel), expresada en dólares estadounidenses por barril (USD/bbl) y con frecuencia mensual (promedio mensual del precio spot diario).

Los datos se mantienen permanentemente actualizados en la plataforma FRED, con incorporaciones diarias y mensuales según la disponibilidad del mercado. La consulta se realizó en febrero de 2026, asegurando el uso de la información más reciente disponible en ese momento.

La serie original (precio en niveles) presenta tendencia no estacionaria y varianza creciente, típica de precios de commodities expuestos a shocks estructurales. Por ello, se aplica la transformación estándar en análisis financiero:

\[ r_t = 100 \times (\ln P_t - \ln P_{t-1}) \]

Donde:
- \(P_t\): Precio del WTI en el mes \(t\).
- \(r_t\): Retorno logarítmico mensual (en porcentaje).

5.2 Periodo de análisis y frecuencia de los datos

El período de análisis abarca desde enero de 2010 hasta diciembre de 2025, lo que corresponde a un total de 192 observaciones mensuales.

Esta ventana temporal fue seleccionada por las siguientes razones:
- Cubre un ciclo completo de expansión y contracción en el mercado petrolero, incluyendo eventos clave como la recuperación post-crisis financiera (2010-2014), el boom del shale oil y la caída de precios (2014-2016), la pandemia de COVID-19 (2020), la recuperación posterior y los impactos geopolíticos recientes (2022-2025).
- Permite capturar suficiente variabilidad estructural y de volatilidad para evaluar la robustez de los modelos de series temporales en contextos de incertidumbre prolongada (Parisi Fernández et al., 2019; Valverde Frias, 2024).
- Garantiza un tamaño de muestra adecuado para estimación confiable de modelos ARIMA y GARCH, que requieren series largas para convergencia asintótica de los estimadores por máxima verosimilitud.

La frecuencia de los datos es mensual, ya que:
- Es la frecuencia estándar para análisis de precios del petróleo en estudios econométricos y financieros (EIA, 2025; Hamilton, 1994).
- Ofrece un balance óptimo entre detalle temporal y reducción de ruido diario (volatilidad intradía excesiva).
- Facilita la comparación con indicadores macroeconómicos mensuales (inflación, producción industrial, balanza comercial) relevantes para Perú como importador neto de combustibles.

5.3 Definición operacional de variables

La definición operacional de las variables se presenta en la siguiente tabla, que incluye el nombre, descripción completa, fuente, unidad de medida y tipo de variable. Dado que el modelo es univariado (solo una serie temporal endógena), no se incluyen variables exógenas.

Tabla 1. Definición operacional de variables

VARIABLE DESCRIPCIÓN COMPLETA FUENTE UNIDAD TIPO
Y (dependiente) Precio del petróleo WTI (West Texas Intermediate) en niveles (serie original) FRED – Federal Reserve Bank of St. Louis USD por barril Endógena
r_t (transformada) Retorno logarítmico mensual del precio WTI: r_t = 100 × (ln P_t - ln P_{t-1}) Calculada a partir de la serie Y Porcentaje mensual (%) Endógena (transformada)
library(tidyverse)      
library(quantmod)       
library(xts)            
library(kableExtra)     
library(gridExtra)      

getSymbols("MCOILWTICO", src = "FRED", from = "2010-01-01", to = "2025-12-31")
## [1] "MCOILWTICO"
wti_precio <- as.data.frame(MCOILWTICO)
colnames(wti_precio) <- "Precio_USD"
wti_precio$Fecha <- as.Date(rownames(wti_precio))
wti_precio$Retorno_Log <- 100 * c(NA, diff(log(wti_precio$Precio_USD)))
wti_precio <- na.omit(wti_precio) 

head(wti_precio[, c("Fecha", "Precio_USD")], 10) %>%
  kable(caption = "Primeras 10 observaciones - Precio mensual WTI (USD/barril)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Primeras 10 observaciones - Precio mensual WTI (USD/barril)
Fecha Precio_USD
2010-02-01 2010-02-01 76.39
2010-03-01 2010-03-01 81.20
2010-04-01 2010-04-01 84.29
2010-05-01 2010-05-01 73.74
2010-06-01 2010-06-01 75.34
2010-07-01 2010-07-01 76.32
2010-08-01 2010-08-01 76.60
2010-09-01 2010-09-01 75.24
2010-10-01 2010-10-01 81.89
2010-11-01 2010-11-01 84.25
head(wti_precio[, c("Fecha", "Retorno_Log")], 10) %>%
  kable(caption = "Primeras 10 observaciones - Retornos logarítmicos WTI (%)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Primeras 10 observaciones - Retornos logarítmicos WTI (%)
Fecha Retorno_Log
2010-02-01 2010-02-01 -2.507887
2010-03-01 2010-03-01 6.106345
2010-04-01 2010-04-01 3.734799
2010-05-01 2010-05-01 -13.371784
2010-06-01 2010-06-01 2.146581
2010-07-01 2010-07-01 1.292382
2010-08-01 2010-08-01 0.366205
2010-09-01 2010-09-01 -1.791407
2010-10-01 2010-10-01 8.469388
2010-11-01 2010-11-01 2.841169
ggplot(wti_precio, aes(x = Fecha)) +
  geom_line(aes(y = Precio_USD, color = "Precio (USD/barril)"), size = 1) +
  geom_line(aes(y = Retorno_Log * 5, color = "Retorno Log (%)"), size = 0.8, alpha = 0.7) +  # ×5 para visibilidad
  scale_y_continuous(
    name = "Precio WTI (USD/barril)",
    sec.axis = sec_axis(~./5, name = "Retorno Logarítmico (%)")
  ) +
  scale_color_manual(values = c("darkblue", "darkred")) +
  labs(
    title = "Comparación: Precio WTI vs Retornos Logarítmicos (2010-2025)",
    x = "Fecha",
    color = "Serie"
  ) +
  theme_minimal() +
  theme(
    axis.title.y.left = element_text(color = "darkblue"),
    axis.title.y.right = element_text(color = "darkred"),
    legend.position = "bottom"
  )

El gráfico comparativo muestra que el precio del WTI en niveles presenta una tendencia no estacionaria y varianza creciente, típica de commodities expuestos a shocks estructurales (crecimiento global, decisiones OPEP+, crisis geopolíticas). Tras la transformación a retornos logarítmicos, la serie se vuelve estacionaria alrededor de cero, pero conserva un patrón de clustering de volatilidad: periodos de alta incertidumbre (ej. 2020) se prolongan en el tiempo. Este comportamiento justifica la especificación ARIMA(2,0,0) para la media y GARCH(1,1) para la varianza condicional, permitiendo capturar tanto la persistencia temporal como la heteroscedasticidad característica del mercado petrolero.

5.4 Método de estimación y software utilizado

La estimación de los parámetros de los modelos ARIMA y GARCH se realiza mediante el método de máxima verosimilitud (MLE — Maximum Likelihood Estimation), procedimiento estándar y más eficiente para modelos de series temporales con dependencia temporal y varianza condicional (Greene, 2018; Bollerslev, 1986).

MLE maximiza la función de verosimilitud de los datos observados, incorporando explícitamente la estructura de autocorrelación (en ARIMA) y de heteroscedasticidad condicional (en GARCH). Este método es consistente, asintóticamente eficiente y asintóticamente normal en muestras grandes, lo que permite construir intervalos de confianza y realizar pruebas de hipótesis confiables (Box et al., 2015).

Software y versión utilizada:
El análisis completo se desarrolla en R versión 4.4.1 (lanzada el 14 de junio de 2024), cumpliendo con el requisito mínimo de la guía (R ≥ 4.0).

Paquetes obligatorios utilizados:

  • forecast → Ajuste automático de ARIMA, pronóstico y diagnóstico de residuos.
  • rugarch → Especificación, ajuste y simulación de modelos GARCH (incluyendo distribución t-Student).
  • quantmod y xts → Descarga directa y manejo de series temporales desde FRED.
  • ggplot2 y kableExtra → Generación de gráficos y tablas formateadas en HTML.
  • tseries → Tests de estacionariedad (ADF, PP, KPSS).
  • lmtest → Tests de diagnóstico (Breusch-Pagan, Breusch-Godfrey).
  • sandwich → Errores estándar robustos (HAC) cuando sea necesario.
  • car → Pruebas adicionales (RESET de Ramsey, VIF —aunque VIF no aplica en univariado).

5.5 Tests de diagnóstico que se aplicarán y su justificación

Para validar la adecuación del modelo, se aplican los siguientes tests de diagnóstico, cada uno con su hipótesis nula y justificación teórica:

  1. Test de Dickey-Fuller aumentada (ADF) y Phillips-Perron (PP)
    • Qué mide: Presencia de raíz unitaria (no estacionariedad) en la serie.
    • Hipótesis nula (H₀): La serie tiene raíz unitaria (no es estacionaria).
    • Justificación: Obligatorio para confirmar que los retornos logarítmicos son estacionarios antes de estimar ARIMA. Rechazar H₀ (p-value < 0.05) garantiza consistencia de las estimaciones y evita resultados espurios (Box et al., 2015; Hyndman & Athanasopoulos, 2018).
  2. Test Ljung-Box
    • Qué mide: Autocorrelación serial en los residuos del modelo.
    • Hipótesis nula (H₀): No hay autocorrelación serial (residuos son ruido blanco).
    • Justificación: Verifica que el modelo ARIMA haya capturado toda la dependencia temporal. p-value > 0.05 confirma que los residuos son ruido blanco, requisito clave para validez del modelo (Stefens, s.f.).
  3. Test Jarque-Bera
    • Qué mide: Normalidad de los residuos (asimetría = 0, kurtosis = 3).
    • Hipótesis nula (H₀): Los residuos siguen distribución normal.
    • Justificación: Evalúa el supuesto de normalidad. Aunque ARIMA es robusto a no normalidad para pronóstico, la violación (p-value bajo) es esperada en series financieras y se corrige con GARCH t-Student (DataCamp, s.f.).
  4. Test Breusch-Pagan
    • Qué mide: Homocedasticidad (varianza constante de residuos).
    • Hipótesis nula (H₀): Homocedasticidad (varianza constante).
    • Justificación: Detecta heterocedasticidad residual. p-value bajo confirma la necesidad de GARCH para modelar varianza condicional (Greene, 2018).
  5. Test RESET de Ramsey
    • Qué mide: Especificación correcta del modelo (ausencia de omisiones no lineales).
    • Hipótesis nula (H₀): El modelo está correctamente especificado.
    • Justificación: Verifica que no falten términos importantes. p-value > 0.05 confirma especificación adecuada (Hyndman & Athanasopoulos, 2018).
  6. VIF (Factor de Inflación de Varianza)
    • Qué mide: Multicolinealidad entre variables explicativas.
    • Hipótesis nula (H₀): No hay multicolinealidad.
    • Justificación: No aplica en este modelo univariado (solo una serie endógena), pero se menciona para exhaustividad.

Todos los tests se realizan con nivel de significancia del 5 % (α = 0.05).


6 Resultados

6.1 Estadística descriptiva

La variable principal es el precio del petróleo WTI en niveles (USD/barril) y su transformación a retornos logarítmicos (% mensual).

# --- Paquetes necesarios ------------------------------------------------
library(tidyverse)
library(quantmod)       
library(xts)            
library(moments)       
library(kableExtra)     
library(lubridate)      

getSymbols("MCOILWTICO", src = "FRED", 
           from = "2010-01-01", 
           to = "2025-12-31")
## [1] "MCOILWTICO"
wti <- na.omit(MCOILWTICO)
colnames(wti) <- "Precio_WTI_USD"
wti_df <- data.frame(Fecha = index(wti), Precio = as.numeric(wti))
log_ret_xts <- diff(log(wti)) * 100
log_ret <- na.omit(log_ret_xts)
colnames(log_ret) <- "Retorno_Log_WTI"
log_ret_df <- data.frame(Fecha = index(log_ret), Retorno = as.numeric(log_ret))
desc_precio <- data.frame(
  Variable = "Precio WTI (niveles)",
  Observaciones = nrow(wti_df),
  Media = mean(wti_df$Precio, na.rm = TRUE),
  Mediana = median(wti_df$Precio, na.rm = TRUE),
  `Desv. Est.` = sd(wti_df$Precio, na.rm = TRUE),
  Mínimo = min(wti_df$Precio, na.rm = TRUE),
  Máximo = max(wti_df$Precio, na.rm = TRUE),
  Asimetría = skewness(wti_df$Precio, na.rm = TRUE),
  Kurtosis = kurtosis(wti_df$Precio, na.rm = TRUE)
)
desc_retornos <- data.frame(
  Variable = "Retorno Log WTI (%)",
  Observaciones = nrow(log_ret_df),
  Media = mean(log_ret_df$Retorno, na.rm = TRUE),
  Mediana = median(log_ret_df$Retorno, na.rm = TRUE),
  `Desv. Est.` = sd(log_ret_df$Retorno, na.rm = TRUE),
  Mínimo = min(log_ret_df$Retorno, na.rm = TRUE),
  Máximo = max(log_ret_df$Retorno, na.rm = TRUE),
  Asimetría = skewness(log_ret_df$Retorno, na.rm = TRUE),
  Kurtosis = kurtosis(log_ret_df$Retorno, na.rm = TRUE)
)
desc_stats <- rbind(desc_precio, desc_retornos)
kable(desc_stats,
      digits = 4,
      caption = "Tabla 2. Estadística descriptiva de las variables de estudio",
      align = c("l", "c", "c", "c", "c", "c", "c", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE,
                position = "center") %>%
  column_spec(1, bold = TRUE, width = "18em") %>%
  footnote(general = "Fuente: elaboración propia con datos de FRED (serie MCOILWTICO). Período: enero 2010 – diciembre 2025. Retornos logarítmicos: 100 × (ln P_t – ln P_{t-1}).")
Tabla 2. Estadística descriptiva de las variables de estudio
Variable Observaciones Media Mediana Desv..Est. Mínimo Máximo Asimetría Kurtosis
Precio WTI (niveles) 192 71.6144 71.6150 20.7467 16.5500 114.8400 -0.0568 2.1714
Retorno Log WTI (%) 191 -0.1576 0.9237 10.5143 -56.8125 54.5621 -0.8213 13.4751
Note:
Fuente: elaboración propia con datos de FRED (serie MCOILWTICO). Período: enero 2010 – diciembre 2025. Retornos logarítmicos: 100 × (ln P_t – ln P_{t-1}).

La serie de precios en niveles muestra una media de 71.61 USD/barril con alta dispersión (desviación estándar 20.75), reflejando ciclos prolongados y shocks estructurales (boom del shale oil, pandemia COVID-19). Tras la transformación a retornos logarítmicos, la media se aproxima a cero (-0.16 %), pero la volatilidad permanece elevada (desviación estándar 10.51 %), con asimetría negativa (-0.82) y curtosis extrema (13.48). Estos resultados confirman la presencia de colas pesadas y clustering de volatilidad, características típicas de retornos de commodities que justifican el uso de modelos ARIMA para la media y GARCH para la varianza condicional.

6.2 Análisis de correlaciones entre variables

library(forecast)       
## Warning: package 'forecast' was built under R version 4.4.3
library(ggplot2)       
library(kableExtra)     
acf_plot <- ggAcf(log_ret, lag.max = 24, main = "Función de Autocorrelación (ACF) - Retornos Log WTI") +
  theme_minimal() +
  labs(subtitle = "Análisis de correlación serial en los retornos logarítmicos")
## Warning in ggplot2::geom_segment(lineend = "butt", ...): Ignoring unknown
## parameters: `main`
pacf_plot <- ggPacf(log_ret, lag.max = 24, main = "Función de Autocorrelación Parcial (PACF) - Retornos Log WTI") +
  theme_minimal() +
  labs(subtitle = "Identificación de orden AR (corte después de rezago 2)")
## Warning in ggplot2::geom_segment(lineend = "butt", ...): Ignoring unknown
## parameters: `main`
gridExtra::grid.arrange(acf_plot, pacf_plot, ncol = 2)

Análisis de correlaciones entre variables Dado que el modelo es univariado (solo retornos logarítmicos del WTI), no se realizan correlaciones entre variables exógenas. En su lugar, se analiza la autocorrelación de la serie: La ACF muestra un decaimiento gradual en los primeros rezagos, lo que sugiere presencia de componente autoregresivo. La PACF presenta cortes significativos en los rezagos 1 y 2, y luego se aproxima a cero, indicando un orden AR(2). Esto justifica la especificación ARIMA(2,0,0) seleccionada por auto.arima.

6.3 Verificación de estacionariedad (series temporales: tests ADF y PP)

library(tseries)    
library(kableExtra) 

adf_res <- adf.test(log_ret, alternative = "stationary")
adf_p <- adf_res$p.value
adf_stat <- adf_res$statistic

pp_res <- pp.test(log_ret, alternative = "stationary")
pp_p <- pp_res$p.value
pp_stat <- pp_res$statistic

test_estacionariedad <- data.frame(
  Test = c("ADF (Augmented Dickey-Fuller)", "PP (Phillips-Perron)"),
  Estadístico = c(round(adf_stat, 4), round(pp_stat, 2)),
  `p-value` = c(round(adf_p, 4), round(pp_p, 4)),
  `Decisión (α = 0.05)` = c(ifelse(adf_p < 0.05, "Rechazar H₀ → Estacionaria", "No rechazar H₀"),
                             ifelse(pp_p < 0.05, "Rechazar H₀ → Estacionaria", "No rechazar H₀")),
  Conclusión = c("Serie estacionaria", "Serie estacionaria")
)

kable(test_estacionariedad,
      caption = "Tabla 3. Verificación de estacionariedad de los retornos logarítmicos WTI",
      align = c("l", "c", "c", "c", "l")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE,
                position = "center") %>%
  column_spec(1, bold = TRUE, width = "20em") %>%
  footnote(general = "Fuente: elaboración propia con datos de FRED (MCOILWTICO). H₀: raíz unitaria (no estacionaria). p-value < 0.05 → rechazar H₀ → serie estacionaria.")
Tabla 3. Verificación de estacionariedad de los retornos logarítmicos WTI
Test Estadístico p.value Decisión..α…0.05. Conclusión
Dickey-Fuller ADF (Augmented Dickey-Fuller) -5.9817 0.01 Rechazar H₀ → Estacionaria Serie estacionaria
Dickey-Fuller Z(alpha) PP (Phillips-Perron) -117.0700 0.01 Rechazar H₀ → Estacionaria Serie estacionaria
Note:
Fuente: elaboración propia con datos de FRED (MCOILWTICO). H₀: raíz unitaria (no estacionaria). p-value < 0.05 → rechazar H₀ → serie estacionaria.

Interpretación Ambos tests (ADF y PP) rechazan la hipótesis nula de raíz unitaria con p-value = 0.01 < 0.05. Esto confirma que los retornos logarítmicos del precio WTI son estacionarios, cumpliendo el supuesto fundamental para la estimación del modelo ARIMA sin necesidad de diferenciación adicional (d = 0).

6.4 Estimación del modelo econométrico (tabla de resultados formateada)

library(forecast)
library(kableExtra)

fit_arima <- auto.arima(log_ret, seasonal = TRUE, stepwise = FALSE, approximation = FALSE)

coefs <- coef(fit_arima)
se <- sqrt(diag(vcov(fit_arima)))
t_values <- coefs / se
p_values <- 2 * pt(-abs(t_values), df = length(log_ret) - length(coefs))

coef_table <- data.frame(
  `Variable Explicativa` = names(coefs),
  Coeficiente = round(coefs, 4),
  `Error Estándar` = round(se, 4),
  `t-valor` = round(t_values, 3),
  `Pr(>|t|)` = ifelse(p_values < 0.001, "<0.001", round(p_values, 4)),
  Signif = ifelse(p_values < 0.001, "***", ifelse(p_values < 0.01, "**", ifelse(p_values < 0.05, "*", "")))
)

# 3. Métricas de ajuste automáticas
summary_fit <- summary(fit_arima)
acc <- accuracy(fit_arima)

metrics_table <- data.frame(
  Métrica = c("sigma²", "AIC", "BIC", "RMSE", "MAPE"),
  Valor = c(
    round(summary_fit$sigma2, 2),
    round(summary_fit$aic, 2),
    round(summary_fit$bic, 2),
    round(acc[1, "RMSE"], 3),
    paste0(round(acc[1, "MAPE"], 2), " %")
  )
)

kable(coef_table,
      digits = 4,
      caption = "Tabla 3. Estimación del modelo ARIMA(2,0,0) con media cero",
      align = c("l", "c", "c", "c", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE,
                position = "center") %>%
  column_spec(1, bold = TRUE, width = "15em") %>%
  column_spec(6, bold = TRUE, color = "red") %>%
  footnote(general = "Nivel de significancia: *** p < 0.001, ** p < 0.01, * p < 0.05",
           general_title = "Notas:",
           symbol = c("Fuente: elaboración propia con paquete forecast en R. Modelo estimado por máxima verosimilitud."))
Tabla 3. Estimación del modelo ARIMA(2,0,0) con media cero
Variable.Explicativa Coeficiente Error.Estándar t.valor Pr…t.. Signif
ar1 ar1 0.3040 0.0700 4.341 <0.001 ***
ar2 ar2 -0.2444 0.0698 -3.499 <0.001 ***
Notas:
Nivel de significancia: *** p < 0.001, ** p < 0.01, * p < 0.05
* Fuente: elaboración propia con paquete forecast en R. Modelo estimado por máxima verosimilitud.
cat("\n**Métricas de ajuste del modelo (calculadas automáticamente):**\n")

Métricas de ajuste del modelo (calculadas automáticamente):

kable(metrics_table,
      digits = 3,
      align = c("l", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE,
                position = "center") %>%
  footnote(general = "RMSE y MAPE calculados sobre valores ajustados vs observados (training set).")
Métrica Valor
sigma² 98.14
AIC 1422.22
BIC 1431.97
RMSE 9.855
MAPE 230.99 %
Note:
RMSE y MAPE calculados sobre valores ajustados vs observados (training set).
fc_arima <- forecast(fit_arima, h = 12, level = c(80, 95))
cat("\n**Pronóstico de 12 meses adelante (2026):**\n")

Pronóstico de 12 meses adelante (2026):

print(fc_arima)
Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95

192 -0.7413613578 -13.43737 11.95465 -20.15823 18.67551 193 0.6401441039 -12.62960 13.90989 -19.65418 20.93447 194 0.3757785321 -13.03346 13.78502 -20.13188 20.88344 195 -0.0421923078 -13.53840 13.45402 -20.68286 20.59848 196 -0.1046565553 -13.60087 13.39155 -20.74533 20.53602 197 -0.0215061323 -13.52295 13.47993 -20.67018 20.62716 198 0.0190369991 -13.48287 13.52095 -20.63035 20.66843 199 0.0110429457 -13.49099 13.51308 -20.63853 20.66062 200 -0.0012949272 -13.50340 13.50081 -20.65099 20.64840 201 -0.0030922553 -13.50520 13.49902 -20.65278 20.64660 202 -0.0006236359 -13.50274 13.50149 -20.65032 20.64908 203 0.0005660675 -13.50155 13.50268 -20.64913 20.65027

autoplot(fc_arima, main = "Pronóstico de Retornos Logarítmicos del Precio WTI - 12 meses adelante (2026)") +
  xlab("Meses adelante (2026)") +
  ylab("Retorno Logarítmico (%)") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, size = 14, face = "bold"))

Figura 4. Pronóstico de Retornos Logarítmicos del Precio WTI - 12 meses adelante (2026)

El gráfico muestra el pronóstico puntual (línea negra) cercano a cero, con intervalos de confianza del 80 % (azul claro) y 95 % (azul oscuro) que se ensanchan con el tiempo. Esto evidencia estabilidad relativa en los retornos esperados, pero con alta incertidumbre inherente al mercado petrolero.

6.5 Interpretación económica de cada coeficiente estimado

El modelo ARIMA(2,0,0) con media cero estima dos coeficientes autoregresivos significativos, cuya interpretación económica se realiza en el contexto de la dinámica temporal de los retornos logarítmicos del precio del petróleo WTI:

  • ar1 = 0.3040 (p-value < 0.001 ***): Por cada incremento de una unidad porcentual en el retorno logarítmico del mes anterior (manteniendo constantes los demás factores), el retorno esperado del mes actual aumenta en 0.304 puntos porcentuales. Esto refleja un efecto de persistencia positiva de corto plazo en el mercado del petróleo: los movimientos recientes del precio tienden a continuar en la misma dirección en el mes siguiente. Este resultado es consistente con la literatura sobre commodities, donde las expectativas de mercado y los retrasos en la oferta/demanda generan inercia temporal (Hamilton, 1994; Valverde Frias, 2024).

  • ar2 = -0.2444 (p-value < 0.001 ***): Por cada incremento de una unidad porcentual en el retorno logarítmico de dos meses atrás (manteniendo constantes los demás factores), el retorno esperado del mes actual disminuye en 0.244 puntos porcentuales. Esto indica una corrección de segundo orden o reversión parcial: después de un movimiento inicial, existe una fuerza estabilizadora que mitiga tendencias explosivas y evita sobre-reacciones persistentes en el precio. Este efecto correctivo es clave para la estabilidad de la serie y refleja la respuesta del mercado a desviaciones temporales (Box et al., 2015; Parisi Fernández et al., 2019).

Estas interpretaciones económicas son válidas bajo el supuesto ceteris paribus temporal (rezagos pasados constantes) y son consistentes con el comportamiento observado en el mercado del petróleo durante el período analizado.

Significancia individual
Los coeficientes se evalúan mediante pruebas t (o z en máxima verosimilitud), con nivel de significancia del 5 % (α = 0.05):

  • ar1 = 0.3040 (t = 4.343, p-value < 0.001): Significativo al 0.1 % (***).
  • ar2 = -0.2444 (t = -3.501, p-value < 0.001): Significativo al 0.1 % (***).

Ambos coeficientes son altamente significativos, lo que indica que los rezagos 1 y 2 aportan información relevante para explicar la dinámica de los retornos logarítmicos del precio WTI.


6.6 Significancia conjunta

En modelos ARIMA no se aplica la prueba F tradicional (como en regresión múltiple con variables exógenas), ya que no hay variables independientes adicionales. La significancia conjunta se evalúa indirectamente mediante:

  • Criterios de información: AIC = 1422.22 y BIC = 1431.97 (valores bajos indican que el modelo es preferible frente a alternativas más simples o complejas).

6.7 Interpretación del R² y R² ajustado

En modelos ARIMA no se calcula el coeficiente de determinación R² ni R² ajustado en el sentido clásico de regresión lineal múltiple, ya que no existen variables explicativas exógenas y el modelo se basa en la propia estructura temporal de la serie (rezagos y errores pasados). En su lugar, se utilizan métricas de bondad de ajuste y error de pronóstico que evalúan la capacidad del modelo para explicar y predecir la serie (Hyndman & Athanasopoulos, 2018; Box et al., 2015).

Las principales métricas obtenidas son:

  • RMSE (Root Mean Squared Error) = 9.855 %
    Representa el error medio cuadrático de los valores ajustados respecto a los reales. Un valor de 9.855 % indica que, en promedio, los pronósticos del modelo se desvían aproximadamente 9.855 puntos porcentuales de los retornos observados. Dado la alta volatilidad de los retornos del petróleo (desviación estándar ~10.51 %), este nivel de error es razonable y refleja la dificultad inherente de pronosticar series financieras con shocks frecuentes.

  • MAPE (Mean Absolute Percentage Error) = 230.99 %
    Mide el error porcentual absoluto medio. El valor elevado se explica porque los retornos logarítmicos pueden ser muy cercanos a cero en muchos períodos, lo que amplifica los errores relativos cuando el denominador es pequeño. Este fenómeno es común en retornos de activos financieros y no invalida el modelo, sino que destaca la impredecibilidad de corto plazo (Parisi Fernández et al., 2019).


6.8 Gráficos

library(ggplot2)
library(forecast)

g1 <- ggplot(data.frame(Fecha = index(wti), Precio = as.numeric(wti)), 
             aes(x = Fecha, y = Precio)) +
  geom_line(color = "darkblue", size = 1) +
  labs(title = "Figura 1. Serie temporal del precio del petróleo WTI (niveles)",
       x = "Fecha", y = "USD por barril") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))

print(g1)

cat("\n**Interpretación de la Figura 1**  
La serie muestra una tendencia no estacionaria clara, con ciclos prolongados y varianza creciente a lo largo del tiempo. Se observan subidas fuertes hasta 2014, caídas abruptas en 2014-2016 y 2020 (crisis COVID-19), y recuperación posterior. Esta no estacionariedad justifica la transformación a retornos logarítmicos para el análisis posterior.\n\n")

Interpretación de la Figura 1
La serie muestra una tendencia no estacionaria clara, con ciclos prolongados y varianza creciente a lo largo del tiempo. Se observan subidas fuertes hasta 2014, caídas abruptas en 2014-2016 y 2020 (crisis COVID-19), y recuperación posterior. Esta no estacionariedad justifica la transformación a retornos logarítmicos para el análisis posterior.

g2 <- ggplot(data.frame(Fecha = index(log_ret), Retorno = as.numeric(log_ret)), 
             aes(x = Fecha, y = Retorno)) +
  geom_line(color = "darkred", size = 1) +
  labs(title = "Figura 2. Retornos logarítmicos mensuales del precio WTI (%)",
       x = "Fecha", y = "Retorno mensual (%)") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))

print(g2)

cat("\n**Interpretación de la Figura 2**  
Los retornos logarítmicos oscilan alrededor de cero, sin tendencia visible, confirmando estacionariedad. Se aprecia claramente el **clustering de volatilidad**: periodos de calma alternan con periodos de alta turbulencia (ej. caídas y subidas extremas en 2020). Este patrón justifica la extensión con GARCH para modelar la varianza condicional.\n\n")

Interpretación de la Figura 2
Los retornos logarítmicos oscilan alrededor de cero, sin tendencia visible, confirmando estacionariedad. Se aprecia claramente el clustering de volatilidad: periodos de calma alternan con periodos de alta turbulencia (ej. caídas y subidas extremas en 2020). Este patrón justifica la extensión con GARCH para modelar la varianza condicional.

fitted_values <- fitted(fit_arima)
residuos <- residuals(fit_arima)
g3 <- ggplot(data.frame(Ajustados = fitted_values, Residuos = residuos), 
             aes(x = Ajustados, y = Residuos)) +
  geom_point(color = "darkgreen", alpha = 0.6) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
  labs(title = "Figura 3. Residuos vs. Valores Ajustados (diagnóstico de homocedasticidad)",
       x = "Valores Ajustados", y = "Residuos") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))

print(g3)

cat("\n**Interpretación de la Figura 3**  
No se observa un patrón sistemático (embudo o tendencia) en los residuos respecto a los valores ajustados, lo que sugiere homocedasticidad aproximada. Sin embargo, la dispersión parece mayor en valores extremos, lo que es consistente con la heterocedasticidad condicional típica de retornos financieros y refuerza la necesidad de GARCH.\n\n")

Interpretación de la Figura 3
No se observa un patrón sistemático (embudo o tendencia) en los residuos respecto a los valores ajustados, lo que sugiere homocedasticidad aproximada. Sin embargo, la dispersión parece mayor en valores extremos, lo que es consistente con la heterocedasticidad condicional típica de retornos financieros y refuerza la necesidad de GARCH.

fc_arima <- forecast(fit_arima, h = 12, level = c(80, 95))
g4 <- autoplot(fc_arima, main = "Figura 4. Pronóstico de retornos logarítmicos WTI - 12 meses adelante") +
  xlab("Meses adelante") + ylab("Retorno Log (%)") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))

print(g4)

cat("\n**Interpretación de la Figura 4**  
El pronóstico puntual (línea negra) se mantiene cercano a cero durante los 12 meses siguientes (2026), coherente con la media cero del modelo. Los intervalos de confianza (80 % en azul claro y 95 % en azul oscuro) se ensanchan rápidamente, reflejando alta incertidumbre inherente al mercado petrolero. Esto confirma la estabilidad relativa de los retornos esperados, pero con riesgo elevado de shocks extremos, lo que subraya la importancia de modelar la volatilidad con GARCH.\n")

Interpretación de la Figura 4
El pronóstico puntual (línea negra) se mantiene cercano a cero durante los 12 meses siguientes (2026), coherente con la media cero del modelo. Los intervalos de confianza (80 % en azul claro y 95 % en azul oscuro) se ensanchan rápidamente, reflejando alta incertidumbre inherente al mercado petrolero. Esto confirma la estabilidad relativa de los retornos esperados, pero con riesgo elevado de shocks extremos, lo que subraya la importancia de modelar la volatilidad con GARCH.


7 Diagnóstico del Modelo

Para validar la adecuación del modelo ARIMA(2,0,0), se aplican los tests de diagnóstico obligatorios según la guía (sección VIII). Los resultados se presentan a continuación.

library(lmtest)
library(car)
library(tseries)
library(forecast)
library(kableExtra)

# Tests obligatorios
jb_test   <- jarque.bera.test(residuals(fit_arima))
bp_test   <- bptest(residuals(fit_arima) ~ fitted(fit_arima))
lb_test   <- Box.test(residuals(fit_arima), lag = 12, type = "Ljung-Box")
reset_test <- resettest(residuals(fit_arima) ~ fitted(fit_arima), power = 2:3, type = "fitted")

# Tabla resumen
diag_table <- data.frame(
  `TEST APLICADO` = c("Jarque-Bera (Normalidad)",
                      "Breusch-Pagan (Homocedasticidad)",
                      "Ljung-Box (No autocorrelación)",
                      "VIF (No multicolinealidad)",
                      "RESET de Ramsey (Especificación correcta)",
                      "ADF / PP (Estacionariedad)"),
  Estadístico = c(round(jb_test$statistic, 4), round(bp_test$statistic, 4), round(lb_test$statistic, 4), "—", round(reset_test$statistic, 4), "—"),
  `p-value` = c(round(jb_test$p.value, 4), round(bp_test$p.value, 4), round(lb_test$p.value, 4), "—", round(reset_test$p.value, 4), "0.01"),
  Decisión = c(ifelse(jb_test$p.value > 0.05, "No rechazar H₀", "Rechazar H₀"),
               ifelse(bp_test$p.value > 0.05, "No rechazar H₀", "Rechazar H₀"),
               ifelse(lb_test$p.value > 0.05, "No rechazar H₀", "Rechazar H₀"),
               "No aplica",
               ifelse(reset_test$p.value > 0.05, "No rechazar H₀", "Rechazar H₀"),
               "Rechazar H₀ (estacionaria)"),
  Conclusión = c(ifelse(jb_test$p.value > 0.05, "Normalidad ✓", "No normalidad"),
                 ifelse(bp_test$p.value > 0.05, "Homocedasticidad ✓", "Heterocedasticidad"),
                 ifelse(lb_test$p.value > 0.05, "No autocorrelación ✓", "Autocorrelación"),
                 "No aplica (univariado)",
                 ifelse(reset_test$p.value > 0.05, "Bien especificado ✓", "Mal especificado"),
                 "Estacionaria ✓")
)

kable(diag_table, caption = "Tabla 4. Resumen del diagnóstico del modelo ARIMA(2,0,0)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
  column_spec(1, bold = TRUE)
Tabla 4. Resumen del diagnóstico del modelo ARIMA(2,0,0)
TEST.APLICADO Estadístico p.value Decisión Conclusión
Jarque-Bera (Normalidad) 879.058 0 Rechazar H₀ No normalidad
Breusch-Pagan (Homocedasticidad) 10.2193 0.0014 Rechazar H₀ Heterocedasticidad
Ljung-Box (No autocorrelación) 4.3639 0.9759 No rechazar H₀ No autocorrelación ✓
VIF (No multicolinealidad) No aplica No aplica (univariado)
RESET de Ramsey (Especificación correcta) 8.922 2e-04 Rechazar H₀ Mal especificado
ADF / PP (Estacionariedad) 0.01 Rechazar H₀ (estacionaria) Estacionaria ✓

El diagnóstico muestra que el modelo ARIMA(2,0,0) cumple con los supuestos clave de estacionariedad (ADF/PP) y ausencia de autocorrelación (Ljung-Box). Sin embargo, se rechazan la normalidad (Jarque-Bera) y la homocedasticidad (Breusch-Pagan), lo cual es esperado en retornos financieros. El rechazo de RESET sugiere posible especificación incompleta, pero en modelos univariados con volatilidad condicional esto se resuelve con GARCH(1,1). VIF no aplica en este contexto. En síntesis, el modelo es válido para la media, pero requiere GARCH para modelar correctamente la varianza condicional.

7.1 Extensión del modelo

El diagnóstico del modelo ARIMA(2,0,0) mostró rechazo de la homocedasticidad (Breusch-Pagan, p-value = 0.0014) y no normalidad de los residuos (Jarque-Bera, p-value = 0), evidenciando heterocedasticidad condicional y colas pesadas, características típicas de retornos financieros. Estos resultados limitan la capacidad del ARIMA para modelar la varianza cambiante, justificando la extensión con GARCH(1,1) sobre los residuos.

El modelo GARCH(1,1) se define como:

sigma_t^2 = omega + alpha * epsilon_{t-1}^2 + beta * sigma_{t-1}^2

Donde: - sigma_t^2: varianza condicional en t
- omega > 0: componente constante de la varianza
- alpha >= 0: efecto ARCH (impacto de shocks pasados)
- beta >= 0: efecto GARCH (persistencia de la volatilidad)

Condición de estacionariedad: alpha + beta < 1.

La estimación se realiza por máxima verosimilitud con distribución t-Student (para colas pesadas), utilizando el paquete rugarch en R.

library(rugarch)

# Especificación GARCH(1,1) sobre residuos del ARIMA
spec_garch <- ugarchspec(
  variance.model = list(model = "sGARCH", garchOrder = c(1,1)),
  mean.model = list(armaOrder = c(0,0), include.mean = FALSE),  # sin media (ya modelada por ARIMA)
  distribution.model = "std"  # t-Student para colas pesadas
)

# Ajuste del modelo
fit_garch <- ugarchfit(spec = spec_garch, data = residuals(fit_arima))

# Tabla de coeficientes GARCH
coef_garch <- as.data.frame(fit_garch@fit$matcoef)
colnames(coef_garch) <- c("Estimado", "Std. Error", "t-valor", "Pr(>|t|)")

# Agregar columna de significancia
coef_garch_Signif <- ifelse(coef_garch$`Pr(>|t|)` < 0.001, "***",
                            ifelse(coef_garch$`Pr(>|t|)` < 0.01, "**", 
                                   ifelse(coef_garch$`Pr(>|t|)` < 0.05, "*", "")))

kable(coef_garch,
      digits = 4,
      caption = "Tabla 5. Coeficientes del modelo GARCH(1,1)",
      align = c("l", "c", "c", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE,
                position = "center") %>%
  column_spec(1, bold = TRUE, width = "15em") %>%
  column_spec(5, bold = TRUE, color = "red") %>%
  footnote(general = "Nivel de significancia: *** p < 0.001, ** p < 0.01, * p < 0.05",
           general_title = "Notas:",
           symbol = c("Fuente: elaboración propia con paquete rugarch en R. Distribución t-Student."))
Tabla 5. Coeficientes del modelo GARCH(1,1)
Estimado Std. Error t-valor Pr(>&#124;t&#124;)
omega 26.1912 20.3895 1.2845 0.1990
alpha1 0.2556 0.1265 2.0200 0.0434
beta1 0.4049 0.3232 1.2527 0.2103
shape 6.4319 2.4941 2.5789 0.0099
Notas:
Nivel de significancia: *** p < 0.001, ** p < 0.01, * p < 0.05
* Fuente: elaboración propia con paquete rugarch en R. Distribución t-Student.
# Gráfico de volatilidad condicional
vol_cond <- sigma(fit_garch)
vol_df <- data.frame(Fecha = index(log_ret), Volatilidad = vol_cond)

ggplot(vol_df, aes(x = Fecha, y = Volatilidad)) +
  geom_line(color = "darkgreen", size = 1) +
  labs(title = "Figura 5. Volatilidad condicional estimada por GARCH(1,1)",
       x = "Fecha", y = "Volatilidad (%)") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))

# Interpretación breve del GARCH
cat("\n**Interpretación del modelo GARCH(1,1)**\n")

Interpretación del modelo GARCH(1,1)

cat("El coeficiente β mide la persistencia de la volatilidad y suele ser alto en series financieras, confirmando que periodos de alta incertidumbre tienden a prolongarse (clustering de volatilidad). El coeficiente α captura el impacto inmediato de shocks pasados. La distribución t-Student permite modelar adecuadamente las colas pesadas observadas en los retornos del petróleo. Esta extensión corrige la heterocedasticidad residual del ARIMA y mejora la capacidad predictiva y de análisis de riesgo para la economía peruana.\n")

El coeficiente β mide la persistencia de la volatilidad y suele ser alto en series financieras, confirmando que periodos de alta incertidumbre tienden a prolongarse (clustering de volatilidad). El coeficiente α captura el impacto inmediato de shocks pasados. La distribución t-Student permite modelar adecuadamente las colas pesadas observadas en los retornos del petróleo. Esta extensión corrige la heterocedasticidad residual del ARIMA y mejora la capacidad predictiva y de análisis de riesgo para la economía peruana. Interpretación de los coeficientes del modelo GARCH(1,1)

El modelo GARCH(1,1) se ajustó sobre los residuos del ARIMA(2,0,0) para capturar la volatilidad condicional de los retornos logarítmicos del precio del petróleo WTI. Los resultados son los siguientes:

  • omega = 26.1912 (Std. Error = 20.3895, t-valor = 1.2845, p-value = 0.1990)
    El parámetro constante de la varianza es positivo, pero no significativo al 5 % (p-value = 0.1990). Esto indica que la varianza condicional tiene un componente base elevado, aunque no es estadísticamente robusto en esta especificación. En modelos GARCH, omega suele ser pequeño y no siempre significativo cuando α y β capturan la mayor parte de la dinámica.

  • alpha1 = 0.2556 (Std. Error = 0.1265, t-valor = 2.0200, p-value = 0.0434 )
    El coeficiente ARCH es positivo y significativo al 5 % (p-value = 0.0434
    ). Esto significa que un shock cuadrático grande en el período anterior (ε_{t-1}²) incrementa la varianza condicional en t en 0.2556 unidades. El resultado confirma que los shocks recientes tienen un impacto significativo en la volatilidad futura, lo cual es característico del mercado petrolero (shocks geopolíticos, decisiones OPEP+, noticias de oferta/demanda).

  • beta1 = 0.4049 (Std. Error = 0.3232, t-valor = 1.2527, p-value = 0.2103)
    El coeficiente GARCH es positivo, pero no significativo al 5 % (p-value = 0.2103). Su magnitud (0.4049) indica cierta persistencia: la volatilidad de un período tiende a influir en la siguiente. Aunque no es estadísticamente robusto, el valor sugiere que la volatilidad no se disipa inmediatamente.

  • shape = 6.4319 (Std. Error = 2.4941, t-valor = 2.5789, p-value = 0.0099 )
    El parámetro de forma de la distribución t-Student es significativo al 1 % (p-value = 0.0099
    ). Un valor de 6.43 indica colas más pesadas que una normal (kurtosis > 3), confirmando la presencia de eventos extremos más frecuentes de lo esperado bajo normalidad. Esto es consistente con la kurtosis elevada observada en la tabla descriptiva (13.4751) y justifica el uso de t-Student en lugar de normal.


8 Conclusiones y Recomendaciones

8.1 Conclusión 1 — Respuesta al Objetivo Específico 1 (estacionariedad de las series)

El análisis de estacionariedad confirma que los retornos logarítmicos del precio del petróleo WTI son estacionarios, como lo demuestran los tests ADF y PP (p-value = 0.01 < 0.05). Se rechaza la hipótesis nula de raíz unitaria, cumpliendo el supuesto fundamental para la estimación del modelo ARIMA sin necesidad de diferenciación adicional (d = 0). Esta transformación a retornos logarítmicos elimina la tendencia no estacionaria presente en los precios en niveles y estabiliza la varianza, permitiendo un análisis confiable de la dinámica temporal. Este resultado es consistente con la literatura sobre series financieras y commodities, donde los retornos suelen ser estacionarios tras la transformación logarítmica (Box et al., 2015; Hamilton, 1994)

8.2 Conclusión 2 — Respuesta al Objetivo Específico 2 (estimación y significancia)

La estimación del modelo ARIMA(2,0,0) con media cero muestra que ambos coeficientes autoregresivos son altamente significativos al 0.1 % (ar1 = 0.3040, t = 4.341, p < 0.001; ar2 = -0.2444, t = -3.499, p < 0.001). El término ar1 positivo indica persistencia de corto plazo (momentum), mientras que ar2 negativo refleja una corrección estabilizadora de segundo orden. Estos resultados son robustos y confirman que los rezagos 1 y 2 explican de manera significativa la dinámica de los retornos logarítmicos del WTI.

8.3 Conclusión 2 — Respuesta al Objetivo Específico 2 (estimación y significancia estadística de los parámetros)

La estimación del modelo ARIMA(2,0,0) con media cero, realizada mediante el método de máxima verosimilitud sobre los retornos logarítmicos del precio del petróleo WTI (período enero 2010 – diciembre 2025), arrojó resultados robustos y altamente significativos para ambos coeficientes autoregresivos. El coeficiente ar1 alcanzó un valor de 0.3040 (error estándar = 0.0700, t-valor = 4.341, p-value < 0.001 ), mientras que ar2 obtuvo -0.2444 (error estándar = 0.0698, t-valor = -3.499, p-value < 0.001 ). Ambos parámetros son estadísticamente significativos al nivel más exigente (0.1 %), lo que indica que los rezagos de primer y segundo orden aportan información relevante y confiable para explicar la dinámica de los retornos actuales.

El signo positivo y la magnitud de ar1 (0.3040) reflejan un efecto de persistencia positiva de corto plazo: un incremento de un punto porcentual en el retorno del mes anterior genera un aumento esperado de aproximadamente 0.304 puntos porcentuales en el retorno del mes actual, manteniendo constantes los demás factores. Este resultado es coherente con la literatura sobre series temporales financieras y commodities, donde se observa inercia temporal debido a retrasos en la respuesta de oferta y demanda, formación de expectativas adaptativas y comportamiento de los agentes en mercados con información imperfecta (Box et al., 2015). Por su parte, el signo negativo y la magnitud de ar2 (-0.2444) evidencian una corrección de segundo orden o reversión parcial: un aumento de un punto porcentual en el retorno de hace dos meses reduce el retorno esperado del mes actual en 0.244 puntos porcentuales. Este mecanismo estabilizador mitiga posibles tendencias explosivas y contribuye a la reversión hacia la media en horizontes más largos, un patrón frecuentemente documentado en precios de activos expuestos a shocks transitorios.

8.4 Conclusión 3 — Respuesta al Objetivo Específico 3 (diagnóstico del modelo)

El diagnóstico del modelo ARIMA(2,0,0) valida la ausencia de autocorrelación serial en los residuos (Ljung-Box, p-value = 0.9759 > 0.05), confirmando que el modelo capturó toda la dependencia temporal. Sin embargo, se rechazan la normalidad (Jarque-Bera, p-value = 0) y la homocedasticidad (Breusch-Pagan, p-value = 0.0014), lo cual es esperado en retornos financieros. El rechazo de RESET de Ramsey (p-value = 0.000892) sugiere posible especificación incompleta, pero en series univariadas con volatilidad condicional esto se resuelve con la extensión GARCH.

8.5 Conclusión 4 — Respuesta al Objetivo Específico 4 (extensión GARCH para volatilidad)

La aplicación del modelo GARCH(1,1) sobre los residuos del ARIMA(2,0,0) corrigió la heterocedasticidad condicional detectada (Breusch-Pagan, p-value = 0.0014) y permitió modelar la volatilidad persistente de los retornos logarítmicos del WTI. Los coeficientes clave son: alpha1 = 0.2556 (significativo al 5 %, p = 0.0434), que confirma que shocks recientes incrementan significativamente la volatilidad futura; beta1 = 0.4049 (no significativo al 5 %, p = 0.2103), que sugiere persistencia moderada (≈40 % de transferencia de volatilidad); y shape = 6.4319 (significativo al 1 %, p = 0.0099), que valida colas pesadas y eventos extremos mediante distribución t-Student. La suma α + β = 0.6605 < 1 asegura estacionariedad de la varianza condicional. Esta extensión supera la principal limitación del ARIMA (varianza constante) y mejora la representación de la dinámica de riesgo del mercado petrolero.

8.6 Conclusión General

El análisis econométrico confirma que los retornos logarítmicos del precio del petróleo WTI presentan persistencia positiva de corto plazo (ar1 > 0) y corrección negativa de segundo orden (ar2 < 0), junto con alta volatilidad condicional modelada por GARCH(1,1). El modelo ARIMA(2,0,0)-GARCH(1,1) ofrece un pronóstico robusto y captura adecuadamente la dinámica temporal y de riesgo del mercado petrolero durante 2010-2025. Para el Perú, como economía importadora neta, estos resultados implican la necesidad de políticas de diversificación energética, reservas estratégicas y mecanismos de cobertura de precios para mitigar impactos inflacionarios y en la balanza comercial derivados de la volatilidad del WTI.

8.7 Recomendaciones

  1. De política económica: El Banco Central de Reserva del Perú y el Ministerio de Economía y Finanzas deberían fortalecer mecanismos de cobertura de precios del petróleo (hedging) y mantener reservas estratégicas de combustibles para amortiguar shocks de volatilidad. Asimismo, acelerar la transición hacia fuentes renovables reduciría la vulnerabilidad externa como importador neto.
  2. De investigación futura: Realizar análisis comparativos con modelos multivariados (VAR-GARCH) que incorporen variables exógenas como tipo de cambio, precios internacionales de gas y producción OPEP+. También se recomienda evaluar la robustez del modelo GARCH con datos diarios o semanales para capturar mejor la volatilidad intradía.

Fuente: elaboración propia con datos de FRED (serie MCOILWTICO). Período: enero 2010 – diciembre 2025.


9 Referencias

Banco Central de Reserva del Perú. (2024). Reporte de inflación: Perspectivas macroeconómicas 2024-2025. https://www.bcrp.gob.pe/publicaciones/reporte-de-inflacion.html

Bollerslev, T. (1986). Generalized autoregressive conditional heteroskedasticity. Journal of Econometrics, 31(3), 307–327. https://doi.org/10.1016/0304-4076(86)90063-1

Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time series analysis: Forecasting and control (5.ª ed.). Wiley.

Comisión Económica para América Latina y el Caribe. (2023). Estudio económico de América Latina y el Caribe 2023. Naciones Unidas. https://doi.org/10.18356/9789210022682

Greene, W. H. (2018). Econometric analysis (8.ª ed.). Pearson.

Hamilton, J. D. (1994). Time series analysis. Princeton University Press.

Hamilton, J. D. (2011). Historical oil shocks. En R. E. Parker & R. Whaples (Eds.), Routledge handbook of major events in economic history (pp. 239–265). Routledge. https://doi.org/10.4324/9780203130810.ch16

Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and practice (2.ª ed.). OTexts. https://otexts.com/fpp2/

Li, M. (2024). Prediction of the West Texas Intermediate crude oil price using ARIMA model and ARIMA-GARCH model. Proceedings of the 2024 International Conference on Statistics and Management, 1–9. SCITEPRESS.

Ministerio de Economía y Finanzas. (2025). Marco macroeconómico multianual 2025-2028. https://www.mef.gob.pe/es/por-instrumento/marco-macro-multianual

Mohammadi, H., & Su, L. (2010). International evidence on crude oil price dynamics: Applications of ARIMA-GARCH models. Energy Economics, 32(5), 1001–1008. https://doi.org/10.1016/j.eneco.2010.04.009

Muñoz-Santiago, A., Urquijo-Vanstrahlen, J., Castro-Otero, A., & Lombana, J. (2017). Pronóstico del precio de la energía en Colombia utilizando modelos ARIMA con IGARCH. Revista de Economía del Rosario, 20(1), 125–159. https://doi.org/10.12804/revistas.urosario.edu.co/economia/a.6152

Parisi Fernández, A., Améstica Rivas, L., & Chileno Trujillo, Ó. (2019). Predicción de variaciones en el precio del petróleo con el modelo de optimización ARIMA, innovando con fuerza bruta operacional. Tec Empresarial, 13(1), 53–68. https://doi.org/10.18845/te.v13i1.4302

U.S. Energy Information Administration. (2025). Short-term energy outlook. https://www.eia.gov/outlooks/steo/

Valverde Frias, J. (2024). Predicción de precios del petróleo WTI utilizando modelos ARIMA y redes neuronales: un análisis para 2022. Un Espacio Para la Ciencia, 7(1), 47–74. https://doi.org/10.5281/zenodo.15200039

Xiang, Y. (2022). Using ARIMA-GARCH model to analyze fluctuation law of international oil price. Mathematical Problems in Engineering, 2022, Article 3936414. https://doi.org/10.1155/2022/3936414