|
之前有个包叫:mgarchBEKK可以直接用如果你的版本不是新的,可以到hithub找一下这个包
如果是现在用的话,rmgarch的话——
library(rugarch)
library(ccgarch)
library(rmgarch)
library(gogarch)
library(MTS)
library(mgarch)
save.image("~/Documents/sheetR/MGARCH-Examples/Simulations.RData")
#**************************************************************#
########################## M-GARCH #############################
#**************************************************************#
### EXEMPLOS DE CCC-GARCH E DCC-GARCH USANDO O PACOTE 'ccgarch'
### CCC-GARCH
### DCCt-GARCH (Tse e Tsui)
### DCCe-GARCH (Engle)
### CP-GARCH
### F-GARCH
### (G)O-GARCH
### (G)ICA-GARCH
h11.spec<-garchSpec(model = list(omega=0.1,alpha=0.05,beta=0.7),cond.dist = "norm")
h22.spec<-garchSpec(model = list(omega=0.2,alpha=0.5,beta=0.5),cond.dist = "norm")
h11<-garchSim(spec = h11.spec, n = 1000)
h22<-garchSim(spec = h22.spec, n = 1000)
R<-matrix(c(1,0.5,-0.5,1),ncol=2,byrow=T)
#**************************************************************#
######################### 3-BEKK-GARCH ##########################
#**************************************************************#
bekk.spec = garchSpec(model = list(alpha = 0.2, beta = 0.7))
bekk.A0=matrix(c(0.1,0,0,-0.1,0.2,0,0.3,-0.1,0.4),ncol=3,byrow=T)
bekk.A1=matrix(c(0.7,0,0.1,0,0.2,-0.1,0.2,-0.1,0.4),ncol=3,byrow=T)
bekk.B1=matrix(c(0.2,0,-0.5,0,0,0.2,0,-0.1,0.1),ncol=3,byrow=T)
bekk.S0=diag(3)
bekk.epsilon1=garchSim(bekk.spec, n = 1000)
bekk.epsilon2=garchSim(bekk.spec, n = 1000)
bekk.epsilon3=garchSim(bekk.spec, n = 1000)
bekk.epsilon<-cbind(bekk.epsilon1,bekk.epsilon2,bekk.epsilon3)
bekk.S<-array(0,dim=c(1000,3,3))
bekk.S[1,,]=diag(3)
for(t in 2:1000){
bekk.S[t,,]=bekk.A0%*%t(bekk.A0) + bekk.A1 %*% t(bekk.epsilon[t,]) %*% bekk.epsilon[t,] %*% t(bekk.A1) + bekk.B1%*%bekk.S[t-1,,]
}
MTSplot(bekk.S)
###### 3.1-Simulacao utilizando o pacote mgarch #####
bekk.sim <- mvBEKK.sim(series.count = 3, T = 2500)
names(bekk.sim)
# > names(bekk.sim)
# [1] "length" "series.count" "order"
# [4] "params" "true.params" "eigenvalues"
# [7] "uncond.cov.matrix" "white.noise" "eps"
# [10] "cor" "sd"
bekk.sim$length
bekk.sim$series.count
bekk.sim$order
bekk.sim$params
bekk.sim$true.params
bekk.sim$eigenvalues
bekk.sim$uncond.cov.matrix
matrix.bekk.sim<-cbind(bekk.sim$eps[[1]],bekk.sim$eps[[2]],bekk.sim$eps[[3]])
plot.ts(matrix.bekk.sim)
##### 3.1.a-Estimacao do BEKK via mgarch #####
fit.bekk.mgarch<-mvBEKK.est(matrix.bekk.sim)
##### 3.2-Estimacao do BEKK via MTS #####
system.time(fit.bekk.mts<-BEKK11(matrix.bekk.sim))
names(fit.bekk.mts)
# [1] "estimates" "HessianMtx" "Sigma.t"
fit.bekk.mts$estimates
|