Dự báo GARCH khớp tốt với lợi nhuận quan sát chứ?

Các mô hình GARCH trong R

Kris Boudt

Professor of finance and econometrics

Tiêu chí đánh giá

  • Tùy tiêu chí bạn muốn đánh giá
    • kỳ vọng (mean) dự báo
    • phương sai dự báo
    • phân phối dự báo của lợi nhuận
Các mô hình GARCH trong R

1) Độ khớ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) Độ khớp cho dự báo phương sai

Mô hình GARCH dẫn đến:

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

3) Độ khớp cho phân phối

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

Ví dụ với lợi nhuận EUR/USD

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

Rủi ro overfitting

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.

Các mô hình GARCH trong R

Giải pháp: Cân bằng độ khớp với phạt độ 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

  • Mức độ 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:
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 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.

Các mô hình GARCH trong R

Minh họa trên lợi nhuận 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 nhuận 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 nên được ưu tiên ở đây.

Các mô hình GARCH trong R

Kết quả phụ thuộc trường hợp: lợi nhuận 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 nên được ưu tiên ở đây.

Các mô hình GARCH trong R

KISS: Giữ cho Đơn giản mà Tinh tế

Các mô hình GARCH trong R

Preparing Video For Download...