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 đến:

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 mean
e <- residuals(tgarchfit) ^ 2
mean(e ^ 2) # 3.836205e-05
# Tính sai số bình phương trung bình cho phương sai
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2) # 5.662366e-09
likelihood(tgarchfit) # returns 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) # returns 18530.49
Lưu ý: Ta dùng đánh giá in-sample: mẫu ước lượng trùng với mẫu đánh giá.
Nguy cơ overfitting:
Overfitting là chọn mô hình quá phức tạp, khớp tốt với lợi nhuận trong mẫu ước lượng nhưng không khớp với lợi nhuận 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:
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 cho các mức phạt khác nhau
infocriteria(tgarchfit)
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 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 nên được ưu tiên ở đây.
Các mô hình GARCH trong R