หลีกเลี่ยงความซับซ้อนที่ไม่จำเป็น

GARCH Models in R

Kris Boudt

Professor of finance and econometrics

หลีกเลี่ยงความซับซ้อนที่ไม่จำเป็น

  • หากทราบว่า
    • ไดนามิกของค่าเฉลี่ยมีนัยสำคัญน้อยมาก
    • ไม่มี leverage effect ในความแปรปรวน
    • การแจกแจงมีความสมมาตรและหางหนา

การกำหนดสเปกที่เหมาะสม คือ ค่าเฉลี่ยคงที่, GARCH(1, 1) มาตรฐานที่ใช้การแจกแจงแบบ student t:

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
GARCH Models in R

จำกัดค่าประมาณพารามิเตอร์

  • หากทราบว่าพารามิเตอร์
    • มีค่าเท่ากับค่าหนึ่งที่กำหนด
    • หรืออยู่ในช่วงค่าที่ระบุ
  • ควรกำหนดเงื่อนไขนี้ในสเปกโดยใช้เมธอด
    • setfixed()
    • setbounds()
GARCH Models in R

การประยุกต์ใช้กับอัตราแลกเปลี่ยน

การกำหนดสเปกและการประมาณค่า

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

ผลการประมาณค่า

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-3.562136e-05  8.005123e-08  3.097322e-02  9.674496e-01  8.821902e+00
GARCH Models in R

ตัวอย่างการใช้ setfixed()

  • หากทราบว่า alpha1 = 0.05 และ shape = 6: ให้กำหนดค่าเหล่านั้นในการประมาณค่า
  • วิธีการ: ใช้เมธอด setfixed() บนออบเจกต์ ugarchspec
setfixed(garchspec) <- list(alpha1 = 0.05, shape = 6)

ผลลัพธ์

garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-4.142922e-05  2.061772e-07  5.000000e-02  9.489622e-01  6.000000e+00
GARCH Models in R

การกำหนดขอบเขตพารามิเตอร์

  • พารามิเตอร์ GARCH สามารถถูกจำกัดให้อยู่ในช่วงหนึ่งได้
  • บางครั้งช่วงค่าที่เป็นไปได้กว้างมาก:
    • เพื่อให้ความแปรปรวนเป็นบวก เช่น กำหนดให้พารามิเตอร์ความแปรปรวนทั้งหมด ($\omega$, $\alpha$, $\beta$, $\gamma$) มีค่าเป็นบวก
  • บางครั้งช่วงค่าที่เป็นไปได้แคบกว่า:
    • ค่า $\alpha$ ที่น่าจะเป็นอยู่ระหว่าง 0.05 ถึง 0.2
    • ค่า $\beta$ ที่น่าจะเป็นอยู่ระหว่าง 0.7 ถึง 0.95
  • การกำหนดขอบเขตพารามิเตอร์แบบนี้ทำได้โดยใช้เมธอด setbounds()
GARCH Models in R

ตัวอย่างการใช้ setbounds()

setbounds(garchspec) <- list(alpha1 = c(0.05, 0.2), beta1 = c(0.8, 0.95))
GARCH Models in R

ใช้สัญชาตญาณเพื่อหลีกเลี่ยงความซับซ้อนที่ไม่จำเป็น

นำข้อมูลที่มีมาใช้:

  • เพื่อสร้างโมเดลที่เรียบง่าย (และชาญฉลาด)
  • เพื่อกำหนดค่าพารามิเตอร์หรือตั้งขอบเขต
  • เพื่อให้ไดนามิก GARCH สมจริง:

    • การ mean reversion ของความผันผวนรอบค่าเบี่ยงเบนมาตรฐานของตัวอย่าง
      sd(EURUSDret) # returns a value of 0.006194049
      
GARCH Models in R

กลุ่มความผันผวนและการ mean reversion ของความผันผวน

GARCH Models in R

Variance targeting

  • ในเชิงคณิตศาสตร์ หมายความว่าความแปรปรวนแบบ unconditional ที่ได้จากโมเดล GARCH เท่ากับความแปรปรวนของตัวอย่าง $\hat \sigma^2$
  • วิธีการ: กำหนดอาร์กิวเมนต์ variance.targeting = TRUE ใน variance.model ของ ugarchspec():
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                        variance.model = list(model = "sGARCH",
                        variance.targeting = TRUE),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)
all.equal(uncvariance(garchfit), sd(EURUSDret) ^ 2, tol = 1e-4)
TRUE
GARCH Models in R

มาลองกำหนดข้อจำกัดบนโมเดล GARCH กัน

GARCH Models in R

Preparing Video For Download...