Dynamic conditional correlation multivariate GARCH
Moderators: EViews Gareth, EViews Moderator
Re: Dynamic conditional correlation multivariate GARCH
Hi, thank you for your answer. Now, I'm asking some questions about my model. My goal is to analyse the evolution of the links between stock volatility and commodity volatility using a DCC GARCH model. So, what do I need to use ? The conditional correlations or the conditional variances ? How do we get these two things in the results of DCC GARCH model by using the add-in ?
Thank you for your answmer
Thank you for your answmer
Re: Dynamic conditional correlation multivariate GARCH
Have you read the documentation that comes with the add-in?
And could you please post your questions on the use of add-in here?
And could you please post your questions on the use of add-in here?
Re: Dynamic conditional correlation multivariate GARCH
Hi all,
I'm trying to use the A-DCC model posted in this thread and have adapted it to a bivariate case. I have one error that I do not know how to solve, or really what it means. When I run the model with certain initial values I get the error message "Overflow – Missing data generated in ”Series Q11F = QBAR …”. This does not happen for all initial values, but when this message does not appear I violate some of the conditions for the model and thus I believe I am on the right track with the initial values when the overflow message appears. Is there any obvious reason for why this might happen (something wrong with sample specification, missing terms in equation ..) ?
Any help is greatly apprecited.
I'm trying to use the A-DCC model posted in this thread and have adapted it to a bivariate case. I have one error that I do not know how to solve, or really what it means. When I run the model with certain initial values I get the error message "Overflow – Missing data generated in ”Series Q11F = QBAR …”. This does not happen for all initial values, but when this message does not appear I violate some of the conditions for the model and thus I believe I am on the right track with the initial values when the overflow message appears. Is there any obvious reason for why this might happen (something wrong with sample specification, missing terms in equation ..) ?
Any help is greatly apprecited.
Code: Select all
'ADCC Model by Cappiello et al (2006) Bivariate
'Load workfile and measure length of series
series obscount = 1
scalar obslength = @sum(obscount)
'Specify the return series
series y1 = goldbullionreturn
series y2 = sp500return
'Specify the number of iterations in the MLE (Engle & Sheppard (2001) used just one iteration)
!itermle = 1000
'Specify the initial values of the parameters
coef(1) a11
coef(1) a12
coef(1) a22
coef(1) b11
coef(1) b12
coef(1) b22
coef(1) g11
coef(1) g12
coef(1) g22
'Values may vary depending on which will result in the highest Likelihood value
a11(1) = 0.05
a12(1) = 0.05
a22(1) = 0.05
b11(1) = 0.15
b12(1) = 0.15
b22(1) = 0.15
g11(1) = 0.01
g12(1) = 0.01
g22(1) = 0.01
'Setting the sample
sample s0 @first+13 @last
sample s1 @first+14 @last
sample sf @first+15 @last
sample sf_alt @first+25 @last
'Initialization at sample s0
smpl s0
'Each return series is modeled with their respective GARCH specifications:
'Use Bollerslev-Wooldridge QML
'Standard errors
equation eq1.arch(9,0,asy=0, egarch,m=1000,c=1e-5,h) y1 c y1(-12) 'res_s11_1000 @ res_s11_1000
equation eq2.arch(2,1,asy=2, egarch,m=1000,c=1e-5,h) y2 c y2(-13) 'res_s22_1000 @ res_s22_1000
'Make residual series -- This is Ut
eq1.makeresids e1
eq2.makeresids e2
'Make a garch series from the univariate estimates
eq1.makegarch h11
eq2.makegarch h22
'Normalizing the residuals from e to e* (named as "e1n" and "e2n") -- Here we change from Ut to epsilon t.
series e1n = e1/h11^0.5
series e2n = e2/h22^0.5
'Make residual series for asymmetries in DCC model
series n1n = @recode(e1n<0,e1n*e1n,0)
series n2n = @recode(e2n<0,e2n*e2n,0)
'The Q_bar=E[en*en'] components and its sample equivalent
series qbar11 = @mean(e1n*e1n)
series qbar12 = @mean(e1n*e2n)
series qbar21 = @mean(e2n*e1n)
series qbar22 = @mean(e2n*e2n)
'The N_bar
series nbar11 = @mean(n1n*n1n)
series nbar12 = @mean(n1n*n2n)
series nbar21 = @mean(n2n*n1n)
series nbar22 = @mean(n2n*n2n)
'Initialize the elements of Qt for variance targeting
series q11 = @var(e1)
series q12 = @cov(e1,e2)
series q21 = @cov(e2,e1)
series q22 = @var(e2)
'***********************************************************************************************
'Declare a Loglikelihood object
logl dcc
dcc.append @logl logl
'The elements of matrix Qt
dcc.append q11 = qbar11- ((a11(1)*qbar11 + a12(1)*qbar12)*a11(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a12(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b11(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b12(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g11(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g12(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a11(1)+e2n(-1)*a12(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g11(1)+n2n(-1)*g12(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b11(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b12(1))
dcc.append q12 = qbar12- ((a11(1)*qbar11 + a12(1)*qbar12)*a12(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a22(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b12(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b22(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g12(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g22(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b12(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b22(1))
dcc.append q21 = qbar12- ((a11(1)*qbar11 + a12(1)*qbar12)*a12(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a22(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b12(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b22(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g12(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g22(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b12(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b22(1))
dcc.append q22 = qbar22- ((a12(1)*qbar11 + a22(1)*qbar12)*a12(1) + (a12(1)*qbar12 +a22(1)*qbar22)*a22(1)) - ((b12(1)*qbar11 + b22(1)*qbar12)*b12(1) + (b12(1)*qbar12 +b22(1)*qbar22)*b22(1)) - ((g12(1)*nbar11 + g22(1)*nbar12)*g12(1) + (g12(1)*nbar12 +g22(1)*nbar22)*g22(1)) + (a12(1)*e1n(-1) + a22(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g12(1)*n1n(-1) + g22(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b12(1)*q11 + b22(1)*q12(-1))*b12(1) + (b12(1)*q12(-1) +b22(1)*q22(-1))*b22(1))
'As input to detQQQ
dcc.append q12n = (qbar12- ((a11(1)*qbar11 + a12(1)*qbar12)*a12(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a22(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b12(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b22(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g12(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g22(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b12(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b22(1)))/((abs(q11)^0.5)*(abs(q22)^0.5))
dcc.append q21n = (qbar12- ((a11(1)*qbar11 + a12(1)*qbar12)*a12(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a22(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b12(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b22(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g12(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g22(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b12(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b22(1)))/((abs(q22)^0.5)*(abs(q11)^0.5))
'Setting up the Loglikelihood function, assuming that resid ~ N(0,H)
'The Loglikelihood function is L' = -0.5*{summation from t=1 to T of ([log of determinant of inverse(diag[Qt])*Qt*inverse(diag[Qt])] + [en'*inverse(diag[Qt])*Qt*inverse(diag[Qt])*en])
'Taking the adjoint{inverse(diag[Qt])*Qt*inverse(diag[Qt])}
dcc.append detQQQ = 1 - q12n*q21n
'Tomando el adjoint{inverse(diag[Qt])*Qt*inverse(diag[Qt])}
dcc.append cofact11 = 1*1
dcc.append cofact12 =(-1)*q21n
dcc.append cofact21 =(-1)*q12n
dcc.append cofact22 = 1*1
'Taking the inverse{inverse(diag[Qt])*Qt*inverse(diag[Qt])}
dcc.append invQQQ11 = cofact11/detQQQ
dcc.append invQQQ12 = cofact12/detQQQ
dcc.append invQQQ21 = cofact21/detQQQ
dcc.append invQQQ22 = cofact22/detQQQ
'Taking the en'*inverse{inverse(diag[Qt])*Qt*inverse(diag[Qt])}*en
dcc.append enQQQen11 = e1n*invQQQ11*e1n
dcc.append enQQQen12 = e1n*invQQQ12*e2n
dcc.append enQQQen21 = e2n*invQQQ21*e1n
dcc.append enQQQen22 = e2n*invQQQ22*e2n
'Append the loglikelihood function
'Instead of log(detQQQ) use log(abs(detQQQ))
dcc.append logl = -0.5*(log(abs(detQQQ)) + (enQQQen11+enQQQen21+ enQQQen12+enQQQen22) -(e1n^2 + e2n^2 + 2*e1n*e2n))
'Specifies the sample data where the estimation will be made
smpl sf
'Estimates the parameters now using BHHH algorithm
dcc.ml(b, showopts, m=!itermle, c=1e-5)
'A detQQQnpd = 0 indicates detQQQ is positive definite
series count = (detQQQ<=0)
scalar detQQQnpd = @sum(count)
'Display the estimated parameters
show dcc.output
'Forecast the q's by initializing them
series q11f = 0
series q12f = 0
series q21f = 0
series q22f = 0
'Specify the sample period to be forecasted
smpl sf
series q11f = qbar11- ((a11(1)*qbar11 + a12(1)*qbar12)*a11(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a12(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b11(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b12(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g11(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g12(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a11(1)+e2n(-1)*a12(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g11(1)+n2n(-1)*g12(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b11(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b12(1))
series q12f = qbar12- ((a11(1)*qbar11 + a12(1)*qbar12)*a12(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a22(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b12(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b22(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g12(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g22(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b12(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b22(1))
series q21f =qbar12- ((a11(1)*qbar11 + a12(1)*qbar12)*a12(1) + (a11(1)*qbar12 +a12(1)*qbar22)*a22(1)) - ((b11(1)*qbar11 + b12(1)*qbar12)*b12(1) + (b11(1)*qbar12 +b12(1)*qbar22)*b22(1)) - ((g11(1)*nbar11 + g12(1)*nbar12)*g12(1) + (g11(1)*nbar12 +g12(1)*nbar22)*g22(1)) + (a11(1)*e1n(-1) + a12(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g11(1)*n1n(-1) + g12(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b11(1)*q11(-1) + b12(1)*q12(-1))*b12(1) + (b11(1)*q12(-1) +b12(1)*q22(-1))*b22(1))
series q22f = qbar22- ((a12(1)*qbar11 + a22(1)*qbar12)*a12(1) + (a12(1)*qbar12 +a22(1)*qbar22)*a22(1)) - ((b12(1)*qbar11 + b22(1)*qbar12)*b12(1) + (b12(1)*qbar12 +b22(1)*qbar22)*b22(1)) - ((g12(1)*nbar11 + g22(1)*nbar12)*g12(1) + (g12(1)*nbar12 +g22(1)*nbar22)*g22(1)) + (a12(1)*e1n(-1) + a22(1)*e2n(-1))*(e1n(-1)*a12(1)+e2n(-1)*a22(1)) + (g12(1)*n1n(-1) + g22(1)*n2n(-1))*(n1n(-1)*g12(1)+n2n(-1)*g22(1)) + ((b12(1)*q11 + b22(1)*q12(-1))*b12(1) + (b12(1)*q12(-1) +b22(1)*q22(-1))*b22(1))
'To plot the time-varying conditional correlation
smpl sf_alt
series rt = q12f/(@sqr(q11f)*@sqr(q22f))
graph rtgraph.line rt
show rtgraph
delete e1n e2n
delete q12n q21n
delete n1n n2n
delete qbar*
delete xbar*
delete cofact*
delete enqqqen*
delete invqqq*
delete enqqqen*
delete eigenvect*
delete invqqq*
show detqqqnpd
series eigmins
scalar eigmin
for !j = 16 to obslength
'Input the hijsim to the elements of a 2x2 Q matrix
sym(2) Q
Q(1,1) = q11f(!j)
Q(2,1) = q21f(!j)
Q(2,2) = q22f(!j)
'Take the eigenvalues of Q
vector(4) Qeigenval
Qeigenval = @eigenvalues(Q)
'Collect the min eigenvalues in each Qt
eigmins(!j) = @min(Qeigenval)
next
eigmin = @min(eigmins)
show eigmin
Re: Dynamic conditional correlation multivariate GARCH
Dear all,
a'm a new user of eviwes 5 an i'm trying to estimate a dcc bivariate Garch. I used the code that i found in this forum but it seems that there's something wrong because i have problems when i try to estimate the logl, the error message is:" missing values in @logl at current coefficients at observation 1/06/2003"
Can anyone help me please and tell me where did i go wrong?
thank you very much
'set sample range
sample s0 01/02/2003 12/31/2012
sample s1 01/03/2003 12/31/2013
scalar pi=3.14159
'defining the return series in terms of y1 and y2
series y1=rtsp
series y2=rtnasdaq
'fitting univariate GARCH(1,1) models to each of the two returns series
equation eq_y1.arch(1,1,m=1000,h) y1 c
equation eq_y2.arch(1,1,m=1000,h) y2 c
'extract the standardized residual series from the GARCH fit
eq_y1.makeresids(s) z1
eq_y2.makeresids(s) z2
'extract garch series from univariate fit
eq_y1.makegarch() garch1
eq_y2.makegarch() garch2
'Caculate sample variance of series z1, z2 and covariance of z1and z2 and correlation between z1 and z2
scalar var_z1=@var(z1)
scalar var_z2=@var(z2)
scalar cov_z1z2=@cov(z1,z2)
scalar corr12=@cor(z1,z2)
'defining the starting values for the var(z1) var(z2) and covariance (z1,z2)
series var_z1t=var_z1
series var_z2t=var_z2
series cov_z1tz2t=cov_z1z2
'declare the coefficient starting values
coef(2) T
T(1)=0.2
T(2)=0.7
' ...........................................................
' LOG LIKELIHOOD for correlation part
' set up the likelihood
' 1) open a new blank likelihood object and name it 'dcc'
' 2) specify the log likelihood model by append
' ...........................................................
logl dcc
dcc.append @logl logl
'specify var_z1t, var_z2t, cov_z1tz2t
dcc.append var_z1t=@nan(1-T(1)-T(2)+T(1)*(z1(-1)^2)+T(2)*var_z1t(-1),1)
dcc.append var_z2t=@nan(1-T(1)-T(2)+T(1)*(z2(-1)^2)+T(2)*var_z2t(-1),1)
dcc.append cov_z1tz2t=@nan((1-T(1)-T(2))*corr12+T(1)*z1(-1)*z2(-1)+T(2)*cov_z1tz2t(-1),1)
dcc.append pen=(var_z1t<0)+(var_z2t<0)
'specify rho12
dcc.append rho12=cov_z1tz2t/@sqrt(@abs(var_z1t*var_z2t))
'defining the determinant of correlation matrix and determinant of Dt
dcc.append detrRt=(1-(rho12^2))
dcc.append detrDt=@sqrt(garch1*garch2)
dcc.append pen=pen+(detrRt<0)
dcc.append detrRt=@abs(detrRt)
'define the log likelihood function
dcc.append logl=(-1/2)*(2*log(2*pi)+log(detrRt)+(z1^2+z2^2-2*rho12*z1*z2)/detrRt)-10*pen
'estimate the model
smpl s1
dcc.ml(showopts, m=500, c=1e-5)
'display output and graphs
show dcc.output
graph corr.line rho12
show corr
a'm a new user of eviwes 5 an i'm trying to estimate a dcc bivariate Garch. I used the code that i found in this forum but it seems that there's something wrong because i have problems when i try to estimate the logl, the error message is:" missing values in @logl at current coefficients at observation 1/06/2003"
Can anyone help me please and tell me where did i go wrong?
thank you very much
'set sample range
sample s0 01/02/2003 12/31/2012
sample s1 01/03/2003 12/31/2013
scalar pi=3.14159
'defining the return series in terms of y1 and y2
series y1=rtsp
series y2=rtnasdaq
'fitting univariate GARCH(1,1) models to each of the two returns series
equation eq_y1.arch(1,1,m=1000,h) y1 c
equation eq_y2.arch(1,1,m=1000,h) y2 c
'extract the standardized residual series from the GARCH fit
eq_y1.makeresids(s) z1
eq_y2.makeresids(s) z2
'extract garch series from univariate fit
eq_y1.makegarch() garch1
eq_y2.makegarch() garch2
'Caculate sample variance of series z1, z2 and covariance of z1and z2 and correlation between z1 and z2
scalar var_z1=@var(z1)
scalar var_z2=@var(z2)
scalar cov_z1z2=@cov(z1,z2)
scalar corr12=@cor(z1,z2)
'defining the starting values for the var(z1) var(z2) and covariance (z1,z2)
series var_z1t=var_z1
series var_z2t=var_z2
series cov_z1tz2t=cov_z1z2
'declare the coefficient starting values
coef(2) T
T(1)=0.2
T(2)=0.7
' ...........................................................
' LOG LIKELIHOOD for correlation part
' set up the likelihood
' 1) open a new blank likelihood object and name it 'dcc'
' 2) specify the log likelihood model by append
' ...........................................................
logl dcc
dcc.append @logl logl
'specify var_z1t, var_z2t, cov_z1tz2t
dcc.append var_z1t=@nan(1-T(1)-T(2)+T(1)*(z1(-1)^2)+T(2)*var_z1t(-1),1)
dcc.append var_z2t=@nan(1-T(1)-T(2)+T(1)*(z2(-1)^2)+T(2)*var_z2t(-1),1)
dcc.append cov_z1tz2t=@nan((1-T(1)-T(2))*corr12+T(1)*z1(-1)*z2(-1)+T(2)*cov_z1tz2t(-1),1)
dcc.append pen=(var_z1t<0)+(var_z2t<0)
'specify rho12
dcc.append rho12=cov_z1tz2t/@sqrt(@abs(var_z1t*var_z2t))
'defining the determinant of correlation matrix and determinant of Dt
dcc.append detrRt=(1-(rho12^2))
dcc.append detrDt=@sqrt(garch1*garch2)
dcc.append pen=pen+(detrRt<0)
dcc.append detrRt=@abs(detrRt)
'define the log likelihood function
dcc.append logl=(-1/2)*(2*log(2*pi)+log(detrRt)+(z1^2+z2^2-2*rho12*z1*z2)/detrRt)-10*pen
'estimate the model
smpl s1
dcc.ml(showopts, m=500, c=1e-5)
'display output and graphs
show dcc.output
graph corr.line rho12
show corr
Dynamic conditional correlation multivariate GARCH
Hi all
what does "h" means in equation eq_y1.arch(1,1,m=1000,h) y2 c?
how can I use restriction of IGARCH in model?
tnx alot
what does "h" means in equation eq_y1.arch(1,1,m=1000,h) y2 c?
how can I use restriction of IGARCH in model?
tnx alot
Re: Dynamic conditional correlation multivariate GARCH
somi wrote:Hi all
what does "h" means in equation eq_y1.arch(1,1,m=1000,h) y2 c?
how can I use restriction of IGARCH in model?
tnx alot
Have you looked at the manual?
Chapter 7 of EViews User Guide II is devoted to ARCH and GARCH estimation.
-
- Posts: 39
- Joined: Thu Apr 24, 2014 3:51 am
Re: Dynamic conditional correlation multivariate GARCH
Hi, can someone provide the extended codes of DCC-GARCH for a 5 variable model? I used a code that is provided in this forum for a 5 variable model, but it doesnt produce the final result of the DCC-DARCH.
Thank you in advance
Thank you in advance
-
- Posts: 4
- Joined: Sat Feb 28, 2015 2:15 am
Re: Dynamic conditional correlation multivariate GARCH
Hi all,
Currently I am trying to run a multivariate GARCH model spproach. But I still do not know the method run Multivariate models. Hope to get help from you. The model is attached below.I looking forward to find methods to run this model.
Currently I am trying to run a multivariate GARCH model spproach. But I still do not know the method run Multivariate models. Hope to get help from you. The model is attached below.I looking forward to find methods to run this model.
- Attachments
-
- Book1.xls
- DATA
- (993.5 KiB) Downloaded 691 times
-
- Document 2.doc
- Model
- (129.5 KiB) Downloaded 735 times
Last edited by nguyen van canh on Wed Mar 04, 2015 1:14 am, edited 1 time in total.
Re: Dynamic conditional correlation multivariate GARCH
This is quite a specific version of Constant Conditional Correlation model, so you'll have to build a maximum likelihood model to estimate the parameters. It should be fairly easy to do that with the LogL object. There are also plenty of examples in the forum regarding ML estimation of multivariate GARCH models.
-
- Posts: 4
- Joined: Sat Feb 28, 2015 2:15 am
Re: Dynamic conditional correlation multivariate GARCH
I'm still not clear steps build a maximum likelihood model to Estimate the parameters. So you can guide runs Model, because I do not know anything about how to run the model. Thank' you very much.
-
- Posts: 4
- Joined: Sat Feb 28, 2015 2:15 am
Re: Dynamic conditional correlation multivariate GARCH
I'm still not clear steps build a maximum likelihood model to Estimate the parameters. So you can guide runs Model, because I do not know anything about how to run the model. Thank' you very much.
- Attachments
-
- Book1.xls
- DATA
- (993.5 KiB) Downloaded 639 times
-
- Document 2.doc
- MODEL
- (129.5 KiB) Downloaded 669 times
-
- Posts: 15
- Joined: Wed Mar 20, 2013 7:14 am
Re: Dynamic conditional correlation multivariate GARCH
I can't quite understand how the likelihood function in the original code is specified. My algebra isn't that strong, so I'm trying to grasp it through looking at the articles and application code at the same time. Can anyone help me?
Looking at the paper by Engle (2002) I assume the model is not divided into volatility and correlation parts, but estimated as one single ML model. However comparing to eq (26) the second last equation, the above function is missing 2*log|Dt| - and I don't quite understand the -10*pen?
And I assume that (z1^2+z2^2-2*rho12*z1*z2)/detrRt is the non-matrix specification of the last term, i.e. e_t*R_t^-1*e_t. But in that case, it shouldn't be the determinant of Rt, but just Rt, shouldn't it?
Code: Select all
dcc.append logl=(-1/2)*(2*log(2*pi)+log(detrRt)+(z1^2+z2^2-2*rho12*z1*z2)/detrRt)-10*pen
Looking at the paper by Engle (2002) I assume the model is not divided into volatility and correlation parts, but estimated as one single ML model. However comparing to eq (26) the second last equation, the above function is missing 2*log|Dt| - and I don't quite understand the -10*pen?
And I assume that (z1^2+z2^2-2*rho12*z1*z2)/detrRt is the non-matrix specification of the last term, i.e. e_t*R_t^-1*e_t. But in that case, it shouldn't be the determinant of Rt, but just Rt, shouldn't it?
Re: Dynamic conditional correlation multivariate GARCH
What is the most appropriate input to DCC GARCH- DLOG(series), Resid from ARMA modelling of dlog(series) or Resid from ARIMA modelling of price series?
While estimating DCC GARCH whether we should start with the dlog(series) and then estimate GARCH and DCC Counterpart OR we should do ARMA modelling of dlog(series) OR ARIMA modelling of price series, obtain the residuals , check diagnostics and then proceed to estimate GARCH and DCC Counterpart.
Additionally if out of the two series one reaches white noise by just doing dlog(series) and other requires ARMA modelling, then whether the following input can be given to DCC GARCH model or not - dlog(series1) and residual of ARMA modelling(series2).
And if Not , then what is the right way of proceeding further.
While estimating DCC GARCH whether we should start with the dlog(series) and then estimate GARCH and DCC Counterpart OR we should do ARMA modelling of dlog(series) OR ARIMA modelling of price series, obtain the residuals , check diagnostics and then proceed to estimate GARCH and DCC Counterpart.
Additionally if out of the two series one reaches white noise by just doing dlog(series) and other requires ARMA modelling, then whether the following input can be given to DCC GARCH model or not - dlog(series1) and residual of ARMA modelling(series2).
And if Not , then what is the right way of proceeding further.
Re: Dynamic conditional correlation multivariate GARCH
If we want to calculate time varying correlation between various asset class from 2006-2009 and if our purpose is not forecasting but analysis & inference based on historical data, then out of these two options which one is appropriate
1. Estimate the Univariate GARCH for the entire time span (2006-09) and from its residuals and conditional variance estimate Dynamic correlations.
Concern:
If we proceed like this, then since the residuals were estimated based on GARCH estimate of the entire sample (2006-09), therefore the time varying correlation, say for example in 2007 will be biased, since the residuals from which it is calculated has information till 2009. Ideally the time varying correlation in 2007 should be based only on the information available till 2007 not 2009.
2. Rolling window DCC GARCH: We should keep the window rolling either on daily basis or weekly basis and then re estimate entire model (GARCH, Residuals and DCC Counterpart) for daily rolling window or weekly rolling window.
Concern:
Since we want to analyse and inference from the data based on all the available historical data till date, so doesn’t make much sense and will just increase the volume of work.
1. Estimate the Univariate GARCH for the entire time span (2006-09) and from its residuals and conditional variance estimate Dynamic correlations.
Concern:
If we proceed like this, then since the residuals were estimated based on GARCH estimate of the entire sample (2006-09), therefore the time varying correlation, say for example in 2007 will be biased, since the residuals from which it is calculated has information till 2009. Ideally the time varying correlation in 2007 should be based only on the information available till 2007 not 2009.
2. Rolling window DCC GARCH: We should keep the window rolling either on daily basis or weekly basis and then re estimate entire model (GARCH, Residuals and DCC Counterpart) for daily rolling window or weekly rolling window.
Concern:
Since we want to analyse and inference from the data based on all the available historical data till date, so doesn’t make much sense and will just increase the volume of work.
-
- Posts: 13
- Joined: Thu Mar 27, 2014 9:17 am
Re: Dynamic conditional correlation multivariate GARCH
misssing valeus in @logl series ?!!!
Who is online
Users browsing this forum: No registered users and 33 guests