Activo: The Coca-Cola Company (NYSE: KO). Periodo analizado: 2 de enero de 2020 a 11 de noviembre de 2026 (1724 rendimientos diarios). Frecuencia: diaria (sesiones de negociación de la Bolsa de Nueva York). Variable externa: rendimiento del ETF SPDR S&P 500 (SPY), como aproximación del mercado accionario amplio. Capital virtual: USD 100.000. Horizonte de inversión: 21 sesiones bursátiles (aproximadamente un mes). Pregunta de investigación: ¿Qué especificación entre ARIMA, ARIMAX y SARIMAX ofrece un pronóstico defendible para la serie de Coca-Cola y qué decisión de inversión se deriva de su distribución de escenarios?
Conclusión ejecutiva. Tras comparar siete especificaciones ARIMA, ARIMAX y SARIMAX estimadas manualmente sobre train, se selecciona un ARIMA(0,0,0) sobre los rendimientos, equivalente a un paseo aleatorio con deriva (ARIMA(0,1,0)) para el log-precio. Los modelos con SPY tienen el mejor AICc, pero esa ventaja depende de conocer el rendimiento del mercado del mismo día; con SPY pronosticado, empeoran el pronóstico. Los términos estacionales (\(s = 5\)) no son significativos. En el test (julio de 2025 a noviembre de 2026), todos los modelos superan con amplitud al pronóstico ingenuo sin deriva (MAE de unos 6,04 USD frente a 8,81 USD), pero las diferencias entre ellos no son significativas, y todos subestiman la fuerte subida de KO en 2026. Los residuos muestran colas pesadas y volatilidad agrupada (efectos ARCH), por lo que los escenarios se simulan con bootstrap de residuos (10.000 trayectorias). Para el mes siguiente al 11 de noviembre de 2026, el modelo proyecta un rendimiento esperado de 0,95 % y una probabilidad de pérdida de 42,3 %. Ninguna de las dos condiciones de la regla (rendimiento mayor que 1 % y pérdida de 40 % o menos) se cumple, así que la decisión es mantener los USD 100.000 en efectivo; si se invirtiera, el portafolio terminaría entre unos 91.500 y 111.000 USD en el 90 % de los escenarios.
The Coca-Cola Company es una empresa de bebidas no alcohólicas con productos vendidos en más de 200 países y territorios y un portafolio que incluye Coca-Cola, Sprite, Fanta, Powerade, Costa, Minute Maid y fairlife (The Coca-Cola Company, 2026). Su acción ordinaria cotiza en la Bolsa de Nueva York (NYSE) bajo el símbolo KO, en dólares estadounidenses, durante la sesión principal de 9:30 a. m. a 4:00 p. m. hora del Este, de lunes a viernes (New York Stock Exchange, s. f.).
La fuente de precios es Yahoo Finance (2026), tanto para KO como para
SPY; los cálculos se realizan en R (R Core Team, 2026). Se usa el precio
ajustado (Adjusted) porque incorpora dividendos y eventos
corporativos: en una acción que reparte dividendos trimestrales, el
precio de cierre “cae” mecánicamente en cada fecha ex-dividendo, y ese
salto no es una pérdida real para el inversionista. Con el precio
ajustado, el rendimiento medido se acerca al rendimiento total que
efectivamente recibiría quien mantiene la acción.
Coca-Cola pertenece al sector de consumo básico. Sus ventas dependen poco del ciclo económico, porque las bebidas son productos de compra frecuente y bajo precio; además tiene un alto poder de fijación de precios por la fuerza de sus marcas y una política de dividendos muy estable: en febrero de 2026 aprobó su aumento anual de dividendo número 64 consecutivo (The Coca-Cola Company, 2026). Por eso el mercado la trata como una acción defensiva: en la muestra de entrenamiento su beta frente a SPY es de 0,567 y la correlación de rendimientos diarios es de 0,586. Una beta menor que uno indica que KO se mueve en la misma dirección del mercado, pero con menor amplitud.
Estas características tienen implicaciones directas para la modelación:
Se eligió la frecuencia diaria porque el horizonte de decisión es de un mes (21 sesiones): con datos mensuales solo habría unas 80 observaciones, insuficientes para separar train y test con un bloque de validación útil. La frecuencia diaria ofrece más de 1700 observaciones y permite observar con detalle los episodios de alta volatilidad.
| Hecho / periodo | Evidencia observada en KO | Posible canal económico | Fuente (APA) |
|---|---|---|---|
| Pandemia de COVID-19 (feb.–abr. de 2020) | Caída de 37,0 % entre el 21 de febrero de 2020 y el 23 de marzo de 2020 (SPY: 33,7 %); volatilidad anualizada de 64,1 % frente a 20,3 % en toda la muestra. | Cierre de restaurantes, estadios y eventos: el canal “fuera del hogar” (cerca de la mitad de los ingresos) se desplomó; en el segundo trimestre de 2020 el volumen global cayó 16 % y los ingresos netos 28 %. | The Coca-Cola Company (2020) |
| Inflación y alzas de tasas (2022) | Rendimiento de KO en 2022: 10,6 %, frente a -18,2 % de SPY. | La Reserva Federal inició el ciclo de alzas en marzo de 2022. Coca-Cola trasladó costos a precios (precio/mezcla +11 % y ingresos orgánicos +16 % en el año), lo que reforzó su perfil defensivo frente a un mercado en caída. | Board of Governors of the Federal Reserve System (2022); The Coca-Cola Company (2023) |
| Sucesión del CEO (anuncio 10 de diciembre de 2025; efectiva 31 de marzo de 2026) | Rendimiento de KO en la semana del anuncio: 0,83 % (SPY: -1,70 %); entre el anuncio y la transición: 9,2 % (SPY: -4,2 %). | Henrique Braun, director de operaciones, reemplaza a James Quincey, quien pasa a presidente ejecutivo. Es una sucesión interna que señala continuidad estratégica, por lo que se espera un efecto acotado sobre el precio. | The Coca-Cola Company (2025) |
| Aumento de dividendo número 64 (19 de febrero de 2026) | Dividendo trimestral de USD 0,51 a USD 0,53 por acción (≈4 %). | Refuerza la imagen de flujo de caja estable; ayuda a explicar por qué la acción atrae inversionistas que buscan ingreso y baja volatilidad. | The Coca-Cola Company (2026) |
Antes de estimar los modelos y de mirar el bloque de prueba se plantea la siguiente hipótesis: KO es una acción defensiva cuyo rendimiento diario es difícil de predecir a partir de su propia historia; por lo tanto, se espera que el modelo proyecte una apreciación mensual pequeña, cercana a su deriva histórica, y solo se tomará una posición larga si el pronóstico es lo bastante favorable y el riesgo de pérdida es acotado. La regla operativa, fijada desde el inicio del ejercicio, es:
Si el rendimiento esperado a 21 sesiones supera el 1 % y la probabilidad simulada de pérdida no supera el 40 %, se invierte todo el capital en KO; en caso contrario, el capital se mantiene en efectivo.
| Concepto | Valor |
|---|---|
| Fuente de los datos | archivo local datos_KO_SPY_YahooFinance.csv (descargado de Yahoo Finance con quantmod) |
| Primera fecha de precios | 2020-01-02 |
| Última fecha de precios | 2026-11-11 |
| Precios alineados (KO y SPY) | 1725 |
| Rendimientos diarios | 1724 |
| Fechas duplicadas | 0 |
| Valores faltantes | 0 |
| Precios no positivos | 0 |
| Frecuencia | Diaria (solo sesiones en las que negocian ambos activos) |
| Unidades | Precios ajustados en USD; rendimientos logarítmicos diarios |
| Variable | Descripcion | Rol |
|---|---|---|
| KO_ajustado | Precio ajustado de cierre de Coca-Cola (USD) | Serie original |
| SPY_ajustado | Precio ajustado de cierre del ETF SPY (USD) | Insumo de la variable exógena |
| r_KO,t | Rendimiento logarítmico diario de KO: ln(P_t) − ln(P_{t−1}) | Variable modelada |
| r_SPY,t | Rendimiento logarítmico diario de SPY (variable exógena) | Regresor X_t |
Los precios se descargan con el conector de Yahoo Finance de
quantmod. Las dos series se unen por fecha
(inner join) para comparar solo sesiones coincidentes;
luego se revisan duplicados, faltantes y valores no positivos, ya que un
precio cero o negativo impediría calcular logaritmos. La base procesada
se guarda en datos_KO_SPY_YahooFinance.csv.
| Estadistico | Valor |
|---|---|
| N | 1724,000000 |
| Media | 0,000451 |
| Desviación estándar | 0,012767 |
| Mínimo | -0,101728 |
| Q1 | -0,005604 |
| Mediana | 0,000684 |
| Q3 | 0,006603 |
| Máximo | 0,062783 |
| Asimetría | -0,610758 |
| Curtosis | 10,955905 |
| Año | Sesiones | Rend. KO | Rend. SPY | Vol. anual KO | Vol. anual SPY | Máx. caída KO |
|---|---|---|---|---|---|---|
| 2020 | 252 | 3,14 | 17,24 | 34,91 | 33,70 | 36,99 |
| 2021 | 252 | 11,37 | 28,73 | 15,26 | 12,99 | 8,74 |
| 2022 | 251 | 10,61 | -18,18 | 19,76 | 24,26 | 16,66 |
| 2023 | 250 | -4,43 | 26,18 | 13,51 | 13,07 | 17,27 |
| 2024 | 252 | 8,88 | 24,89 | 12,79 | 12,58 | 14,86 |
| 2025 | 250 | 15,60 | 17,72 | 17,47 | 19,33 | 9,82 |
| 2026 | 217 | 42,28 | 12,29 | 19,50 | 14,07 | 7,87 |
Interpretación de la evolución y estadística descriptiva
Entre el 2 de enero de 2020 y el 11 de noviembre de 2026, el precio ajustado de KO pasó de 44,87 a 97,57 USD, un aumento acumulado de 117,4 % (12,0 % anual compuesto). La trayectoria no fue lineal y se pueden distinguir varias etapas: el desplome de febrero–marzo de 2020, una recuperación gradual en 2021, la resistencia en 2022 (KO ganó 10,6 % mientras SPY perdía 18,2 %), un año 2023 débil y una fuerte valorización en 2025–2026. La serie en nivel cambia de media a lo largo del tiempo, por lo que no puede tratarse como estacionaria; esto anticipa la necesidad de diferenciar (trabajar con rendimientos).
Los rendimientos logarítmicos diarios oscilan alrededor de cero, pero su dispersión no es constante. El gráfico de volatilidad móvil muestra un pico extremo alrededor del 6 de abril de 2020, cuando la volatilidad anualizada de 21 sesiones superó el 80 %. El año de mayor volatilidad fue 2020 (34,9 % anualizada) y el más tranquilo, 2024 (12,8 %). Los periodos de alta volatilidad aparecen agrupados: a un día agitado suelen seguirle otros días agitados. Esa es la señal visual de heterocedasticidad condicional, que se confirma formalmente en el diagnóstico de residuos. También se observa que la volatilidad de KO es parecida a la de SPY en la mayoría de los años, pero fue menor en 2022 y 2025, los años de mayor turbulencia del mercado, lo que es coherente con su carácter defensivo.
En la tabla descriptiva, la media diaria es 0,000451 (cerca de 0,95 % por mes) y la desviación estándar 0,012767; es decir, el “ruido” diario es casi 30 veces mayor que la “señal” de la media. La asimetría de -0,611 indica que las caídas extremas son más fuertes que las subidas extremas (el mínimo diario fue -10,2 % y el máximo 6,3 %), y la curtosis de 10,96, muy superior a 3 (valor de la normal), revela colas pesadas. Por ello se anticipa que la normalidad será rechazada y que la simulación deberá usar un método que no dependa de ella.
| Método | Lambda |
|---|---|
| Guerrero | 1,3136 |
| Máxima verosimilitud (loglik) | 0,9000 |
Interpretación de la transformación Box–Cox
La transformación de Box–Cox (Box & Cox, 1964) busca estabilizar la varianza de una serie en nivel. Se estimó \(\lambda\) solo con los precios de train y con dos métodos: Guerrero (1,314) y máxima verosimilitud (0,900). Los dos valores están cerca de 1, lo que indica que, desde el punto de vista estadístico, la varianza del precio no cambia de forma sistemática con su nivel y no se requiere una transformación intensa. Además, los dos métodos no coinciden (uno queda por encima y otro por debajo de 1); eso es normal cuando el rango de precios es relativamente estrecho (en train el precio se movió entre 30,9 y 70,9 USD) y muestra que \(\lambda\) está estimado con poca precisión.
Aun así, se decide trabajar con el logaritmo del precio (\(\lambda = 0\)) y luego con su primera diferencia, por tres razones: (1) Box–Cox no resuelve el problema principal de la serie, que es la no estacionariedad en media; (2) en finanzas el logaritmo tiene una interpretación directa, pues \(\ln P_t - \ln P_{t-1}\) es el rendimiento continuo del día, que se suma en el tiempo y se convierte de nuevo en precio con \(P_{T+h} = P_T\exp(\sum r)\), algo indispensable para la simulación de la sección 8; y (3) el rendimiento hace comparables movimientos ocurridos a niveles de precio muy distintos (31 USD en marzo de 2020 frente a casi 100 USD en 2026). La estacionariedad de la serie transformada se verifica a continuación.
Esta sección sigue el enfoque de Box et al. (2015) y Hyndman y Athanasopoulos (2021). Sea \(L\) el operador rezago, definido por \(LY_t = Y_{t-1}\) y, en general, \(L^kY_t = Y_{t-k}\). Su utilidad es que permite escribir la dinámica de una serie como un polinomio que “actúa” sobre ella.
Proceso autorregresivo AR(p). El valor actual depende de sus propios \(p\) valores pasados más una innovación:
\[ Y_t = c + \phi_1Y_{t-1} + \cdots + \phi_pY_{t-p} + \varepsilon_t \;\;\Longleftrightarrow\;\; \underbrace{(1-\phi_1L-\cdots-\phi_pL^p)}_{\phi(L)}Y_t = c + \varepsilon_t . \]
Para el caso más simple, AR(1), sustituyendo hacia atrás repetidamente:
\[ Y_t = c + \phi_1Y_{t-1} + \varepsilon_t = c(1+\phi_1+\phi_1^2+\cdots) + \varepsilon_t + \phi_1\varepsilon_{t-1} + \phi_1^2\varepsilon_{t-2} + \cdots \]
La suma solo converge si \(|\phi_1|<1\); en ese caso el proceso es estacionario, con media \(\mu = c/(1-\phi_1)\) y varianza \(\sigma^2/(1-\phi_1^2)\). En general, un AR(p) es estacionario si todas las raíces del polinomio \(\phi(z)=0\) están fuera del círculo unitario (\(|z|>1\)). Si \(\phi_1 = 1\), los choques nunca se disipan y la serie tiene raíz unitaria: es un paseo aleatorio.
Proceso de medias móviles MA(q). El valor actual es una combinación de la innovación actual y de las \(q\) innovaciones pasadas:
\[ Y_t = \mu + \varepsilon_t + \theta_1\varepsilon_{t-1} + \cdots + \theta_q\varepsilon_{t-q} = \mu + \underbrace{(1+\theta_1L+\cdots+\theta_qL^q)}_{\theta(L)}\varepsilon_t . \]
Un MA finito siempre es estacionario. La condición relevante es la invertibilidad: si las raíces de \(\theta(z)=0\) están fuera del círculo unitario, el MA puede reescribirse como un AR infinito, \(\theta(L)^{-1}(Y_t-\mu)=\varepsilon_t\), y la innovación puede recuperarse de forma única con la historia observada. Por ejemplo, en un MA(1) se requiere \(|\theta_1|<1\).
Innovación o ruido blanco. \(\varepsilon_t\) es la parte de \(Y_t\) que no puede anticiparse con la información pasada. Se supone ruido blanco: \(E(\varepsilon_t)=0\), \(Var(\varepsilon_t)=\sigma^2\) constante y \(Cov(\varepsilon_t,\varepsilon_{t-k})=0\) para \(k\neq0\). La normalidad es un supuesto adicional, útil para construir intervalos, pero no hace parte de la definición de ruido blanco.
Al combinar ambas partes se obtiene el ARMA(p,q):
\[ \phi(L)Y_t = c + \theta(L)\varepsilon_t . \]
Los parámetros son \(p\) (cuántos rezagos de la serie), \(q\) (cuántos rezagos de la innovación) y, cuando la serie no es estacionaria en media, \(d\): el número de diferencias necesarias. La diferencia de primer orden es \((1-L)Y_t = Y_t - Y_{t-1}\). Si el log-precio sigue un paseo aleatorio con deriva,
\[ \ln P_t = \mu + \ln P_{t-1} + \varepsilon_t \;\;\Rightarrow\;\; (1-L)\ln P_t = \ln P_t - \ln P_{t-1} = r_t = \mu + \varepsilon_t , \]
es decir, la diferencia elimina la raíz unitaria y deja una serie estacionaria: el rendimiento logarítmico \(r_t\). Generalizando, el ARIMA(p,d,q) es
\[ \phi(L)(1-L)^dY_t = c + \theta(L)\varepsilon_t . \]
Esta relación es central en el trabajo: estimar un ARIMA(p,0,q) sobre los rendimientos \(r_t\) equivale a estimar un ARIMA(p,1,q) sobre el log-precio, porque \(r_t=(1-L)\ln P_t\). Por eso, cuando las pruebas confirman que el log-precio tiene raíz unitaria y los rendimientos son estacionarios, se trabaja con \(d=0\) sobre \(r_t\).
El ARIMAX agrega un vector de regresores \(X_t\). La forma que estima
forecast::Arima() es una regresión con errores
ARMA:
\[ r_t = c + \beta' X_t + u_t, \qquad \phi(L)u_t = \theta(L)\varepsilon_t . \]
El componente autorregresivo solo usa la historia de la propia serie. Pero una parte importante del movimiento diario de una acción proviene de factores comunes a todo el mercado (noticias macroeconómicas, tasas de interés, apetito por riesgo). Esa información está en \(X_t\) y no en el pasado de \(r_t\). Con \(X_t = r_{SPY,t}\), la ecuación es el modelo de mercado de finanzas, y \(\beta\) es la sensibilidad de KO a los movimientos del mercado.
Dos advertencias:
Cuando existe un patrón que se repite cada \(s\) periodos, se agregan polinomios en \(L^s\):
\[ \Phi_P(L^s)\,\phi_p(L)\,(1-L)^d(1-L^s)^D\, Y_t = c + \beta'X_t + \Theta_Q(L^s)\,\theta_q(L)\,\varepsilon_t . \]
La notación es SARIMAX\((p,d,q)(P,D,Q)_s\):
Por ejemplo, el SARIMAX\((1,0,1)(1,0,1)_5\) evaluado más adelante se escribe como \((1-\Phi_1L^5)(1-\phi_1L)u_t = (1+\Theta_1L^5)(1+\theta_1L)\varepsilon_t\); al multiplicar los polinomios aparecen términos en \(L^1, L^5\) y \(L^6\). Los términos estacionales solo se justifican si hay evidencia (picos en la ACF/PACF en los rezagos 5, 10, 15…, diferencias sistemáticas por día de la semana o conocimiento del mercado).
Los modelos anteriores suponen \(Var(\varepsilon_t)=\sigma^2\) constante. En series financieras es frecuente que los periodos de alta volatilidad se agrupen (heterocedasticidad condicional). Si el diagnóstico la detecta, la media pronosticada por el ARIMA sigue siendo válida, pero los intervalos con varianza constante pueden ser demasiado anchos en periodos tranquilos y demasiado estrechos en periodos turbulentos. La extensión natural sería un modelo ARCH/GARCH (Engle, 1982; Bollerslev, 1986), por ejemplo \(\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \beta_G\,\sigma_{t-1}^2\). Esa modelación está fuera del alcance de este trabajo, que se concentra en ARIMA, ARIMAX y SARIMAX; aquí se señala como extensión y sus implicaciones se tienen en cuenta al interpretar los intervalos y la simulación.
| Bloque | Desde | Hasta | Observaciones | Proporcion |
|---|---|---|---|---|
| Train | 2020-01-03 | 2025-06-30 | 1379 | 0,8 |
| Test | 2025-07-01 | 2026-11-11 | 345 | 0,2 |
Se reserva el 20 % final de las observaciones como test (345 sesiones, desde el 1 de julio de 2025 hasta el 11 de noviembre de 2026). La proporción se justifica por el tipo de decisión: con un horizonte de inversión de 21 sesiones, el bloque de prueba permite aplicar la regla de inversión 16 veces de forma consecutiva, y evaluar el pronóstico en más de un año de mercado. A su vez, el 80 % de train (1379 sesiones) incluye episodios muy distintos (pandemia, inflación, alzas de tasas y recuperación), lo que da variedad para estimar los modelos.
La separación respeta el orden temporal y se fija antes de cualquier cálculo dependiente de la muestra. Por eso, el λ de Box–Cox, las pruebas de estacionariedad, la ACF/PACF, los parámetros de los modelos (incluido el modelo que pronostica SPY) y la selección del modelo final se obtienen solo con train. El test se usa una única vez para medir la capacidad de generalización y no para volver a especificar los modelos.
| Serie | Prueba | Estadistico | Valor p |
|---|---|---|---|
| Log-precio | ADF (H0: raíz unitaria) | -4,2432 | 0,01 |
| Log-precio | KPSS nivel (H0: estacionaria) | 14,1491 | 0,01 |
| Log-precio | KPSS tendencia (H0: estacionaria alrededor de tendencia) | 0,8713 | 0,01 |
| Rendimientos | ADF (H0: raíz unitaria) | -10,9972 | 0,01 |
| Rendimientos | KPSS nivel (H0: estacionaria) | 0,0413 | 0,10 |
Nota: tseries acota los valores p de ADF y KPSS a sus
tablas (0,01 y 0,10); un valor de 0,01 debe leerse como “menor o igual a
0,01” y uno de 0,10 como “mayor o igual a 0,10”.
Las pruebas se aplican con un nivel de significancia del 5 %. Recuérdese que ADF (Dickey & Fuller, 1979) y KPSS (Kwiatkowski et al., 1992) tienen hipótesis nulas opuestas: ADF parte de que hay raíz unitaria, KPSS de que la serie es estacionaria.
Log-precio. ADF arroja un valor p ≤ 0,01 y rechaza
la raíz unitaria, mientras que KPSS rechaza la estacionariedad tanto en
nivel (estadístico 14,15) como alrededor de una tendencia (0,87), en
ambos casos con valor p ≤ 0,01. Las pruebas se contradicen. El rechazo
de ADF tiene una explicación concreta: adf.test incluye una
tendencia lineal y, dentro de train, el desplome de 2020 seguido de la
recuperación produce una apariencia de “regreso” a la tendencia que la
prueba interpreta como reversión. Sin embargo, la ACF del log-precio
(siguiente apartado) decae muy lentamente, KPSS rechaza con holgura y la
teoría financiera indica que el precio de una acción líquida no regresa
a un nivel fijo. Ante la duda, es más costoso no
diferenciar una serie con raíz unitaria (regresiones espurias,
pronósticos que regresan artificialmente a una media) que diferenciarla
de más; por eso se toma \(d = 1\) para
el log-precio.
Rendimientos. ADF rechaza la raíz unitaria (p ≤ 0,01; estadístico -11,00) y KPSS no rechaza la estacionariedad (p ≥ 0,10; estadístico 0,041). Ambas pruebas coinciden: los rendimientos son estacionarios. En consecuencia, los modelos se estiman sobre los rendimientos con \(d = 0\), lo que equivale a modelos con \(d = 1\) sobre el log-precio.
| Rezago | ACF | PACF | Fuera de banda (±1,96/√n) |
|---|---|---|---|
| 1 | -0,0304 | -0,0304 | No |
| 2 | 0,0759 | 0,0751 | Sí |
| 3 | -0,0543 | -0,0502 | Sí |
| 4 | -0,1022 | -0,1116 | Sí |
| 5 | 0,0863 | 0,0902 | Sí |
| 6 | -0,0538 | -0,0366 | Sí |
| 7 | 0,0977 | 0,0718 | Sí |
| 8 | -0,0250 | -0,0163 | No |
| 9 | 0,0808 | 0,0827 | Sí |
| 10 | -0,0157 | -0,0185 | No |
| Submuestra | Observaciones | Ljung-Box (20) | Valor p |
|---|---|---|---|
| Train completo | 1379 | 89,9057 | 0,0000 |
| Solo 2020 | 252 | 51,8615 | 0,0001 |
| 2021 a fin de train | 1127 | 20,5050 | 0,4268 |
En el log-precio, la ACF parte de valores cercanos a 1 y decae muy despacio, mientras que la PACF tiene un solo pico dominante en el rezago 1: es el patrón típico de un proceso con raíz unitaria y confirma la necesidad de diferenciar.
En los rendimientos, todas las autocorrelaciones son pequeñas (la mayor, en valor absoluto, es 0,102 en el rezago 4), pero varias quedan fuera de la banda ±0,053, en especial en los rezagos 2, 3, 4, 5, 6, 7, 9. No hay un corte limpio en la ACF ni en la PACF que sugiera un AR o un MA de orden alto, y los signos se alternan sin un patrón claro.
La tabla por submuestras explica este resultado: la dependencia proviene casi por completo de 2020 (Ljung-Box con valor p de 0,0001), mientras que entre 2021 y el fin de train no hay autocorrelación significativa (valor p de 0,427). Además, las bandas ±1,96/√n suponen varianza constante; cuando hay agrupamiento de volatilidad, como en 2020, esas bandas son demasiado estrechas y exageran la significancia.
Con esta evidencia, la identificación sugiere órdenes bajos. Se proponen como candidatos: ARIMA(0,0,0) (rendimiento igual a una media más ruido, que equivale a un paseo aleatorio con deriva en el log-precio y sirve como referencia de mercado eficiente), ARIMA(1,0,0) y ARIMA(0,0,1) (para recoger la autocorrelación del primer rezago) y ARIMA(1,0,1) (combinación mínima de ambas partes). No se proponen órdenes mayores porque las autocorrelaciones fuera de banda son de magnitud muy baja, cambian de signo y dependen de un solo año; agregarlas implicaría sobreajustar 2020.
| Dia | Rend. medio (%) | Desv. est. (%) | Sesiones |
|---|---|---|---|
| lunes | 0,0881 | 1,4390 | 256 |
| martes | 0,0143 | 1,1376 | 285 |
| miércoles | 0,0155 | 1,2836 | 283 |
| jueves | -0,0548 | 1,4342 | 278 |
| viernes | 0,0952 | 1,2528 | 277 |
| Rezago | ACF | PACF | Fuera de banda |
|---|---|---|---|
| 5 | 0,0863 | 0,0902 | Sí |
| 10 | -0,0157 | -0,0185 | No |
| 15 | -0,0095 | -0,0041 | No |
| 20 | -0,0574 | -0,0460 | Sí |
| 25 | -0,0317 | -0,0421 | No |
| 30 | -0,0100 | -0,0081 | No |
Para decidir si se justifica un componente estacional con \(s = 5\) se revisaron tres tipos de evidencia:
La evidencia de estacionalidad es débil. Aun así, se estima un SARIMAX\((1,0,1)(1,0,1)_5\) para contrastarla formalmente: si los términos estacionales no resultan significativos y no mejoran el pronóstico, se descartan.
Elección. Se usa el rendimiento diario del ETF SPY, que replica el índice S&P 500, como aproximación del mercado accionario de EE. UU. La justificación económica es el modelo de mercado: una parte del rendimiento de cualquier acción se explica por un factor común (expectativas macroeconómicas, tasas de interés, apetito por riesgo) que el pasado de KO no contiene. SPY tiene además ventajas prácticas: negocia en el mismo horario y calendario que KO, es muy líquido y está disponible en la misma fuente. Se consideraron otras variables, como el rendimiento del bono del Tesoro a 10 años, el índice del dólar (buena parte de las ventas de Coca-Cola ocurre fuera de EE. UU.) o el precio de insumos como el azúcar y el aluminio. Se descartaron porque su relación diaria con KO es más débil o indirecta y porque enfrentan el mismo problema de disponibilidad futura descrito a continuación.
Disponibilidad de \(X_{T+h}\). El coeficiente de SPY mide la relación contemporánea: el rendimiento de KO del día \(t\) se asocia con el de SPY del mismo día. Para pronosticar KO en \(T+h\) se necesitaría conocer SPY en \(T+h\), que no está disponible en \(T\). Hay tres opciones: (a) usar el SPY realmente observado, lo cual es data leakage y haría lucir al modelo mejor de lo que es; (b) pronosticar SPY con información disponible hasta \(T\); o (c) trabajar con escenarios. Aquí se usa (b) en todas las evaluaciones fuera de muestra y (c) para la sensibilidad de la sección 8. El modelo de SPY se elige entre cuatro especificaciones simples, solo con datos de train y por AICc.
| Modelo | AICc | BIC |
|---|---|---|
| ARIMA(0,0,0) | -7949,23 | -7938,78 |
| ARIMA(1,0,0) | -7980,63 | -7964,96 |
| ARIMA(0,0,1) | -7974,95 | -7959,28 |
| ARIMA(1,0,1) | -7986,97 | -7966,08 |
El modelo seleccionado para SPY es un ARIMA(1,0,1), con \(\phi_1\) = -0,471 y \(\theta_1\) = 0,316. Estos coeficientes casi se compensan entre sí, de modo que el pronóstico de SPY converge en pocos días a su media de train (0,052 % diario, unos 1,11 % por mes). En la práctica, esto significa que lo que el ARIMAX puede aportar fuera de muestra a partir de SPY es poco más que una constante. La mejora de ajuste que SPY genera dentro de la muestra proviene de conocer el valor contemporáneo del mercado, información que no existe al momento de pronosticar. Esta es una limitación de fondo de usar regresores contemporáneos, y se verá reflejada en la validación y en el test.
Los órdenes candidatos se proponen manualmente a partir de la
identificación anterior; no se usa auto.arima() en ningún
punto. Todos se estiman por máxima verosimilitud sobre el bloque de
entrenamiento con la función Arima() del paquete
forecast (Hyndman & Khandakar, 2008); las pruebas ADF y
KPSS usan el paquete tseries (Trapletti & Hornik,
2024).
| Modelo | Parametros | LogLik | AIC | AICc | BIC | Raíz mín. AR | Raíz mín. MA |
|---|---|---|---|---|---|---|---|
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | 6 | 4320,352 | -8626,704 | -8626,623 | -8590,100 | 1,201 | 1,272 |
| ARIMAX(0,0,0) + SPY | 2 | 4310,835 | -8615,669 | -8615,652 | -8599,982 | — | — |
| ARIMAX(1,0,1) + SPY | 4 | 4312,396 | -8614,792 | -8614,748 | -8588,647 | 6,499 | 9,356 |
| ARIMA(0,0,0) | 1 | 4021,198 | -8038,396 | -8038,387 | -8027,938 | — | — |
| ARIMA(1,0,1) | 3 | 4023,165 | -8038,330 | -8038,301 | -8017,414 | 2,237 | 2,505 |
| ARIMA(1,0,0) | 2 | 4021,834 | -8037,668 | -8037,651 | -8021,981 | 32,940 | — |
| ARIMA(0,0,1) | 2 | 4021,752 | -8037,504 | -8037,487 | -8021,817 | — | 37,764 |
| Modelo | Parametro | Coeficiente | Error_estandar | Estadistico_z | Valor_p |
|---|---|---|---|---|---|
| ARIMA(0,0,0) | intercept | 0,0003 | 0,0004 | 0,8636 | 0,3878 |
| ARIMA(1,0,0) | ar1 | -0,0304 | 0,0269 | -1,1281 | 0,2593 |
| ARIMA(1,0,0) | intercept | 0,0003 | 0,0003 | 0,8924 | 0,3722 |
| ARIMA(0,0,1) | ma1 | -0,0265 | 0,0252 | -1,0516 | 0,2930 |
| ARIMA(0,0,1) | intercept | 0,0003 | 0,0003 | 0,8873 | 0,3749 |
| ARIMA(1,0,1) | ar1 | -0,4470 | 0,1588 | -2,8153 | 0,0049 |
| ARIMA(1,0,1) | ma1 | 0,3992 | 0,1609 | 2,4815 | 0,0131 |
| ARIMA(1,0,1) | intercept | 0,0003 | 0,0003 | 0,9009 | 0,3676 |
| ARIMAX(0,0,0) + SPY | intercept | 0,0000 | 0,0003 | 0,0269 | 0,9786 |
| ARIMAX(0,0,0) + SPY | SPY | 0,5670 | 0,0211 | 26,8314 | 0,0000 |
| ARIMAX(1,0,1) + SPY | ar1 | 0,1539 | 0,2753 | 0,5589 | 0,5762 |
| ARIMAX(1,0,1) + SPY | ma1 | -0,1069 | 0,2761 | -0,3872 | 0,6986 |
| ARIMAX(1,0,1) + SPY | intercept | 0,0000 | 0,0003 | 0,0297 | 0,9763 |
| ARIMAX(1,0,1) + SPY | SPY | 0,5674 | 0,0210 | 27,0809 | 0,0000 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | ar1 | 0,1695 | 0,2271 | 0,7465 | 0,4554 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | ma1 | -0,1119 | 0,2276 | -0,4917 | 0,6229 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | sar1 | 0,3995 | 0,2217 | 1,8023 | 0,0715 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | sma1 | -0,3003 | 0,2306 | -1,3019 | 0,1930 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | intercept | 0,0000 | 0,0004 | 0,0234 | 0,9814 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | SPY | 0,5681 | 0,0208 | 27,3058 | 0,0000 |
Interpretación de los coeficientes y criterios de información
Modelos ARIMA. En ARIMA(1,0,0) y ARIMA(0,0,1) el término dinámico es pequeño (-0,030 y -0,026) y no significativo (valores p de 0,259 y 0,293). En ARIMA(1,0,1), en cambio, ambos términos son significativos (AR(1) = -0,447, p = 0,0049; MA(1) = 0,399, p = 0,0131), pero tienen signos opuestos y magnitudes parecidas. En el polinomio \((1 - \phi_1L)\) frente a \((1 + \theta_1L)\), las raíces (2,24 y 2,50) están cerca una de la otra: es una cuasi-cancelación, en la que cada término compensa casi por completo al otro. Por eso el modelo tiene una log-verosimilitud apenas 1,97 puntos mayor que la de ARIMA(0,0,0) y un AICc prácticamente idéntico. La significancia individual, en este caso, no implica que el modelo capture una dinámica económicamente relevante. Todas las raíces están fuera del círculo unitario, así que todos los candidatos son estacionarios e invertibles. La constante (rendimiento medio diario, 0,031 %) no es estadísticamente distinta de cero, algo esperable cuando la volatilidad es tan alta frente a la media.
Modelos con SPY. El coeficiente \(\beta\) de SPY es muy estable entre especificaciones (entre 0,567 y 0,568) y muy significativo (estadístico z cercano a 27). Se interpreta así: en un día en que SPY sube 1 %, KO sube en promedio alrededor de 0,57 %, manteniendo lo demás constante. Esto confirma su carácter defensivo (beta menor que 1). Es una asociación estadística, no un efecto causal: KO forma parte del S&P 500 y ambos responden a las mismas noticias. Al incluir SPY, los términos AR y MA del ARIMAX(1,0,1) dejan de ser significativos (p = 0,576 y 0,699), lo que indica que la poca autocorrelación de KO estaba ligada a movimientos generales del mercado.
SARIMAX. Ningún término ARMA, regular ni estacional, es significativo al 5 % (SAR(1): p = 0,072; SMA(1): p = 0,193), en línea con la débil evidencia de estacionalidad.
Criterios de información. El SARIMAX tiene el menor AICc (-8.626,6), y el ARIMAX(0,0,0) el menor BIC. Pero la diferencia de unos 590 puntos de AICc entre los modelos con SPY y sin SPY no se debe a una mejor dinámica: se debe a que SPY contemporáneo “explica” cerca del 34 % de la varianza diaria de KO. Ese ajuste solo es alcanzable si se conoce el SPY del mismo día, algo imposible al pronosticar. Entre los modelos sin SPY, los criterios prácticamente empatan y el BIC, que penaliza más los parámetros, favorece a ARIMA(0,0,0). Por eso el AICc, por sí solo, no es suficiente para elegir: debe complementarse con significancia, parsimonia, diagnóstico y capacidad de pronóstico con la información realmente disponible.
| Modelo | Ljung-Box (20) | Ljung-Box e² (20) | Jarque-Bera | ARCH-LM (12) |
|---|---|---|---|---|
| ARIMA(0,0,0) | 7,70e-11 | 0,00e+00 | 0,00e+00 | 4,17e-97 |
| ARIMA(1,0,0) | 1,68e-10 | 0,00e+00 | 0,00e+00 | 5,88e-95 |
| ARIMA(0,0,1) | 1,38e-10 | 0,00e+00 | 0,00e+00 | 3,02e-95 |
| ARIMA(1,0,1) | 6,02e-10 | 0,00e+00 | 0,00e+00 | 3,28e-93 |
| ARIMAX(0,0,0) + SPY | 8,62e-07 | 0,00e+00 | 0,00e+00 | 4,81e-29 |
| ARIMAX(1,0,1) + SPY | 1,91e-07 | 0,00e+00 | 0,00e+00 | 1,78e-27 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | 8,78e-05 | 0,00e+00 | 0,00e+00 | 3,54e-25 |
Ningún candidato produce residuos de ruido blanco en sentido estricto. Ljung-Box (Ljung & Box, 1978) rechaza la ausencia de autocorrelación en todos (valores p entre 7,7e-11 y 8,8e-05). Los modelos con SPY reducen el estadístico, pero no lo suficiente. Ljung-Box sobre los residuos al cuadrado y ARCH-LM rechazan con valores p prácticamente nulos en todos los casos: la varianza de los errores depende de su pasado. Jarque-Bera (Jarque & Bera, 1987) rechaza la normalidad en todos los casos, y ARCH-LM (Engle, 1982) confirma la heterocedasticidad condicional.
Estas conclusiones son comunes a todas las especificaciones, de modo que el diagnóstico no permite descartar un modelo frente a otro: los problemas son propios de los datos (volatilidad agrupada y colas pesadas), no de un orden mal elegido. Hay además un efecto entre las pruebas: cuando existe heterocedasticidad condicional, Ljung-Box tiende a rechazar más de lo que debería, porque supone varianza constante. Por eso el resultado de Ljung-Box se lee junto con la evidencia de que la autocorrelación desaparece después de 2020.
| Modelo | Parametros | AICc | BIC | Términos ARMA | ARMA no signif. (5 %) | Raíces válidas | RMSE valid. (p.p.) | MAE valid. (p.p.) | Admisible |
|---|---|---|---|---|---|---|---|---|---|
| ARIMA(0,0,0) | 1 | -8038,387 | -8027,938 | 0 | 0 | Sí | 1,0481 | 0,7875 | Sí |
| ARIMA(0,0,1) | 2 | -8037,487 | -8021,817 | 1 | 1 | Sí | 1,0485 | 0,7882 | No |
| ARIMA(1,0,0) | 2 | -8037,651 | -8021,981 | 1 | 1 | Sí | 1,0487 | 0,7885 | No |
| ARIMA(1,0,1) | 3 | -8038,301 | -8017,414 | 2 | 0 | Sí | 1,0502 | 0,7923 | Sí |
| ARIMAX(0,0,0) + SPY | 2 | -8615,652 | -8599,982 | 0 | 0 | Sí | 1,0743 | 0,8000 | Sí |
| ARIMAX(1,0,1) + SPY | 4 | -8614,748 | -8588,647 | 2 | 2 | Sí | 1,0962 | 0,8105 | No |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | 6 | -8626,622 | -8590,100 | 4 | 4 | Sí | 1,1025 | 0,8066 | No |
Como el diagnóstico no discrimina entre candidatos y el AICc premia un ajuste que no puede replicarse fuera de muestra, la selección se hace con una regla explícita que solo usa train:
El resultado es claro. ARIMA(0,0,0) tiene el menor error de validación (1,0481 p.p.) y es el que más mejora, aunque marginalmente, frente al pronóstico de rendimiento cero (1,0492 p.p.). ARIMA(1,0,1) es admisible, pero pronostica peor (1,0502 p.p.), lo que confirma que su cuasi-cancelación no aporta capacidad predictiva. Los modelos con SPY, que dominaban por AICc, son los peores en validación (1,0743 p.p. o más): sin el SPY real del día, el regresor solo añade el error del pronóstico de SPY.
El modelo seleccionado sobre los rendimientos es, por lo tanto, \(r_t = \mu + \varepsilon_t\), que equivale a un ARIMA(0,1,0) con deriva sobre el log-precio: \(\ln P_t = \mu + \ln P_{t-1} + \varepsilon_t\). Es la especificación que la teoría de mercados eficientes en su forma débil (Fama, 1970) predice para una acción grande y líquida: el mejor pronóstico del rendimiento es su promedio, y el del precio es el último precio más una deriva. Elegirlo no es “no modelar”. Es el resultado de un proceso de identificación que no encontró dinámica explotable, y es preferible a forzar un modelo más complejo que solo ajusta mejor el pasado.
Modelo seleccionado: ARIMA(0,0,0).
| Prueba | Hipótesis nula | Estadistico | Valor p |
|---|---|---|---|
| Ljung-Box (20 rezagos) | Sin autocorrelación | 89,9057 | 0 |
| Ljung-Box sobre e² (20 rezagos) | Sin autocorrelación en la varianza | 2387,0554 | 0 |
| Jarque-Bera | Normalidad | 4441,7041 | 0 |
| Shapiro-Wilk (complementaria) | Normalidad | 0,8950 | 0 |
| ARCH-LM (12 rezagos) | Sin efectos ARCH | 489,3096 | 0 |
El gráfico temporal de los residuos muestra media cercana a cero pero varianza claramente inestable: la volatilidad anualizada de los residuos fue 34,9 % en 2020 frente a 12,8 % en 2024. La ACF de los residuos tiene algunos rezagos fuera de banda, los mismos de los rendimientos (el modelo no filtra dinámica en la media), y Ljung-Box rechaza (estadístico 89,9, p < 0,001). Sin embargo, como se vio por submuestras, esa autocorrelación se concentra en 2020 y no es estable.
El histograma es más puntiagudo que la normal y tiene colas largas; el gráfico Q-Q se separa de la recta en ambos extremos, más en el inferior. Jarque-Bera (4.442, p < 0,001) rechaza la normalidad, y Shapiro-Wilk, usado como complemento, también la rechaza. Esta última prueba es muy sensible en muestras de más de mil datos, por lo que se le da un peso secundario. Ljung-Box sobre \(e_t^2\) y ARCH-LM (489, p < 0,001) confirman los efectos ARCH.
En síntesis, los residuos cumplen \(E(\varepsilon_t) \approx 0\) y su autocorrelación es pequeña y no persistente, pero no cumplen varianza constante ni normalidad. Esto tiene tres implicaciones prácticas: (1) el pronóstico puntual de la media sigue siendo utilizable; (2) los intervalos de predicción con varianza constante promedian periodos calmados y turbulentos, así que serán demasiado anchos en calma y demasiado estrechos en crisis; y (3) la simulación de escenarios no debe suponer normalidad, por lo que se usa bootstrap de residuos. La corrección completa requeriría un modelo GARCH para la varianza, que se deja como extensión.
En esta evaluación el analista se ubica en \(T_0\) = 30 de junio de 2025 y pronostica todo el bloque de prueba (345 sesiones) de una sola vez, con los parámetros de train y con SPY reemplazado por su pronóstico. Es el escenario más exigente, porque no se incorpora ninguna información posterior a \(T_0\).
| Modelo | MAE | MAPE | MASE | RMSE |
|---|---|---|---|---|
| ARIMA(1,0,1) | 6,0224 | 7,3703 | 13,6528 | 7,8689 |
| ARIMAX(1,0,1) + SPY | 6,0326 | 7,3821 | 13,6758 | 7,8828 |
| ARIMA(1,0,0) | 6,0379 | 7,3873 | 13,6880 | 7,8928 |
| ARIMA(0,0,0) | 6,0419 | 7,3928 | 13,6971 | 7,8964 |
| ARIMA(0,0,1) | 6,0448 | 7,3951 | 13,7035 | 7,9025 |
| ARIMAX(0,0,0) + SPY | 6,0496 | 7,4003 | 13,7145 | 7,9102 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | 6,0619 | 7,4079 | 13,7424 | 7,9439 |
| Ingenuo (paseo aleatorio) | 8,8098 | 10,6114 | 19,9719 | 11,7755 |
Cómo leer las métricas. El MAE y el RMSE están en dólares por acción; el MAPE en porcentaje del precio; el MASE no tiene unidades. En las cuatro, menor es mejor. El RMSE penaliza más los errores grandes que el MAE. El MAPE es interpretable aquí porque el precio está lejos de cero (no se usaría con rendimientos, que oscilan alrededor de cero y harían explotar el cociente). El MASE (Hyndman & Koehler, 2006) divide el MAE del test por el error medio de un pronóstico ingenuo a un día dentro de train (0,441 USD). Como aquí se pronostica a 345 días, el MASE es mayor que 1 en todos los casos, incluido el propio pronóstico ingenuo (19,97). Por eso un MASE mayor que 1 no significa que el modelo pierda contra el ingenuo; la comparación correcta es con la fila del ingenuo, evaluada en el mismo horizonte.
Resultados. Todos los modelos superan con claridad al paseo aleatorio sin deriva (MAE de 8,81 USD frente a cerca de 6,04 USD del modelo seleccionado). Pero las diferencias entre modelos son mínimas: entre el mejor (ARIMA(1,0,1), MAE 6,022) y el peor (SARIMAX, MAE 6,062) hay menos de 4 centavos de dólar. La razón es que a tantos pasos todos los pronósticos convergen a lo mismo: el último precio de train más la deriva estimada. La ventaja frente al ingenuo proviene de la deriva (la tendencia alcista de largo plazo de KO), no de la dinámica ARMA ni de SPY.
Los gráficos muestran lo que las métricas resumen: el pronóstico es una curva suave y creciente, mientras que el precio observado subió 42,7 % durante el test, mucho más que la deriva histórica. Por eso todos los modelos subestiman el final del periodo. El intervalo del 95 % cubrió el 100 % de los días, una cobertura “perfecta” que en realidad refleja un intervalo demasiado ancho: su varianza constante incorpora la volatilidad de 2020, mientras que el test fue un periodo relativamente tranquilo. Es la consecuencia práctica de los efectos ARCH identificados en el diagnóstico.
¿El mejor en train es el mejor en test? No exactamente. Por AICc el favorito era el SARIMAX y en test es el de mayor error. El modelo seleccionado con la regla de train, ARIMA(0,0,0), queda en la mitad de la tabla, y ARIMA(1,0,1) obtiene el menor error. Sin embargo, esas diferencias son de centésimas y se ponen a prueba con la evaluación un paso adelante.
| Modelo | MAE | RMSE | MASE | Acierto de signo (%) |
|---|---|---|---|---|
| ARIMA(1,0,1) | 0,8491 | 1,1283 | 0,9727 | 53,0435 |
| ARIMA(1,0,0) | 0,8493 | 1,1292 | 0,9730 | 50,1449 |
| ARIMA(0,0,1) | 0,8493 | 1,1294 | 0,9730 | 49,8551 |
| ARIMA(0,0,0) | 0,8499 | 1,1312 | 0,9736 | 50,7246 |
| Rendimiento cero (paseo aleatorio) | 0,8499 | 1,1336 | 0,9737 | — |
| ARIMAX(0,0,0) + SPY | 0,8538 | 1,1338 | 0,9781 | 48,9855 |
| ARIMAX(1,0,1) + SPY | 0,8590 | 1,1409 | 0,9841 | 46,0870 |
| SARIMAX(1,0,1)(1,0,1)[5] + SPY | 0,8631 | 1,1554 | 0,9888 | 50,7246 |
| Comparacion | Estadístico DM | Valor p |
|---|---|---|
| ARIMA(0,0,0) vs. ARIMA(1,0,1) | 0,7889 | 0,4307 |
| ARIMA(0,0,0) vs. SARIMAX(1,0,1)(1,0,1)[5] + SPY | -2,1792 | 0,0300 |
| ARIMA(0,0,0) vs. rendimiento cero | -1,4409 | 0,1505 |
Esta segunda evaluación es más cercana al uso práctico: cada día del test se pronostica el rendimiento del día siguiente con los parámetros de train y la información hasta el día anterior (SPY también se pronostica un paso adelante). Las métricas están en puntos porcentuales de rendimiento. El MASE compara con el error medio del pronóstico de rendimiento cero en train, y el acierto de signo indica en qué porcentaje de días el modelo anticipó correctamente si KO subía o bajaba. El MAPE no se reporta porque los rendimientos reales toman valores muy cercanos a cero y el cociente pierde sentido.
Los resultados confirman la conclusión anterior. Los modelos sin SPY tienen errores prácticamente iguales al pronóstico ingenuo de rendimiento cero (RMSE de 1,1312 frente a 1,1336 p.p.), y los modelos con SPY quedan por detrás de todos ellos. Ningún modelo anticipa la dirección del mercado mejor que una moneda al aire: los aciertos de signo están entre 46,1 % y 53,0 %, cuando el 50,7 % de los días del test fueron alcistas.
La prueba de Diebold-Mariano (Diebold & Mariano, 1995) formaliza la comparación. No hay diferencia significativa entre el modelo seleccionado y ARIMA(1,0,1) (p = 0,431), ni frente al rendimiento cero (p = 0,151). En cambio, el modelo seleccionado es significativamente más preciso que el SARIMAX con SPY (p = 0,030). Es decir, el test no contradice la selección hecha en train: la ligera ventaja de ARIMA(1,0,1) no es estadísticamente distinguible, y la desventaja del modelo que ganaba por AICc sí lo es. No se reespecifica el modelo con base en el test, para no convertirlo en un mecanismo de sobreajuste.
Se administra un capital virtual de USD 100.000. La regla se fijó en la sección 2, antes de calcular cualquier resultado de test: se toma una posición larga en KO solo si el rendimiento esperado a 21 sesiones supera el 1 % y la probabilidad simulada de pérdida no supera el 40 %; de lo contrario, el capital permanece en efectivo. No se permiten posiciones cortas ni apalancamiento. El umbral del 1 % busca que la ganancia esperada compense, al menos, el costo de oportunidad de la liquidez y los costos de transacción no modelados; el límite de 40 % exige que el escenario favorable sea claramente más probable que el desfavorable. Es una regla académica, no una recomendación financiera, y no incorpora impuestos, comisiones ni deslizamiento.
La simulación genera 10.000 trayectorias de 21 sesiones. Como Jarque–Bera rechaza la normalidad de los residuos, las innovaciones no se generan con una distribución normal sino mediante bootstrap de residuos: (1) se toman los residuos del modelo seleccionado en train y se centran en cero; (2) para cada día simulado se remuestrea al azar, con reemplazo, uno de esos residuos; (3) el choque se propaga con los pesos \(\psi\) del modelo (su representación de medias móviles) y se suma a la media pronosticada; (4) los rendimientos se acumulan y se convierten en precios, \(P_{T+h}^{(m)} = P_T\exp\big(\sum_{k=1}^{h} r_{T+k}^{(m)}\big)\).
La ventaja del bootstrap es que no impone una distribución teórica y conserva las colas pesadas observadas. Sus limitaciones son que solo reproduce choques del tamaño de los ya vistos en train y que, al remuestrear días al azar, ignora que la volatilidad se agrupa en el tiempo (los efectos ARCH del diagnóstico); en un mes turbulento el riesgo real puede ser mayor al simulado. Además, no incorpora la incertidumbre de la estimación de los parámetros. Por eso los resultados deben leerse como escenarios de riesgo, no como precios garantizados.
El equipo se ubica en \(T_0\) = 30 de junio de 2025 (último día de train), con el modelo seleccionado y sin conocer ningún precio posterior.
| Medida | Valor |
|---|---|
| Precio de entrada P(T0) (USD) | 68,39 |
| Rendimiento esperado (pronóstico puntual) | 0,644 % |
| Precio medio simulado | 68,94 |
| Percentil 5 % | 62,27 |
| Mediana (percentil 50 %) | 68,94 |
| Percentil 95 % | 75,78 |
| Probabilidad de pérdida | 44,45 % |
| Decisión de la regla | Mantener el 100 % en efectivo |
| Concepto | Valor |
|---|---|
| Fecha de cierre de la posición | 2025-07-30 |
| Precio observado al cierre (USD) | 66,46 |
| Rendimiento observado de KO | -2,83 % |
| Valor final de la estrategia (USD) | 100.000,00 |
| Valor final si se hubiera invertido (USD) | 97.173,14 |
| ¿Dónde quedó el resultado real dentro de la distribución simulada? | Percentil 26,8 |
En \(T_0\) el modelo proyecta un rendimiento de 0,64 % a 21 sesiones (la deriva histórica de train) y una probabilidad de pérdida de 44,5 %. Ninguna de las dos condiciones de la regla se cumple: el rendimiento esperado no llega al 1 % y la probabilidad de pérdida supera el 40 %. Por eso el capital se mantiene en efectivo. Al mirar lo que ocurrió después, KO cayó 2,83 % en ese mes; la decisión evitó una pérdida de 2.827 USD. El resultado observado cayó en el percentil 27 de la distribución simulada, dentro del rango de escenarios previstos. La simulación no “acertó” la caída, pero sí la consideraba un escenario plausible.
Para evaluar la regla en más de un mes, se aplica cada 21 sesiones a lo largo de todo el bloque de prueba. En cada fecha de decisión se usan los parámetros estimados en train (no se reestiman con el test) y solo los datos observados hasta ese día para actualizar el estado del modelo y el pronóstico de SPY.
| Decision | Cierre | Rend. esperado (%) | Prob. pérdida (%) | Posicion | Rend. KO observado (%) | Rend. estrategia (%) |
|---|---|---|---|---|---|---|
| 2025-06-30 | 2025-07-30 | 0,64 | 44,80 | Efectivo | -2,83 | 0 |
| 2025-07-30 | 2025-08-28 | 0,64 | 43,35 | Efectivo | -0,57 | 0 |
| 2025-08-28 | 2025-09-29 | 0,64 | 44,55 | Efectivo | -2,65 | 0 |
| 2025-09-29 | 2025-10-28 | 0,64 | 44,65 | Efectivo | 6,24 | 0 |
| 2025-10-28 | 2025-11-26 | 0,64 | 43,15 | Efectivo | 3,88 | 0 |
| 2025-11-26 | 2025-12-29 | 0,64 | 45,00 | Efectivo | -3,06 | 0 |
| 2025-12-29 | 2026-01-29 | 0,64 | 45,20 | Efectivo | 4,66 | 0 |
| 2026-01-29 | 2026-03-02 | 0,64 | 43,70 | Efectivo | 9,25 | 0 |
| 2026-03-02 | 2026-03-31 | 0,64 | 45,05 | Efectivo | -4,55 | 0 |
| 2026-03-31 | 2026-04-30 | 0,64 | 45,05 | Efectivo | 3,56 | 0 |
| 2026-04-30 | 2026-06-01 | 0,64 | 44,00 | Efectivo | -0,15 | 0 |
| 2026-06-01 | 2026-07-01 | 0,64 | 43,75 | Efectivo | 4,04 | 0 |
| 2026-07-01 | 2026-07-31 | 0,64 | 47,10 | Efectivo | 7,75 | 0 |
| 2026-07-31 | 2026-08-31 | 0,64 | 47,25 | Efectivo | 1,23 | 0 |
| 2026-08-31 | 2026-09-30 | 0,64 | 44,05 | Efectivo | -2,34 | 0 |
| 2026-09-30 | 2026-10-29 | 0,64 | 44,60 | Efectivo | 7,83 | 0 |
| Estrategia | Valor final (USD) | Rendimiento total (%) | Meses invertido | Máx. caída (%) |
|---|---|---|---|---|
| Regla del modelo | 100.000,0 | 0,00 | 0 | 0,00 |
| Comprar y mantener KO | 135.714,9 | 35,71 | 16 | 5,94 |
| Efectivo | 100.000,0 | 0,00 | 0 | 0,00 |
Durante el test, la regla nunca recomendó invertir: en las 16 fechas de decisión el rendimiento esperado fue de 0,64 % y la probabilidad de pérdida estuvo entre 43 % y 47 %. El resultado se explica por la forma del modelo: con ARIMA(0,0,0) el pronóstico es la misma media en todas las fechas, así que la decisión es siempre igual. KO subió en 9 de los 16 meses y la estrategia de comprar y mantener habría terminado en 135.715 USD (35,7 %), con una caída máxima de solo 5,9 %.
El costo de oportunidad es alto y debe interpretarse con sentido común. El problema no es tanto del modelo como de la regla: exige un rendimiento esperado mayor que 1 % mensual, por encima de la deriva histórica de KO en train (0,64 %), lo que solo ocurriría si el modelo tuviera capacidad de anticipar meses mejores que el promedio. Como los rendimientos diarios de KO son casi impredecibles, la regla se vuelve estructuralmente conservadora. A posteriori, el test coincidió con una de las mejores rachas de KO en la muestra (en 2026 subió más de 40 %), algo que ningún modelo basado en la historia podía anticipar. La regla no se modifica después de ver estos resultados, porque eso sería ajustar la estrategia al test. La lección queda registrada para el diseño de futuras reglas: el umbral debería compararse con la deriva esperada del activo y con el rendimiento del efectivo.
Concluida la evaluación, el modelo seleccionado se reestima con toda la muestra (misma especificación, sin cambiar órdenes por lo visto en test) y se aplica la regla desde la última observación, 11 de noviembre de 2026, para el siguiente mes bursátil.
| Medida | Valor |
|---|---|
| Último precio ajustado (USD) | 97,57 |
| Precio puntual pronosticado al horizonte | 98,50 |
| Rendimiento esperado (puntual) | 0,951 % |
| Precio medio simulado | 98,65 |
| Percentil 5 % | 89,30 |
| Mediana (percentil 50 %) | 98,63 |
| Percentil 95 % | 108,27 |
| Probabilidad de pérdida | 42,33 % |
| Medida | Valor si se invierte (USD) | Valor si se mantiene en efectivo (USD) |
|---|---|---|
| Percentil 5 % | 91.519,06 | 100.000,00 |
| Mediana (percentil 50 %) | 101.081,44 | 100.000,00 |
| Percentil 95 % | 110.969,27 | 100.000,00 |
| Media | 101.107,59 | 100.000,00 |
| Concepto | Valor |
|---|---|
| Decisión | Mantener el capital en efectivo según la regla definida |
| Precio de entrada (USD) | 97,57 |
| Horizonte (sesiones) | 21 |
| Capital invertido en KO (USD) | 0,00 |
| Capital en efectivo (USD) | 100.000,00 |
| Acciones teóricas compradas | 0,00 |
| Escenario | Rend. SPY a 21 sesiones (%) | Rend. esperado KO, modelo de mercado (%) | ¿Supera el umbral de 1 %? |
|---|---|---|---|
| Bajista (percentil 5 % histórico) | -7,251 | -3,332 | No |
| Base (pronóstico ARIMA de SPY) | 1,001 | 0,873 | No |
| Alcista (percentil 95 % histórico) | 8,119 | 4,363 | Sí |
Con toda la muestra, la deriva estimada sube (incluye la fuerte valorización del test) y el rendimiento esperado a 21 sesiones es de 0,95 %, con un precio puntual de 98,50 USD. La distribución simulada va de 89,30 USD (percentil 5 %) a 108,27 USD (percentil 95 %), con una mediana de 98,63 USD. La probabilidad de terminar por debajo del precio de entrada es 42,3 %. Si se invirtiera el capital, el valor mediano sería 101.081 USD, pero en el 5 % de los peores escenarios se perderían al menos 8.481 USD.
Decisión: Mantener el capital en efectivo según la regla definida. El rendimiento esperado queda por debajo del umbral del 1 % y la probabilidad de pérdida supera el 40 %. La decisión se aproxima al límite de la regla, pero no lo cruza. El mensaje de la simulación es que la ganancia esperada (alrededor de 1.108 USD) es pequeña frente al rango de resultados posibles (cerca de 19.450 USD entre los percentiles 5 y 95). Estos escenarios describen riesgo, no precios garantizados. Como el bootstrap no reproduce el agrupamiento de la volatilidad, si el mercado entrara en un periodo turbulento el rango real podría ser más amplio que el simulado.
¿Qué pasaría con SPY? El modelo final no usa SPY, por lo que su pronóstico no depende de \(X_{T+h}\). Aun así, la tabla de escenarios muestra la sensibilidad con el modelo de mercado (\(\beta\) = 0,499). En el escenario base, en el que SPY sube 1,00 % en el mes según su propio ARIMA, el rendimiento esperado de KO sería 0,87 %, también por debajo del umbral. Solo en un mes muy alcista para el mercado (percentil 95 histórico) se superaría el 1 %. Pero ese escenario no puede conocerse por anticipado, y esa es justamente la razón por la que el regresor contemporáneo no mejora el pronóstico.
1. ¿Qué características de la serie determinaron la especificación elegida?
Fueron cuatro. El log-precio no es estacionario (KPSS rechaza y la ACF decae lentamente), lo que fijó \(d = 1\) sobre el log-precio, es decir, \(d = 0\) sobre los rendimientos. Los rendimientos tienen autocorrelaciones muy pequeñas que provienen casi por completo de 2020 y desaparecen después, lo que llevó a órdenes bajos. No hay evidencia de estacionalidad semanal (prueba F con p = 0,66 y términos estacionales no significativos). Por último, los rendimientos tienen volatilidad agrupada y colas pesadas (curtosis de 11,0), lo que condicionó cómo se construyen los intervalos y los escenarios.
2. ¿Cuál modelo fue seleccionado y por qué?
Se seleccionó ARIMA(0,0,0) sobre los rendimientos, equivalente a un ARIMA(0,1,0) con deriva sobre el log-precio. No fue el de menor AICc: ese lugar lo ocupó el SARIMAX con SPY, cuya ventaja proviene de usar el SPY del mismo día, que no está disponible al pronosticar, y cuyos términos ARMA no son significativos. Entre los modelos con especificación admisible (términos significativos y raíces válidas), ARIMA(0,0,0) tuvo el menor error en la validación interna de train y es el más parsimonioso. ARIMA(1,0,1), su principal rival, tiene coeficientes que casi se cancelan y no mejoró el pronóstico.
3. ¿Los residuos cumplen razonablemente con las condiciones esperadas?
Parcialmente. Su media es cercana a cero y la autocorrelación es pequeña e inestable (significativa por el episodio de 2020, pero no después). En cambio, ARCH-LM y Ljung-Box sobre los residuos al cuadrado muestran heterocedasticidad condicional, y Jarque-Bera rechaza la normalidad. Estas fallas son comunes a todos los candidatos, porque son propias de los rendimientos financieros diarios. No invalidan el pronóstico de la media, pero sí afectan los intervalos: con varianza constante resultaron demasiado anchos en un test tranquilo.
4. ¿El test confirma o contradice la selección de train?
La confirma en lo esencial. Los modelos con SPY, favoritos por AICc, pronosticaron peor, y la diferencia frente al modelo seleccionado es significativa según Diebold-Mariano. ARIMA(1,0,1) fue marginalmente mejor en test, pero la diferencia no es significativa. Todos los modelos superaron con amplitud al paseo aleatorio sin deriva en el pronóstico multi-paso, gracias a la deriva, aunque subestimaron la fuerte subida de 2026. Un mejor ajuste en train no garantizó un mejor pronóstico: el modelo más complejo fue el de peor desempeño fuera de muestra.
5. ¿Qué decisión produce la regla y qué riesgos muestra la simulación?
La regla mantiene el capital en efectivo, tanto en \(T_0\) como en cada mes del test y en el pronóstico operativo actual (rendimiento esperado de 0,95 % y probabilidad de pérdida de 42,3 %). La simulación muestra que, invirtiendo, el valor del portafolio a un mes estaría entre 91.519 y 110.969 USD en el 90 % de los escenarios. La decisión evitó la pérdida del primer mes, pero dejó pasar una valorización de 35,7 % durante el test.
Respuesta a la pregunta de investigación. La especificación más defendible para KO es el paseo aleatorio con deriva (ARIMA(0,1,0) con deriva en el log-precio). Su pronóstico es sencillo, pero honesto: supera al ingenuo sin deriva, no es superado de forma significativa por modelos más complejos y no depende de información futura. La decisión que se deriva de su distribución de escenarios, con la regla definida, es no invertir. Para un activo defensivo con poca predictibilidad de corto plazo, esa decisión refleja más el diseño de la regla que una señal negativa sobre la acción.
Alcance, limitaciones y posibles extensiones
Reproducibilidad. El documento se ejecuta de
principio a fin con rmarkdown::render(). Las simulaciones
usan set.seed(20261109) (y semillas fijas por cada decisión
mensual). Los datos provienen de Yahoo Finance (descargados con
quantmod) y se guardan en
datos_KO_SPY_YahooFinance.csv; si el archivo no existe, el
código lo descarga de nuevo con la fecha de corte fija. Versión de R y
de los paquetes utilizados:
## R version 4.6.2 (2026-10-29)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.5 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
##
## locale:
## [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
## [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
## [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
## [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
##
## time zone: UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] moments_0.14.1 knitr_1.52 tidyr_1.3.2 dplyr_1.2.1
## [5] ggplot2_4.0.3 FinTS_0.4-9 tseries_0.10-63 forecast_9.0.2
## [9] quantmod_0.4.29 TTR_0.24.4 xts_0.14.3 zoo_1.9-1
##
## loaded via a namespace (and not attached):
## [1] sass_0.4.10 generics_0.1.4 lattice_0.23-1 digest_0.6.39
## [5] magrittr_2.0.5 evaluate_1.0.5 grid_4.6.2 RColorBrewer_1.1-3
## [9] fastmap_1.2.0 jsonlite_2.0.0 purrr_1.2.2 scales_1.4.0
## [13] jquerylib_0.1.4 cli_3.6.6 rlang_1.3.0 withr_3.0.3
## [17] cachem_1.1.0 yaml_2.3.12 tools_4.6.2 parallel_4.6.2
## [21] colorspace_2.1-4 curl_8.1.0 vctrs_0.7.3 R6_2.6.1
## [25] lifecycle_1.0.5 pkgconfig_2.0.3 urca_1.3-4 pillar_1.11.1
## [29] bslib_0.12.0 gtable_0.3.6 glue_1.8.1 Rcpp_1.1.2
## [33] xfun_0.62 tibble_3.3.1 tidyselect_1.2.1 rstudioapi_0.19.0
## [37] farver_2.1.2 htmltools_0.5.9 nlme_3.1-171 labeling_0.4.3
## [41] rmarkdown_2.32 timeDate_4052.112 fracdiff_1.5-4 compiler_4.6.2
## [45] S7_0.2.2 quadprog_1.5-8