Đưa mô hình GARCH đã kiểm định vào vận hành

Các mô hình GARCH trong R

Kris Boudt

Professor of finance and econometrics

Dùng trong vận hành

Phân phối lợi nhuận ngày theo năm

Các mô hình GARCH trong R

Tính năng mới

  • Dùng ugarchfilter() để phân tích động lực trung bình và biến động gần đây
  • Dùng ugarchforecast() áp dụng cho đối tượng ugarchspec (thay vì ugarchfit()) để dự báo trung bình và biến động tương lai
Các mô hình GARCH trong R

Ví dụ trên lợi nhuận MSFT

  • msftret: lợi nhuận ngày 1999–2017.
  • Giả sử ước lượng mô hình dùng dữ liệu đến cuối năm 2010.
  • Dùng mô hình này tại cuối 2017 để phân tích động lực biến động quá khứ và dự báo biến động tương lai.
Các mô hình GARCH trong R

Bước 1: Xác định đặc tả mô hình cuối cùng

Ước lượng mô hình tốt nhất dùng msftret có tại cuối 2010:

# Specify AR(1)-GJR GARCH model with skewed student t distribution
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),
 variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
# Estimate the model
garchfit <- ugarchfit(data = msftret["/2010-12"], spec = garchspec)

Đặt progarchspec là đặc tả dùng trong vận hành và dùng lệnh setfixed(progarchspec) <- as.list(coef(garchfit)):

progarchspec <- garchspec
setfixed(progarchspec) <- as.list(coef(garchfit))
Các mô hình GARCH trong R

Bước 2: Phân tích động lực trung bình và biến động

Dùng hàm ugarchfilter():

garchfilter <- ugarchfilter(data = msftret, spec = progarchspec)
plot(sigma(garchfilter))                                

Phân phối lợi nhuận ngày theo năm

Các mô hình GARCH trong R

Bước 3: Dự báo lợi nhuận tương lai

garchforecast <- ugarchforecast(data = msftret,
                                fitORspec = progarchspec, 
                                n.ahead = 10) # Make predictions for next ten days
cbind(fitted(garchforecast), sigma(garchforecast))
       2017-12-29 2017-12-29
T+1  0.0004781733 0.01124870
T+2  0.0003610470 0.01132550
T+3  0.0003663683 0.01140171
T+4  0.0003661265 0.01147733
T+5  0.0003661375 0.01155238
T+6  0.0003661370 0.01162688
T+7  0.0003661371 0.01170083
T+8  0.0003661371 0.01177424
T+9  0.0003661371 0.01184712
T+10 0.0003661371 0.01191948
Các mô hình GARCH trong R

Dùng cho mô phỏng

Thay vì áp dụng mô hình đầy đủ để phân tích lợi nhuận quan sát, có thể dùng để mô phỏng log-lợi nhuận nhân tạo:

$$ r_{t} = \log(P_{t}) - \log(P_{t-1}) $$

Hữu ích để đánh giá tính ngẫu nhiên của lợi nhuận tương lai và tác động lên giá, vì giá tương lai bằng:

$$ P_{t + h} = P_{t} \exp(r_{t + 1} + r_{t + 2} + \ldots + r_{t + h}) $$

Các mô hình GARCH trong R

Bước 1: Hiệu chỉnh mô hình mô phỏng

Dùng log-lợi nhuận trong ước lượng

# Compute log returns
msftlogret <- diff(log(MSFTprice))[-1]

Ước lượng mô hình và gán tham số cho mô hình mô phỏng

garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                        variance.model = list(model = "gjrGARCH"),
                        distribution.model = "sstd")
# Estimate the model
garchfit <- ugarchfit(data = msftlogret, spec = garchspec)

# Set that estimated model as the model to be used in the simulation
simgarchspec <- garchspec
setfixed(simgarchspec) <- as.list(coef(garchfit))
Các mô hình GARCH trong R

Bước 2: Chạy mô phỏng với `ugarchpath()`

Mô phỏng với hàm ugarchpath() cần chọn:

  • spec: mô hình GARCH xác định đầy đủ
  • m.sim: số chuỗi thời gian lợi nhuận mô phỏng cần có
  • n.sim: số quan sát trong mỗi chuỗi mô phỏng (ví dụ 252)
  • rseed: số để cố định hạt giống sinh ngẫu nhiên (cần cho tái lập)
simgarch <- ugarchpath(spec = simgarchspec, m.sim = 4,
                       n.sim = 10 * 252, rseed = 12345)
Các mô hình GARCH trong R

Bước 3: Phân tích lợi nhuận mô phỏng

Hàm fitted() cho lợi nhuận mô phỏng:

simret <- fitted(simgarch)
plot.zoo(simret) 

Lợi nhuận mô phỏng

Các mô hình GARCH trong R

Phân tích độ biến động mô phỏng

plot.zoo(sigma(simgarch))

Độ biến động mô phỏng

Các mô hình GARCH trong R

Phân tích giá mô phỏng

Vẽ 4 mô phỏng giá cổ phiếu trong 10 năm, giá đầu kỳ đặt bằng 1:

simprices <- exp(apply(simret, 2, "cumsum"))
matplot(simprices, type = "l", lwd = 3)

Giá mô phỏng

Các mô hình GARCH trong R

Thực hành với setfixed(), ugarchfilter(), ugarchforecast() và ugarchpath()

Các mô hình GARCH trong R

Preparing Video For Download...