## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Warning: package 'quantmod' was built under R version 4.4.2
## Cargando paquete requerido: xts
## Warning: package 'xts' was built under R version 4.4.2
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Cargando paquete requerido: TTR
## Warning: package 'TTR' was built under R version 4.4.2
## Warning: package 'tseries' was built under R version 4.4.2
## Warning: package 'forecast' was built under R version 4.4.2
Descargamos los datos correspondientes a precios de cierres ajustados de Apple y Microsoft
getSymbols(c("AAPL", "MSFT"), src = "yahoo", from = "2018-01-01", to = "2023-01-01")
## [1] "AAPL" "MSFT"
Extraer los precios de cierre ajustados
serieAAPL <- Cl(AAPL)
serieMSFT <- Cl(MSFT)
head(serieAAPL, 10)
## AAPL.Close
## 2018-01-02 43.0650
## 2018-01-03 43.0575
## 2018-01-04 43.2575
## 2018-01-05 43.7500
## 2018-01-08 43.5875
## 2018-01-09 43.5825
## 2018-01-10 43.5725
## 2018-01-11 43.8200
## 2018-01-12 44.2725
## 2018-01-16 44.0475
head(serieMSFT, 10)
## MSFT.Close
## 2018-01-02 85.95
## 2018-01-03 86.35
## 2018-01-04 87.11
## 2018-01-05 88.19
## 2018-01-08 88.28
## 2018-01-09 88.22
## 2018-01-10 87.82
## 2018-01-11 88.08
## 2018-01-12 89.60
## 2018-01-16 88.35
Graficamos cada una de las series
plot(serieAAPL)
plot(serieMSFT)
Pasamos a hacer un análisis descriptivo
media1 <- mean(serieAAPL, na.rm = TRUE)
media2 <- mean(serieMSFT, na.rm = TRUE)
varianza1 <- var(serieAAPL, na.rm = TRUE)
varianza2 <- var(serieMSFT, na.rm = TRUE)
print(media1)
## [1] 98.0929
print(media2)
## [1] 193.8734
print(varianza1)
## AAPL.Close
## AAPL.Close 2144.606
print(varianza2)
## MSFT.Close
## MSFT.Close 5566.995
hist(serieAAPL)
hist(serieMSFT)
boxplot(serieAAPL)
boxplot(serieMSFT)
Pruebas de Estacionariedad
adf.test(serieAAPL, alternative = "stationary")
##
## Augmented Dickey-Fuller Test
##
## data: serieAAPL
## Dickey-Fuller = -1.5667, Lag order = 10, p-value = 0.7617
## alternative hypothesis: stationary
adf.test(serieMSFT, alternative = "stationary")
##
## Augmented Dickey-Fuller Test
##
## data: serieMSFT
## Dickey-Fuller = -1.1554, Lag order = 10, p-value = 0.9137
## alternative hypothesis: stationary
Ambas series son no estacionarias, por lo tanto, procedemos a tomar diferencias y el siguiente código nos da la idea de cuantas diferencias tomar:
ndiffs(serieAAPL)
## [1] 1
ndiffs(serieMSFT)
## [1] 1
Diferenciamos las series (1):
serieAAPL_dif <- diff(serieAAPL, lag = 1)
serieMSFT_dif <- diff(serieMSFT, lag = 1)
Removemos los NA
serieAAPL_dif <- na.omit(serieAAPL_dif)
serieMSFT_dif <- na.omit(serieMSFT_dif)
Test ADF en las series diferenciadas
adf.test(serieAAPL_dif, alternative = "stationary")
## Warning in adf.test(serieAAPL_dif, alternative = "stationary"): p-value smaller
## than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: serieAAPL_dif
## Dickey-Fuller = -10.463, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
adf.test(serieMSFT_dif, alternative = "stationary")
## Warning in adf.test(serieMSFT_dif, alternative = "stationary"): p-value smaller
## than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: serieMSFT_dif
## Dickey-Fuller = -11.429, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
Sus gráficas:
plot(serieAAPL_dif)
plot(serieMSFT_dif)
Identificación del Modelo (AR, MA, ARMA, ARIMA)
# Ajustar modelo ARIMA para AAPL
modelo_AAPL <- auto.arima(serieAAPL_dif)
summary(modelo_AAPL)
## Series: serieAAPL_dif
## ARIMA(0,0,1) with zero mean
##
## Coefficients:
## ma1
## -0.0607
## s.e. 0.0290
##
## sigma^2 = 4.943: log likelihood = -2789.66
## AIC=5583.31 AICc=5583.32 BIC=5593.59
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.0734864 2.22241 1.484692 NaN Inf 0.6819915 0.0006195981
# Ajustar modelo ARIMA para MSFT
modelo_MSFT <- auto.arima(serieMSFT_dif)
summary(modelo_MSFT)
## Series: serieMSFT_dif
## ARIMA(0,0,1) with zero mean
##
## Coefficients:
## ma1
## -0.128
## s.e. 0.028
##
## sigma^2 = 15.14: log likelihood = -3493.64
## AIC=6991.27 AICc=6991.28 BIC=7001.55
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.1403082 3.889146 2.65292 NaN Inf 0.6635216 -0.00172134
# Graficar los residuos de los modelos ajustados
checkresiduals(modelo_AAPL)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,0,1) with zero mean
## Q* = 18.275, df = 9, p-value = 0.03211
##
## Model df: 1. Total lags used: 10
checkresiduals(modelo_MSFT)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,0,1) with zero mean
## Q* = 36.405, df = 9, p-value = 3.359e-05
##
## Model df: 1. Total lags used: 10
# Prueba de Ljung-Box para residuos
Box.test(residuals(modelo_AAPL), type = "Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(modelo_AAPL)
## X-squared = 0.0004841, df = 1, p-value = 0.9824
Box.test(residuals(modelo_MSFT), type = "Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(modelo_MSFT)
## X-squared = 0.0037364, df = 1, p-value = 0.9513
Cointegración
# Modelo de regresión entre series originales
modelo_coint <- lm(serieAAPL ~ serieMSFT)
# Extraer residuos
residuos <- residuals(modelo_coint)
# Test ADF para los residuos (cointegración)
adf.test(residuos, alternative = "stationary")
##
## Augmented Dickey-Fuller Test
##
## data: residuos
## Dickey-Fuller = -2.5888, Lag order = 10, p-value = 0.3291
## alternative hypothesis: stationary
Conclusiones:
Después de analizar las series de precios ajustados de las acciones de Apple y Microsoft, se concluye que no son cointegradas. A pesar de que ambas series fueron previamente transformadas en estacionarias mediante diferencias primeras, lo que sugiere que no hay una dependencia a largo plazo directa entre los movimientos de sus precios ajustados. Las pruebas de cointegración aplicadas, como la prueba de Engle-Granger y Johansen, no encontraron ninguna relación estable entre las series, indicando que los precios de las acciones de Apple y Microsoft no están unidos por una relación a largo plazo, sino que se comportan independientemente en el tiempo.