Packages

library(quantmod)
library(tidyverse)
library(tseries)
library(FinTS)
library(rugarch)
library(fBasics)
library(forecast)
library(scales)

Data Preparation

getSymbols(
  "AAPL",
  src = "yahoo",
  from = "2022-04-11",
  to = "2026-10-01",
  auto.assign = TRUE
)
## [1] "AAPL"
head(AAPL)
##            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2022-04-11    168.71    169.03   165.50     165.75    72246700      162.1100
## 2022-04-12    168.02    169.87   166.64     167.66    79265200      163.9780
## 2022-04-13    167.39    171.04   166.77     170.40    70618900      166.6579
## 2022-04-14    170.62    171.27   165.04     165.29    75329400      161.6601
## 2022-04-18    163.92    166.60   163.57     165.07    69023900      161.4450
## 2022-04-19    165.02    167.82   163.91     167.40    67723800      163.7237
tail(AAPL)
##            AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
## 2026-09-23    341.08    341.80   335.50     337.02    31658800        337.02
## 2026-09-24    336.72    338.91   334.30     335.92    24733100        335.92
## 2026-09-25    336.04    341.67   334.53     341.07    30002500        341.07
## 2026-09-28    340.37    342.99   338.04     338.40    32820800        338.40
## 2026-09-29    336.97    337.09   328.70     329.40    38478000        329.40
## 2026-09-30    330.80    339.50   330.14     333.02    49988600        333.02
start(AAPL)
## [1] "2022-04-11"
end(AAPL)
## [1] "2026-09-30"

Closing Price

data_AAPL <- data.frame(
  Date = index(AAPL),
  Close = as.numeric(Cl(AAPL))
)

Checking Missing Value

sum(is.na(data_AAPL$Close))
## [1] 0
head(data_AAPL)
##         Date  Close
## 1 2022-04-11 165.75
## 2 2022-04-12 167.66
## 3 2022-04-13 170.40
## 4 2022-04-14 165.29
## 5 2022-04-18 165.07
## 6 2022-04-19 167.40
tail(data_AAPL)
##            Date  Close
## 1117 2026-09-23 337.02
## 1118 2026-09-24 335.92
## 1119 2026-09-25 341.07
## 1120 2026-09-28 338.40
## 1121 2026-09-29 329.40
## 1122 2026-09-30 333.02

Plot closing price saham AAPL

ggplot(data_AAPL, aes(x = Date, y = Close)) +
  geom_line() +
  labs(
    title = "Pergerakan Harga Saham APPLE INC.",
    x = "Tanggal",
    y = "Harga Penutupan (USD)"
  ) +
  theme_minimal()

Data Transformation (return log)

data_AAPL <- data_AAPL %>%
  mutate(
    LogReturn = c(NA, diff(log(Close)))
  ) %>%
  drop_na(LogReturn)

head(data_AAPL)
##         Date  Close    LogReturn
## 1 2022-04-12 167.66  0.011457512
## 2 2022-04-13 170.40  0.016210438
## 3 2022-04-14 165.29 -0.030447112
## 4 2022-04-18 165.07 -0.001331796
## 5 2022-04-19 167.40  0.014016451
## 6 2022-04-20 167.23 -0.001016037
#PLOT LOG RETURN
ggplot(data_AAPL, aes(x = Date, y = LogReturn)) +
  geom_line(color = "darkgreen") +
  labs(title = "Return Saham AAPL",
       x = "Tanggal", y = "Log Return") +
  scale_x_date(date_breaks = "6 months", date_labels = "%b %Y") +
  theme_minimal()

Statistik Deskriptif

summary(data_AAPL$LogReturn)
##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
## -0.0970133 -0.0076099  0.0011396  0.0006224  0.0095100  0.1426175
# Statistik tambahan
sd(data_AAPL$LogReturn)
## [1] 0.01767914
mean(data_AAPL$LogReturn)
## [1] 0.0006224102
min(data_AAPL$LogReturn)
## [1] -0.09701334
max(data_AAPL$LogReturn)
## [1] 0.1426175

Train-Test Splitting

n <- nrow(data_AAPL)
n_train <- floor(0.80 * n)

train <- data_AAPL[1:n_train, ]
test <- data_AAPL[(n_train + 1):n, ]

cat("Jumlah data keseluruhan :", n, "\n")
## Jumlah data keseluruhan : 1121
cat("Jumlah data training   :", nrow(train), "\n")
## Jumlah data training   : 896
cat("Jumlah data testing    :", nrow(test), "\n")
## Jumlah data testing    : 225
cat(
  "Periode training       :",
  as.character(min(train$Date)),
  "sampai",
  as.character(max(train$Date)),
  "\n"
)
## Periode training       : 2022-04-12 sampai 2025-11-05
cat(
  "Periode testing        :",
  as.character(min(test$Date)),
  "sampai",
  as.character(max(test$Date)),
  "\n"
)
## Periode testing        : 2025-11-06 sampai 2026-09-30
return_train <- train$LogReturn
return_test <- test$LogReturn

df_split <- data.frame(
  date = c(train$Date, test$Date),
  ret  = c(return_train, return_test),
  set  = factor(
    c(
      rep("Training", nrow(train)),
      rep("Testing", nrow(test))
    ),
    levels = c("Training", "Testing")
  )
)
ggplot(df_split, aes(x = date, y = ret, color = set)) +
  geom_line() +
  scale_color_manual(values = c("Training" = "steelblue", "Testing" = "orange")) +
  labs(title = "Perbandingan Data Training dan Testing Return AAPL",
       x = "Tanggal", y = "Log Return", color = "Data") +
  theme_minimal()

Statistik Deskriptif Data Train

basicStats(return_train)
##             return_train
## nobs          896.000000
## NAs             0.000000
## Minimum        -0.097013
## Maximum         0.142617
## 1. Quartile    -0.007662
## 3. Quartile     0.009601
## Mean            0.000545
## Median          0.001148
## Sum             0.488460
## SE Mean         0.000605
## LCL Mean       -0.000643
## UCL Mean        0.001733
## Variance        0.000328
## Stdev           0.018121
## Skewness        0.275481
## Kurtosis        6.492253
desk <- data.frame(
  Mean     = mean(return_train),
  Median   = median(return_train),
  SD       = sd(return_train),
  Min      = min(return_train),
  Max      = max(return_train),
  Skewness = skewness(return_train),
  Kurtosis = kurtosis(return_train)
)
desk
##          Mean     Median         SD         Min       Max  Skewness Kurtosis
## 1 0.000545156 0.00114787 0.01812098 -0.09701334 0.1426175 0.2754814 6.492253

Kurtosis \[ 6.492 \] Ini cukup tinggi dibandingkan distribusi normal. Distribusi normal memiliki kurtosis sekitar 3 jika menggunakan definisi kurtosis biasa. Jadi data menunjukkan: heavy tails / ekor tebal

yang berarti peluang munculnya return ekstrem lebih besar dibandingkan distribusi normal.

Uji Normalitas

normalTest(return_train, method = "jb")
## 
## Title:
##  Jarque-Bera Normality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 1595.2517
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16
normalTest(data_AAPL$LogReturn, method="jb")
## 
## Title:
##  Jarque-Bera Normality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 1805.9883
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16

Return AAPL tidak berdistribusi normal. Hal ini konsisten dengan kurtosis tinggi dan adanya return ekstrem.

UJI STASIONERITAS ADF

adf_result <- adf.test(return_train)
adf_result
## 
##  Augmented Dickey-Fuller Test
## 
## data:  return_train
## Dickey-Fuller = -10.344, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary

Return AAPL telah stasioner. Ini berarti return dapat langsung digunakan dalam pemodelan ARMA/GARCH tanpa perlu differencing tambahan.

ACF DAN PACF RETURN

par(mfrow = c(1, 2))
acf(return_train,main = "ACF Return Saham AAPL")
pacf(return_train,main = "PACF Return Saham AAPL")

par(mfrow = c(1, 1))

MODEL MEAN DENGAN AUTO ARIMA

# ============================================================
# 1. MODEL MEAN ARIMA MANUAL
# ============================================================

library(forecast)
library(dplyr)

# Pastikan data berupa numerik dan tidak mengandung NA
x <- as.numeric(na.omit(return_train))

# Estimasi seluruh kandidat ARIMA(p,0,q)
hasil_model <- list()
hasil_parameter <- list()

for (p in 0:5) {
  for (q in 0:5) {

    nama_model <- paste0("ARIMA(", p, ",0,", q, ")")

    fit <- tryCatch(
      forecast::Arima(
        x,
        order = c(p, 0, q),
        include.mean = TRUE,
        method = "ML"
      ),
      error = function(e) NULL
    )

    if (!is.null(fit)) {

      hasil_model[[nama_model]] <- fit

      # Simpan AIC, BIC, dan log-likelihood
      koef <- fit$coef
      vcov_mat <- fit$var.coef

      hasil_model_info <- data.frame(
        Model = nama_model,
        p = p,
        q = q,
        LogLik = as.numeric(logLik(fit)),
        AIC = AIC(fit),
        BIC = BIC(fit)
      )

      hasil_parameter[[nama_model]] <- data.frame(
        Model = nama_model,
        Parameter = names(koef),
        Estimate = as.numeric(koef),
        Std_Error = if (!is.null(vcov_mat)) {
          sqrt(pmax(diag(vcov_mat)[names(koef)], 0))
        } else {
          rep(NA_real_, length(koef))
        }
      ) |>
        mutate(
          Z_value = Estimate / Std_Error,
          P_value = 2 * pnorm(-abs(Z_value)),
          Signifikan = ifelse(
            P_value < 0.05, "Signifikan", "Tidak signifikan"
          )
        )
    }
  }
}

# ============================================================
# 2. TABEL PERBANDINGAN MODEL
# ============================================================

tabel_model <- bind_rows(
  lapply(names(hasil_model), function(nm) {
    fit <- hasil_model[[nm]]

    data.frame(
      Model = nm,
      LogLik = as.numeric(logLik(fit)),
      AIC = AIC(fit),
      BIC = BIC(fit)
    )
  })
) |>
  arrange(AIC)

print(tabel_model)
##           Model   LogLik       AIC       BIC
## 1  ARIMA(0,0,0) 2322.705 -4641.410 -4631.814
## 2  ARIMA(2,0,2) 2326.534 -4641.068 -4612.281
## 3  ARIMA(1,0,0) 2322.753 -4639.505 -4625.112
## 4  ARIMA(0,0,1) 2322.752 -4639.503 -4625.109
## 5  ARIMA(1,0,3) 2324.937 -4637.875 -4609.087
## 6  ARIMA(3,0,1) 2324.914 -4637.828 -4609.040
## 7  ARIMA(0,0,4) 2324.851 -4637.701 -4608.914
## 8  ARIMA(0,0,2) 2322.845 -4637.690 -4618.498
## 9  ARIMA(2,0,0) 2322.825 -4637.650 -4618.459
## 10 ARIMA(1,0,1) 2322.752 -4637.504 -4618.313
## 11 ARIMA(3,0,0) 2323.703 -4637.406 -4613.416
## 12 ARIMA(4,0,3) 2327.682 -4637.363 -4594.182
## 13 ARIMA(0,0,3) 2323.658 -4637.315 -4613.326
## 14 ARIMA(4,0,0) 2324.643 -4637.286 -4608.498
## 15 ARIMA(3,0,3) 2326.258 -4636.516 -4598.133
## 16 ARIMA(1,0,2) 2322.983 -4635.966 -4611.976
## 17 ARIMA(1,0,4) 2324.974 -4635.948 -4602.362
## 18 ARIMA(2,0,3) 2324.964 -4635.928 -4602.342
## 19 ARIMA(2,0,1) 2322.955 -4635.909 -4611.920
## 20 ARIMA(3,0,2) 2324.913 -4635.826 -4602.240
## 21 ARIMA(4,0,1) 2324.911 -4635.823 -4602.237
## 22 ARIMA(0,0,5) 2324.901 -4635.802 -4602.216
## 23 ARIMA(4,0,4) 2327.791 -4635.583 -4587.603
## 24 ARIMA(5,0,0) 2324.710 -4635.420 -4601.834
## 25 ARIMA(3,0,4) 2326.460 -4634.920 -4591.738
## 26 ARIMA(2,0,4) 2325.036 -4634.073 -4595.689
## 27 ARIMA(4,0,2) 2324.951 -4633.902 -4595.518
## 28 ARIMA(5,0,4) 2327.924 -4633.849 -4581.071
## 29 ARIMA(4,0,5) 2327.913 -4633.826 -4581.049
## 30 ARIMA(1,0,5) 2324.901 -4633.801 -4595.418
## 31 ARIMA(5,0,1) 2324.710 -4633.420 -4595.037
## 32 ARIMA(3,0,5) 2326.703 -4633.405 -4585.426
## 33 ARIMA(5,0,2) 2325.688 -4633.376 -4590.194
## 34 ARIMA(5,0,3) 2326.680 -4633.361 -4585.381
## 35 ARIMA(2,0,5) 2325.666 -4633.332 -4590.151
## 36 ARIMA(5,0,5) 2328.282 -4632.563 -4574.988
# ============================================================
# 3. TABEL SIGNIFIKANSI PARAMETER
# ============================================================

tabel_parameter <- bind_rows(hasil_parameter)

print(tabel_parameter)
##                        Model Parameter      Estimate    Std_Error       Z_value
## intercept...1   ARIMA(0,0,0) intercept  0.0005451560 0.0006059631   0.899652167
## ma1...2         ARIMA(0,0,1)       ma1  0.0100298603 0.0329323406   0.304559594
## intercept...3   ARIMA(0,0,1) intercept  0.0005451689 0.0006119842   0.890821900
## ma1...4         ARIMA(0,0,2)       ma1  0.0114652876 0.0335187172   0.342056277
## ma2...5         ARIMA(0,0,2)       ma2  0.0152028630 0.0352010175   0.431887032
## intercept...6   ARIMA(0,0,2) intercept  0.0005452877 0.0006219508   0.876737717
## ma1...7         ARIMA(0,0,3)       ma1  0.0066528001 0.0335866241   0.198078858
## ma2...8         ARIMA(0,0,3)       ma2  0.0133045259 0.0352722141   0.377195654
## ma3...9         ARIMA(0,0,3)       ma3 -0.0426121126 0.0333272391  -1.278597141
## intercept...10  ARIMA(0,0,3) intercept  0.0005453381 0.0005917131   0.921625877
## ma1...11        ARIMA(0,0,4)       ma1  0.0074889491 0.0333397793   0.224625035
## ma2...12        ARIMA(0,0,4)       ma2  0.0131533422 0.0334414383   0.393324656
## ma3...13        ARIMA(0,0,4)       ma3 -0.0478042289 0.0334458598  -1.429301840
## ma4...14        ARIMA(0,0,4)       ma4 -0.0532152636 0.0344400410  -1.545156803
## intercept...15  ARIMA(0,0,4) intercept  0.0005458559 0.0005562962   0.981232504
## ma1...16        ARIMA(0,0,5)       ma1  0.0080552606 0.0334153512   0.241064670
## ma2...17        ARIMA(0,0,5)       ma2  0.0126547616 0.0334529330   0.378285564
## ma3...18        ARIMA(0,0,5)       ma3 -0.0483779020 0.0334686339  -1.445469873
## ma4...19        ARIMA(0,0,5)       ma4 -0.0520551073 0.0345897509  -1.504928657
## ma5...20        ARIMA(0,0,5)       ma5 -0.0112560221 0.0355730219  -0.316420184
## intercept...21  ARIMA(0,0,5) intercept  0.0005456968 0.0005499144   0.992330333
## ar1...22        ARIMA(1,0,0)       ar1  0.0102991814 0.0333937401   0.308416528
## intercept...23  ARIMA(1,0,0) intercept  0.0005451702 0.0006122105   0.890494702
## ar1...24        ARIMA(1,0,1)       ar1  0.0052828306 1.1874141509   0.004449021
## ma1...25        ARIMA(1,0,1)       ma1  0.0048822524 1.1715561337   0.004167323
## intercept...26  ARIMA(1,0,1) intercept  0.0005451931 0.0006120982   0.890695540
## ar1...27        ARIMA(1,0,2)       ar1 -0.3103586297 0.7272382208  -0.426763364
## ma1...28        ARIMA(1,0,2)       ma1  0.3215768139 0.7262194759   0.442809405
## ma2...29        ARIMA(1,0,2)       ma2  0.0258195503 0.0358405589   0.720400324
## intercept...30  ARIMA(1,0,2) intercept  0.0005499984 0.0006228207   0.883076529
## ar1...31        ARIMA(1,0,3)       ar1  0.6773926666 0.2241004364   3.022719088
## ma1...32        ARIMA(1,0,3)       ma1 -0.6707012589 0.2249470704  -2.981595882
## ma2...33        ARIMA(1,0,3)       ma2  0.0083695088 0.0409209998   0.204528455
## ma3...34        ARIMA(1,0,3)       ma3 -0.0598501785 0.0362978448  -1.648863143
## intercept...35  ARIMA(1,0,3) intercept  0.0005464482 0.0005213342   1.048172508
## ar1...36        ARIMA(1,0,4)       ar1  0.4685862019 1.1592806516   0.404204281
## ma1...37        ARIMA(1,0,4)       ma1 -0.4607334592 1.1615709025  -0.396646867
## ma2...38        ARIMA(1,0,4)       ma2  0.0088823593 0.0375942633   0.236269009
## ma3...39        ARIMA(1,0,4)       ma3 -0.0531585984 0.0377139510  -1.409520800
## ma4...40        ARIMA(1,0,4)       ma4 -0.0260845178 0.0888798898  -0.293480537
## intercept...41  ARIMA(1,0,4) intercept  0.0005444308 0.0005339365   1.019654464
## ar1...42        ARIMA(1,0,5)       ar1  0.0039170676 0.0000000000           Inf
## ma1...43        ARIMA(1,0,5)       ma1  0.0041195186 0.0000000000           Inf
## ma2...44        ARIMA(1,0,5)       ma2  0.0126209725 0.0322672680   0.391138554
## ma3...45        ARIMA(1,0,5)       ma3 -0.0484270800 0.0311563866  -1.554322735
## ma4...46        ARIMA(1,0,5)       ma4 -0.0518684927 0.0000000000          -Inf
## ma5...47        ARIMA(1,0,5)       ma5 -0.0110303548 0.0000000000          -Inf
## intercept...48  ARIMA(1,0,5) intercept  0.0005457767 0.0005498869   0.992525363
## ar1...49        ARIMA(2,0,0)       ar1  0.0101759072 0.0333921394   0.304739599
## ar2...50        ARIMA(2,0,0)       ar2  0.0127054982 0.0333884428   0.380535814
## intercept...51  ARIMA(2,0,0) intercept  0.0005452156 0.0006200035   0.879375063
## ar1...52        ARIMA(2,0,1)       ar1 -0.2893134385 0.7624050072  -0.379474736
## ar2...53        ARIMA(2,0,1)       ar2  0.0233405376 0.0356143614   0.655368695
## ma1...54        ARIMA(2,0,1)       ma1  0.2996214859 0.7618886408   0.393261521
## intercept...55  ARIMA(2,0,1) intercept  0.0005522812 0.0006218232   0.888164421
## ar1...56        ARIMA(2,0,2)       ar1 -0.2411560934 0.0283955713  -8.492736103
## ar2...57        ARIMA(2,0,2)       ar2 -0.9402599349 0.0414774522 -22.669182518
## ma1...58        ARIMA(2,0,2)       ma1  0.2541263745 0.0191145560  13.294913789
## ma2...59        ARIMA(2,0,2)       ma2  0.9716208513 0.0313519324  30.990780396
## intercept...60  ARIMA(2,0,2) intercept  0.0005431617 0.0006154992   0.882473399
## ar1...61        ARIMA(2,0,3)       ar1  0.7487937002 0.4550921547   1.645367191
## ar2...62        ARIMA(2,0,3)       ar2 -0.0638916818 0.3928419443  -0.162639664
## ma1...63        ARIMA(2,0,3)       ma1 -0.7416381609 0.4539712157  -1.633667808
## ma2...64        ARIMA(2,0,3)       ma2  0.0715895515 0.3903608530   0.183393265
## ma3...65        ARIMA(2,0,3)       ma3 -0.0585411825 0.0380566612  -1.538263755
## intercept...66  ARIMA(2,0,3) intercept  0.0005495923 0.0005214208   1.054028286
## ar1...67        ARIMA(2,0,4)       ar1  0.2390112519 1.3103517298   0.182402363
## ar2...68        ARIMA(2,0,4)       ar2  0.2080548976 0.9347911406   0.222568324
## ma1...69        ARIMA(2,0,4)       ma1 -0.2314427161 1.3097608049  -0.176706094
## ma2...70        ARIMA(2,0,4)       ma2 -0.1969208161 0.9259042985  -0.212679449
## ma3...71        ARIMA(2,0,4)       ma3 -0.0502558039 0.0358187722  -1.403057694
## ma4...72        ARIMA(2,0,4)       ma4 -0.0407907949 0.0856201791  -0.476415669
## intercept...73  ARIMA(2,0,4) intercept  0.0005502977 0.0005260231   1.046147405
## ar1...74        ARIMA(2,0,5)       ar1 -0.2169761823 0.3683803148  -0.589000480
## ar2...75        ARIMA(2,0,5)       ar2  0.5963802412 0.3048492159   1.956312203
## ma1...76        ARIMA(2,0,5)       ma1  0.2256692322 0.3701851237   0.609611834
## ma2...77        ARIMA(2,0,5)       ma2 -0.5835679243 0.3088896125  -1.889244250
## ma3...78        ARIMA(2,0,5)       ma3 -0.0454479414 0.0384989543  -1.180498073
## ma4...79        ARIMA(2,0,5)       ma4 -0.0690355407 0.0436106995  -1.582995493
## ma5...80        ARIMA(2,0,5)       ma5  0.0071045838 0.0486437675   0.146053320
## intercept...81  ARIMA(2,0,5) intercept  0.0005460626 0.0005211828   1.047737199
## ar1...82        ARIMA(3,0,0)       ar1  0.0107958339 0.0333624279   0.323592572
## ar2...83        ARIMA(3,0,0)       ar2  0.0132047817 0.0333576525   0.395854646
## ar3...84        ARIMA(3,0,0)       ar3 -0.0442676920 0.0333987232  -1.325430667
## intercept...85  ARIMA(3,0,0) intercept  0.0005454428 0.0005933649   0.919236564
## ar1...86        ARIMA(3,0,1)       ar1  0.7401746932 0.2160701243   3.425622564
## ar2...87        ARIMA(3,0,1)       ar2  0.0058277142 0.0415547206   0.140241931
## ar3...88        ARIMA(3,0,1)       ar3 -0.0558327355 0.0356934277  -1.564230141
## ma1...89        ARIMA(3,0,1)       ma1 -0.7327253088 0.2148643671  -3.410176004
## intercept...90  ARIMA(3,0,1) intercept  0.0005422061 0.0005222166   1.038278097
## ar1...91        ARIMA(3,0,2)       ar1  0.7412682413 0.4924786283   1.505178497
## ar2...92        ARIMA(3,0,2)       ar2 -0.0086262067 0.4297979722  -0.020070375
## ar3...93        ARIMA(3,0,2)       ar3 -0.0562425172 0.0372864434  -1.508390505
## ma1...94        ARIMA(3,0,2)       ma1 -0.7338781259 0.4930753053  -1.488369257
## ma2...95        ARIMA(3,0,2)       ma2  0.0146003540 0.4264229135   0.034239140
## intercept...96  ARIMA(3,0,2) intercept  0.0005442269 0.0005251035   1.036418223
## ar1...97        ARIMA(3,0,3)       ar1  0.6449164693 0.3448714627   1.870019816
## ar2...98        ARIMA(3,0,3)       ar2 -0.5704531003 0.1508961604  -3.780434828
## ar3...99        ARIMA(3,0,3)       ar3  0.6228794900 0.0000000000           Inf
## ma1...100       ARIMA(3,0,3)       ma1 -0.6412325717 0.3166145404  -2.025278343
## ma2...101       ARIMA(3,0,3)       ma2  0.5901551688 0.1405824278   4.197929841
## ma3...102       ARIMA(3,0,3)       ma3 -0.6881348984 0.0000000000          -Inf
## intercept...103 ARIMA(3,0,3) intercept  0.0005256497 0.0005213057   1.008332868
## ar1...104       ARIMA(3,0,4)       ar1  0.3155526797 0.0000000000           Inf
## ar2...105       ARIMA(3,0,4)       ar2 -0.3983074961 0.0000000000          -Inf
## ar3...106       ARIMA(3,0,4)       ar3  0.5545275302 0.0581917724   9.529311570
## ma1...107       ARIMA(3,0,4)       ma1 -0.3076414317 0.0000000000          -Inf
## ma2...108       ARIMA(3,0,4)       ma2  0.4089631815 0.0000000000           Inf
## ma3...109       ARIMA(3,0,4)       ma3 -0.5995920750 0.1373409477  -4.365719657
## ma4...110       ARIMA(3,0,4)       ma4 -0.0492094962 0.0000000000          -Inf
## intercept...111 ARIMA(3,0,4) intercept  0.0005483206 0.0005178288   1.058883994
## ar1...112       ARIMA(3,0,5)       ar1  0.1002958346 0.3340057429   0.300281767
## ar2...113       ARIMA(3,0,5)       ar2 -0.4551820497 0.2113926952  -2.153253447
## ar3...114       ARIMA(3,0,5)       ar3  0.6124818476 0.2466310208   2.483393393
## ma1...115       ARIMA(3,0,5)       ma1 -0.0915619189 0.3361128431  -0.272414223
## ma2...116       ARIMA(3,0,5)       ma2  0.4699927601 0.2123583387   2.213206051
## ma3...117       ARIMA(3,0,5)       ma3 -0.6542410530 0.2454743246  -2.665211745
## ma4...118       ARIMA(3,0,5)       ma4 -0.0555381142 0.0456601539  -1.216336552
## ma5...119       ARIMA(3,0,5)       ma5 -0.0311957167 0.0455062095  -0.685526592
## intercept...120 ARIMA(3,0,5) intercept  0.0005482312 0.0005188116   1.056705923
## ar1...121       ARIMA(4,0,0)       ar1  0.0087925272 0.0333598607   0.263566064
## ar2...122       ARIMA(4,0,0)       ar2  0.0138710058 0.0333292309   0.416181396
## ar3...123       ARIMA(4,0,0)       ar3 -0.0437300328 0.0333656173  -1.310631609
## ar4...124       ARIMA(4,0,0)       ar4 -0.0457807463 0.0333788147  -1.371550989
## intercept...125 ARIMA(4,0,0) intercept  0.0005456746 0.0005670513   0.962301947
## ar1...126       ARIMA(4,0,1)       ar1  0.6761894205 0.4449951302   1.519543416
## ar2...127       ARIMA(4,0,1)       ar2  0.0065846174 0.0405787024   0.162267817
## ar3...128       ARIMA(4,0,1)       ar3 -0.0526114136 0.0407949046  -1.289656494
## ar4...129       ARIMA(4,0,1)       ar4 -0.0090815162 0.0505832557  -0.179536017
## ma1...130       ARIMA(4,0,1)       ma1 -0.6690544679 0.4446065043  -1.504823842
## intercept...131 ARIMA(4,0,1) intercept  0.0005487756 0.0005286142   1.038140039
## ar1...132       ARIMA(4,0,2)       ar1  0.2658125836 0.0000000000           Inf
## ar2...133       ARIMA(4,0,2)       ar2  0.3276436784 0.0000000000           Inf
## ar3...134       ARIMA(4,0,2)       ar3 -0.0480170141 0.0327058472  -1.468147692
## ar4...135       ARIMA(4,0,2)       ar4 -0.0346152391 0.0000000000          -Inf
## ma1...136       ARIMA(4,0,2)       ma1 -0.2586952984 0.0000000000          -Inf
## ma2...137       ARIMA(4,0,2)       ma2 -0.3181547988 0.0000000000          -Inf
## intercept...138 ARIMA(4,0,2) intercept  0.0005466466 0.0005236009   1.044013857
## ar1...139       ARIMA(4,0,3)       ar1  0.6003453483 0.1451533264   4.135939309
## ar2...140       ARIMA(4,0,3)       ar2 -0.7542594124 0.0700654197 -10.765073772
## ar3...141       ARIMA(4,0,3)       ar3  0.7798599469 0.1431899565   5.446331333
## ar4...142       ARIMA(4,0,3)       ar4 -0.0256559319 0.0366041687  -0.700901916
## ma1...143       ARIMA(4,0,3)       ma1 -0.5910018777 0.1414924309  -4.176915146
## ma2...144       ARIMA(4,0,3)       ma2  0.7510014391 0.0512777053  14.645769237
## ma3...145       ARIMA(4,0,3)       ma3 -0.8179745058 0.1384291260  -5.908976884
## intercept...146 ARIMA(4,0,3) intercept  0.0005422430 0.0005165535   1.049732477
## ar1...147       ARIMA(4,0,4)       ar1 -0.2738597588 0.1608742520  -1.702321879
## ar2...148       ARIMA(4,0,4)       ar2 -0.1379967380 0.1809745714  -0.762520044
## ar3...149       ARIMA(4,0,4)       ar3  0.1608091961 0.1764996472   0.911102082
## ar4...150       ARIMA(4,0,4)       ar4  0.7542656544 0.1562168319   4.828325125
## ma1...151       ARIMA(4,0,4)       ma1  0.2779317740 0.1452009827   1.914117720
## ma2...152       ARIMA(4,0,4)       ma2  0.1379433368 0.1626544493   0.848076013
## ma3...153       ARIMA(4,0,4)       ma3 -0.1888060557 0.1618061707  -1.166865608
## ma4...154       ARIMA(4,0,4)       ma4 -0.8119554291 0.1422445869  -5.708163992
## intercept...155 ARIMA(4,0,4) intercept  0.0005830984 0.0005048785   1.154928040
## ar1...156       ARIMA(4,0,5)       ar1 -0.3395980094 0.1896728023  -1.790441251
## ar2...157       ARIMA(4,0,5)       ar2 -0.1999487076 0.1877305379  -1.065083550
## ar3...158       ARIMA(4,0,5)       ar3  0.0928479237 0.1938132828   0.479058619
## ar4...159       ARIMA(4,0,5)       ar4  0.7075883216 0.1566734024   4.516327027
## ma1...160       ARIMA(4,0,5)       ma1  0.3486035472 0.1911300635   1.823907453
## ma2...161       ARIMA(4,0,5)       ma2  0.1980083168 0.1766314281   1.121025397
## ma3...162       ARIMA(4,0,5)       ma3 -0.1262258131 0.1827325240  -0.690768180
## ma4...163       ARIMA(4,0,5)       ma4 -0.7730364082 0.1454747363  -5.313887674
## ma5...164       ARIMA(4,0,5)       ma5 -0.0142197802 0.0382908380  -0.371362469
## intercept...165 ARIMA(4,0,5) intercept  0.0005462827 0.0005169830   1.056674391
## ar1...166       ARIMA(5,0,0)       ar1  0.0081961724 0.0333936223   0.245441251
## ar2...167       ARIMA(5,0,0)       ar2  0.0133230227 0.0333601870   0.399368945
## ar3...168       ARIMA(5,0,0)       ar3 -0.0435272352 0.0333678086  -1.304467899
## ar4...169       ARIMA(5,0,0)       ar4 -0.0456693907 0.0333779225  -1.368251445
## ar5...170       ARIMA(5,0,0)       ar5 -0.0122398614 0.0334072330  -0.366383573
## intercept...171 ARIMA(5,0,0) intercept  0.0005454933 0.0005602041   0.973740221
## ar1...172       ARIMA(5,0,1)       ar1  0.0030265093 0.0000000000           Inf
## ar2...173       ARIMA(5,0,1)       ar2  0.0133515015 0.0318738100   0.418886273
## ar3...174       ARIMA(5,0,1)       ar3 -0.0434600756 0.0294491102  -1.475768718
## ar4...175       ARIMA(5,0,1)       ar4 -0.0458959965 0.0000000000          -Inf
## ar5...176       ARIMA(5,0,1)       ar5 -0.0124822318 0.0000000000          -Inf
## ma1...177       ARIMA(5,0,1)       ma1  0.0051748970 0.0000000000           Inf
## intercept...178 ARIMA(5,0,1) intercept  0.0005455611 0.0005602273   0.973821070
## ar1...179       ARIMA(5,0,2)       ar1 -0.1310744841 0.2634887797  -0.497457555
## ar2...180       ARIMA(5,0,2)       ar2  0.7051840119 0.2227802779   3.165378995
## ar3...181       ARIMA(5,0,2)       ar3 -0.0491255076 0.0414878582  -1.184093608
## ar4...182       ARIMA(5,0,2)       ar4 -0.0621103200 0.0385762934  -1.610064488
## ar5...183       ARIMA(5,0,2)       ar5  0.0182108090 0.0441480373   0.412494193
## ma1...184       ARIMA(5,0,2)       ma1  0.1399288720 0.2610806212   0.535960392
## ma2...185       ARIMA(5,0,2)       ma2 -0.6934194488 0.2231353084  -3.107618663
## intercept...186 ARIMA(5,0,2) intercept  0.0005462304 0.0005204829   1.049468417
## ar1...187       ARIMA(5,0,3)       ar1  0.2123881249 0.2081194815   1.020510542
## ar2...188       ARIMA(5,0,3)       ar2 -0.4651442478 0.0000000000          -Inf
## ar3...189       ARIMA(5,0,3)       ar3  0.6608334757 0.1251118900   5.281939834
## ar4...190       ARIMA(5,0,3)       ar4 -0.0491044715 0.0219135268  -2.240829240
## ar5...191       ARIMA(5,0,3)       ar5 -0.0251459974 0.0325464121  -0.772619646
## ma1...192       ARIMA(5,0,3)       ma1 -0.2039758110 0.2059242598  -0.990538032
## ma2...193       ARIMA(5,0,3)       ma2  0.4789049753 0.0000000000           Inf
## ma3...194       ARIMA(5,0,3)       ma3 -0.7034654473 0.0953420699  -7.378332022
## intercept...195 ARIMA(5,0,3) intercept  0.0005475156 0.0005183367   1.056293290
## ar1...196       ARIMA(5,0,4)       ar1 -0.3344316172 0.1728512254  -1.934794598
## ar2...197       ARIMA(5,0,4)       ar2 -0.2074171465 0.1849984538  -1.121183135
## ar3...198       ARIMA(5,0,4)       ar3  0.0801132204 0.1931482767   0.414775745
## ar4...199       ARIMA(5,0,4)       ar4  0.6974681613 0.1584093829   4.402947279
## ar5...200       ARIMA(5,0,4)       ar5 -0.0159845299 0.0371605379  -0.430147969
## ma1...201       ARIMA(5,0,4)       ma1  0.3443542336 0.1697779619   2.028262264
## ma2...202       ARIMA(5,0,4)       ma2  0.2048132574 0.1746684826   1.172582794
## ma3...203       ARIMA(5,0,4)       ma3 -0.1144137119 0.1832681622  -0.624296717
## ma4...204       ARIMA(5,0,4)       ma4 -0.7634220930 0.1477532337  -5.166872317
## intercept...205 ARIMA(5,0,4) intercept  0.0005521985 0.0005191924   1.063572043
## ar1...206       ARIMA(5,0,5)       ar1  0.3059432582 0.0000000000           Inf
## ar2...207       ARIMA(5,0,5)       ar2  0.0141577972 0.0294179613   0.481263711
## ar3...208       ARIMA(5,0,5)       ar3  0.1385008341 0.0815977783   1.697360356
## ar4...209       ARIMA(5,0,5)       ar4  0.6278721193 0.1071052018   5.862200048
## ar5...210       ARIMA(5,0,5)       ar5 -0.5393780943 0.0937913309  -5.750831009
## ma1...211       ARIMA(5,0,5)       ma1 -0.2918858456 0.0000000000          -Inf
## ma2...212       ARIMA(5,0,5)       ma2 -0.0148485099 0.0119473278  -1.242831041
## ma3...213       ARIMA(5,0,5)       ma3 -0.1782000013 0.0713053232  -2.499112176
## ma4...214       ARIMA(5,0,5)       ma4 -0.6758727229 0.0934964458  -7.228860061
## ma5...215       ARIMA(5,0,5)       ma5  0.5513928843 0.0000000000           Inf
## intercept...216 ARIMA(5,0,5) intercept  0.0005527249 0.0005200082   1.062915720
##                       P_value       Signifikan
## intercept...1    3.683054e-01 Tidak signifikan
## ma1...2          7.607016e-01 Tidak signifikan
## intercept...3    3.730247e-01 Tidak signifikan
## ma1...4          7.323085e-01 Tidak signifikan
## ma2...5          6.658235e-01 Tidak signifikan
## intercept...6    3.806291e-01 Tidak signifikan
## ma1...7          8.429834e-01 Tidak signifikan
## ma2...8          7.060282e-01 Tidak signifikan
## ma3...9          2.010390e-01 Tidak signifikan
## intercept...10   3.567238e-01 Tidak signifikan
## ma1...11         8.222710e-01 Tidak signifikan
## ma2...12         6.940797e-01 Tidak signifikan
## ma3...13         1.529175e-01 Tidak signifikan
## ma4...14         1.223083e-01 Tidak signifikan
## intercept...15   3.264781e-01 Tidak signifikan
## ma1...16         8.095050e-01 Tidak signifikan
## ma2...17         7.052185e-01 Tidak signifikan
## ma3...18         1.483259e-01 Tidak signifikan
## ma4...19         1.323424e-01 Tidak signifikan
## ma5...20         7.516836e-01 Tidak signifikan
## intercept...21   3.210364e-01 Tidak signifikan
## ar1...22         7.577654e-01 Tidak signifikan
## intercept...23   3.732003e-01 Tidak signifikan
## ar1...24         9.964502e-01 Tidak signifikan
## ma1...25         9.966750e-01 Tidak signifikan
## intercept...26   3.730925e-01 Tidak signifikan
## ar1...27         6.695517e-01 Tidak signifikan
## ma1...28         6.579036e-01 Tidak signifikan
## ma2...29         4.712786e-01 Tidak signifikan
## intercept...30   3.771949e-01 Tidak signifikan
## ar1...31         2.505147e-03       Signifikan
## ma1...32         2.867502e-03       Signifikan
## ma2...33         8.379406e-01 Tidak signifikan
## ma3...34         9.917568e-02 Tidak signifikan
## intercept...35   2.945591e-01 Tidak signifikan
## ar1...36         6.860625e-01 Tidak signifikan
## ma1...37         6.916279e-01 Tidak signifikan
## ma2...38         8.132239e-01 Tidak signifikan
## ma3...39         1.586812e-01 Tidak signifikan
## ma4...40         7.691549e-01 Tidak signifikan
## intercept...41   3.078924e-01 Tidak signifikan
## ar1...42         0.000000e+00       Signifikan
## ma1...43         0.000000e+00       Signifikan
## ma2...44         6.956948e-01 Tidak signifikan
## ma3...45         1.201075e-01 Tidak signifikan
## ma4...46         0.000000e+00       Signifikan
## ma5...47         0.000000e+00       Signifikan
## intercept...48   3.209413e-01 Tidak signifikan
## ar1...49         7.605645e-01 Tidak signifikan
## ar2...50         7.035477e-01 Tidak signifikan
## intercept...51   3.791979e-01 Tidak signifikan
## ar1...52         7.043354e-01 Tidak signifikan
## ar2...53         5.122304e-01 Tidak signifikan
## ma1...54         6.941263e-01 Tidak signifikan
## intercept...55   3.744523e-01 Tidak signifikan
## ar1...56         2.018282e-17       Signifikan
## ar2...57        9.025449e-114       Signifikan
## ma1...58         2.477586e-40       Signifikan
## ma2...59        7.175699e-211       Signifikan
## intercept...60   3.775209e-01 Tidak signifikan
## ar1...61         9.989411e-02 Tidak signifikan
## ar2...62         8.708022e-01 Tidak signifikan
## ma1...63         1.023286e-01 Tidak signifikan
## ma2...64         8.544895e-01 Tidak signifikan
## ma3...65         1.239841e-01 Tidak signifikan
## intercept...66   2.918700e-01 Tidak signifikan
## ar1...67         8.552670e-01 Tidak signifikan
## ar2...68         8.238715e-01 Tidak signifikan
## ma1...69         8.597393e-01 Tidak signifikan
## ma2...70         8.315770e-01 Tidak signifikan
## ma3...71         1.605996e-01 Tidak signifikan
## ma4...72         6.337783e-01 Tidak signifikan
## intercept...73   2.954930e-01 Tidak signifikan
## ar1...74         5.558610e-01 Tidak signifikan
## ar2...75         5.042839e-02 Tidak signifikan
## ma1...76         5.421190e-01 Tidak signifikan
## ma2...77         5.885911e-02 Tidak signifikan
## ma3...78         2.378022e-01 Tidak signifikan
## ma4...79         1.134225e-01 Tidak signifikan
## ma5...80         8.838793e-01 Tidak signifikan
## intercept...81   2.947597e-01 Tidak signifikan
## ar1...82         7.462465e-01 Tidak signifikan
## ar2...83         6.922123e-01 Tidak signifikan
## ar3...84         1.850284e-01 Tidak signifikan
## intercept...85   3.579719e-01 Tidak signifikan
## ar1...86         6.133921e-04       Signifikan
## ar2...87         8.884688e-01 Tidak signifikan
## ar3...88         1.177635e-01 Tidak signifikan
## ma1...89         6.492097e-04       Signifikan
## intercept...90   2.991406e-01 Tidak signifikan
## ar1...91         1.322782e-01 Tidak signifikan
## ar2...92         9.839872e-01 Tidak signifikan
## ar3...93         1.314546e-01 Tidak signifikan
## ma1...94         1.366535e-01 Tidak signifikan
## ma2...95         9.726865e-01 Tidak signifikan
## intercept...96   3.000071e-01 Tidak signifikan
## ar1...97         6.148107e-02 Tidak signifikan
## ar2...98         1.565547e-04       Signifikan
## ar3...99         0.000000e+00       Signifikan
## ma1...100        4.283879e-02       Signifikan
## ma2...101        2.693660e-05       Signifikan
## ma3...102        0.000000e+00       Signifikan
## intercept...103  3.132947e-01 Tidak signifikan
## ar1...104        0.000000e+00       Signifikan
## ar2...105        0.000000e+00       Signifikan
## ar3...106        1.583297e-21       Signifikan
## ma1...107        0.000000e+00       Signifikan
## ma2...108        0.000000e+00       Signifikan
## ma3...109        1.267049e-05       Signifikan
## ma4...110        0.000000e+00       Signifikan
## intercept...111  2.896526e-01 Tidak signifikan
## ar1...112        7.639622e-01 Tidak signifikan
## ar2...113        3.129877e-02       Signifikan
## ar3...114        1.301373e-02       Signifikan
## ma1...115        7.853035e-01 Tidak signifikan
## ma2...116        2.688344e-02       Signifikan
## ma3...117        7.693986e-03       Signifikan
## ma4...118        2.238567e-01 Tidak signifikan
## ma5...119        4.930117e-01 Tidak signifikan
## intercept...120  2.906458e-01 Tidak signifikan
## ar1...121        7.921143e-01 Tidak signifikan
## ar2...122        6.772773e-01 Tidak signifikan
## ar3...123        1.899823e-01 Tidak signifikan
## ar4...124        1.702033e-01 Tidak signifikan
## intercept...125  3.358980e-01 Tidak signifikan
## ar1...126        1.286258e-01 Tidak signifikan
## ar2...127        8.710950e-01 Tidak signifikan
## ar3...128        1.971700e-01 Tidak signifikan
## ar4...129        8.575168e-01 Tidak signifikan
## ma1...130        1.323694e-01 Tidak signifikan
## intercept...131  2.992049e-01 Tidak signifikan
## ar1...132        0.000000e+00       Signifikan
## ar2...133        0.000000e+00       Signifikan
## ar3...134        1.420641e-01 Tidak signifikan
## ar4...135        0.000000e+00       Signifikan
## ma1...136        0.000000e+00       Signifikan
## ma2...137        0.000000e+00       Signifikan
## intercept...138  2.964790e-01 Tidak signifikan
## ar1...139        3.535056e-05       Signifikan
## ar2...140        5.032124e-27       Signifikan
## ar3...141        5.141932e-08       Signifikan
## ar4...142        4.833642e-01 Tidak signifikan
## ma1...143        2.954892e-05       Signifikan
## ma2...144        1.433694e-48       Signifikan
## ma3...145        3.442390e-09       Signifikan
## intercept...146  2.938411e-01 Tidak signifikan
## ar1...147        8.869505e-02 Tidak signifikan
## ar2...148        4.457497e-01 Tidak signifikan
## ar3...149        3.622416e-01 Tidak signifikan
## ar4...150        1.376862e-06       Signifikan
## ma1...151        5.560512e-02 Tidak signifikan
## ma2...152        3.963956e-01 Tidak signifikan
## ma3...153        2.432646e-01 Tidak signifikan
## ma4...154        1.142014e-08       Signifikan
## intercept...155  2.481199e-01 Tidak signifikan
## ar1...156        7.338300e-02 Tidak signifikan
## ar2...157        2.868381e-01 Tidak signifikan
## ar3...158        6.318969e-01 Tidak signifikan
## ar4...159        6.292147e-06       Signifikan
## ma1...160        6.816606e-02 Tidak signifikan
## ma2...161        2.622771e-01 Tidak signifikan
## ma3...162        4.897112e-01 Tidak signifikan
## ma4...163        1.073108e-07       Signifikan
## ma5...164        7.103676e-01 Tidak signifikan
## intercept...165  2.906602e-01 Tidak signifikan
## ar1...166        8.061148e-01 Tidak signifikan
## ar2...167        6.896214e-01 Tidak signifikan
## ar3...168        1.920741e-01 Tidak signifikan
## ar4...169        1.712334e-01 Tidak signifikan
## ar5...170        7.140789e-01 Tidak signifikan
## intercept...171  3.301855e-01 Tidak signifikan
## ar1...172        0.000000e+00       Signifikan
## ar2...173        6.752992e-01 Tidak signifikan
## ar3...174        1.400060e-01 Tidak signifikan
## ar4...175        0.000000e+00       Signifikan
## ar5...176        0.000000e+00       Signifikan
## ma1...177        0.000000e+00       Signifikan
## intercept...178  3.301454e-01 Tidak signifikan
## ar1...179        6.188664e-01 Tidak signifikan
## ar2...180        1.548811e-03       Signifikan
## ar3...181        2.363760e-01 Tidak signifikan
## ar4...182        1.073838e-01 Tidak signifikan
## ar5...183        6.799772e-01 Tidak signifikan
## ma1...184        5.919859e-01 Tidak signifikan
## ma2...185        1.886013e-03       Signifikan
## intercept...186  2.939626e-01 Tidak signifikan
## ar1...187        3.074864e-01 Tidak signifikan
## ar2...188        0.000000e+00       Signifikan
## ar3...189        1.278232e-07       Signifikan
## ar4...190        2.503714e-02       Signifikan
## ar5...191        4.397475e-01 Tidak signifikan
## ma1...192        3.219112e-01 Tidak signifikan
## ma2...193        0.000000e+00       Signifikan
## ma3...194        1.602848e-13       Signifikan
## intercept...195  2.908342e-01 Tidak signifikan
## ar1...196        5.301551e-02 Tidak signifikan
## ar2...197        2.622099e-01 Tidak signifikan
## ar3...198        6.783061e-01 Tidak signifikan
## ar4...199        1.067901e-05       Signifikan
## ar5...200        6.670880e-01 Tidak signifikan
## ma1...201        4.253349e-02       Signifikan
## ma2...202        2.409632e-01 Tidak signifikan
## ma3...203        5.324327e-01 Tidak signifikan
## ma4...204        2.380438e-07       Signifikan
## intercept...205  2.875226e-01 Tidak signifikan
## ar1...206        0.000000e+00       Signifikan
## ar2...207        6.303291e-01 Tidak signifikan
## ar3...208        8.962855e-02 Tidak signifikan
## ar4...209        4.567742e-09       Signifikan
## ar5...210        8.880585e-09       Signifikan
## ma1...211        0.000000e+00       Signifikan
## ma2...212        2.139301e-01 Tidak signifikan
## ma3...213        1.245049e-02       Signifikan
## ma4...214        4.870650e-13       Signifikan
## ma5...215        0.000000e+00       Signifikan
## intercept...216  2.878202e-01 Tidak signifikan
# ============================================================
# 4. MODEL DENGAN PARAMETER AR/MA YANG SIGNIFIKAN
# ============================================================

tabel_signifikansi <- tabel_parameter |>
  filter(grepl("^(ar|ma)", Parameter)) |>
  group_by(Model) |>
  summarise(
    Semua_AR_MA_Signifikan = all(P_value < 0.05),
    P_value_Maksimum = max(P_value, na.rm = TRUE),
    .groups = "drop"
  )

tabel_kandidat <- tabel_model |>
  left_join(tabel_signifikansi, by = "Model") |>
  arrange(AIC)

print(tabel_kandidat)
##           Model   LogLik       AIC       BIC Semua_AR_MA_Signifikan
## 1  ARIMA(0,0,0) 2322.705 -4641.410 -4631.814                     NA
## 2  ARIMA(2,0,2) 2326.534 -4641.068 -4612.281                   TRUE
## 3  ARIMA(1,0,0) 2322.753 -4639.505 -4625.112                  FALSE
## 4  ARIMA(0,0,1) 2322.752 -4639.503 -4625.109                  FALSE
## 5  ARIMA(1,0,3) 2324.937 -4637.875 -4609.087                  FALSE
## 6  ARIMA(3,0,1) 2324.914 -4637.828 -4609.040                  FALSE
## 7  ARIMA(0,0,4) 2324.851 -4637.701 -4608.914                  FALSE
## 8  ARIMA(0,0,2) 2322.845 -4637.690 -4618.498                  FALSE
## 9  ARIMA(2,0,0) 2322.825 -4637.650 -4618.459                  FALSE
## 10 ARIMA(1,0,1) 2322.752 -4637.504 -4618.313                  FALSE
## 11 ARIMA(3,0,0) 2323.703 -4637.406 -4613.416                  FALSE
## 12 ARIMA(4,0,3) 2327.682 -4637.363 -4594.182                  FALSE
## 13 ARIMA(0,0,3) 2323.658 -4637.315 -4613.326                  FALSE
## 14 ARIMA(4,0,0) 2324.643 -4637.286 -4608.498                  FALSE
## 15 ARIMA(3,0,3) 2326.258 -4636.516 -4598.133                  FALSE
## 16 ARIMA(1,0,2) 2322.983 -4635.966 -4611.976                  FALSE
## 17 ARIMA(1,0,4) 2324.974 -4635.948 -4602.362                  FALSE
## 18 ARIMA(2,0,3) 2324.964 -4635.928 -4602.342                  FALSE
## 19 ARIMA(2,0,1) 2322.955 -4635.909 -4611.920                  FALSE
## 20 ARIMA(3,0,2) 2324.913 -4635.826 -4602.240                  FALSE
## 21 ARIMA(4,0,1) 2324.911 -4635.823 -4602.237                  FALSE
## 22 ARIMA(0,0,5) 2324.901 -4635.802 -4602.216                  FALSE
## 23 ARIMA(4,0,4) 2327.791 -4635.583 -4587.603                  FALSE
## 24 ARIMA(5,0,0) 2324.710 -4635.420 -4601.834                  FALSE
## 25 ARIMA(3,0,4) 2326.460 -4634.920 -4591.738                   TRUE
## 26 ARIMA(2,0,4) 2325.036 -4634.073 -4595.689                  FALSE
## 27 ARIMA(4,0,2) 2324.951 -4633.902 -4595.518                  FALSE
## 28 ARIMA(5,0,4) 2327.924 -4633.849 -4581.071                  FALSE
## 29 ARIMA(4,0,5) 2327.913 -4633.826 -4581.049                  FALSE
## 30 ARIMA(1,0,5) 2324.901 -4633.801 -4595.418                  FALSE
## 31 ARIMA(5,0,1) 2324.710 -4633.420 -4595.037                  FALSE
## 32 ARIMA(3,0,5) 2326.703 -4633.405 -4585.426                  FALSE
## 33 ARIMA(5,0,2) 2325.688 -4633.376 -4590.194                  FALSE
## 34 ARIMA(5,0,3) 2326.680 -4633.361 -4585.381                  FALSE
## 35 ARIMA(2,0,5) 2325.666 -4633.332 -4590.151                  FALSE
## 36 ARIMA(5,0,5) 2328.282 -4632.563 -4574.988                  FALSE
##    P_value_Maksimum
## 1                NA
## 2      2.018282e-17
## 3      7.577654e-01
## 4      7.607016e-01
## 5      8.379406e-01
## 6      8.884688e-01
## 7      8.222710e-01
## 8      7.323085e-01
## 9      7.605645e-01
## 10     9.966750e-01
## 11     7.462465e-01
## 12     4.833642e-01
## 13     8.429834e-01
## 14     7.921143e-01
## 15     6.148107e-02
## 16     6.695517e-01
## 17     8.132239e-01
## 18     8.708022e-01
## 19     7.043354e-01
## 20     9.839872e-01
## 21     8.710950e-01
## 22     8.095050e-01
## 23     4.457497e-01
## 24     8.061148e-01
## 25     1.267049e-05
## 26     8.597393e-01
## 27     1.420641e-01
## 28     6.783061e-01
## 29     7.103676e-01
## 30     6.956948e-01
## 31     6.752992e-01
## 32     7.853035e-01
## 33     6.799772e-01
## 34     4.397475e-01
## 35     8.838793e-01
## 36     6.303291e-01
# ============================================================
# 5. MODEL TERBAIK BERDASARKAN AIC
# ============================================================

model_terbaik_aic <- hasil_model[[
  tabel_model$Model[1]
]]

summary(model_terbaik_aic)
## Series: x 
## ARIMA(0,0,0) with non-zero mean 
## 
## Coefficients:
##        mean
##       5e-04
## s.e.  6e-04
## 
## sigma^2 = 0.0003284:  log likelihood = 2322.71
## AIC=-4641.41   AICc=-4641.4   BIC=-4631.81
## 
## Training set error measures:
##                        ME       RMSE        MAE  MPE MAPE      MASE       ACF1
## Training set 8.638257e-19 0.01811086 0.01263426 -Inf  Inf 0.7063611 0.01030677
arimaorder(model_terbaik_aic)
## p d q 
## 0 0 0

Model ARIMA(0,0,0) dengan zero mean menunjukkan bahwa tidak ditemukan struktur AR maupun MA yang diperlukan untuk menjelaskan dinamika rata-rata return.

Dengan kata lain, berdasarkan prosedur auto.arima, return tidak memiliki struktur autoregresif/Moving Average yang kuat pada bagian mean equation.

Oleh karena itu, model mean yang digunakan sangat sederhana.

RESIDUAL MODEL MEAN

model_000_mean <- Arima(
  return_train,
  order = c(0, 0, 0),
  include.mean = TRUE,
  method = "ML"
)

model_000_no_mean <- Arima(
  return_train,
  order = c(0, 0, 0),
  include.mean = FALSE,
  method = "ML"
)

summary(model_000_mean)
## Series: return_train 
## ARIMA(0,0,0) with non-zero mean 
## 
## Coefficients:
##        mean
##       5e-04
## s.e.  6e-04
## 
## sigma^2 = 0.0003284:  log likelihood = 2322.71
## AIC=-4641.41   AICc=-4641.4   BIC=-4631.81
## 
## Training set error measures:
##                        ME       RMSE        MAE  MPE MAPE      MASE       ACF1
## Training set 8.638257e-19 0.01811086 0.01263426 -Inf  Inf 0.7063611 0.01030677
summary(model_000_no_mean)
## Series: return_train 
## ARIMA(0,0,0) with zero mean 
## 
## sigma^2 = 0.0003283:  log likelihood = 2322.3
## AIC=-4642.6   AICc=-4642.59   BIC=-4637.8
## 
## Training set error measures:
##                       ME       RMSE        MAE MPE MAPE      MASE       ACF1
## Training set 0.000545156 0.01811906 0.01266665 100  100 0.7081714 0.01030677
AIC(model_000_mean, model_000_no_mean)
##                   df       AIC
## model_000_mean     2 -4641.410
## model_000_no_mean  1 -4642.599
BIC(model_000_mean, model_000_no_mean)
##                   df       BIC
## model_000_mean     2 -4631.814
## model_000_no_mean  1 -4637.801
resid_arma <- residuals(model_000_mean)
resid_arma <- na.omit(resid_arma)

# Plot residual
plot(
  resid_arma,
  type = "l",
  main = "Residual Model Mean",
  xlab = "Observasi",
  ylab = "Residual"
)

Residual merupakan bagian return yang belum dijelaskan oleh model mean. Residual inilah yang kemudian diperiksa apakah memiliki pola volatilitas yang berubah-ubah. Jika residual mengandung ARCH effect, maka model mean saja belum cukup dan perlu model volatilitas seperti GARCH/EGARCH.

GARCH Modelling

UJI ARCH-LM

arch_test <- ArchTest(resid_arma,lags = 12)
arch_test
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  resid_arma
## Chi-squared = 114.33, df = 12, p-value < 2.2e-16

Karena nilai < 2,2 ^-16 jauh lebih kecil dari tingkat signifikansi alpha = 0,05 (5%), maka keputusan ujinya adalah Tolak H0. Kesimpulan Akhir:Data residual dari model ARMA (resid_arma) terbukti secara signifikan mengandung efek ARCH (heteroskedastisitas). Residual memiliki efek ARCH yang signifikan. Artinya varians/volatilitas return tidak konstan dari waktu ke waktu. Ini merupakan alasan statistik yang kuat untuk melanjutkan ke model GARCH-family.

PLOT ACF DAN PACF RESIDUAL KUADRAT

resid_kuadrat <- resid_arma^2
par(mfrow = c(1, 2))
acf(resid_kuadrat,main = "ACF Residual Kuadrat")

pacf(resid_kuadrat,main = "PACF Residual Kuadrat")

par(mfrow = c(1, 1))

Pengkuadratan residual digunakan untuk melihat ketergantungan pada varians/volatilitas. Jika residual kuadrat memiliki autokorelasi, berarti volatilitas pada suatu periode berkaitan dengan volatilitas periode sebelumnya. Hal tersebut merupakan karakteristik yang ingin ditangkap oleh GARCH/EGARCH.

MODEL GARCH(1,1)

# Spesifikasi sGARCH(1,1) dengan zero mean
spec_garch <- ugarchspec(

  variance.model = list(
    model = "sGARCH",
    garchOrder = c(1, 1)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL GARCH(1,1)

fit_garch <- ugarchfit(
  spec = spec_garch,
  data = return_train
)

show(fit_garch)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000008    0.000004   2.0665 0.038781
## alpha1  0.067679    0.005361  12.6233 0.000000
## beta1   0.910403    0.014199  64.1175 0.000000
## shape   4.405383    0.560846   7.8549 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000008    0.000007   1.1114 0.266393
## alpha1  0.067679    0.019511   3.4688 0.000523
## beta1   0.910403    0.016568  54.9505 0.000000
## shape   4.405383    0.700408   6.2897 0.000000
## 
## LogLikelihood : 2434.999 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4263
## Bayes        -5.4049
## Shibata      -5.4264
## Hannan-Quinn -5.4182
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.592  0.2070
## Lag[2*(p+q)+(p+q)-1][2]     1.598  0.3392
## Lag[4*(p+q)+(p+q)-1][5]     2.224  0.5664
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      3.580 0.05849
## Lag[2*(p+q)+(p+q)-1][5]     7.639 0.03620
## Lag[4*(p+q)+(p+q)-1][9]    11.418 0.02454
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3] 7.009e-05 0.500 2.000 0.99332
## ARCH Lag[5] 7.149e+00 1.440 1.667 0.03210
## ARCH Lag[7] 9.056e+00 2.315 1.543 0.03036
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.7514
## Individual Statistics:             
## omega  0.7134
## alpha1 0.6932
## beta1  0.6374
## shape  1.1215
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.07 1.24 1.6
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value    prob sig
## Sign Bias           0.4855 0.62743    
## Negative Sign Bias  1.8474 0.06503   *
## Positive Sign Bias  0.8493 0.39594    
## Joint Effect        6.3767 0.09466   *
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     19.13      0.44828
## 2    30     31.66      0.33516
## 3    40     51.14      0.09219
## 4    50     46.63      0.56957
## 
## 
## Elapsed time : 0.144248

MODEL GARCH(1,2)

library(rugarch)

# Spesifikasi sGARCH(1,2) dengan zero mean
spec_garch12 <- ugarchspec(

  variance.model = list(
    model = "sGARCH",
    garchOrder = c(1, 2)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL GARCH(1,2)

fit_garch12 <- ugarchfit(
  spec = spec_garch12,
  data = return_train
)

show(fit_garch12)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,2)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000012    0.000003   4.5641 0.000005
## alpha1  0.100788    0.002724  37.0040 0.000000
## beta1   0.372561    0.206500   1.8042 0.071204
## beta2   0.492820    0.199067   2.4757 0.013299
## shape   4.499273    0.617270   7.2890 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000012    0.000004   3.2114 0.001321
## alpha1  0.100788    0.015908   6.3356 0.000000
## beta1   0.372561    0.148955   2.5012 0.012378
## beta2   0.492820    0.153324   3.2142 0.001308
## shape   4.499273    0.590363   7.6212 0.000000
## 
## LogLikelihood : 2436.213 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4268
## Bayes        -5.4000
## Shibata      -5.4269
## Hannan-Quinn -5.4166
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.234  0.2667
## Lag[2*(p+q)+(p+q)-1][2]     1.236  0.4275
## Lag[4*(p+q)+(p+q)-1][5]     1.889  0.6448
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       1.395 0.23749
## Lag[2*(p+q)+(p+q)-1][8]      8.766 0.06509
## Lag[4*(p+q)+(p+q)-1][14]    12.108 0.08844
## d.o.f=3
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale  P-Value
## ARCH Lag[4]     9.714 0.500 2.000 0.001829
## ARCH Lag[6]    10.156 1.461 1.711 0.007277
## ARCH Lag[8]    12.148 2.368 1.583 0.007375
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  7.0805
## Individual Statistics:             
## omega  1.6525
## alpha1 0.6829
## beta1  0.6645
## beta2  0.6682
## shape  1.1218
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.28 1.47 1.88
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.5516 0.5814    
## Negative Sign Bias  1.3902 0.1648    
## Positive Sign Bias  0.5050 0.6137    
## Joint Effect        4.3638 0.2248    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     26.37       0.1203
## 2    30     35.41       0.1915
## 3    40     49.09       0.1291
## 4    50     49.76       0.4429
## 
## 
## Elapsed time : 0.1388559

MODEL GARCH(2,1)

# Spesifikasi sGARCH(2,1) dengan zero mean
spec_garch21 <- ugarchspec(

  variance.model = list(
    model = "sGARCH",
    garchOrder = c(2, 1)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL GARCH(2,1)

fit_garch21 <- ugarchfit(
  spec = spec_garch21,
  data = return_train
)

show(fit_garch21)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(2,1)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000008    0.000003   2.3488 0.018835
## alpha1  0.067516    0.035836   1.8840 0.059563
## alpha2  0.000000    0.035869   0.0000 1.000000
## beta1   0.910501    0.015565  58.4966 0.000000
## shape   4.413175    0.561473   7.8600 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000008    0.000006   1.2945 0.195497
## alpha1  0.067516    0.031605   2.1363 0.032657
## alpha2  0.000000    0.035956   0.0000 1.000000
## beta1   0.910501    0.014089  64.6235 0.000000
## shape   4.413175    0.702315   6.2838 0.000000
## 
## LogLikelihood : 2435.089 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4243
## Bayes        -5.3975
## Shibata      -5.4244
## Hannan-Quinn -5.4141
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.608  0.2048
## Lag[2*(p+q)+(p+q)-1][2]     1.614  0.3358
## Lag[4*(p+q)+(p+q)-1][5]     2.244  0.5620
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                        3.59 0.05811
## Lag[2*(p+q)+(p+q)-1][8]      10.71 0.02402
## Lag[4*(p+q)+(p+q)-1][14]     14.01 0.03910
## d.o.f=3
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale  P-Value
## ARCH Lag[4]     8.784 0.500 2.000 0.003039
## ARCH Lag[6]     9.291 1.461 1.711 0.011646
## ARCH Lag[8]    11.403 2.368 1.583 0.010943
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.8776
## Individual Statistics:             
## omega  0.6965
## alpha1 0.6824
## alpha2 0.7127
## beta1  0.6270
## shape  1.1190
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.28 1.47 1.88
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value    prob sig
## Sign Bias           0.4847 0.62804    
## Negative Sign Bias  1.8512 0.06447   *
## Positive Sign Bias  0.8472 0.39709    
## Joint Effect        6.3963 0.09385   *
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     19.13      0.44828
## 2    30     32.12      0.31441
## 3    40     51.14      0.09219
## 4    50     46.30      0.58328
## 
## 
## Elapsed time : 0.1199729

MODEL GARCH(2,2)

# Spesifikasi sGARCH(2,2) dengan zero mean
spec_garch22 <- ugarchspec(

  variance.model = list(
    model = "sGARCH",
    garchOrder = c(2, 2)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL GARCH(2,2)

fit_garch22 <- ugarchfit(
  spec = spec_garch22,
  data = return_train
)

show(fit_garch22)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(2,2)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000012    0.000001 7.830916 0.000000
## alpha1  0.100784    0.045472 2.216404 0.026664
## alpha2  0.000000    0.042263 0.000006 0.999995
## beta1   0.372560    0.243228 1.531731 0.125589
## beta2   0.492832    0.231231 2.131339 0.033061
## shape   4.499064    0.638177 7.049866 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000012    0.000002 5.633927 0.000000
## alpha1  0.100784    0.048422 2.081384 0.037399
## alpha2  0.000000    0.050820 0.000005 0.999996
## beta1   0.372560    0.258182 1.443017 0.149016
## beta2   0.492832    0.252476 1.951996 0.050939
## shape   4.499064    0.599523 7.504407 0.000000
## 
## LogLikelihood : 2436.213 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4246
## Bayes        -5.3925
## Shibata      -5.4247
## Hannan-Quinn -5.4123
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.234  0.2667
## Lag[2*(p+q)+(p+q)-1][2]     1.236  0.4275
## Lag[4*(p+q)+(p+q)-1][5]     1.889  0.6448
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       1.396 0.23742
## Lag[2*(p+q)+(p+q)-1][11]    10.827 0.06543
## Lag[4*(p+q)+(p+q)-1][19]    14.062 0.13634
## d.o.f=4
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[5]    0.2088 0.500 2.000  0.6477
## ARCH Lag[7]    2.2743 1.473 1.746  0.4467
## ARCH Lag[9]    3.0658 2.402 1.619  0.5533
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  13.9791
## Individual Statistics:             
## omega  1.6516
## alpha1 0.6827
## alpha2 0.7854
## beta1  0.6642
## beta2  0.6679
## shape  1.1217
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.49 1.68 2.12
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.5516 0.5814    
## Negative Sign Bias  1.3904 0.1648    
## Positive Sign Bias  0.5051 0.6136    
## Joint Effect        4.3643 0.2247    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     26.37       0.1203
## 2    30     35.41       0.1915
## 3    40     49.09       0.1291
## 4    50     49.76       0.4429
## 
## 
## Elapsed time : 0.154659

PERBANDINGAN MODEL GARCH

model_comparison <- data.frame(
  Model = c(
    "GARCH(1,1)",
    "GARCH(1,2)",
    "GARCH(2,1)",
    "GARCH(2,2)"
  ),
  
  LogLikelihood = c(
    likelihood(fit_garch),
    likelihood(fit_garch12),
    likelihood(fit_garch21),
    likelihood(fit_garch22)
  ),
  
  AIC = c(
    infocriteria(fit_garch)[1],
    infocriteria(fit_garch12)[1],
    infocriteria(fit_garch21)[1],
    infocriteria(fit_garch22)[1]
  ),
  
  BIC = c(
    infocriteria(fit_garch)[2],
    infocriteria(fit_garch12)[2],
    infocriteria(fit_garch21)[2],
    infocriteria(fit_garch22)[2]
  ),
  
  HQIC = c(
    infocriteria(fit_garch)[3],
    infocriteria(fit_garch12)[3],
    infocriteria(fit_garch21)[3],
    infocriteria(fit_garch22)[3]
  )
)

model_comparison
##        Model LogLikelihood       AIC       BIC      HQIC
## 1 GARCH(1,1)      2434.999 -5.426338 -5.404918 -5.426377
## 2 GARCH(1,2)      2436.213 -5.426816 -5.400042 -5.426878
## 3 GARCH(2,1)      2435.089 -5.424305 -5.397531 -5.424367
## 4 GARCH(2,2)      2436.213 -5.424584 -5.392455 -5.424672

Kriteria Model terbaik Nilai LogLikelihood GARCH(2,2) 2438,951 AIC GARCH(2,2) -5,428463 BIC GARCH(1,1) -5,404918 HQIC GARCH(2,2) -5,428583

Jadi, berdasarkan tabel, GARCH(2,2) unggul pada tiga dari empat kriteria, sedangkan BIC memilih GARCH(1,1) karena memberikan penalti lebih besar terhadap kompleksitas model.

DIAGNOSTIC CHECKING GARCH(2,2)

show(fit_garch22)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(2,2)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000012    0.000001 7.830916 0.000000
## alpha1  0.100784    0.045472 2.216404 0.026664
## alpha2  0.000000    0.042263 0.000006 0.999995
## beta1   0.372560    0.243228 1.531731 0.125589
## beta2   0.492832    0.231231 2.131339 0.033061
## shape   4.499064    0.638177 7.049866 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   0.000012    0.000002 5.633927 0.000000
## alpha1  0.100784    0.048422 2.081384 0.037399
## alpha2  0.000000    0.050820 0.000005 0.999996
## beta1   0.372560    0.258182 1.443017 0.149016
## beta2   0.492832    0.252476 1.951996 0.050939
## shape   4.499064    0.599523 7.504407 0.000000
## 
## LogLikelihood : 2436.213 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4246
## Bayes        -5.3925
## Shibata      -5.4247
## Hannan-Quinn -5.4123
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.234  0.2667
## Lag[2*(p+q)+(p+q)-1][2]     1.236  0.4275
## Lag[4*(p+q)+(p+q)-1][5]     1.889  0.6448
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       1.396 0.23742
## Lag[2*(p+q)+(p+q)-1][11]    10.827 0.06543
## Lag[4*(p+q)+(p+q)-1][19]    14.062 0.13634
## d.o.f=4
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[5]    0.2088 0.500 2.000  0.6477
## ARCH Lag[7]    2.2743 1.473 1.746  0.4467
## ARCH Lag[9]    3.0658 2.402 1.619  0.5533
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  13.9791
## Individual Statistics:             
## omega  1.6516
## alpha1 0.6827
## alpha2 0.7854
## beta1  0.6642
## beta2  0.6679
## shape  1.1217
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.49 1.68 2.12
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.5516 0.5814    
## Negative Sign Bias  1.3904 0.1648    
## Positive Sign Bias  0.5051 0.6136    
## Joint Effect        4.3643 0.2247    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     26.37       0.1203
## 2    30     35.41       0.1915
## 3    40     49.09       0.1291
## 4    50     49.76       0.4429
## 
## 
## Elapsed time : 0.154659
residual_garch <- residuals(fit_garch22, standardize = TRUE)

Box.test(
  residual_garch,
  lag = 10,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  residual_garch
## X-squared = 5.7358, df = 10, p-value = 0.8369
Box.test(
  residual_garch^2,
  lag = 10,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  residual_garch^2
## X-squared = 16.672, df = 10, p-value = 0.08195

UJI LEVERAGE / ASIMETRI. SIGN BIAS TEST ENGLE-NG

signbias_garch <- signbias(fit_garch22)
signbias_garch
##                      t-value      prob sig
## Sign Bias          0.5515660 0.5813840    
## Negative Sign Bias 1.3904104 0.1647515    
## Positive Sign Bias 0.5050885 0.6136216    
## Joint Effect       4.3643453 0.2247143

Hasil menunjukkan bahwa residual standar tidak memiliki serial correlation yang signifikan berdasarkan Ljung-Box pada beberapa lag, tetapi residual kuadrat masih menunjukkan beberapa p-value di bawah 0,05, dan ARCH LM pada lag 5 dan 7 juga signifikan.

Ini menunjukkan bahwa GARCH(2,2) belum sepenuhnya menghilangkan seluruh dinamika volatilitas.

Selain itu, Sign Bias Test menunjukkan:

\[ p_{\text{Negative Sign Bias}}=0.08892109 \]

yang signifikan.

Artinya terdapat indikasi bahwa shock negatif memberikan pola pengaruh yang berbeda terhadap volatilitas yang belum sepenuhnya ditangkap oleh GARCH standar.

Temuan ini menjadi motivasi untuk mencoba EGARCH, karena EGARCH secara eksplisit memungkinkan adanya efek asimetris/leverage.

EGARCH Modelling

SPESIFIKASI MODEL EGARCH(1,1)

# Spesifikasi EGARCH(1,1) dengan zero mean
spec_egarch <- ugarchspec(

  variance.model = list(
    model = "eGARCH",
    garchOrder = c(1, 1)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL EGARCH(1,1)

fit_egarch <- ugarchfit(
  spec = spec_egarch,
  data = return_train
)

show(fit_egarch)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(1,1)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   -0.25883    0.012785 -20.2443    0e+00
## alpha1  -0.10446    0.022668  -4.6080    4e-06
## beta1    0.96811    0.001629 594.1566    0e+00
## gamma1   0.12312    0.027190   4.5284    6e-06
## shape    4.79965    0.750080   6.3989    0e+00
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   -0.25883    0.017449 -14.8340 0.000000
## alpha1  -0.10446    0.026962  -3.8742 0.000107
## beta1    0.96811    0.002133 453.7995 0.000000
## gamma1   0.12312    0.024298   5.0672 0.000000
## shape    4.79965    0.659135   7.2818 0.000000
## 
## LogLikelihood : 2444.223 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4447
## Bayes        -5.4179
## Shibata      -5.4448
## Hannan-Quinn -5.4345
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      2.058  0.1514
## Lag[2*(p+q)+(p+q)-1][2]     2.058  0.2533
## Lag[4*(p+q)+(p+q)-1][5]     2.291  0.5514
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      5.938 0.01482
## Lag[2*(p+q)+(p+q)-1][5]     7.936 0.03056
## Lag[4*(p+q)+(p+q)-1][9]    10.040 0.04919
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.3321 0.500 2.000  0.5644
## ARCH Lag[5]    2.9793 1.440 1.667  0.2928
## ARCH Lag[7]    4.3901 2.315 1.543  0.2938
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.4589
## Individual Statistics:              
## omega  0.25027
## alpha1 0.19960
## beta1  0.21523
## gamma1 0.06103
## shape  0.91502
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.28 1.47 1.88
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.7052 0.4809    
## Negative Sign Bias  1.1687 0.2428    
## Positive Sign Bias  1.6226 0.1050    
## Joint Effect        4.6427 0.1999    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     27.30      0.09778
## 2    30     36.68      0.15463
## 3    40     46.59      0.18846
## 4    50     59.58      0.14308
## 
## 
## Elapsed time : 0.2098789
# Spesifikasi EGARCH(1,2) dengan zero mean
spec_egarch12 <- ugarchspec(

  variance.model = list(
    model = "eGARCH",
    garchOrder = c(1, 2)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL EGARCH(1,2)

fit_egarch12 <- ugarchfit(
  spec = spec_egarch12,
  data = return_train
)

show(fit_egarch12)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(1,2)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   -0.33489    0.133197  -2.5143 0.011928
## alpha1  -0.13652    0.023759  -5.7460 0.000000
## beta1    0.61016    0.005008 121.8279 0.000000
## beta2    0.34862    0.007835  44.4959 0.000000
## gamma1   0.16931    0.043915   3.8555 0.000116
## shape    4.86141    0.788835   6.1628 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## omega   -0.33489    0.130790  -2.5605 0.010451
## alpha1  -0.13652    0.035473  -3.8485 0.000119
## beta1    0.61016    0.006911  88.2924 0.000000
## beta2    0.34862    0.008998  38.7454 0.000000
## gamma1   0.16931    0.047289   3.5804 0.000343
## shape    4.86141    0.693911   7.0058 0.000000
## 
## LogLikelihood : 2445.182 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4446
## Bayes        -5.4125
## Shibata      -5.4447
## Hannan-Quinn -5.4323
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.686  0.1942
## Lag[2*(p+q)+(p+q)-1][2]     1.690  0.3199
## Lag[4*(p+q)+(p+q)-1][5]     1.920  0.6374
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       3.481 0.06209
## Lag[2*(p+q)+(p+q)-1][8]      7.581 0.11557
## Lag[4*(p+q)+(p+q)-1][14]     9.993 0.19975
## d.o.f=3
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[4]     4.084 0.500 2.000  0.0433
## ARCH Lag[6]     4.282 1.461 1.711  0.1634
## ARCH Lag[8]     6.151 2.368 1.583  0.1494
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.5884
## Individual Statistics:              
## omega  0.23033
## alpha1 0.16171
## beta1  0.19736
## beta2  0.19734
## gamma1 0.09559
## shape  0.89825
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.49 1.68 2.12
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.7302 0.4654    
## Negative Sign Bias  0.6310 0.5282    
## Positive Sign Bias  1.6003 0.1099    
## Joint Effect        3.1654 0.3668    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     26.37       0.1203
## 2    30     31.19       0.3566
## 3    40     38.55       0.4901
## 4    50     53.33       0.3113
## 
## 
## Elapsed time : 0.2524428
# Spesifikasi EGARCH(2,1) dengan zero mean
spec_egarch21 <- ugarchspec(

  variance.model = list(
    model = "eGARCH",
    garchOrder = c(2, 1)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL EGARCH(2,1)

fit_egarch21 <- ugarchfit(
  spec = spec_egarch21,
  data = return_train
)

show(fit_egarch21)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(2,1)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error    t value Pr(>|t|)
## omega  -0.199520    0.002239  -89.12450 0.000000
## alpha1 -0.126711    0.058362   -2.17112 0.029922
## alpha2  0.034267    0.054974    0.62335 0.533058
## beta1   0.975467    0.000386 2530.28595 0.000000
## gamma1  0.294354    0.087081    3.38024 0.000724
## gamma2 -0.197133    0.082654   -2.38504 0.017077
## shape   5.050635    0.827734    6.10176 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error    t value Pr(>|t|)
## omega  -0.199520    0.005233  -38.12996 0.000000
## alpha1 -0.126711    0.068289   -1.85553 0.063521
## alpha2  0.034267    0.062942    0.54443 0.586144
## beta1   0.975467    0.000404 2413.96004 0.000000
## gamma1  0.294354    0.085053    3.46084 0.000538
## gamma2 -0.197133    0.081416   -2.42130 0.015465
## shape   5.050635    0.708388    7.12976 0.000000
## 
## LogLikelihood : 2446.83 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4460
## Bayes        -5.4086
## Shibata      -5.4462
## Hannan-Quinn -5.4317
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.9219  0.3370
## Lag[2*(p+q)+(p+q)-1][2]    0.9254  0.5231
## Lag[4*(p+q)+(p+q)-1][5]    1.2001  0.8130
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                      0.2253  0.6350
## Lag[2*(p+q)+(p+q)-1][8]     5.6222  0.2753
## Lag[4*(p+q)+(p+q)-1][14]    8.0388  0.3797
## d.o.f=3
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale  P-Value
## ARCH Lag[4]     6.804 0.500 2.000 0.009095
## ARCH Lag[6]     6.857 1.461 1.711 0.042965
## ARCH Lag[8]     8.383 2.368 1.583 0.051425
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.7935
## Individual Statistics:              
## omega  0.21491
## alpha1 0.18096
## alpha2 0.20083
## beta1  0.18459
## gamma1 0.05101
## gamma2 0.07602
## shape  0.89285
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.69 1.9 2.35
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias          0.63826 0.5235    
## Negative Sign Bias 0.08044 0.9359    
## Positive Sign Bias 0.64512 0.5190    
## Joint Effect       0.71071 0.8707    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     21.10       0.3314
## 2    30     24.56       0.7010
## 3    40     29.98       0.8497
## 4    50     38.60       0.8571
## 
## 
## Elapsed time : 0.2741592
# Spesifikasi EGARCH(2,2) dengan zero mean
spec_egarch22 <- ugarchspec(

  variance.model = list(
    model = "eGARCH",
    garchOrder = c(2, 2)
  ),

  mean.model = list(
    armaOrder = c(0, 0),
    include.mean = FALSE
  ),

  distribution.model = "std"
)

ESTIMASI MODEL EGARCH(2,2)

fit_egarch22 <- ugarchfit(
  spec = spec_egarch22,
  data = return_train
)

show(fit_egarch22)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(2,2)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error   t value Pr(>|t|)
## omega  -0.223614    0.097631  -2.29039 0.021999
## alpha1 -0.122012    0.059035  -2.06676 0.038757
## alpha2  0.019773    0.055628   0.35545 0.722249
## beta1   0.881747    0.001057 834.27797 0.000000
## beta2   0.090760    0.012249   7.40991 0.000000
## gamma1  0.293988    0.083047   3.54001 0.000400
## gamma2 -0.185629    0.086062  -2.15693 0.031011
## shape   5.059581    0.820247   6.16837 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error   t value Pr(>|t|)
## omega  -0.223614    0.115510  -1.93589 0.052881
## alpha1 -0.122012    0.068912  -1.77054 0.076637
## alpha2  0.019773    0.064800   0.30514 0.760261
## beta1   0.881747    0.001266 696.74211 0.000000
## beta2   0.090760    0.013912   6.52369 0.000000
## gamma1  0.293988    0.079393   3.70294 0.000213
## gamma2 -0.185629    0.086357  -2.14955 0.031591
## shape   5.059581    0.716373   7.06277 0.000000
## 
## LogLikelihood : 2446.873 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.4439
## Bayes        -5.4011
## Shibata      -5.4441
## Hannan-Quinn -5.4275
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.9508  0.3295
## Lag[2*(p+q)+(p+q)-1][2]    0.9538  0.5135
## Lag[4*(p+q)+(p+q)-1][5]    1.2394  0.8035
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                      0.2192  0.6397
## Lag[2*(p+q)+(p+q)-1][11]    6.8011  0.3353
## Lag[4*(p+q)+(p+q)-1][19]    9.4397  0.5120
## d.o.f=4
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[5] 0.0004656 0.500 2.000  0.9828
## ARCH Lag[7] 1.5764552 1.473 1.746  0.6035
## ARCH Lag[9] 1.9930660 2.402 1.619  0.7599
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.8562
## Individual Statistics:              
## omega  0.22079
## alpha1 0.17770
## alpha2 0.20440
## beta1  0.18967
## beta2  0.18961
## gamma1 0.05615
## gamma2 0.07285
## shape  0.88761
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.89 2.11 2.59
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.6437 0.5199    
## Negative Sign Bias  0.1203 0.9042    
## Positive Sign Bias  0.6170 0.5374    
## Joint Effect        0.7457 0.8624    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     20.47       0.3666
## 2    30     22.42       0.8026
## 3    40     28.55       0.8909
## 4    50     35.58       0.9242
## 
## 
## Elapsed time : 0.4055669

PERBANDINGAN MODEL GARCH

model_comparison_e <- data.frame(
  Model = c(
    "EGARCH(1,1)",
    "EGARCH(1,2)",
    "EGARCH(2,1)",
    "EGARCH(2,2)"
  ),
  
  LogLikelihood = c(
    likelihood(fit_egarch),
    likelihood(fit_egarch12),
    likelihood(fit_egarch21),
    likelihood(fit_egarch22)
  ),
  
  AIC = c(
    infocriteria(fit_egarch)[1],
    infocriteria(fit_egarch12)[1],
    infocriteria(fit_egarch21)[1],
    infocriteria(fit_egarch22)[1]
  ),
  
  BIC = c(
    infocriteria(fit_egarch)[2],
    infocriteria(fit_egarch12)[2],
    infocriteria(fit_egarch21)[2],
    infocriteria(fit_egarch22)[2]
  ),
  
  HQIC = c(
    infocriteria(fit_egarch)[3],
    infocriteria(fit_egarch12)[3],
    infocriteria(fit_egarch21)[3],
    infocriteria(fit_egarch22)[3]
  )
)

model_comparison_e
##         Model LogLikelihood       AIC       BIC      HQIC
## 1 EGARCH(1,1)      2444.223 -5.444695 -5.417921 -5.444757
## 2 EGARCH(1,2)      2445.182 -5.444603 -5.412474 -5.444692
## 3 EGARCH(2,1)      2446.830 -5.446050 -5.408566 -5.446170
## 4 EGARCH(2,2)      2446.873 -5.443913 -5.401074 -5.444071

Kriteria Model terbaik Nilai LogLikelihood EGARCH(2,2) 2446,873 AIC EGARCH(2,1) -5,446050 BIC EGARCH(2,1) -5,408566 HQIC EGARCH(2,1) -5,446170 Dengan demikian, EGARCH(2,1) menjadi model yang paling unggul berdasarkan tiga dari empat kriteria, yaitu AIC, BIC, dan HQIC. Sementara itu, EGARCH(2,2) memiliki LogLikelihood tertinggi.

PARAMETER ASIMETRI EGARCH

egarch_coef <- fit_egarch21@fit$matcoef

gamma_result <- egarch_coef[
  grep("^gamma", rownames(egarch_coef)),
  ,
  drop = FALSE
]

gamma_result
##          Estimate  Std. Error   t value    Pr(>|t|)
## gamma1  0.2943544  0.08708081  3.380244 0.000724216
## gamma2 -0.1971327  0.08265373 -2.385043 0.017077120

Berdasarkan hasil estimasi model EGARCH(2,1), parameter asimetris \(\gamma_1\) sebesar 0,2943544 memiliki p-value sebesar 0,000724, sedangkan parameter \(\gamma_2\) sebesar -0,1971327 memiliki p-value sebesar 0,017077. Pada taraf signifikansi 5%, kedua parameter tersebut signifikan secara statistik. Hasil ini menunjukkan adanya komponen asimetris yang signifikan dalam dinamika volatilitas return saham AAPL. Koefisien gamma yang memiliki tanda berbeda menunjukkan bahwa arah pengaruh asimetris bervariasi menurut lag inovasi.

EGARCH Diagnostics

Residual terstandarisasi

std_resid_egarch <- residuals(
  fit_egarch21,
  standardize = TRUE
)

std_resid_egarch <- as.numeric(
  na.omit(std_resid_egarch)
)

Plot residual terstandarisasi

plot(
  std_resid_egarch,
  type = "l",
  main = "Residual Terstandarisasi EGARCH",
  xlab = "Observasi",
  ylab = "Residual Terstandarisasi"
)

ACF residual terstandarisasi

acf(
  std_resid_egarch,
  main = "ACF Residual Terstandarisasi EGARCH"
)

ACF residual kuadrat

acf(
  std_resid_egarch^2,
  main = "ACF Kuadrat Residual Terstandarisasi EGARCH"
)

### UJI LJUNG-BOX RESIDUAL

ljung_box_residual <- Box.test(
  std_resid_egarch,
  lag = 10,
  type = "Ljung-Box"
)

ljung_box_residual
## 
##  Box-Ljung test
## 
## data:  std_resid_egarch
## X-squared = 5.4485, df = 10, p-value = 0.8593

Residual terstandarisasi tidak menunjukkan autokorelasi yang signifikan. Ini mendukung bahwa model sudah cukup baik dalam menangkap dinamika mean.

UJI LJUNG-BOX RESIDUAL KUADRAT

ljung_box_squared <- Box.test(
  std_resid_egarch^2,
  lag = 10,
  type = "Ljung-Box"
)

ljung_box_squared
## 
##  Box-Ljung test
## 
## data:  std_resid_egarch^2
## X-squared = 11.236, df = 10, p-value = 0.3394

Dinamika volatilitas yang tersisa tidak menunjukkan autokorelasi yang signifikan berdasarkan uji ini.

UJI ARCH-LM PADA RESIDUAL EGARCH

arch_test_egarch <- ArchTest(
  std_resid_egarch,
  lags = 12
)

arch_test_egarch
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  std_resid_egarch
## Chi-squared = 11.468, df = 12, p-value = 0.4893

Tidak terdapat bukti yang cukup bahwa residual terstandarisasi masih mengandung efek ARCH.

SIGN BIAS TEST PADA MODEL EGARCH

signbias_egarch <- signbias(fit_egarch21)
signbias_egarch
##                       t-value      prob sig
## Sign Bias          0.63826036 0.5234682    
## Negative Sign Bias 0.08043541 0.9359090    
## Positive Sign Bias 0.64512356 0.5190132    
## Joint Effect       0.71071358 0.8706812

Artinya tidak terdapat bukti statistik bahwa residual EGARCH masih mengandung efek sign bias yang signifikan.

JARQUE-BERA RESIDUAL

jarque_bera_egarch <- jarque.bera.test(
  std_resid_egarch
)

jarque_bera_egarch
## 
##  Jarque Bera Test
## 
## data:  std_resid_egarch
## X-squared = 234.62, df = 2, p-value < 2.2e-16

Forecasting

FORECAST RETURN DAN VOLATILITAS

n_forecast <- nrow(test)

#PERAMALAN RETURN MENGGUNAKAN MODEL MEAN
#ARIMA(0,0,0) TANPA KONSTANTA (ZERO MEAN)
forecast_mean <- forecast(
  model_000_mean,
  h = n_forecast
)

# Mengambil hasil ramalan return
return_forecast <- as.numeric(
  forecast_mean$mean
)

return_forecast
##   [1] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##   [7] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [13] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [19] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [25] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [31] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [37] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [43] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [49] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [55] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [61] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [67] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [73] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [79] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [85] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [91] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
##  [97] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [103] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [109] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [115] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [121] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [127] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [133] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [139] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [145] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [151] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [157] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [163] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [169] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [175] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [181] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [187] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [193] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [199] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [205] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [211] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [217] 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156 0.000545156
## [223] 0.000545156 0.000545156 0.000545156

Hal ini terjadi karena model mean yang diperoleh adalah ARIMA(0,0,0). Jadi, ketika melakukan forecast multi-step, prediksi return cenderung menuju nilai mean model.

Ini bukan berarti model memprediksi return aktual akan selalu sama; melainkan nilai ekspektasi return bersyarat untuk horizon tersebut konstan.

forecast_egarch <- ugarchforecast(
  fit_egarch21,
  n.ahead = n_forecast
)

# Mengambil hasil ramalan volatilitas
vol_forecast <- as.numeric(
  sigma(forecast_egarch)
)

vol_forecast
##   [1] 0.01124388 0.01218449 0.01228692 0.01238768 0.01248675 0.01258416
##   [7] 0.01267991 0.01277402 0.01286649 0.01295733 0.01304657 0.01313420
##  [13] 0.01322026 0.01330474 0.01338768 0.01346908 0.01354895 0.01362733
##  [19] 0.01370422 0.01377963 0.01385360 0.01392614 0.01399726 0.01406699
##  [25] 0.01413535 0.01420234 0.01426800 0.01433234 0.01439538 0.01445714
##  [31] 0.01451764 0.01457690 0.01463494 0.01469178 0.01474744 0.01480194
##  [37] 0.01485529 0.01490752 0.01495864 0.01500868 0.01505765 0.01510558
##  [43] 0.01515247 0.01519836 0.01524325 0.01528717 0.01533014 0.01537217
##  [49] 0.01541327 0.01545348 0.01549280 0.01553125 0.01556885 0.01560561
##  [55] 0.01564156 0.01567670 0.01571106 0.01574465 0.01577748 0.01580958
##  [61] 0.01584094 0.01587160 0.01590157 0.01593085 0.01595947 0.01598744
##  [67] 0.01601476 0.01604146 0.01606755 0.01609304 0.01611794 0.01614227
##  [73] 0.01616604 0.01618926 0.01621194 0.01623409 0.01625573 0.01627687
##  [79] 0.01629752 0.01631768 0.01633737 0.01635661 0.01637539 0.01639373
##  [85] 0.01641165 0.01642914 0.01644622 0.01646290 0.01647919 0.01649509
##  [91] 0.01651062 0.01652578 0.01654058 0.01655503 0.01656914 0.01658291
##  [97] 0.01659636 0.01660949 0.01662230 0.01663481 0.01664703 0.01665895
## [103] 0.01667059 0.01668195 0.01669304 0.01670386 0.01671443 0.01672474
## [109] 0.01673481 0.01674463 0.01675422 0.01676358 0.01677271 0.01678163
## [115] 0.01679033 0.01679882 0.01680711 0.01681520 0.01682309 0.01683079
## [121] 0.01683831 0.01684565 0.01685281 0.01685980 0.01686662 0.01687327
## [127] 0.01687976 0.01688610 0.01689228 0.01689832 0.01690420 0.01690995
## [133] 0.01691555 0.01692103 0.01692636 0.01693157 0.01693665 0.01694161
## [139] 0.01694645 0.01695117 0.01695578 0.01696028 0.01696466 0.01696894
## [145] 0.01697312 0.01697719 0.01698117 0.01698504 0.01698883 0.01699252
## [151] 0.01699612 0.01699964 0.01700307 0.01700641 0.01700968 0.01701286
## [157] 0.01701597 0.01701900 0.01702196 0.01702484 0.01702766 0.01703041
## [163] 0.01703309 0.01703570 0.01703825 0.01704074 0.01704317 0.01704554
## [169] 0.01704785 0.01705010 0.01705230 0.01705445 0.01705654 0.01705858
## [175] 0.01706057 0.01706252 0.01706441 0.01706626 0.01706807 0.01706983
## [181] 0.01707155 0.01707322 0.01707486 0.01707645 0.01707801 0.01707952
## [187] 0.01708100 0.01708245 0.01708386 0.01708523 0.01708657 0.01708788
## [193] 0.01708916 0.01709040 0.01709162 0.01709280 0.01709396 0.01709508
## [199] 0.01709618 0.01709726 0.01709830 0.01709933 0.01710032 0.01710129
## [205] 0.01710224 0.01710317 0.01710407 0.01710495 0.01710581 0.01710664
## [211] 0.01710746 0.01710826 0.01710904 0.01710979 0.01711053 0.01711126
## [217] 0.01711196 0.01711265 0.01711332 0.01711397 0.01711461 0.01711523
## [223] 0.01711584 0.01711643 0.01711701

Model memperkirakan volatilitas akan meningkat secara bertahap ketika horizon forecasting semakin jauh.

Hal ini menunjukkan adanya proses mean reversion menuju tingkat volatilitas jangka panjang yang dihasilkan model.

KONVERSI FORECAST RETURN MENJADI FORECAST HARGA

# Harga aktual terakhir pada data training
harga_terakhir <- tail(train$Close, 1)

# Mengubah ramalan log return menjadi harga saham
harga_forecast <- harga_terakhir * exp(
  cumsum(return_forecast)
)

harga_forecast
##   [1] 270.2873 270.4347 270.5822 270.7297 270.8774 271.0251 271.1729 271.3207
##   [9] 271.4687 271.6167 271.7648 271.9130 272.0613 272.2097 272.3581 272.5066
##  [17] 272.6552 272.8039 272.9527 273.1015 273.2504 273.3994 273.5485 273.6977
##  [25] 273.8469 273.9963 274.1457 274.2952 274.4447 274.5944 274.7441 274.8940
##  [33] 275.0439 275.1938 275.3439 275.4940 275.6443 275.7946 275.9450 276.0954
##  [41] 276.2460 276.3966 276.5474 276.6982 276.8491 277.0000 277.1511 277.3022
##  [49] 277.4534 277.6047 277.7561 277.9076 278.0591 278.2107 278.3624 278.5142
##  [57] 278.6661 278.8181 278.9701 279.1222 279.2744 279.4267 279.5791 279.7315
##  [65] 279.8841 280.0367 280.1894 280.3422 280.4951 280.6480 280.8011 280.9542
##  [73] 281.1074 281.2607 281.4141 281.5675 281.7211 281.8747 282.0284 282.1822
##  [81] 282.3361 282.4900 282.6441 282.7982 282.9524 283.1067 283.2611 283.4155
##  [89] 283.5701 283.7247 283.8794 284.0342 284.1891 284.3441 284.4991 284.6543
##  [97] 284.8095 284.9648 285.1202 285.2757 285.4312 285.5869 285.7426 285.8984
## [105] 286.0543 286.2103 286.3664 286.5226 286.6788 286.8351 286.9915 287.1480
## [113] 287.3046 287.4613 287.6180 287.7749 287.9318 288.0888 288.2459 288.4031
## [121] 288.5604 288.7177 288.8751 289.0327 289.1903 289.3480 289.5058 289.6636
## [129] 289.8216 289.9796 290.1378 290.2960 290.4543 290.6127 290.7711 290.9297
## [137] 291.0883 291.2471 291.4059 291.5648 291.7238 291.8829 292.0420 292.2013
## [145] 292.3606 292.5200 292.6796 292.8392 292.9988 293.1586 293.3185 293.4784
## [153] 293.6385 293.7986 293.9588 294.1191 294.2795 294.4399 294.6005 294.7611
## [161] 294.9219 295.0827 295.2436 295.4046 295.5657 295.7269 295.8881 296.0495
## [169] 296.2109 296.3724 296.5341 296.6958 296.8575 297.0194 297.1814 297.3434
## [177] 297.5056 297.6678 297.8301 297.9925 298.1550 298.3176 298.4803 298.6431
## [185] 298.8059 298.9689 299.1319 299.2950 299.4582 299.6215 299.7849 299.9484
## [193] 300.1119 300.2756 300.4393 300.6032 300.7671 300.9311 301.0952 301.2594
## [201] 301.4237 301.5880 301.7525 301.9170 302.0817 302.2464 302.4112 302.5761
## [209] 302.7411 302.9062 303.0714 303.2366 303.4020 303.5674 303.7330 303.8986
## [217] 304.0643 304.2301 304.3960 304.5620 304.7281 304.8943 305.0605 305.2269
## [225] 305.3933

Karena model memprediksi log return, hasil tersebut harus dikonversi kembali ke skala harga agar dapat dibandingkan dengan harga aktual.

HASIL FORECAST

hasil_forecast <- data.frame(
  Date = test$Date,
  Actual = test$Close,
  Return_Forecast = return_forecast,
  Volatility = vol_forecast,
  Forecast = harga_forecast
)

# Menampilkan tabel hasil
print(hasil_forecast)
##           Date Actual Return_Forecast Volatility Forecast
## 1   2025-11-06 269.77     0.000545156 0.01124388 270.2873
## 2   2025-11-07 268.47     0.000545156 0.01218449 270.4347
## 3   2025-11-10 269.43     0.000545156 0.01228692 270.5822
## 4   2025-11-11 275.25     0.000545156 0.01238768 270.7297
## 5   2025-11-12 273.47     0.000545156 0.01248675 270.8774
## 6   2025-11-13 272.95     0.000545156 0.01258416 271.0251
## 7   2025-11-14 272.41     0.000545156 0.01267991 271.1729
## 8   2025-11-17 267.46     0.000545156 0.01277402 271.3207
## 9   2025-11-18 267.44     0.000545156 0.01286649 271.4687
## 10  2025-11-19 268.56     0.000545156 0.01295733 271.6167
## 11  2025-11-20 266.25     0.000545156 0.01304657 271.7648
## 12  2025-11-21 271.49     0.000545156 0.01313420 271.9130
## 13  2025-11-24 275.92     0.000545156 0.01322026 272.0613
## 14  2025-11-25 276.97     0.000545156 0.01330474 272.2097
## 15  2025-11-26 277.55     0.000545156 0.01338768 272.3581
## 16  2025-11-28 278.85     0.000545156 0.01346908 272.5066
## 17  2025-12-01 283.10     0.000545156 0.01354895 272.6552
## 18  2025-12-02 286.19     0.000545156 0.01362733 272.8039
## 19  2025-12-03 284.15     0.000545156 0.01370422 272.9527
## 20  2025-12-04 280.70     0.000545156 0.01377963 273.1015
## 21  2025-12-05 278.78     0.000545156 0.01385360 273.2504
## 22  2025-12-08 277.89     0.000545156 0.01392614 273.3994
## 23  2025-12-09 277.18     0.000545156 0.01399726 273.5485
## 24  2025-12-10 278.78     0.000545156 0.01406699 273.6977
## 25  2025-12-11 278.03     0.000545156 0.01413535 273.8469
## 26  2025-12-12 278.28     0.000545156 0.01420234 273.9963
## 27  2025-12-15 274.11     0.000545156 0.01426800 274.1457
## 28  2025-12-16 274.61     0.000545156 0.01433234 274.2952
## 29  2025-12-17 271.84     0.000545156 0.01439538 274.4447
## 30  2025-12-18 272.19     0.000545156 0.01445714 274.5944
## 31  2025-12-19 273.67     0.000545156 0.01451764 274.7441
## 32  2025-12-22 270.97     0.000545156 0.01457690 274.8940
## 33  2025-12-23 272.36     0.000545156 0.01463494 275.0439
## 34  2025-12-24 273.81     0.000545156 0.01469178 275.1938
## 35  2025-12-26 273.40     0.000545156 0.01474744 275.3439
## 36  2025-12-29 273.76     0.000545156 0.01480194 275.4940
## 37  2025-12-30 273.08     0.000545156 0.01485529 275.6443
## 38  2025-12-31 271.86     0.000545156 0.01490752 275.7946
## 39  2026-01-02 271.01     0.000545156 0.01495864 275.9450
## 40  2026-01-05 267.26     0.000545156 0.01500868 276.0954
## 41  2026-01-06 262.36     0.000545156 0.01505765 276.2460
## 42  2026-01-07 260.33     0.000545156 0.01510558 276.3966
## 43  2026-01-08 259.04     0.000545156 0.01515247 276.5474
## 44  2026-01-09 259.37     0.000545156 0.01519836 276.6982
## 45  2026-01-12 260.25     0.000545156 0.01524325 276.8491
## 46  2026-01-13 261.05     0.000545156 0.01528717 277.0000
## 47  2026-01-14 259.96     0.000545156 0.01533014 277.1511
## 48  2026-01-15 258.21     0.000545156 0.01537217 277.3022
## 49  2026-01-16 255.53     0.000545156 0.01541327 277.4534
## 50  2026-01-20 246.70     0.000545156 0.01545348 277.6047
## 51  2026-01-21 247.65     0.000545156 0.01549280 277.7561
## 52  2026-01-22 248.35     0.000545156 0.01553125 277.9076
## 53  2026-01-23 248.04     0.000545156 0.01556885 278.0591
## 54  2026-01-26 255.41     0.000545156 0.01560561 278.2107
## 55  2026-01-27 258.27     0.000545156 0.01564156 278.3624
## 56  2026-01-28 256.44     0.000545156 0.01567670 278.5142
## 57  2026-01-29 258.28     0.000545156 0.01571106 278.6661
## 58  2026-01-30 259.48     0.000545156 0.01574465 278.8181
## 59  2026-02-02 270.01     0.000545156 0.01577748 278.9701
## 60  2026-02-03 269.48     0.000545156 0.01580958 279.1222
## 61  2026-02-04 276.49     0.000545156 0.01584094 279.2744
## 62  2026-02-05 275.91     0.000545156 0.01587160 279.4267
## 63  2026-02-06 278.12     0.000545156 0.01590157 279.5791
## 64  2026-02-09 274.62     0.000545156 0.01593085 279.7315
## 65  2026-02-10 273.68     0.000545156 0.01595947 279.8841
## 66  2026-02-11 275.50     0.000545156 0.01598744 280.0367
## 67  2026-02-12 261.73     0.000545156 0.01601476 280.1894
## 68  2026-02-13 255.78     0.000545156 0.01604146 280.3422
## 69  2026-02-17 263.88     0.000545156 0.01606755 280.4951
## 70  2026-02-18 264.35     0.000545156 0.01609304 280.6480
## 71  2026-02-19 260.58     0.000545156 0.01611794 280.8011
## 72  2026-02-20 264.58     0.000545156 0.01614227 280.9542
## 73  2026-02-23 266.18     0.000545156 0.01616604 281.1074
## 74  2026-02-24 272.14     0.000545156 0.01618926 281.2607
## 75  2026-02-25 274.23     0.000545156 0.01621194 281.4141
## 76  2026-02-26 272.95     0.000545156 0.01623409 281.5675
## 77  2026-02-27 264.18     0.000545156 0.01625573 281.7211
## 78  2026-03-02 264.72     0.000545156 0.01627687 281.8747
## 79  2026-03-03 263.75     0.000545156 0.01629752 282.0284
## 80  2026-03-04 262.52     0.000545156 0.01631768 282.1822
## 81  2026-03-05 260.29     0.000545156 0.01633737 282.3361
## 82  2026-03-06 257.46     0.000545156 0.01635661 282.4900
## 83  2026-03-09 259.88     0.000545156 0.01637539 282.6441
## 84  2026-03-10 260.83     0.000545156 0.01639373 282.7982
## 85  2026-03-11 260.81     0.000545156 0.01641165 282.9524
## 86  2026-03-12 255.76     0.000545156 0.01642914 283.1067
## 87  2026-03-13 250.12     0.000545156 0.01644622 283.2611
## 88  2026-03-16 252.82     0.000545156 0.01646290 283.4155
## 89  2026-03-17 254.23     0.000545156 0.01647919 283.5701
## 90  2026-03-18 249.94     0.000545156 0.01649509 283.7247
## 91  2026-03-19 248.96     0.000545156 0.01651062 283.8794
## 92  2026-03-20 247.99     0.000545156 0.01652578 284.0342
## 93  2026-03-23 251.49     0.000545156 0.01654058 284.1891
## 94  2026-03-24 251.64     0.000545156 0.01655503 284.3441
## 95  2026-03-25 252.62     0.000545156 0.01656914 284.4991
## 96  2026-03-26 252.89     0.000545156 0.01658291 284.6543
## 97  2026-03-27 248.80     0.000545156 0.01659636 284.8095
## 98  2026-03-30 246.63     0.000545156 0.01660949 284.9648
## 99  2026-03-31 253.79     0.000545156 0.01662230 285.1202
## 100 2026-04-01 255.63     0.000545156 0.01663481 285.2757
## 101 2026-04-02 255.92     0.000545156 0.01664703 285.4312
## 102 2026-04-06 258.86     0.000545156 0.01665895 285.5869
## 103 2026-04-07 253.50     0.000545156 0.01667059 285.7426
## 104 2026-04-08 258.90     0.000545156 0.01668195 285.8984
## 105 2026-04-09 260.49     0.000545156 0.01669304 286.0543
## 106 2026-04-10 260.48     0.000545156 0.01670386 286.2103
## 107 2026-04-13 259.20     0.000545156 0.01671443 286.3664
## 108 2026-04-14 258.83     0.000545156 0.01672474 286.5226
## 109 2026-04-15 266.43     0.000545156 0.01673481 286.6788
## 110 2026-04-16 263.40     0.000545156 0.01674463 286.8351
## 111 2026-04-17 270.23     0.000545156 0.01675422 286.9915
## 112 2026-04-20 273.05     0.000545156 0.01676358 287.1480
## 113 2026-04-21 266.17     0.000545156 0.01677271 287.3046
## 114 2026-04-22 273.17     0.000545156 0.01678163 287.4613
## 115 2026-04-23 273.43     0.000545156 0.01679033 287.6180
## 116 2026-04-24 271.06     0.000545156 0.01679882 287.7749
## 117 2026-04-27 267.61     0.000545156 0.01680711 287.9318
## 118 2026-04-28 270.71     0.000545156 0.01681520 288.0888
## 119 2026-04-29 270.17     0.000545156 0.01682309 288.2459
## 120 2026-04-30 271.35     0.000545156 0.01683079 288.4031
## 121 2026-05-01 280.14     0.000545156 0.01683831 288.5604
## 122 2026-05-04 276.83     0.000545156 0.01684565 288.7177
## 123 2026-05-05 284.18     0.000545156 0.01685281 288.8751
## 124 2026-05-06 287.51     0.000545156 0.01685980 289.0327
## 125 2026-05-07 287.44     0.000545156 0.01686662 289.1903
## 126 2026-05-08 293.32     0.000545156 0.01687327 289.3480
## 127 2026-05-11 292.68     0.000545156 0.01687976 289.5058
## 128 2026-05-12 294.80     0.000545156 0.01688610 289.6636
## 129 2026-05-13 298.87     0.000545156 0.01689228 289.8216
## 130 2026-05-14 298.21     0.000545156 0.01689832 289.9796
## 131 2026-05-15 300.23     0.000545156 0.01690420 290.1378
## 132 2026-05-18 297.84     0.000545156 0.01690995 290.2960
## 133 2026-05-19 298.97     0.000545156 0.01691555 290.4543
## 134 2026-05-20 302.25     0.000545156 0.01692103 290.6127
## 135 2026-05-21 304.99     0.000545156 0.01692636 290.7711
## 136 2026-05-22 308.82     0.000545156 0.01693157 290.9297
## 137 2026-05-26 308.33     0.000545156 0.01693665 291.0883
## 138 2026-05-27 310.85     0.000545156 0.01694161 291.2471
## 139 2026-05-28 312.51     0.000545156 0.01694645 291.4059
## 140 2026-05-29 312.06     0.000545156 0.01695117 291.5648
## 141 2026-06-01 306.31     0.000545156 0.01695578 291.7238
## 142 2026-06-02 315.20     0.000545156 0.01696028 291.8829
## 143 2026-06-03 310.26     0.000545156 0.01696466 292.0420
## 144 2026-06-04 311.23     0.000545156 0.01696894 292.2013
## 145 2026-06-05 307.34     0.000545156 0.01697312 292.3606
## 146 2026-06-08 301.54     0.000545156 0.01697719 292.5200
## 147 2026-06-09 290.55     0.000545156 0.01698117 292.6796
## 148 2026-06-10 291.58     0.000545156 0.01698504 292.8392
## 149 2026-06-11 295.63     0.000545156 0.01698883 292.9988
## 150 2026-06-12 291.13     0.000545156 0.01699252 293.1586
## 151 2026-06-15 296.42     0.000545156 0.01699612 293.3185
## 152 2026-06-16 299.24     0.000545156 0.01699964 293.4784
## 153 2026-06-17 295.95     0.000545156 0.01700307 293.6385
## 154 2026-06-18 298.01     0.000545156 0.01700641 293.7986
## 155 2026-06-22 297.01     0.000545156 0.01700968 293.9588
## 156 2026-06-23 294.30     0.000545156 0.01701286 294.1191
## 157 2026-06-24 293.08     0.000545156 0.01701597 294.2795
## 158 2026-06-25 275.15     0.000545156 0.01701900 294.4399
## 159 2026-06-26 283.78     0.000545156 0.01702196 294.6005
## 160 2026-06-29 281.74     0.000545156 0.01702484 294.7611
## 161 2026-06-30 289.36     0.000545156 0.01702766 294.9219
## 162 2026-07-01 294.38     0.000545156 0.01703041 295.0827
## 163 2026-07-02 308.63     0.000545156 0.01703309 295.2436
## 164 2026-07-06 312.66     0.000545156 0.01703570 295.4046
## 165 2026-07-07 310.66     0.000545156 0.01703825 295.5657
## 166 2026-07-08 313.39     0.000545156 0.01704074 295.7269
## 167 2026-07-09 316.22     0.000545156 0.01704317 295.8881
## 168 2026-07-10 315.32     0.000545156 0.01704554 296.0495
## 169 2026-07-13 317.31     0.000545156 0.01704785 296.2109
## 170 2026-07-14 314.86     0.000545156 0.01705010 296.3724
## 171 2026-07-15 327.50     0.000545156 0.01705230 296.5341
## 172 2026-07-16 333.26     0.000545156 0.01705445 296.6958
## 173 2026-07-17 333.74     0.000545156 0.01705654 296.8575
## 174 2026-07-20 326.59     0.000545156 0.01705858 297.0194
## 175 2026-07-21 327.74     0.000545156 0.01706057 297.1814
## 176 2026-07-22 325.89     0.000545156 0.01706252 297.3434
## 177 2026-07-23 321.66     0.000545156 0.01706441 297.5056
## 178 2026-07-24 333.02     0.000545156 0.01706626 297.6678
## 179 2026-07-27 336.91     0.000545156 0.01706807 297.8301
## 180 2026-07-28 340.08     0.000545156 0.01706983 297.9925
## 181 2026-07-29 338.19     0.000545156 0.01707155 298.1550
## 182 2026-07-30 333.43     0.000545156 0.01707322 298.3176
## 183 2026-07-31 308.91     0.000545156 0.01707486 298.4803
## 184 2026-08-03 303.42     0.000545156 0.01707645 298.6431
## 185 2026-08-04 309.38     0.000545156 0.01707801 298.8059
## 186 2026-08-05 311.00     0.000545156 0.01707952 298.9689
## 187 2026-08-06 312.41     0.000545156 0.01708100 299.1319
## 188 2026-08-07 313.33     0.000545156 0.01708245 299.2950
## 189 2026-08-10 308.26     0.000545156 0.01708386 299.4582
## 190 2026-08-11 304.91     0.000545156 0.01708523 299.6215
## 191 2026-08-12 302.25     0.000545156 0.01708657 299.7849
## 192 2026-08-13 305.26     0.000545156 0.01708788 299.9484
## 193 2026-08-14 305.93     0.000545156 0.01708916 300.1119
## 194 2026-08-17 305.59     0.000545156 0.01709040 300.2756
## 195 2026-08-18 310.03     0.000545156 0.01709162 300.4393
## 196 2026-08-19 316.83     0.000545156 0.01709280 300.6032
## 197 2026-08-20 311.30     0.000545156 0.01709396 300.7671
## 198 2026-08-21 309.35     0.000545156 0.01709508 300.9311
## 199 2026-08-24 310.34     0.000545156 0.01709618 301.0952
## 200 2026-08-25 309.90     0.000545156 0.01709726 301.2594
## 201 2026-08-26 313.45     0.000545156 0.01709830 301.4237
## 202 2026-08-27 314.58     0.000545156 0.01709933 301.5880
## 203 2026-08-28 319.70     0.000545156 0.01710032 301.7525
## 204 2026-08-31 316.85     0.000545156 0.01710129 301.9170
## 205 2026-09-01 325.13     0.000545156 0.01710224 302.0817
## 206 2026-09-02 324.96     0.000545156 0.01710317 302.2464
## 207 2026-09-03 328.21     0.000545156 0.01710407 302.4112
## 208 2026-09-04 319.97     0.000545156 0.01710495 302.5761
## 209 2026-09-08 316.22     0.000545156 0.01710581 302.7411
## 210 2026-09-09 315.34     0.000545156 0.01710664 302.9062
## 211 2026-09-10 326.57     0.000545156 0.01710746 303.0714
## 212 2026-09-11 332.27     0.000545156 0.01710826 303.2366
## 213 2026-09-14 333.08     0.000545156 0.01710904 303.4020
## 214 2026-09-15 331.34     0.000545156 0.01710979 303.5674
## 215 2026-09-16 332.41     0.000545156 0.01711053 303.7330
## 216 2026-09-17 337.00     0.000545156 0.01711126 303.8986
## 217 2026-09-18 336.13     0.000545156 0.01711196 304.0643
## 218 2026-09-21 338.98     0.000545156 0.01711265 304.2301
## 219 2026-09-22 339.75     0.000545156 0.01711332 304.3960
## 220 2026-09-23 337.02     0.000545156 0.01711397 304.5620
## 221 2026-09-24 335.92     0.000545156 0.01711461 304.7281
## 222 2026-09-25 341.07     0.000545156 0.01711523 304.8943
## 223 2026-09-28 338.40     0.000545156 0.01711584 305.0605
## 224 2026-09-29 329.40     0.000545156 0.01711643 305.2269
## 225 2026-09-30 333.02     0.000545156 0.01711701 305.3933
head(hasil_forecast)
##         Date Actual Return_Forecast Volatility Forecast
## 1 2025-11-06 269.77     0.000545156 0.01124388 270.2873
## 2 2025-11-07 268.47     0.000545156 0.01218449 270.4347
## 3 2025-11-10 269.43     0.000545156 0.01228692 270.5822
## 4 2025-11-11 275.25     0.000545156 0.01238768 270.7297
## 5 2025-11-12 273.47     0.000545156 0.01248675 270.8774
## 6 2025-11-13 272.95     0.000545156 0.01258416 271.0251
tail(hasil_forecast)
##           Date Actual Return_Forecast Volatility Forecast
## 220 2026-09-23 337.02     0.000545156 0.01711397 304.5620
## 221 2026-09-24 335.92     0.000545156 0.01711461 304.7281
## 222 2026-09-25 341.07     0.000545156 0.01711523 304.8943
## 223 2026-09-28 338.40     0.000545156 0.01711584 305.0605
## 224 2026-09-29 329.40     0.000545156 0.01711643 305.2269
## 225 2026-09-30 333.02     0.000545156 0.01711701 305.3933

Tabel ini memungkinkan perbandingan langsung antara hasil prediksi dan kondisi aktual.

Contoh observasi pertama:

Aktual = 269,77 Forecast = 270,3401

Artinya forecast pada observasi pertama berada cukup dekat dengan harga aktual.

Namun pada akhir periode:

Aktual = 333,02 Forecast = 319,1135.

Terlihat bahwa semakin panjang horizon, perbedaan antara forecast dan aktual dapat semakin besar.

PLOT HARGA AKTUAL VS FORECAST

hasil_plot <- hasil_forecast %>%
  select(
    Date,
    Actual,
    Forecast
  ) %>%
  pivot_longer(
    cols = c(
      Actual,
      Forecast
    ),
    names_to = "Jenis",
    values_to = "Harga"
  )


ggplot(
  hasil_plot,
  aes(
    x = Date,
    y = Harga,
    linetype = Jenis
  )
) +
  geom_line(linewidth = 1) +
  labs(
    title = "Perbandingan Harga Aktual dan Hasil Peramalan Saham APPLE INC.",
    x = "Tanggal",
    y = "Harga Saham (USD)",
    linetype = ""
  ) +
  theme_minimal()

Grafik memberikan evaluasi visual mengenai kemampuan model mengikuti perubahan harga aktual.

Apabila garis forecast dekat dengan garis aktual, berarti error relatif kecil.

Sebaliknya, jarak yang semakin besar menunjukkan kesalahan prediksi yang semakin besar.

Model Evaluation

MAE <- mean(
  abs(
    hasil_forecast$Actual -
      hasil_forecast$Forecast
  ),
  na.rm = TRUE
)

MAE
## [1] 15.87803
RMSE <- sqrt(
  mean(
    (
      hasil_forecast$Actual -
        hasil_forecast$Forecast
    )^2,
    na.rm = TRUE
  )
)

RMSE
## [1] 19.30879
MAPE <- mean(
  abs(
    (
      hasil_forecast$Actual -
        hasil_forecast$Forecast
    ) /
      hasil_forecast$Actual
  ),
  na.rm = TRUE
) * 100

MAPE
## [1] 5.556202
SMAPE <- mean(
  2 *
    abs(
      hasil_forecast$Actual -
        hasil_forecast$Forecast
    ) /
    (
      abs(hasil_forecast$Actual) +
        abs(hasil_forecast$Forecast)
    ),
  na.rm = TRUE
) * 100

SMAPE
## [1] 5.508405
evaluasi <- data.frame(Model = "EGARCH(2,1)",MAE = MAE,RMSE = RMSE,MAPE = MAPE,SMAPE = SMAPE
)
evaluasi
##         Model      MAE     RMSE     MAPE    SMAPE
## 1 EGARCH(2,1) 15.87803 19.30879 5.556202 5.508405

MAE menunjukkan rata-rata nilai absolut kesalahan prediksi. Secara sederhana, hasil ini berarti: rata-rata selisih absolut antara harga aktual dan harga forecast sekitar 14,73 USD. MAE semakin kecil → kesalahan rata-rata semakin kecil.

RMSE memberikan bobot lebih besar terhadap kesalahan yang besar karena error dikuadratkan. Nilai 18,62 menunjukkan besarnya kesalahan prediksi setelah memperhitungkan error yang besar. Karena: \[ RMSE > MAE \] terdapat indikasi bahwa terdapat beberapa error yang relatif besar.

MAPE menunjukkan rata-rata persentase absolut kesalahan prediksi terhadap harga aktual. Hasilnya sekitar 5,34%. Artinya, secara rata-rata, kesalahan relatif forecast sekitar 5,34% dari harga aktual.

SMAPE merupakan ukuran error persentase yang menggunakan rata-rata nilai absolut aktual dan forecast sebagai penyebut. Nilai 5,17% menunjukkan tingkat kesalahan relatif yang diperoleh model berdasarkan formula SMAPE yang digunakan dalam penelitian.

Kesimpulan

Secara khusus, data return sudah stasioner dan residual model mean memiliki efek ARCH yang signifikan. GARCH kemudian menunjukkan adanya indikasi negative sign bias, sehingga model EGARCH digunakan untuk mengakomodasi kemungkinan asimetri tersebut.

EGARCH memiliki AIC dan BIC yang lebih rendah dibandingkan GARCH dalam hasil penelitian ini. Selain itu, diagnostik residual EGARCH menunjukkan tidak adanya autokorelasi residual yang signifikan, tidak adanya ARCH effect yang signifikan, dan tidak adanya sign bias yang signifikan.

Peramalan n-periode ke depan

n_forecast2 <- 7

forecast_mean2 <- forecast(
  model_000_mean,
  h = n_forecast2
)

# Mengambil hasil ramalan return
return_7 <- as.numeric(
  forecast_mean2$mean
)

#PERAMALAN VOLATILITAS MENGGUNAKAN EGARCH(2,1)

forecast_egarch2 <- ugarchforecast(
  fit_egarch21,
  n.ahead = n_forecast2
)

# Mengambil hasil ramalan volatilitas
vol_7 <- as.numeric(
  sigma(forecast_egarch2)
)

# Mengambil closing price terakhir
harga_terakhir <- as.numeric(
  tail(data_AAPL$Close, 1)
)


# MENGHITUNG RAMALAN HARGA DARI LOG RETURN
harga_7 <- harga_terakhir * exp(
  cumsum(return_7)
)

# MENENTUKAN 7 TANGGAL SETELAH TANGGAL TERAKHIR
#    (MENGABAIKAN AKHIR PEKAN)

tanggal_terakhir <- max(data_AAPL$Date)

tanggal_kandidat <- seq(
  from = tanggal_terakhir + 1,
  by = "day",
  length.out = 20
)

tanggal_kandidat <- tanggal_kandidat[
  !weekdays(tanggal_kandidat) %in%
    c("Saturday", "Sunday")
]

tanggal_7 <- tanggal_kandidat[1:7]


tabel_forecast_7 <- data.frame(
  Periode = 1:7,
  Tanggal = tanggal_7,
  Forecast_Return = return_7,
  Forecast_Volatilitas = vol_7,
  Forecast_Harga_USD = harga_7
)
print(tabel_forecast_7)
##   Periode    Tanggal Forecast_Return Forecast_Volatilitas Forecast_Harga_USD
## 1       1 2026-10-01     0.000545156           0.01124388           333.2016
## 2       2 2026-10-02     0.000545156           0.01218449           333.3833
## 3       3 2026-10-05     0.000545156           0.01228692           333.5651
## 4       4 2026-10-06     0.000545156           0.01238768           333.7470
## 5       5 2026-10-07     0.000545156           0.01248675           333.9290
## 6       6 2026-10-08     0.000545156           0.01258416           334.1111
## 7       7 2026-10-09     0.000545156           0.01267991           334.2933

Forecast return untuk 7 periode bernilai konstan:

\[ 0,0007404735 \]

Hal ini konsisten dengan model mean ARIMA(0,0,0).

Sementara itu, volatilitas diproyeksikan meningkat dari:

\[ 0,011995 \]

menjadi:

\[ 0,013028. \]

Jadi, model memperkirakan return ekspektasian yang relatif konstan, tetapi volatilitas meningkat secara bertahap selama horizon 12 hari.

Harga hasil forecast meningkat dari:

\[ 333,2667 \]

menjadi:

\[ 335,9923. \]

Kenaikan tersebut merupakan konsekuensi dari return forecast positif yang diaplikasikan secara kumulatif ke harga terakhir sebesar 333,02 USD.

Visualisasi

ggplot(tabel_forecast_7, aes(x = Tanggal, y = Forecast_Harga_USD)) +
  geom_line(color = "blue", linewidth = 1) +
  geom_point(color = "red", size = 2) +
  scale_x_date(date_labels = "%d %b %Y", date_breaks = "2 days") +
  labs(
    title = "Proyeksi Pergerakan Harga Saham AAPL (7 Periode Ke Depan)",
    subtitle = "Diestimasi Menggunakan Model EGARCH(1,1)",
    x = "Tanggal Perdagangan",
    y = "Perkiraan Harga Saham (USD)"
  ) +
  theme_minimal()

Kesimpulan: Pertama, data harga saham AAPL dikumpulkan untuk periode April 2022 sampai September 2026. Harga penutupan kemudian digunakan untuk membentuk log return. Kedua, return diuji menggunakan ADF dan diperoleh hasil stasioner. Ketiga, model mean ditentukan menggunakan Auto ARIMA dan diperoleh ARIMA(0,0,0) dengan zero mean. Keempat, residual model mean diuji menggunakan ARCH-LM dan ditemukan adanya efek ARCH yang signifikan, sehingga pemodelan volatilitas menggunakan keluarga GARCH diperlukan. Kelima, model GARCH(1,1) dibangun dan ditemukan indikasi Negative Sign Bias. Oleh karena itu, digunakan EGARCH(2,1) yang dapat mengakomodasi asimetri volatilitas. Keenam, hasil EGARCH menunjukkan AIC dan BIC yang lebih rendah dibandingkan GARCH. Diagnostik residual EGARCH juga menunjukkan tidak adanya autokorelasi residual dan tidak adanya ARCH effect yang signifikan. Ketujuh, model EGARCH digunakan untuk melakukan forecasting pada data testing dan menghasilkan MAE 14,73405, RMSE 18,6248, MAPE 5,3391%, dan SMAPE 5,1705%. Terakhir, forecasting 12 periode ke depan menghasilkan proyeksi harga dari 333,27 USD hingga 335,99 USD dengan volatilitas yang meningkat dari sekitar 0,0120 menjadi 0,0130.