1. Lý thuyết cơ bản

1.1.Giới thiệu mô hình TGARCH

Giới thiệu mô hình TGARCH

Mô hình TGARCH (Threshold GARCH) là một mở rộng của mô hình GARCH nhằm phản ánh tính không cân xứng trong biến động của chuỗi thời gian tài chính. Cụ thể, TGARCH cho phép tin xấu (cú sốc âm) và tin tốt (cú sốc dương) có ảnh hưởng khác nhau đến phương sai có điều kiện (volatility).

Công thức tổng quát của mô hình TGARCH(1,1) được viết là:

σt² = κ + β₁σt₋₁² + α₁εt₋₁² + γ₁εt₋₁²It₋₁

Trong đó: - It₋₁ = 1 khi εt₋₁ < 0
- It₋₁ = 0 khi εt₋₁ ≥ 0

Do vậy: - Nếu εt₋₁ < 0: σt² = κ + β₁σt₋₁² + (α₁ + γ₁)εt₋₁²
- Nếu εt₋₁ ≥ 0: σt² = κ + β₁σt₋₁² + α₁εt₋₁²

Mô hình TGARCH sẽ không cân xứng khi α₁ khác 0. Nếu γ₁ > 0, các cú sốc âm ảnh hưởng đến biến động nhiều hơn so với cú sốc dương.

Ưu điểm

  • Phản ánh được tính không cân xứng trong biến động: Mô hình TGARCH cho phép tin xấu và tin tốt tác động không giống nhau đến phương sai có điều kiện.
  • Giữ nguyên khung mô hình GARCH cơ bản, chỉ mở rộng bằng cách thêm biến tương tác với cú sốc âm để xét tác động.

Nhược điểm

  • TGARCH có thêm hệ số γ so với GARCH, làm mô hình phức tạp hơn.
  • Cần thực hiện nhiều bước và chạy các mô hình trước đó để xác định mô hình phù hợp.
  • Không phù hợp với chuỗi dữ liệu ít biến động, nên việc chọn biến đầu vào khá cầu kỳ.
  • Nếu sai số không tuân theo phân phối chuẩn, kết quả của mô hình TGARCH có thể bị sai lệch.

1.2.Giới thiệu mô hình EGARCH

Giới thiệu mô hình EGARCH

Mô hình EGARCH (Exponential GARCH) là một mở rộng khác của mô hình GARCH, được Nelson (1991) đề xuất nhằm khắc phục một số hạn chế của GARCH truyền thống. EGARCH cho phép mô tả tính không cân xứng trong biến động, tương tự TGARCH, nhưng được thể hiện thông qua logarit của phương sai có điều kiện, giúp đảm bảo giá trị phương sai luôn dương mà không cần đặt ràng buộc dương cho các tham số.

Công thức tổng quát của mô hình EGARCH(1,1):

ln(σt²) = κ + β ln(σt₋₁²) + α (εt₋₁ / σt₋₁) + θ |εt₋₁ / σt₋₁|

Trong đó: - εt là phần dư (sai số) tại thời điểm t, với εt ~ N(0, σt²) - εt₋₁ / σt₋₁ là cú sốc được chuẩn hóa tại thời điểm t–1 - κ, α, β, θ là các hệ số của mô hình

Từ công thức trên, mô hình có thể được viết lại như sau: - Nếu εt₋₁ > 0: ln(σt²) = κ + β ln(σt₋₁²) + (α + θ)(εt₋₁ / σt₋₁) - Nếu εt₋₁ < 0: ln(σt²) = κ + β ln(σt₋₁²) + (θ – α)(εt₋₁ / σt₋₁)

Một số đặc điểm và lưu ý của mô hình EGARCH

  • Mô hình EGARCH được xây dựng cho log(σt²), chứ không phải trực tiếp σt².
  • Vì sử dụng log(σt²), các hệ số κ, α, β có thể mang giá trị âm, điều này giúp mô hình linh hoạt hơn GARCH thông thường.
  • EGARCH phản ánh tính không cân xứng thông qua hai hệ số α và θ:
    • Nếu α > 0 → mô hình gần cân xứng.
    • Nếu α < 0 → cú sốc âm (tin xấu) làm tăng biến động mạnh hơn tin tốt.
  • Nhờ dạng logarit, EGARCH không cần ràng buộc các hệ số dương như trong GARCH và luôn đảm bảo phương sai có điều kiện dương.

Ưu điểm của mô hình EGARCH

  • Mô hình luôn đảm bảo σt² > 0 mà không cần giới hạn tham số.
  • Mô tả tốt hiệu ứng đòn bẩy (leverage effect), khi tin xấu tác động mạnh hơn tin tốt.
  • Linh hoạt hơn GARCH truyền thống nhờ cho phép các tham số nhận giá trị âm.

Nhược điểm của mô hình EGARCH

  • Cấu trúc mô hình phức tạp hơn, việc ước lượng có thể gặp khó khăn khi dữ liệu không phù hợp.
  • Đôi khi mô hình có thể gặp vấn đề hội tụ (convergence problem) trong quá trình tối ưu.
  • Việc diễn giải tham số khó hơn do sử dụng logarit của phương sai.

1.3. Giới thiệu mô hình IGARCH

Giới thiệu mô hình

IGARCH (Integrated Generalized Autoregressive Conditional Heteroskedasticity) là một biến thể của mô hình GARCH, được giới thiệu bởi Engle & Bollerslev (1986). Mô hình mô tả phương sai có điều kiện của chuỗi tài chính, trong đó mức độ biến động có tính ‘ghi nhớ dài hạn’ (persistence) đặc biệt mạnh.

Đặc điểm chính của IGARCH: Tổng hệ số ARCH và GARCH bằng 1: α + β = 1 Điều này có nghĩa là cú sốc đến phương sai có tác động kéo dài vô hạn và phương sai có điều kiện mang tính ‘tích phân’ giống I(1).

Công thức mô hình IGARCH

Dạng tổng quát IGARCH(p, q)

σ_t^2 = ω + Σ α_i ε_{t-i}^2 (i = 1..p) + Σ β_j σ_{t-j}^2 (j = 1..q)

Với ràng buộc: Σ α_i + Σ β_j = 1

Ý nghĩa kinh tế và đặc điểm

  1. Tính dai dẳng của biến động (persistence): α + β = 1 → độ dai dẳng = 1, mức cao nhất. Cú sốc lên biến động không tiêu biến theo thời gian. Phương sai có điều kiện không dừng theo phương sai.

  2. Không có phương sai vô điều kiện: Trong GARCH: Var(ε_t) = ω / (1 − (α + β))

Trong IGARCH: α + β = 1 → mẫu số = 0 → phương sai vô hạn. Mô hình không dừng theo phương sai.

  1. Phù hợp với dữ liệu tài chính:
  • Thị trường có volatility clustering kéo dài
  • Chuỗi lợi suất có long-memory
  • Tài sản chịu các cú sốc mạnh (khủng hoảng, biến động lớn)

Ưu điểm và hạn chế

Ưu điểm: - Mô tả tốt chuỗi có biến động dai dẳng - Phản ánh long-run persistence - Tính toán tương tự GARCH nên dễ áp dụng

Hạn chế: - Không tồn tại phương sai vô điều kiện → khó dùng cho mô hình cân bằng động - Có thể đánh giá quá cao độ dai dẳng - Nhiều trường hợp GARCH(1,1) với α + β gần 1 đã đủ

2. Ứng dụng các mô hình

2.1. Đọc file dữ liệu và lấy chuỗi biến giá đóng cửa

Dữ liệu phân tích trong bài là chuỗi giá đóng cửa của Ngân hàng công thương (CTG) gồm 498 quan sát lấy từ ngày 4/1/2022 đến 29/12//2023. Dữ liệu được lấy trên sàn investing.com và được ứng dụng vào các mô hình ARMA, GARCH, TGARCH, EGARCH.

data <- read_excel("C:/Users/Admin/Downloads/Book2.xlsx")

names(data)
## [1] "date"  "close"
# Lấy biến close cần phân tích 

y <- ts(data$close)  

plot(y, main = "Biểu đồ chuỗi thời gian", col = "blue")

Nhận xét biểu đồ giá đóng cửa của CTG

Biểu đồ trên thể hiện diễn biến giá đóng cửa của cổ phiếu CTG TỪ 2022 - 2023. Có thể nhận thấy chuỗi giá có biến động mạnh, không ổn định và thể hiện rõ xu hướng giảm sau giai đoạn tăng ban đầu. Giá đạt đỉnh khoảng 35.000, sau đó giảm xuống gần 20.000 trước khi phục hồi dao động quanh vùng 25.000–30.000.

2.2. Kiểm định tính dừng

2.2.1. Kiểm định tính dừng tại chuỗi gốc

adf_test <- adf.test(y)
kpss_test <- kpss.test(y)

adf_test
## 
##  Augmented Dickey-Fuller Test
## 
## data:  y
## Dickey-Fuller = -2.3934, Lag order = 7, p-value = 0.4118
## alternative hypothesis: stationary
kpss_test
## 
##  KPSS Test for Level Stationarity
## 
## data:  y
## KPSS Level = 1.2974, Truncation lag parameter = 5, p-value = 0.01

Kiểm định ADF:

  • Giả thuyết H₀: Chuỗi không dừng.
  • Kết quả: p-value = 0.4118 > 0.05 ⇒ Không bác bỏ H₀. → Chuỗi không dừng.

Kiểm định KPSS:

  • Giả thuyết H₀: Chuỗi dừng.
  • Kết quả: p-value = 0.01 < 0.05 ⇒ Bác bỏ H₀. → Chuỗi không dừng.

Kết luận: Cả hai kiểm định đều cho thấy chuỗi giá CTG không dừng. Cần tiếp tục thực hiện sai phân bậc 1.

2.2.2. Kiểm định tính dừng sai phân bậc 1

# Sai phân bậc 1
dy <- diff(y)

# Kiểm tra lại tính dừng
adf.test(na.omit(dy))
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(dy)
## Dickey-Fuller = -7.4557, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary
kpss.test(na.omit(dy))
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(dy)
## KPSS Level = 0.24811, Truncation lag parameter = 5, p-value = 0.1
plot(dy, main = "Chuỗi sau khi sai phân bậc 1", col = "darkgreen")

Kiểm định ADF:

  • Giả thuyết H₀: Chuỗi không dừng.
  • Kết quả: p-value = 0.01 < 0.05 ⇒ Bác bỏ H₀.
    → Chuỗi dừng.

Kiểm định KPSS:

  • Giả thuyết H₀: Chuỗi dừng.
  • Kết quả: p-value = 0.1 > 0.05 ⇒ Không bác bỏ H₀.
    → Chuỗi dừng.

Kết luận:
Cả hai kiểm định đều cho thấy chuỗi sai phân bậc 1 (dy) đã đạt được tính dừng, có thể sử dụng cho các mô hình ARIMA, ARCH, GARCH, TGARCH hoặc EGARCH.

2.3. Mô hình arima ước lượng

auto_model <- auto.arima(dy)
summary(auto_model)
## Series: dy 
## ARIMA(0,0,0) with zero mean 
## 
## sigma^2 = 317714:  log likelihood = -3853.44
## AIC=7708.87   AICc=7708.88   BIC=7713.08
## 
## Training set error measures:
##                     ME     RMSE      MAE MPE MAPE      MASE        ACF1
## Training set -15.39235 563.6612 398.7171 100  100 0.6733843 -0.02321698
checkresiduals(auto_model)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,0) with zero mean
## Q* = 9.257, df = 10, p-value = 0.5079
## 
## Model df: 0.   Total lags used: 10

Nhận xét

Kết quả cho thấy mô hình ARIMA(0,0,0) có giá trị AIC = 7708.87 và BIC = 7713.08.
Kiểm định Ljung–Box cho phần dư có p-value = 0.5079 (> 0.05), nên không bác bỏ giả thuyết H₀, tức là phần dư không có hiện tượng tự tương quan → phần dư là nhiễu trắng.

Điều này nghĩa là mô hình ARIMA(0,0,0) phù hợp về mặt thống kê, nhưng về bản chất đây là mô hình rất đơn giản, không giải thích được cấu trúc biến động của chuỗi (chỉ là chuỗi ngẫu nhiên quanh trung bình bằng 0).

Vì chuỗi tài chính thường có hiện tượng phương sai thay đổi theo thời gian, nên bước tiếp theo cần kiểm tra hiệu ứng ARCH và xây dựng các mô hình như GARCH, TGARCH hoặc EGARCH để mô tả tốt hơn biến động của chuỗi giá đóng cửa của CTG

#2.4. Kiểm định hiệu ứng arch

library(FinTS)
ArchTest(residuals(auto_model), lags = 12)
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  residuals(auto_model)
## Chi-squared = 24.435, df = 12, p-value = 0.01774

Nhận xét

  • Giả thuyết H₀: Không có hiệu ứng ARCH (phương sai không thay đổi theo thời gian).

  • Giả thuyết H₁: Có hiệu ứng ARCH (phương sai thay đổi theo thời gian).

Kết quả kiểm định: - Giá trị Chi-squared = 24.889
- bậc tự do (df) = 12
- p-value = 0.01536 (< 0.05)

→ Vì p-value < 0.05 nên bác bỏ giả thuyết H₀.
⟹ Kết luận: Có tồn tại hiệu ứng ARCH trong phần dư của mô hình.

2.4. Ước lượng mô hình GARCH(1,1)

install.packages("rugarch")
library(rugarch)
# GARCH(1,1)
spec_garch <- ugarchspec(
  variance.model = list(model = "sGARCH", garchOrder = c(1,1)),
  mean.model = list(armaOrder = c(1,1))
)

fit_garch <- ugarchfit(spec = spec_garch, data = dy)
show(fit_garch)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(1,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##          Estimate  Std. Error   t value Pr(>|t|)
## mu       0.010591   21.133798  0.000501 0.999600
## ar1      0.121307    0.447313  0.271189 0.786245
## ma1     -0.192025    0.441082 -0.435349 0.663309
## omega  333.758320  782.990479  0.426261 0.669918
## alpha1   0.067785    0.016694  4.060341 0.000049
## beta1    0.931215    0.014714 63.289754 0.000000
## 
## Robust Standard Errors:
##          Estimate  Std. Error   t value Pr(>|t|)
## mu       0.010591  2.3773e+01  0.000446 0.999645
## ar1      0.121307  2.7826e-01  0.435949 0.662874
## ma1     -0.192025  2.6032e-01 -0.737643 0.460732
## omega  333.758320  1.2022e+03  0.277628 0.781298
## alpha1   0.067785  2.1837e-02  3.104147 0.001908
## beta1    0.931215  2.2490e-02 41.406477 0.000000
## 
## LogLikelihood : -3819.256 
## 
## Information Criteria
## ------------------------------------
##                    
## Akaike       15.393
## Bayes        15.444
## Shibata      15.393
## Hannan-Quinn 15.413
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.6469  0.4212
## Lag[2*(p+q)+(p+q)-1][5]    1.3809  0.9993
## Lag[4*(p+q)+(p+q)-1][9]    3.8111  0.7345
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                   0.000244  0.9875
## Lag[2*(p+q)+(p+q)-1][5]  1.679915  0.6957
## Lag[4*(p+q)+(p+q)-1][9]  2.652015  0.8147
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]     2.045 0.500 2.000  0.1527
## ARCH Lag[5]     2.086 1.440 1.667  0.4525
## ARCH Lag[7]     2.170 2.315 1.543  0.6813
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.2669
## Individual Statistics:              
## mu     0.08433
## ar1    0.32180
## ma1    0.30541
## omega  0.49098
## alpha1 0.35782
## beta1  0.34619
## 
## 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.2178 0.8277    
## Negative Sign Bias  0.2467 0.8052    
## Positive Sign Bias  1.0513 0.2936    
## Joint Effect        1.2759 0.7349    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     27.95      0.08440
## 2    30     51.39      0.00637
## 3    40     51.81      0.08219
## 4    50     67.49      0.04100
## 
## 
## Elapsed time : 0.1508019

Nhận xét mô hình GARCH(1,1)

Kết quả cho thấy các hệ số của mô hình GARCH(1,1) đều dương, trong đó α₁ = 0.35782 và β₁ = 0.34619.

Tổng α₁ + β₁ = 0.7039 < 1, nên mô hình ổn định và hội tụ, nghĩa là biến động trong chuỗi sẽ dần giảm theo thời gian chứ không tăng mãi.

Các kiểm định Sign Bias đều có p-value > 0.05 nên không có hiệu ứng bất cân xứng – tức là tin xấu và tin tốt ảnh hưởng gần như như nhau đến mức độ biến động của chuỗi.

Kiểm định Pearson cho thấy hầu hết các nhóm đều có p-value > 0.05, chỉ có một vài nhóm nhỏ chưa thật sự tốt, nhưng nhìn chung mô hình vẫn phù hợp để mô tả phương sai thay đổi theo thời gian.

2.5. Mô hình TGARCH

spec_tgarch <- ugarchspec(
  variance.model = list(model = "fGARCH", submodel = "TGARCH", garchOrder = c(1,1)),
  mean.model = list(armaOrder = c(1,1))
)

fit_tgarch <- ugarchfit(spec_tgarch, data = dy)
show(fit_tgarch)
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : fGARCH(1,1)
## fGARCH Sub-Model : TGARCH
## Mean Model   : ARFIMA(1,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -16.81450   20.049017 -0.83867 0.401655
## ar1      0.13790    0.236121  0.58403 0.559202
## ma1     -0.18359    0.235834 -0.77846 0.436295
## omega   20.75639    8.018594  2.58853 0.009639
## alpha1   0.11866    0.024774  4.78945 0.000002
## beta1    0.87488    0.025100 34.85500 0.000000
## eta11    0.34283    0.162235  2.11319 0.034584
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -16.81450   20.016390 -0.84004 0.400888
## ar1      0.13790    0.074179  1.85902 0.063024
## ma1     -0.18359    0.060144 -3.05249 0.002270
## omega   20.75639   13.909665  1.49223 0.135639
## alpha1   0.11866    0.034980  3.39216 0.000693
## beta1    0.87488    0.040167 21.78094 0.000000
## eta11    0.34283    0.257424  1.33178 0.182932
## 
## LogLikelihood : -3814.159 
## 
## Information Criteria
## ------------------------------------
##                    
## Akaike       15.377
## Bayes        15.436
## Shibata      15.377
## Hannan-Quinn 15.400
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                    0.09978  0.7521
## Lag[2*(p+q)+(p+q)-1][5]   0.38312  1.0000
## Lag[4*(p+q)+(p+q)-1][9]   2.03242  0.9831
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                    0.04202  0.8376
## Lag[2*(p+q)+(p+q)-1][5]   1.45421  0.7512
## Lag[4*(p+q)+(p+q)-1][9]   2.65258  0.8146
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.6134 0.500 2.000  0.4335
## ARCH Lag[5]    0.7721 1.440 1.667  0.8015
## ARCH Lag[7]    1.0387 2.315 1.543  0.9072
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.1581
## Individual Statistics:              
## mu     0.03646
## ar1    0.30960
## ma1    0.29331
## omega  0.24537
## alpha1 0.25787
## beta1  0.23876
## eta11  0.15389
## 
## 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.4564 0.6483    
## Negative Sign Bias  0.2804 0.7793    
## Positive Sign Bias  1.0806 0.2804    
## Joint Effect        1.2468 0.7418    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     34.47      0.01617
## 2    30     39.32      0.09572
## 3    40     52.13      0.07772
## 4    50     56.42      0.21729
## 
## 
## Elapsed time : 0.6152658

Nhận xét mô hình TGARCH(1,1)

Kết quả cho thấy các hệ số của mô hình TGARCH(1,1) đều có ý nghĩa thống kê.
Trong đó: - α₁ = 0.11866 và β₁ = 0.87488 → tổng α₁ + β₁ = 0.99354 < 1
⟹ Mô hình ổn định và hội tụ, thể hiện biến động giảm dần về mức cân bằng theo thời gian.

Đặc biệt, hệ số η₁₁ (eta₁₁) = 0.34283 > 0 và có p-value = 0.0346 < 0.05
⟹ Có hiệu ứng đòn bẩy (leverage effect) — tức là các cú sốc âm (tin xấu) làm độ biến động của chuỗi tăng mạnh hơn so với cú sốc dương (tin tốt).

Kiểm định Sign Bias: - Các giá trị p-value của Sign Bias, Negative Sign Bias, Positive Sign Bias và Joint Effect đều > 0.05.
→ Không bác bỏ giả thuyết H₀ ⇒ mô hình đã xử lý tốt hiệu ứng bất cân xứng, phần dư không còn sai lệch dấu.

Kiểm định Ljung–Box và ARCH: - Tất cả p-value đều > 0.05 ⇒ Không có tự tương quan phần dư và không còn hiệu ứng ARCH.
→ Mô hình TGARCH(1,1) phù hợp về mặt thống kê.

Kiểm định ổn định (Nyblom test): - Joint Statistic = 1.1581 < 1.69 (ngưỡng 10%)
→ Các tham số của mô hình ổn định theo thời gian.

Kiểm định Pearson Goodness-of-Fit: - Hầu hết các nhóm có p-value > 0.05, chỉ nhóm 20 hơi thấp (0.01617)
→ Nhìn chung, mô hình phù hợp với dữ liệu.

Kết luận: Mô hình TGARCH(1,1) ổn định, phù hợp, và thể hiện rõ hiệu ứng đòn bẩy (η₁₁ > 0) — tức là tin xấu làm biến động giá mạnh hơn tin tốt.
Mô hình này mô tả tốt sự thay đổi phương sai theo thời gian của chuỗi lợi suất CTG.

2.6. Mô hình EGARCH(1,1)

spec_egarch <- ugarchspec(
  variance.model = list(model = "eGARCH", garchOrder = c(1,1)),
  mean.model = list(armaOrder = c(1,1)),
  distribution.model = "std"
)

fit_egarch <- ugarchfit(spec = spec_egarch, data = dy, solver = "hybrid")
fit_egarch
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(1,1)
## Mean Model   : ARFIMA(1,0,1)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error     t value Pr(>|t|)
## mu      3.168881   14.227315     0.22273 0.823744
## ar1     0.624750    0.034476    18.12114 0.000000
## ma1    -0.690654    0.032854   -21.02211 0.000000
## omega   0.238142    0.007954    29.94124 0.000000
## alpha1 -0.055014    0.031297    -1.75782 0.078778
## beta1   0.980426    0.000057 17322.00374 0.000000
## gamma1  0.186146    0.017047    10.91946 0.000000
## shape   4.566342    0.892696     5.11522 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error     t value Pr(>|t|)
## mu      3.168881   12.889619     0.24585 0.805800
## ar1     0.624750    0.013140    47.54733 0.000000
## ma1    -0.690654    0.013789   -50.08907 0.000000
## omega   0.238142    0.008047    29.59473 0.000000
## alpha1 -0.055014    0.031750    -1.73272 0.083145
## beta1   0.980426    0.000047 21037.77404 0.000000
## gamma1  0.186146    0.014652    12.70439 0.000000
## shape   4.566342    0.978547     4.66645 0.000003
## 
## LogLikelihood : -3782.135 
## 
## Information Criteria
## ------------------------------------
##                    
## Akaike       15.252
## Bayes        15.320
## Shibata      15.252
## Hannan-Quinn 15.279
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.2657  0.6062
## Lag[2*(p+q)+(p+q)-1][5]    1.0124  1.0000
## Lag[4*(p+q)+(p+q)-1][9]    3.2048  0.8572
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                    0.01783  0.8938
## Lag[2*(p+q)+(p+q)-1][5]   1.81269  0.6633
## Lag[4*(p+q)+(p+q)-1][9]   3.40254  0.6911
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]     1.593 0.500 2.000  0.2069
## ARCH Lag[5]     1.697 1.440 1.667  0.5420
## ARCH Lag[7]     1.892 2.315 1.543  0.7401
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.0646
## Individual Statistics:             
## mu     0.1028
## ar1    0.1394
## ma1    0.1363
## omega  0.2194
## alpha1 0.2140
## beta1  0.2190
## gamma1 0.0301
## shape  0.2535
## 
## 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.4449 0.6566    
## Negative Sign Bias  0.2849 0.7758    
## Positive Sign Bias  1.0933 0.2748    
## Joint Effect        1.2765 0.7347    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     7.748       0.9890
## 2    30    14.087       0.9909
## 3    40    28.473       0.8930
## 4    50    29.258       0.9887
## 
## 
## Elapsed time : 1.2548

Nhận xét mô hình EGARCH(1,1)

Kết quả ước lượng cho thấy: - Hệ số α₁ = -0.0550 và β₁ = 0.9804, tổng (α₁ + β₁) ≈ 0.925 < 1
→ Mô hình ổn định và hội tụ, thể hiện rằng biến động trong chuỗi sẽ giảm dần theo thời gian.
- Hệ số γ₁ (gamma₁) = 0.1862 > 0 và có p-value = 0.0000 < 0.05
→ Có hiệu ứng đòn bẩy (leverage effect), nghĩa là các cú sốc âm (tin xấu) làm tăng biến động nhiều hơn các cú sốc dương (tin tốt).
Điều này phản ánh đúng đặc trưng của chuỗi tài chính: thị trường thường phản ứng mạnh hơn với tin xấu.

Kiểm định Sign Bias:

  • Các p-value của Sign Bias, Negative Sign Bias, Positive Sign Bias và Joint Effect đều > 0.05
    → Không bác bỏ giả thuyết H₀ ⇒ mô hình đã xử lý tốt hiệu ứng bất cân xứng, phần dư không còn sai lệch dấu.

Kiểm định Ljung–Box và ARCH:

  • Các p-value đều > 0.05 ⇒ phần dư không có tự tương quankhông còn hiệu ứng ARCH.
    → Mô hình EGARCH(1,1) phù hợp về mặt thống kê.

Kiểm định ổn định (Nyblom test): - Joint Statistic = 1.0646 < 1.89 ⇒ các tham số ổn định theo thời gian, mô hình không bị thay đổi cấu trúc.

Kiểm định Pearson Goodness-of-Fit: - Các nhóm có p-value rất cao (> 0.89), chứng tỏ mô hình phù hợp với dữ liệu, sai số nhỏ và phân phối tốt.

Kết luận: Mô hình EGARCH(1,1) phù hợp và ổn định, thể hiện rõ hiệu ứng đòn bẩy (γ₁ > 0).
Điều này có nghĩa là tin xấu làm tăng biến động mạnh hơn tin tốt, đúng với đặc điểm của chuỗi lợi suất chứng khoán.
Phần dư đạt chuẩn, không còn tự tương quan hay hiệu ứng ARCH, nên mô hình EGARCH(1,1) mô tả rất tốt sự thay đổi phương sai theo thời gian.

2.7. Mô hình IGARCH

# IGARCH(1,1)

spec_igarch <- ugarchspec(
variance.model = list(model = "iGARCH", garchOrder = c(1,1)),
mean.model = list(armaOrder = c(1,1)),
distribution.model = "std"
)

fit_igarch <- ugarchfit(spec = spec_igarch, data = dy)
fit_igarch
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : iGARCH(1,1)
## Mean Model   : ARFIMA(1,0,1)
## Distribution : std 
## 
## Optimal Parameters
## ------------------------------------
##          Estimate  Std. Error  t value Pr(>|t|)
## mu       7.075420   14.005803  0.50518 0.613434
## ar1      0.629088    0.240915  2.61124 0.009021
## ma1     -0.698933    0.221042 -3.16199 0.001567
## omega  318.400905  867.351032  0.36710 0.713548
## alpha1   0.070107    0.018152  3.86221 0.000112
## beta1    0.929893          NA       NA       NA
## shape    4.809836    0.763694  6.29812 0.000000
## 
## Robust Standard Errors:
##          Estimate  Std. Error  t value Pr(>|t|)
## mu       7.075420   14.289434  0.49515 0.620494
## ar1      0.629088    0.232862  2.70155 0.006902
## ma1     -0.698933    0.215761 -3.23939 0.001198
## omega  318.400905  838.723223  0.37963 0.704223
## alpha1   0.070107    0.019471  3.60051 0.000318
## beta1    0.929893          NA       NA       NA
## shape    4.809836    0.783755  6.13691 0.000000
## 
## LogLikelihood : -3783.977 
## 
## Information Criteria
## ------------------------------------
##                    
## Akaike       15.251
## Bayes        15.302
## Shibata      15.251
## Hannan-Quinn 15.271
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.7162  0.3974
## Lag[2*(p+q)+(p+q)-1][5]    2.2313  0.8973
## Lag[4*(p+q)+(p+q)-1][9]    5.2508  0.3984
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                  7.834e-06  0.9978
## Lag[2*(p+q)+(p+q)-1][5] 1.762e+00  0.6755
## Lag[4*(p+q)+(p+q)-1][9] 2.754e+00  0.7988
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]     2.186 0.500 2.000  0.1393
## ARCH Lag[5]     2.228 1.440 1.667  0.4229
## ARCH Lag[7]     2.323 2.315 1.543  0.6491
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  0.9595
## Individual Statistics:              
## mu     0.15233
## ar1    0.19399
## ma1    0.19732
## omega  0.32786
## alpha1 0.03046
## shape  0.19580
## 
## 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.1794 0.8577    
## Negative Sign Bias  0.1836 0.8544    
## Positive Sign Bias  1.0095 0.3132    
## Joint Effect        1.2050 0.7518    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     12.98       0.8396
## 2    30     21.09       0.8559
## 3    40     25.25       0.9565
## 4    50     43.14       0.7085
## 
## 
## Elapsed time : 0.09954214

Nhận xét

Phương trình được viết dưới dạng dưới đây:

\[ \sigma_t^2 = 318.400905 + 0.070107 \epsilon_{t-1}^2 + 0.929893 \sigma_{t-1}^2 \]

Kết quả ước lượng cho thấy:

Hệ số α₁ = 0.070107 và β₁ = 0.929893, trong đó tổng α₁ + β₁ = 1 → Đây là đặc trưng của mô hình IGARCH, thể hiện độ dai dẳng bằng 1, nghĩa là các cú sốc trong quá khứ ảnh hưởng rất lâu dài đến biến động hiện tại. → Điều này phù hợp với chuỗi lợi suất của mã CTG vốn có hiện tượng “volatility clustering” - giai đoạn biến động mạnh kéo dài sau các thông tin lớn trên thị trường.

→ Nhìn chung, mô hình IGARCH(1,1) cho thấy CTG có biến động ghi nhớ dài hạn, phản ứng mạnh và kéo dài trước các cú sốc của thị trường.

Kiểm định Sign Bias

Các p-value của Sign Bias, Negative Sign Bias, Positive Sign Bias và Joint Effect đều > 0.05 → Không có dấu hiệu về hiệu ứng bất cân xứng chưa được mô hình hóa. → Điều này phù hợp vì IGARCH không phải mô hình mô tả bất cân xứng, nên việc không có sai lệch dấu chứng tỏ mô hình phù hợp.

Kiểm định Ljung–Box

Các p-value đều > 0.05 → Phần dư không có tự tương quan

Kiểm định ổn định (Nyblom test)

Joint Statistic = 0.9595 < 1.49 → Các tham số của mô hình ổn định theo thời gian, không bị thay đổi cấu trúc. → Điều này nghĩa là IGARCH hoạt động tốt trên dữ liệu CTG trong giai đoạn phân tích (2022–2023).

Kiểm định Pearson Goodness-of-Fit

Các nhóm đều có p-value cao (0.70 – 0.95) → Cho thấy mô hình phù hợp với dữ liệu, phân phối phần dư được mô tả tốt.

Kết luận IGARCH(1,1) là mô hình phù hợp để mô tả volatility persistence (biến động ghi nhớ dài hạn) của mã CTG. Tuy nhiên, nếu muốn mô tả hiệu ứng tin xấu – tin tốt rõ hơn, TGARCH và EGARCH vẫn là lựa chọn tốt hơn.

2.8. Dự báo

2.8.1. Dự báo mô hình GARCH(1,1)

# Dự báo GARCH(1,1)
forecast_garch <- ugarchforecast(fit_garch, n.ahead = 10)
forecast_garch
## 
## *------------------------------------*
## *       GARCH Model Forecast         *
## *------------------------------------*
## Model: sGARCH
## Horizon: 10
## Roll Steps: 0
## Out of Sample: 0
## 
## 0-roll forecast [T0=498-01-01]:
##         Series Sigma
## T+1  -3.505200 262.6
## T+2  -0.415898 263.1
## T+3  -0.041145 263.6
## T+4   0.004315 264.1
## T+5   0.009830 264.6
## T+6   0.010499 265.1
## T+7   0.010580 265.6
## T+8   0.010590 266.1
## T+9   0.010591 266.6
## T+10  0.010591 267.1
# Vẽ biểu đồ volatility 
plot(forecast_garch, which = 1)   # dự báo giá trị trung bình

2.8.2. Dự báo mô hình TGARCH(1,1)

# Dự báo TGARCH(1,1)
forecast_tgarch <- ugarchforecast(fit_tgarch, n.ahead = 10)
forecast_tgarch
## 
## *------------------------------------*
## *       GARCH Model Forecast         *
## *------------------------------------*
## Model: fGARCH
## fGARCH Sub-Model: TGARCH
## 
## Horizon: 10
## Roll Steps: 0
## Out of Sample: 0
## 
## 0-roll forecast [T0=498-01-01]:
##      Series Sigma
## T+1  -19.92 299.2
## T+2  -17.24 310.8
## T+3  -16.87 322.1
## T+4  -16.82 333.1
## T+5  -16.82 343.7
## T+6  -16.81 354.0
## T+7  -16.81 363.9
## T+8  -16.81 373.6
## T+9  -16.81 383.0
## T+10 -16.81 392.1
plot(forecast_tgarch, which = 1)

2.8.3. Dự báo mô hình EGARCH(1,1)

# Dự báo  mô hình EGARCH(1,1)
forecast_egarch <- ugarchforecast(fit_egarch, n.ahead = 10)
forecast_egarch
## 
## *------------------------------------*
## *       GARCH Model Forecast         *
## *------------------------------------*
## Model: eGARCH
## Horizon: 10
## Roll Steps: 0
## Out of Sample: 0
## 
## 0-roll forecast [T0=498-01-01]:
##        Series Sigma
## T+1  -12.7573 266.8
## T+2   -6.7810 269.4
## T+3   -3.0473 272.0
## T+4   -0.7147 274.6
## T+5    0.7426 277.1
## T+6    1.6531 279.6
## T+7    2.2219 282.1
## T+8    2.5772 284.5
## T+9    2.7993 286.9
## T+10   2.9380 289.3
plot(forecast_egarch, which = 1)

2.8.4. Dự báo mô hình IGARCH

forecast_igarch <- ugarchforecast(fit_igarch, n.ahead = 10)
forecast_igarch
## 
## *------------------------------------*
## *       GARCH Model Forecast         *
## *------------------------------------*
## Model: iGARCH
## Horizon: 10
## Roll Steps: 0
## Out of Sample: 0
## 
## 0-roll forecast [T0=498-01-01]:
##       Series Sigma
## T+1  -9.2467 262.3
## T+2  -3.1926 263.0
## T+3   0.6159 263.6
## T+4   3.0118 264.2
## T+5   4.5191 264.8
## T+6   5.4672 265.4
## T+7   6.0637 266.0
## T+8   6.4390 266.6
## T+9   6.6750 267.2
## T+10  6.8235 267.8
plot(forecast_igarch, which = 1)

2.8.5. Tổng hợp kết quả dự báo

# Tạo bảng tổng hợp kết quả dự báo 4 mô hình
comparison_forecast <- data.frame(
  Step = 1:10,
  
  GARCH_Mean   = as.numeric(fitted(forecast_garch)),
  TGARCH_Mean  = as.numeric(fitted(forecast_tgarch)),
  EGARCH_Mean  = as.numeric(fitted(forecast_egarch)),
  IGARCH_Mean  = as.numeric(fitted(forecast_igarch)),
  
  GARCH_Vol   = as.numeric(sigma(forecast_garch)),
  TGARCH_Vol  = as.numeric(sigma(forecast_tgarch)),
  EGARCH_Vol  = as.numeric(sigma(forecast_egarch)),
  IGARCH_Vol  = as.numeric(sigma(forecast_igarch))
)

comparison_forecast
##    Step   GARCH_Mean TGARCH_Mean EGARCH_Mean IGARCH_Mean GARCH_Vol TGARCH_Vol
## 1     1 -3.505200236   -19.92354 -12.7573074  -9.2467025  262.5788   299.1676
## 2     2 -0.415897613   -17.24324  -6.7810036  -3.1926239  263.0826   310.8148
## 3     3 -0.041144701   -16.87362  -3.0473084   0.6159215  263.5849   322.1073
## 4     4  0.004315315   -16.82265  -0.7146827   3.0118299  264.0857   333.0559
## 5     5  0.009829916   -16.81562   0.7426249   4.5190660  264.5851   343.6712
## 6     6  0.010498874   -16.81465   1.6530777   5.4672495  265.0831   353.9632
## 7     7  0.010580023   -16.81452   2.2218830   6.0637399  265.5796   363.9419
## 8     8  0.010589867   -16.81450   2.5772440   6.4389846  266.0747   373.6168
## 9     9  0.010591061   -16.81450   2.7992558   6.6750463  266.5684   382.9970
## 10   10  0.010591206   -16.81450   2.9379576   6.8235499  267.0607   392.0917
##    EGARCH_Vol IGARCH_Vol
## 1    266.8369   262.3487
## 2    269.4421   262.9548
## 3    272.0211   263.5595
## 4    274.5735   264.1629
## 5    277.0993   264.7648
## 6    279.5981   265.3655
## 7    282.0699   265.9647
## 8    284.5146   266.5626
## 9    286.9319   267.1592
## 10   289.3219   267.7544

Nhận xét

1. Mức kì vọng trung bình của chuỗi lợi suất

  • GARCH(1,1): Mean nhanh chóng ổn định quanh 0 (từ -3.50 lên 0.0106).

  • TGARCH(1,1): Mean giữ ở mức âm sâu và gần như không đổi, khoảng -16.81 → phản ánh mô hình nhạy với tin xấu.

  • EGARCH(1,1): Mean tăng dần từ -12.79 → 2.91, cho thấy xu hướng phục hồi.

  • IGARCH(1,1): Mean tăng ổn định từ -9.24 → 6.82, đúng tính dai dẳng của IGARCH.

2. Dự báo về mức độ biến động (rủi ro) của chuỗi lợi suất

GARCH: σₜ tăng nhẹ từ 262.58 → 267.06, biến động thấp và ổn định,tức là nếu thị trường không có biến động lớn, CTG dự kiến dao động trong vùng rủi ro quen thuộc.

TGARCH: σₜ tăng mạnh nhất (300+), thể hiện dự báo rủi ro cao ,nghĩa là Thị trường CTG có thể phản ứng tiêu cực mạnh trước các tin xấu nên nhà đầu tư đối diện nguy cơ biến động lớn hơn trong thời gian tới.

Nhà đầu tư đối diện nguy cơ biến động lớn hơn trong thời gian tới.

EGARCH: σₜ tăng vừa phải (khoảng 270 trở lên )nghĩa là chuỗi giá CTG tăng nhưng có kiểm soát

IGARCH: σₜ tăng từ từ giống GARCH (263 → 266), tức biến động của CTG duy trì lâu dài, phản ứng chậm nhưng kéo dài.

2.8.6. Trực quan hóa bằng biểu đồ bốn mô hình

library(ggplot2)

df_vol <- data.frame(
  Step = 1:10,
  GARCH = as.numeric(sigma(forecast_garch)),
  TGARCH = as.numeric(sigma(forecast_tgarch)),
  EGARCH = as.numeric(sigma(forecast_egarch)),
  IGARCH = as.numeric(sigma(forecast_igarch)) 
)

ggplot(df_vol, aes(x = Step)) +
  geom_line(aes(y = GARCH, color = "GARCH(1,1)"), size = 1) +
  geom_line(aes(y = TGARCH, color = "TGARCH(1,1)"), size = 1) +
  geom_line(aes(y = EGARCH, color = "EGARCH(1,1)"), size = 1.1) +
  geom_line(aes(y = IGARCH, color = "IGARCH(1,1)"), size = 1.1, linetype = "dashed") +  
  labs(title = "So sánh độ biến động dự báo (Volatility Forecast)",
       y = "σ_t", x = "Bước dự báo") +
  scale_color_manual(values = c(
    "GARCH(1,1)" = "blue",
    "TGARCH(1,1)" = "green",
    "EGARCH(1,1)" = "red",
    "IGARCH(1,1)" = "purple"   
  )) +
  theme_minimal()

Nhận xét

Từ biểu đồ có thể thấy:

  • TGARCH(1,1) cho dự báo biến động cao nhất vì nhạy mạnh với tin xấu.

  • EGARCH(1,1) dự báo ổn định và tăng nhẹ, phản ánh đúng bất cân xứng trên thị trường CTG.

  • IGARCH(1,1) và GARCH(1,1) cho dự báo gần như giống nhau, thấp và ổn định.

Tóm lại: EGARCH(1,1) là mô hình phù hợp nhất để mô tả và dự báo biến động giá cổ phiếu CTG; TGARCH phù hợp khi thị trường có cú sốc mạnh; IGARCH thể hiện tính dai dẳng nhưng không dự báo tốt bằng EGARCH.