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
Nhược điểm
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
Ưu điểm của mô hình EGARCH
Nhược điểm của mô hình EGARCH
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.
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:
Kiểm định KPSS:
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.
# 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:
Kiểm định KPSS:
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.
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.
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.12889
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.
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.745676
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.
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.206614 14.228126 0.22537 0.821690
## ar1 0.624787 0.034415 18.15468 0.000000
## ma1 -0.690657 0.032808 -21.05120 0.000000
## omega 0.238216 0.007957 29.93889 0.000000
## alpha1 -0.055019 0.031308 -1.75733 0.078862
## beta1 0.980420 0.000057 17307.15272 0.000000
## gamma1 0.186169 0.017059 10.91356 0.000000
## shape 4.563417 0.891339 5.11973 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 3.206614 12.888501 0.2488 0.803518
## ar1 0.624787 0.013109 47.6622 0.000000
## ma1 -0.690657 0.013778 -50.1290 0.000000
## omega 0.238216 0.008047 29.6018 0.000000
## alpha1 -0.055019 0.031757 -1.7325 0.083187
## beta1 0.980420 0.000047 21022.9684 0.000000
## gamma1 0.186169 0.014653 12.7050 0.000000
## shape 4.563417 0.976261 4.6744 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.2649 0.6068
## Lag[2*(p+q)+(p+q)-1][5] 1.0106 1.0000
## Lag[4*(p+q)+(p+q)-1][9] 3.2026 0.8576
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.01786 0.8937
## Lag[2*(p+q)+(p+q)-1][5] 1.81257 0.6633
## Lag[4*(p+q)+(p+q)-1][9] 3.40222 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.2070
## ARCH Lag[5] 1.697 1.440 1.667 0.5421
## ARCH Lag[7] 1.892 2.315 1.543 0.7402
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 1.066
## Individual Statistics:
## mu 0.10314
## ar1 0.13913
## ma1 0.13598
## omega 0.21962
## alpha1 0.21417
## beta1 0.21931
## gamma1 0.03008
## shape 0.25493
##
## 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.4448 0.6567
## 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.056 0.9895
##
##
## Elapsed time : 1.544807
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:
Kiểm định Ljung–Box và ARCH:
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.
# So sánh AIC, BIC và looklikehood giữa 3 mô hình
comparison <- data.frame(
Model = c("GARCH(1,1)", "TGARCH(1,1)", "EGARCH(1,1)"),
AIC = c(infocriteria(fit_garch)[1],
infocriteria(fit_tgarch)[1],
infocriteria(fit_egarch)[1]),
BIC = c(infocriteria(fit_garch)[2],
infocriteria(fit_tgarch)[2],
infocriteria(fit_egarch)[2]),
LogLik = c(fit_garch@fit$LLH,
fit_tgarch@fit$LLH,
fit_egarch@fit$LLH)
)
print(comparison)
## Model AIC BIC LogLik
## 1 GARCH(1,1) 15.39338 15.44419 -3819.256
## 2 TGARCH(1,1) 15.37690 15.43617 -3814.159
## 3 EGARCH(1,1) 15.25205 15.31979 -3782.135
Nhận xét
Dựa vào bảng so sánh các tiêu chí AIC, BIC và Log-likelihood, ta có:
Mô hình GARCH(1,1) có AIC, BIC cao nhất
Mô hình TGARCH(1,1) có AIC và BIC thấp hơn GARCH(1,1), chứng tỏ việc thêm yếu tố bất cân xứng giúp mô hình mô tả biến động tốt hơn.
Mô hình EGARCH(1,1) có giá trị AIC =
15.25205 và BIC = 15.31979 là thấp
nhất, đồng thời Log-likelihood = -3782.135 là
cao nhất (ít âm nhất).
→ Điều này cho thấy EGARCH(1,1) phù hợp nhất với dữ
liệu.
➡ Kết luận: Trong ba mô hình, EGARCH(1,1) là mô hình tốt nhất để mô tả và dự báo biến động giá cổ phiếu CTG.
# 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.7033 266.9
## T+2 -6.7337 269.5
## T+3 -3.0040 272.1
## T+4 -0.6737 274.6
## T+5 0.7823 277.2
## T+6 1.6919 279.7
## T+7 2.2602 282.1
## T+8 2.6153 284.6
## T+9 2.8372 287.0
## T+10 2.9758 289.4
plot(forecast_egarch, which = 1)
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)),
GARCH_Vol = as.numeric(sigma(forecast_garch)),
TGARCH_Vol = as.numeric(sigma(forecast_tgarch)),
EGARCH_Vol = as.numeric(sigma(forecast_egarch))
)
print(comparison_forecast)
## Step GARCH_Mean TGARCH_Mean EGARCH_Mean GARCH_Vol TGARCH_Vol EGARCH_Vol
## 1 1 -3.505200236 -19.92354 -12.7033206 262.5788 299.1676 266.8850
## 2 2 -0.415897613 -17.24324 -6.7337114 263.0826 310.8148 269.4913
## 3 3 -0.041144701 -16.87362 -3.0039753 263.5849 322.1073 272.0713
## 4 4 0.004315315 -16.82265 -0.6736834 264.0857 333.0559 274.6248
## 5 5 0.009829916 -16.81562 0.7822534 264.5851 343.6712 277.1515
## 6 6 0.010498874 -16.81465 1.6919043 265.0831 353.9632 279.6514
## 7 7 0.010580023 -16.81452 2.2602426 265.5796 363.9419 282.1241
## 8 8 0.010589867 -16.81450 2.6153332 266.0747 373.6168 284.5697
## 9 9 0.010591061 -16.81450 2.8371893 266.5684 382.9970 286.9880
## 10 10 0.010591206 -16.81450 2.9758021 267.0607 392.0917 289.3789
Nhận xét
Từ bảng kết quả dự báo, ta thấy:
Về giá trị trung bình (Mean Forecast):
Mô hình GARCH(1,1) và EGARCH(1,1) cho dự báo giá trị trung bình dao động quanh 0 và dần chuyển sang dương, phản ánh xu hướng ổn định và có thể hồi phục nhẹ.
Trong khi đó, TGARCH(1,1) dự báo giá trị âm và hầu như không thay đổi, cho thấy mô hình này phản ứng mạnh hơn với các cú sốc âm (tin xấu).
Về độ biến động dự báo (Volatility Forecast):
TGARCH(1,1) có giá trị phương sai cao nhất và tăng nhanh theo thời gian ⇒ mô hình nhạy cảm với biến động tiêu cực.
GARCH(1,1) cho độ biến động ổn định nhất, tăng chậm ⇒ mô hình bảo thủ.
EGARCH(1,1) thể hiện biến động tăng nhẹ và ổn định ⇒ mô tả hợp lý hơn với dữ liệu tài chính có tính bất cân xứng.
➡ Kết luận: Trong ba mô hình, EGARCH(1,1) cho kết quả dự báo ổn định và hợp lý nhất, phản ánh đúng đặc điểm biến động bất cân xứng của chuỗi giá cổ phiếu CTG.
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))
)
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) +
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("blue", "green", "red")) +
theme_minimal()
Nhận xét
Từ biểu đồ có thể thấy:
TGARCH(1,1) cho biến động tăng mạnh nhất theo thời gian.
GARCH(1,1) ổn định nhất, gần như không thay đổi.
EGARCH(1,1) ở mức trung bình và ổn định hơn.
=> EGARCH(1,1) mô tả hợp lý nhất đặc tính biến động của cổ phiếu CTG.”)