Zum ersten Mal eine Frage hier, werde ich mein Bestes geben, um explizit zu sein - aber lassen Sie mich wissen, wenn ich mehr Informationen zur Verfügung stellen sollte! Zweitens, das ist eine lange Frage ... hoffentlich einfach für jemanden zu lösen;)! Mit "R" modelliere ich also multivariate GARCH-Modelle, die auf etwas Papier basieren (Manera et al. 2012).R - Modellierung Multivariate GARCH (rugarch und ccgarch)
Ich modelliere die Modelle der Constant Conditional Correlation (CCC) und der Dynamic Conditional Correlation (DCC) mit externen Regressoren in den Mittelwertgleichungen; Verwenden der "R" -Version 3.0.1 mit dem Paket "rugarch" Version 1.2-2 für die univariate GARCH mit externen Regressoren und "ccgarch" -Paket (Version 0.2.0-2) für die CCC/DCC-Modelle. (Ich schaue gerade in das "rmgarch" Paket - aber es scheint nur für die DCC und ich brauche CCC-Modell auch.)
Ich habe ein Problem in den mittleren Gleichungen meiner Modelle. In dem Papier, das ich oben erwähnt habe, ändert sich die Parameterschätzung der Mittelwertgleichung zwischen den CCC- und DCC-Modellen! Und ich weiß nicht, wie ich das in R ... (zur Zeit, auf Google und in Tsays Buch "Analyse der finanziellen Zeitreihe" und Engles Buch "Antizipierende Korrelationen", um meinen Fehler zu finden)
Was ich meine "meine Mittelgleichungen ändern sich nicht zwischen CCC- und DCC-Modellen" ist folgendes: Ich spezifiziere den univariaten GARCH für meine n = 5 Zeitreihe mit dem Paket rugarch. Dann verwende ich die Schätzparameter des GARCH (ARCH + GARCH-Terme) und verwende sie sowohl für die CCC- als auch für die DCC-Funktionen "eccc.sim()" und "dcc.sim()". Dann können aus den Funktionen eccc.estimation() und dcc.estimation() die Schätzungen für die Varianzgleichungen sowie die Korrelationsmatrizen abgerufen werden. Aber nicht für die Durchschnittsgleichung.
Ich poste den R-Code (reproduzierbar und mein Original) für univariate Modelle und nur das CCC-Modell. Danke schon für das Lesen meines Beitrages !!!!!
Hinweis: Im folgenden Code ist "data.repl" ein "Zoo" -Objekt von dim 843x22 (9 tägliche Serien von Commodities-Returns und erklärenden Variablen). Das multivariate GARCH ist nur für 5 Serien.
Reproduzierbare Code:
# 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)
Mein ursprünglicher Code:
### (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)
Danke für die Antwort! Ich bin mir dessen tatsächlich bewusst. Aber ich würde leider das CCC-Modell brauchen, das nicht enthalten ist (zumindest aus dem, was ich in der Hilfedatei gesehen habe, Vignette des rmgarch-Pakets). – cmembrez
Ich werde einfach ccgarch Paket für das CCC-Modell und die rmgarch für das DCC-Modell verwenden. Danke für deinen Beitrag – cmembrez