Các mô hình GARCH trong R
Kris Boudt
Professor of finance and econometrics
Dựa trên mô hình GARCH ước lượng, ta có:

Triển khai
e <- residuals(tgarchfit)
mean(e ^ 2)
Mô hình GARCH dẫn tới:

Triển khai
e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2)
tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH", variance.targeting = TRUE),
distribution.model = "std")
tgarchfit <- ugarchfit(data = EURUSDret, spec = tgarchspec)
# Tính sai số bình phương trung bình cho dự báo trung bình
e <- residuals(tgarchfit) ^ 2
mean(e ^ 2) # 3.836205e-05
# Tính sai số bình phương trung bình cho dự báo phương sai
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2) # 5.662366e-09
likelihood(tgarchfit) # trả về 18528.58
Phân tích bằng cách so sánh với mô hình khác:
# Mô hình phức tạp với nhiều tham số
flexgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "sstd")
flexgarchfit <- ugarchfit(data = EURUSDret, spec = flexgarchspec)
likelihood(flexgarchfit) # trả về 18530.49
Lưu ý: Ta dùng cách đánh giá trong mẫu, nơi mẫu ước lượng và mẫu đánh giá trùng nhau.
Nguy cơ overfitting:
Overfitting là chọn mô hình quá phức tạp, khớp tốt lợi suất trong mẫu dùng để ước lượng nhưng không khớp với lợi suất tương lai ngoài mẫu.
tiêu chí thông tin = - likelihood + phạt(số tham số)
Quy tắc ngón tay cái để quyết định:
Chọn mô hình có tiêu chí thông tin thấp nhất.
Hàm infocriteria() in tiêu chí thông tin với các mức phạt khác nhau
infocriteria(tgarchfit)
out
Akaike -7.468081
Bayes -7.462833
Shibata -7.468083
Hannan-Quinn -7.466241
`
Diễn giải cần so sánh với tiêu chí thông tin của mô hình khác.
tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH", variance.targeting = TRUE),
distribution.model = "std")
tgarchfit <- ugarchfit(data = EURUSDret, spec = tgarchspec)
length(coef(tgarchfit)) # chỉ 5 tham số
likelihood(tgarchfit) # bằng 18528.58
flexgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
flexgarchfit <- ugarchfit(data = EURUSDret, spec = flexgarchspec)
length(coef(flexgarchfit)) # giờ có 8 tham số
likelihood(flexgarchfit) # 18530.49: likelihood tăng
Likelihood cao hơn là tốt hơn. Tiêu chí thông tin thấp hơn là tốt hơn.
infocriteria(tgarchfit) # Mô hình đơn giản
Akaike -7.468435
Bayes -7.464499
infocriteria(flexgarchfit) # Mô hình phức tạp
Akaike -7.467239
Bayes -7.456742
Mô hình đơn giản có tiêu chí thông tin thấp nhất nên được ưu tiên ở đây.
tgarchfit <- ugarchfit(data = msftret, spec = tgarchspec)
flexgarchfit <- ugarchfit(data = msftret, spec = flexgarchspec)
infocriteria(tgarchfit)
Akaike -5.481895
Bayes -5.477833
infocriteria(flexgarchfit)
Akaike -5.489087
Bayes -5.478255
Mô hình phức tạp có tiêu chí thông tin thấp nhất nên được ưu tiên ở đây.
Các mô hình GARCH trong R