#Plot Daily Closing Price
plot(df, main = "Data Harga Closing Harian Doge Coin Desember 2023-Desember 2024",
xlab = "Date",
ylab = expression(p[t]))
#Plot Daily Return
r.df <-diff(log(df)) #penghitungan return
plot(r.df, main = "Return Harian Saham Doge Coin Desember 2023-Desember 2024",
ylab = expression(r[t]),
xlab = "t",
type = "l")
lines(r.df, col = "blue", lty = 4)
adf.test(r.df)
## Warning in adf.test(r.df): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: r.df
## Dickey-Fuller = -6.4445, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary
Hasil pengujian stasioneritas menggunakan metode Augmented Dicky-Fuller test, karena p-value yang dihasilkan kurang dari 0.05 sebagai tingkat signifikansi, sehingga dapat disimpulkan bahwa data return dari stock Netflix memiliki sifat data yang stasioner.
#ACF dan PACF
par(mfrow = c(1,2))
acf(r.df, main = "ACF Data")
pacf(r.df, main = "PACF Data")
Berdasarkan grafik ACF (cuts off pada lag 2) dan PACF (cuts off pada lag 1), maka beberapa model yang cocok diajukan adalah:
MA(1)
MA(2)
AR(1)
AR(2)
ARMA(1,1)
ARMA(2,1)
#Pemodelan ARIMA
mod1 <- arima(r.df, order = c(0,0,1))
mod2 <- arima(r.df, order = c(0,0,2))
mod3 <- arima(r.df, order = c(1,0,0))
mod4 <- arima(r.df, order = c(2,0,0))
mod5 <- arima(r.df, order = c(1,0,1))
mod6 <- arima(r.df, order = c(2,0,1))
#Residual ARIMA
res1 <- mod1$residuals
res2 <- mod2$residuals
res3 <- mod3$residuals
res4 <- mod4$residuals
res5 <- mod5$residuals
res6 <- mod6$residuals
#Information Criteria
AIC(mod1)
## [1] -1129.985
AIC(mod2)
## [1] -1128.797
AIC(mod3)
## [1] -1130.302
AIC(mod4)
## [1] -1129.092
AIC(mod5)
## [1] -1129.734
AIC(mod6)
## [1] -1127.741
Model | AIC |
---|---|
MA(1) | -1129.985 |
MA(2) | -1128.797 |
AR(1) | -1130.302 |
AR(2) | -1129.734 |
ARMA(1,1) | -1129.734 |
ARMA(2,1) | -1127.741 |
Berdasarkan output tersebut, dapat diajukan bahwa model terbaik adalah menggunakan model ARMA (2,1).
acf(res6)
Box.test(res6, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: res6
## X-squared = 2.0683e-06, df = 1, p-value = 0.9989
Berdasarkan pengujian menggunakan metode Ljung Box, dikarenakan p-value yang dihasilkan lebih besar dari pada tingkat signifikansi (0.05), maka keputusan yang diambil adalah gagal tolak H0 yang bermakna bahwa error yang dihasilkan white noise.
#Pengujian
arch.test(res6, lag = 1)
##
## Box-Ljung test
##
## data: y^2
## X-squared = 36.158, df = 1, p-value = 1.82e-09
## alternative hypothesis: y is heteroscedastic
Model ARMA(2,1) memiliki error yang heteroskedastis dikarenakan pengujian ARCH-LM memiliki hasil tolak H0 (p-value = 0.00039 < alpha = 0.05). Sehingga, dapat dilakukan pemodelan ARCH-GARCH.
#Correlogram
sqres3 <- res3*res3
acf(sqres3, lag.max = 100, main = "ACF Squared Residual")
pacf(sqres3, lag.max = 100, main = "PACF Squared Residual")
Berdasarkan grafik ACF-PACF dari squared residual, terlihat bahwa grafik ACF mengalami cuts off (pada lag 3) dan grafik PACF mengalami cuts off (pada lag 2). Berikut ini adalah model yang mungkin:
GARCH(0,1)
GARCH(0,2)
GARCH(1,0)
GARCH(2,0)
GARCH(1,1)
#Spesifikasi Model
spec1 <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(0, 1)),
mean.model = list(armaOrder = c(2, 1), include.mean =F),
distribution.model = "norm")
spec2 <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(0, 2)),
mean.model = list(armaOrder = c(2, 1), include.mean = F))
spec3 <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 0)),
mean.model = list(armaOrder = c(2, 1), include.mean = F))
spec4 <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(2, 0)),
mean.model = list(armaOrder = c(2, 1), include.mean = F))
spec5 <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(2, 1), include.mean = F))
#Fitting Model ARCH-GARCH
g1 <- ugarchfit(spec1, r.df)
g2 <- ugarchfit(spec2, r.df)
g3 <- ugarchfit(spec3, r.df)
g4 <- ugarchfit(spec4, r.df)
g5 <- ugarchfit(spec5, r.df)
#Residual Model
gres1 <- residuals(g1)
gres2 <- residuals(g2, standardize = T)
gres3 <- residuals(g3)
gres4 <- residuals(g4)
gres5 <- residuals(g5)
#Information Criteria
infocriteria(g1)
##
## Akaike -3.077761
## Bayes -3.024446
## Shibata -3.078127
## Hannan-Quinn -3.056575
infocriteria(g2)
##
## Akaike -3.072300
## Bayes -3.008322
## Shibata -3.072826
## Hannan-Quinn -3.046877
infocriteria(g3)
##
## Akaike -3.229662
## Bayes -3.176347
## Shibata -3.230029
## Hannan-Quinn -3.208476
infocriteria(g4)
##
## Akaike -3.231833
## Bayes -3.167856
## Shibata -3.232359
## Hannan-Quinn -3.206410
infocriteria(g5)
##
## Akaike -3.255446
## Bayes -3.191468
## Shibata -3.255972
## Hannan-Quinn -3.230023
Berdasarkan pemodelan tersebut, dapat dilihat bahwa model GARCH yang cocok untuk menjelaskan volatility pada data adalah model GARCH(0,2).
#Summary Model GARCH(0,2)
coef(g2)
## ar1 ar2 ma1 omega beta1
## 1.029447e+00 -6.500152e-02 -9.369219e-01 6.722175e-06 3.125419e-07
## beta2
## 9.976321e-01
Coefficient | Estimate |
---|---|
omega | 0.00315 |
alpha1 | 0.50314 |
beta1 | 0.49586 |
#Normalitas
res.test <- as.numeric(gres2)
shapiro.test(res.test)
##
## Shapiro-Wilk normality test
##
## data: res.test
## W = 0.96709, p-value = 2.399e-07
Normalitas
Hipotesis
H0: Error berdistribusi Normal
H1: Error tidak berdistribusi normal
Tingkat Signifikansi (5%)
Hasil pengujian
Berdasarkan hasil pengujian menggunakan shapiro Wilks, didapatkan
keputusan tolak H0 karena p-value < alpha.
Kesimpulan
Dengan tingkat signifikans 5% dari sampel yang ada, dapat disimpulkan
bahwa error belum berdistribusi normal.
#Arch-lm effect (Homoskedasticity)
arch.test(gres2, lag = 1)
##
## Box-Ljung test
##
## data: y^2
## X-squared = 35.626, df = 1, p-value = 2.391e-09
## alternative hypothesis: y is heteroscedastic
ARCH-LM test
Hipotesis
H0: Tidak terdapat efek ARCH (homoskedastis)
H1: Terdapat efek ARCH (heteroskedastis)
Tingkat Signifikansi (5%)
Hasil pengujian
Berdasarkan hasil pengujian menggunakan ARCH-LM Test, didapatkan
keputusan tolak H0 karena p-value < alpha.
Kesimpulan
Dengan tingkat signifikansi 5% dari sampel yang ada, dapat disimpulkan
bahwa error masih heteroskedastis.
signbias(g2)
## t-value prob sig
## Sign Bias 0.9270036 3.545440e-01
## Negative Sign Bias 2.5645103 1.073591e-02 **
## Positive Sign Bias 5.6999914 2.492338e-08 ***
## Joint Effect 40.1193776 1.005198e-08 ***
Uji Asimetris
Hipotesis
H0: Tidak terdapat efek leverage (residual model simetris)
H1: Terdapat efek leverage (residual model tidak simetris)
Tingkat Signifikansi (5%)
Hasil pengujian
Berdasarkan hasil pengujian menggunakan Sign Bias Test. Hasil uji Sign
Bias untuk model GARCH(0,2) adalah dengan p-value lebih kecil daripada
tingkat signifikansi 5% sehingga keputusannya adalah tolak H0 atau tidak
ada efek leverage sehingga residual model asimetris.
Kesimpulan
Dengan tingkat signifikans 5% dari sampel yang ada, dapat disimpulkan
bahwa terdapat efek leverage pada residual model sehingga bersifat
asimetris.
forecast <- ugarchforecast(g5, n.ahead = 10) # Prediksi 10 hari ke depan
forecast
##
## *------------------------------------*
## * GARCH Model Forecast *
## *------------------------------------*
## Model: sGARCH
## Horizon: 10
## Roll Steps: 0
## Out of Sample: 0
##
## 0-roll forecast [T0=367-01-01]:
## Series Sigma
## T+1 -6.624e-04 0.03853
## T+2 4.402e-04 0.04154
## T+3 3.493e-04 0.04384
## T+4 2.002e-04 0.04563
## T+5 1.070e-04 0.04704
## T+6 5.614e-05 0.04817
## T+7 2.929e-05 0.04906
## T+8 1.526e-05 0.04979
## T+9 7.945e-06 0.05037
## T+10 4.136e-06 0.05084
plot(forecast, which = 1)
plot(forecast, which = 3)