2013-06-01 50 views
5

Lần đầu tiên đặt câu hỏi tại đây, tôi sẽ cố hết sức để làm rõ - nhưng hãy cho tôi biết nếu tôi nên cung cấp thêm thông tin! Thứ hai, đó là một câu hỏi dài ... hy vọng đơn giản để giải quyết cho ai đó;)! Vì vậy, bằng cách sử dụng "R", tôi mô hình hóa các mô hình GARCH đa biến dựa trên một số giấy (Manera et al. 2012).R - Mô hình đa biến GARCH (rugarch và ccgarch)

Tôi lập mô hình Tương quan có điều kiện liên tục (CCC) và mô hình tương quan điều kiện động (DCC) với các biến hồi quy bên ngoài trong phương trình trung bình; sử dụng "R" phiên bản 3.0.1 với gói "rugarch" phiên bản 1.2-2 cho GARCH không biến đổi với các biến hồi quy bên ngoài và gói "ccgarch" (phiên bản 0.2.0-2) cho các mô hình CCC/DCC. (Tôi hiện đang xem xét gói "rmgarch" - nhưng dường như chỉ dành cho DCC và tôi cũng cần mẫu CCC.)

Tôi gặp sự cố trong phương trình trung bình của các mô hình của mình. Trong bài báo mà tôi đã đề cập ở trên, các ước tính tham số của phương trình trung bình giữa các mô hình CCC và DCC thay đổi! Và tôi không biết làm thế nào tôi sẽ làm điều đó trong R ... (hiện tại, tìm kiếm trên Google và vào cuốn sách "phân tích chuỗi thời gian tài chính" của Tsay và sách của Engle "Mối tương quan dự đoán" để tìm lỗi của tôi)

Những gì tôi có nghĩa là bởi "phương trình trung bình của tôi không thay đổi giữa các mô hình CCC và DCC", nó như sau: Tôi chỉ định GARCH đơn biến cho n = 5 chuỗi thời gian của tôi với gói rugarch. Sau đó, tôi sử dụng các tham số ước tính của GARCH (ARCH + các thuật ngữ GARCH) và sử dụng chúng cho cả hai hàm CCC và DCC "eccc.sim()" và "dcc.sim()". Sau đó, từ các hàm eccc.estimation() và dcc.estimation(), tôi có thể lấy các ước tính cho phương trình phương sai cũng như các ma trận tương quan. Nhưng không phải cho phương trình trung bình.

Tôi đăng mã R (bản sao có thể tái sản xuất và bản gốc của tôi) cho các mô hình đơn biến và chỉ mô hình CCC. Cảm ơn bạn đã đọc bài đăng của tôi !!!!!

Lưu ý: trong mã bên dưới, "data.repl" là đối tượng "vườn thú" có độ mờ 843x22 (9 hàng ngày trả về hàng loạt và chuỗi biến giải thích). GARCH đa biến chỉ dành cho 5 series.

mã thể sanh sản:

# libraries: 
library(rugarch) 
library(ccgarch) 
library(quantmod) 
# Creating fake data: 
dataRegr <- matrix(rep(rnorm(3149, 11, 1),1), ncol=1, nrow=3149) 
dataFuelsLag1 <- matrix(rep(rnorm(3149, 24, 8),2), ncol=2, nrow=3149) 
#S&P 500 via quantmod and Yahoo Finance 
T0 <- "2000-06-23" 
T1 <- "2012-12-31" 
getSymbols("^GSPC", src="yahoo", from=T0, to=T1) 
sp500.close <- GSPC[,"GSPC.Close"], 
getSymbols("UBS", src="yahoo", from=T0, to=T1) 
ubs.close <- UBS[,"UBS.Close"] 
dataReplic <- merge(sp500.close, ubs.close, all=TRUE) 
dataReplic[which(is.na(dataReplic[,2])),2] <- 0 #replace NA 

### (G)ARCH modelling ### 
######################### 
# External regressors: macrovariables and all fuels+biofuel Working's T index 
ext.regr.ext <- dataRegr 
regre.fuels <- cbind(dataFuelsLag1, dataRegr) 
### spec of GARCH(1,1) spec with AR(1) ### 
garch11.fuels <- as.list(1:2) 
for(i in 1:2){ 
    garch11.fuels[[i]] <- ugarchspec(mean.model = list(armaOrder=c(1,0), 
                external.regressors = as.matrix(regre.fuels[,-i]))) 
} 

### fit of GARCH(1,1) AR(1) ### 
garch11.fuels.fit <- as.list(1:2) 
for(i in 1:2){ 
    garch11.fuels.fit[[i]] <- ugarchfit(garch11.fuels[[i]], dataReplic[,i]) 
} 
################################################################## 
#### CCC fuels: with external regression in the mean eqaution #### 
################################################################## 
nObs <- length(data.repl[-1,1]) 
coef.unlist <- sapply(garch11.fuels.fit, coef) 
cccFuels.a <- rep(0.1, 2) 
cccFuels.A <- diag(coef.unlist[6,]) 
cccFuels.B <- diag(coef.unlist[7, ]) 
cccFuels.R <- corr.test(data.repl[,fuels.ind], data.repl[,fuels.ind])$r 

# model=extended (Jeantheau (1998)) 
ccc.fuels.sim <- eccc.sim(nobs = nObs, a=cccFuels.a, A=cccFuels.A, 
          B=cccFuels.B, R=cccFuels.R, model="extended") 
ccc.fuels.eps <- ccc.fuels.sim$eps 
ccc.fuels.est <- eccc.estimation(a=cccFuels.a, A=cccFuels.A, 
           B=cccFuels.B, R=cccFuels.R, 
           dvar=ccc.fuels.eps, model="extended") 
ccc.fuels.condCorr <- round(corr.test(ccc.fuels.est$std.resid, 
             ccc.fuels.est$std.resid)$r,digits=3) 

mã ban đầu của tôi:

### (G)ARCH modelling ### 
######################### 
# External regressors: macrovariables and all fuels+biofuel Working's T index 
ext.regr.ext <- as.matrix(data.repl[-1,c(10:13, 16, 19:22)]) 
regre.fuels <- cbind(fuel.lag1, ext.regr.ext) #fuel.lag1 is the pre-lagged series 
### spec of GARCH(1,1) spec with AR(1) ### 
garch11.fuels <- as.list(1:5) 
for(i in 1:5){ 
    garch11.fuels[[i]] <- ugarchspec(mean.model = list(armaOrder=c(1,0), 
            external.regressors = as.matrix(regre.fuels[,-i]))) 
}# regre.fuels[,-i] => "-i" because I model an AR(1) for each mean equation 

### fit of GARCH(1,1) AR(1) ### 
garch11.fuels.fit <- as.list(1:5) 
for(i in 1:5){ 
    j <- i 
    if(j==5){j <- 7} #because 5th "fuels" is actually column #7 in data.repl 
    garch11.fuels.fit[[i]] <- ugarchfit(garch11.fuels[[i]], as.matrix(data.repl[-1,j]))) 
} 

#fuelsLag1.names <- paste(cmdty.names[fuels.ind], "(-1)") 
fuelsLag1.names <- cmdty.names[fuels.ind] 
rowNames.ext <- c("Constant", fuelsLag1.names, "Working's T Gasoline", "Working's T Heating Oil", 
       "Working's T Natural Gas", "Working's T Crude Oil", 
       "Working's T Soybean Oil", "Junk Bond", "T-bill", 
       "SP500", "Exch.Rate") 
ic.n <- c("Akaike", "Bayes") 
garch11.ext.univSpec <- univ.spec(garch11.fuels.fit, ols.fit.ext, rowNames.ext, 
            rowNum=c(1:15), colNames=cmdty.names[fuels.ind], 
            ccc=TRUE) 
################################################################## 
#### CCC fuels: with external regression in the mean eqaution #### 
################################################################## 
# From my GARCH(1,1)-AR(1) model, I extract ARCH and GARCH 
# in order to model a CCC GARCH model: 
nObs <- length(data.repl[-1,1]) 
coef.unlist <- sapply(garch11.fuels.fit, coef) 

cccFuels.a <- rep(0.1, length(fuels.ind)) 
cccFuels.A <- diag(coef.unlist[17,]) 
cccFuels.B <- diag(coef.unlist[18, ]) 
#based on Engle(2009) book, page 31: 
cccFuels.R <- corr.test(data.repl[,fuels.ind], data.repl[,fuels.ind])$r 

# model=extended (Jeantheau (1998)) 
# "allow the squared errors and variances of the series to affect 
# the dynamics of the individual conditional variances 
ccc.fuels.sim <- eccc.sim(nobs = nObs, a=cccFuels.a, A=cccFuels.A, 
            B=cccFuels.B, R=cccFuels.R, model="extended") 
ccc.fuels.eps <- ccc.fuels.sim$eps 
ccc.fuels.est <- eccc.estimation(a=cccFuels.a, A=cccFuels.A, 
              B=cccFuels.B, R=cccFuels.R, 
              dvar=ccc.fuels.eps, model="extended") 
ccc.fuels.condCorr <- round(corr.test(ccc.fuels.est$std.resid, 
             ccc.fuels.est$std.resid)$r,digits=3) 
colnames(ccc.fuels.condCorr) <- cmdty.names[fuels.ind] 
rownames(ccc.fuels.condCorr) <- cmdty.names[fuels.ind] 
lowerTri(ccc.fuels.condCorr, rep=NA) 

Trả lời

3

Bạn có biết rằng có cả một gói rmgarch cho các mô hình GARCH đa biến?

mỗi MÔ TẢ của nó, nó bao gồm

mô hình GARCH đa biến khả thi bao gồm DCC, GO-GARCH và copula-GARCH.

+0

Cảm ơn bạn đã trả lời! Tôi thực sự biết về nó. Nhưng tiếc là tôi sẽ cần các mô hình CCC mà không được bao gồm (ít nhất, từ những gì tôi nhìn thấy trong tập tin trợ giúp, họa tiết của gói rmgarch). – cmembrez

+0

Tôi sẽ chỉ sử dụng gói ccgarch cho mô hình CCC và rmgarch cho mô hình DCC. Cảm ơn vì đầu vào của bạn – cmembrez

Các vấn đề liên quan