การพยากรณ์ GARCH สอดคล้องกับผลตอบแทนที่สังเกตได้ดีเพียงใด?

GARCH Models in R

Kris Boudt

Professor of finance and econometrics

เกณฑ์การประเมิน

  • ขึ้นอยู่กับสิ่งที่ต้องการประเมิน
    • ค่าเฉลี่ยที่พยากรณ์ได้
    • ความแปรปรวนที่พยากรณ์ได้
    • การกระจายตัวของผลตอบแทนที่พยากรณ์ได้
GARCH Models in R

1) ความเหมาะสมของการพยากรณ์ค่าเฉลี่ย

จากโมเดล GARCH ที่ประมาณค่าได้:

การนำไปใช้

e <- residuals(tgarchfit) 
mean(e ^ 2)
GARCH Models in R

2) ความเหมาะสมของการพยากรณ์ความแปรปรวน

โมเดล GARCH ให้ผลลัพธ์:

การนำไปใช้

e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2 
mean(d ^ 2)
GARCH Models in R

ตัวอย่างสำหรับผลตอบแทน 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)
# Compute mean squared prediction error for the mean
e <- residuals(tgarchfit) ^ 2
mean(e ^ 2) # 3.836205e-05
# Compute mean squared prediction error for the variance
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2) # 5.662366e-09
GARCH Models in R

3) ความเหมาะสมของการกระจายตัว

  • โมเดล GARCH ให้ความหนาแน่นของความน่าจะเป็นสำหรับผลตอบแทนทุกค่าในตัวอย่าง
    • ความหนาแน่นยิ่งสูง ผลตอบแทนนั้นยิ่งมีโอกาสเกิดขึ้นภายใต้โมเดล GARCH ที่ประมาณค่าได้
    • Likelihood ของตัวอย่างคือผลคูณของความหนาแน่นทั้งหมด ซึ่งวัดว่าผลตอบแทนที่สังเกตได้มีโอกาสมาจากโมเดล GARCH มากน้อยเพียงใด
    • Likelihood ยิ่งสูง โมเดลยิ่งเหมาะสมกับข้อมูล
GARCH Models in R

ตัวอย่างสำหรับผลตอบแทน EUR/USD

likelihood(tgarchfit) # returns 18528.58

วิเคราะห์โดยเปรียบเทียบกับโมเดลอื่น:

# Complex model with many parameters
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
GARCH Models in R

ความเสี่ยงของ overfitting

ข้อควรระวัง: ใช้แนวทางการประเมินแบบ in-sample ซึ่งตัวอย่างที่ใช้ประมาณค่าและประเมินผลเป็นชุดเดียวกัน

ความเสี่ยงของ overfitting:

Overfitting คือการเลือกโมเดลที่ซับซ้อนเกินไป ซึ่งเหมาะสมกับผลตอบแทนในตัวอย่างที่ใช้ประมาณค่า แต่ไม่เหมาะสมกับผลตอบแทนในอนาคตที่อยู่นอกตัวอย่าง

GARCH Models in R

แนวทางแก้ไข: สมดุลระหว่างความเหมาะสมของโมเดลกับบทลงโทษด้านความซับซ้อน

  • โมเดล GARCH ที่มีความกระชับ (parsimonious) ควรมี:
    • likelihood สูง
    • และจำนวนพารามิเตอร์น้อย
GARCH Models in R

เกณฑ์สารสนเทศ

  • ความกระชับวัดด้วยเกณฑ์สารสนเทศ (information criteria)

information criteria = - likelihood + penalty(number of parameters)

  • ค่ายิ่งต่ำยิ่งดี

หลักเกณฑ์เบื้องต้นในการตัดสินใจ:
เลือกโมเดลที่มีเกณฑ์สารสนเทศต่ำที่สุด

GARCH Models in R

ผลลัพธ์ของเกณฑ์สารสนเทศ

เมธอด infocriteria() แสดงเกณฑ์สารสนเทศสำหรับบทลงโทษแบบต่างๆ

infocriteria(tgarchfit)

out Akaike -7.468081 Bayes -7.462833 Shibata -7.468083 Hannan-Quinn -7.466241 `

การตีความต้องเปรียบเทียบกับเกณฑ์สารสนเทศของโมเดลอื่น

GARCH Models in R

ตัวอย่างจากผลตอบแทน 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)) # only 5 parameters
likelihood(tgarchfit)   # equals 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)) # we now have 8 parameters
likelihood(flexgarchfit) #  18530.49: likelihood increased
GARCH Models in R

โมเดลใดกระชับที่สุดสำหรับผลตอบแทน EUR/USD?

Likelihood สูงกว่าดีกว่า เกณฑ์สารสนเทศต่ำกว่าดีกว่า

infocriteria(tgarchfit) # Simple model
Akaike       -7.468435
Bayes        -7.464499
infocriteria(flexgarchfit) # Complex model
Akaike       -7.467239
Bayes        -7.456742

โมเดลอย่างง่ายมีเกณฑ์สารสนเทศต่ำที่สุด จึงควรเลือกใช้ในกรณีนี้

GARCH Models in R

ผลลัพธ์ขึ้นอยู่กับกรณี: กรณีผลตอบแทน 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

โมเดลที่ซับซ้อนมีเกณฑ์สารสนเทศต่ำที่สุด จึงควรเลือกใช้ในกรณีนี้

GARCH Models in R

KISS: Keep it Sophisticatedly Simple

GARCH Models in R

Preparing Video For Download...