Dự báo GARCH có khớp tốt với lợi suất quan sát?

Các mô hình GARCH trong R

Kris Boudt

Professor of finance and econometrics

Tiêu chí đánh giá

  • Tùy bạn muốn đánh giá gì
    • kỳ vọng dự báo
    • phương sai dự báo
    • phân phối dự báo của lợi suất
Các mô hình GARCH trong R

1) Độ phù hợp cho dự báo trung bình

Dựa trên mô hình GARCH ước lượng, ta có:

Triển khai

e <- residuals(tgarchfit) 
mean(e ^ 2)
Các mô hình GARCH trong R

2) Độ phù hợp cho dự báo phương sai

Mô hình GARCH dẫn tới:

Triển khai

e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2 
mean(d ^ 2)
Các mô hình GARCH trong R

Ví dụ với lợi suất EUR/USD

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
Các mô hình GARCH trong R

3) Độ phù hợp cho phân phối

  • Mô hình GARCH cung cấp mật độ dự báo cho mọi lợi suất trong mẫu
    • Mật độ càng cao, lợi suất càng có khả năng thuộc mô hình GARCH ước lượng
    • Khả năng hợp lý của mẫu dựa trên tích của tất cả các mật độ này. Nó đo lường mức độ dữ liệu quan sát có thể đến từ mô hình GARCH ước lượng
    • Likelihood càng cao, mô hình càng khớp dữ liệu tốt
Các mô hình GARCH trong R

Ví dụ với lợi suất EUR/USD

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
Các mô hình GARCH trong R

Rủi ro overfitting

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.

Các mô hình GARCH trong R

Giải pháp: Cân bằng độ phù hợp với phạt cho độ phức tạp

  • Mô hình GARCH là tiết kiệm tham số khi:
    • likelihood cao
    • và số tham số tương đối ít
Các mô hình GARCH trong R

Tiêu chí thông tin

  • Tính tiết kiệm được đo bằng tiêu chí thông tin.

tiêu chí thông tin = - likelihood + phạt(số tham số)

  • Càng thấp càng tốt.

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.

Các mô hình GARCH trong R

Kết quả tiêu chí thông tin

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.

Các mô hình GARCH trong R

Minh họa trên lợi suất EUR/USD

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
Các mô hình GARCH trong R

Mô hình nào tiết kiệm tham số nhất cho lợi suất EUR/USD?

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.

Các mô hình GARCH trong R

Kết quả phụ thuộc từng trường hợp: lợi suất MSFT

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

KISS: Giữ đơn giản một cách tinh tế

Các mô hình GARCH trong R

Preparing Video For Download...