照着EVIEWS example 里的bv-garch弄了一个编程,想求CNY和JPY波动性之间的关联性。但是得出的VAR Y1t, VAR Y2t和COV(Y1t,Y2t)都是一样的,请问各位大侠这是怎么回事? 谢!附上编程:(cny, jpy 就是各自兑美元的汇率序列)
 ' restricted version of 
' bi-variate BEKK of Engle and Kroner (1995):
'
' y = mu + res 
' res ~ N(0,H)
'
' H = omega*omega' + beta H(-1) beta' + alpha res(-1) res(-1)' alpha'
'
' where
'
' y = 2 x 1
' mu = 2 x 1
' H = 2 x 2 (symmetric)
' H(1,1) = variance of y1 (saved as var_y1)
' H(1,2) = cov of y1 and y2 (saved as var_y2)
' H(2,2) = variance of y2 (saved as cov_y1y2)
' omega = 2 x 2 low triangular 
' beta = 2 x 2 diagonal
' alpha = 2 x 2 diagonal
'
 'change path to program path
%path = @runpath+"../data/"
cd %path
 ' load workfile
load fx.wf1
 ' dependent variables of both series must be continues
smpl @all
series y1 = dlog(cny)
series y2 = dlog(jpy)
 ' set sample 
' first observation of s1 need to be one or two periods after
' the first observation of s0 
sample s0 6/3/2005 9/13/2007
sample s1 6/3/2005 9/13/2007
 
' initialization of parameters and starting values
' change below only to change the specification of model 
smpl s0
 'get starting values from univariate GARCH 
equation eq1.arch(m=100,c=1e-5) y1 c
equation eq2.arch(m=100,c=1e-5) y2 c
 ' declare coef vectors to use in bi-variate GARCH model
' see above for details 
coef(2) mu
 mu(1) = eq1.c(1)
 mu(2)= eq2.c(1)
 coef(3) omega
 omega(1)=(eq1.c(2))^.5
 omega(2)=0
 omega(3)=eq2.c(2)^.5
 coef(2) alpha
 alpha(1) = (eq1.c(3))^.5
 alpha(2) = (eq2.c(3))^.5 
 coef(2) beta 
 beta(1)= (eq1.c(4))^.5 
 beta(2)= (eq2.c(4))^.5
 ' constant adjustment for log likelihood
!mlog2pi = 2*log(2*@acos(-1))
 ' use var-cov of sample in "s1" as starting value of variance-covariance matrix
series cov_y1y2 = @cov(y1-mu(1), y2-mu(2))
series var_y1 = @var(y1)
series var_y2 = @var(y2)
 series sqres1 = (y1-mu(1))^2
series sqres2 = (y2-mu(2))^2
series res1res2 = (y1-mu(1))*(y2-mu(2))
 
' ...........................................................
' LOG LIKELIHOOD
' set up the likelihood 
' 1) open a new blank likelihood object (L.O.) name bvgarch
' 2) specify the log likelihood model by append
' ...........................................................
 logl bvgarch
bvgarch.append @logl logl
bvgarch.append sqres1 = (y1-mu(1))^2
bvgarch.append sqres2 = (y2-mu(2))^2
bvgarch.append res1res2 = (y1-mu(1))*(y2-mu(2))
 ' calculate the variance and covariance series
bvgarch.append var_y1 = omega(1)^2 + beta(1)^2*var_y1(-1) + alpha(1)^2*sqres1(-1)
bvgarch.append var_y2 = omega(3)^2+omega(2)^2 + beta(2)^2*var_y2(-1) + alpha(2)^2*sqres2(-1)
bvgarch.append cov_y1y2 = omega(1)*omega(2) + beta(2)*beta(1)*cov_y1y2(-1) + alpha(2)*alpha(1)*res1res2(-1)
 ' determinant of the variance-covariance matrix
bvgarch.append deth = var_y1*var_y2 - cov_y1y2^2
 ' inverse elements of the variance-covariance matrix
bvgarch.append invh1 = var_y2/deth
bvgarch.append invh3 = var_y1/deth
bvgarch.append invh2 = -cov_y1y2/deth
 ' log-likelihood series
bvgarch.append logl =-0.5*(!mlog2pi + (invh1*sqres1+2*invh2*res1res2+invh3*sqres2) + log(deth))
 ' remove some of the intermediary series
' bvgarch.append @temp invh1 invh2 invh3 sqres1 sqres2 res1res2 deth
 
' estimate the model
smpl s1
bvgarch.ml(showopts, m=100, c=1e-5)
 ' change below to display different output
show bvgarch.output
graph varcov.line var_y1 var_y2 cov_y1y2
show varcov
 ' LR statistic for univariate versus bivariate model
scalar lr = -2*( eq1.@logl + eq2.@logl - bvgarch.@logl )
scalar lr_pval = 1 - @cchisq(lr,1)
