Volatility Spillovers with Bivariate BEKK

Discussions of ARCH, GARCH, and related models
kian651
Posts: 3
Joined: Mon Jun 11, 2012 2:04 pm

Volatility Spillovers with Bivariate BEKK

Unread post by kian651 »

Hi Tom,

Many thanks for your help and support.

I'm trying to execute a bivariate model of (oil/equity returns) Volatility spillover.

I've got a paper I'm trying to reproduce, just to ensure that my estimation methods for an up to date dataset mathces the author's; I'm repeating the analysis with his dataset.

I've not been able to get the exact dataset used by the author, but have (hopefully) downloaded the very same myself. (Descriptives match)


There is no mention of anything extra in the paper interms of the model, other than it's a BEKK model with BFGS algorithm.

I've attached the summary of data and the paper.

Now, my questions:

1- When I run the analysis using

Code: Select all

garch(p=1,q=1,mv=bek,method=bfgs) / xoil xhealth
garch(p=1,q=1,mv=bek,method=bfgs,iters=200,pmethod=simplex,piters=10) / xoil xhealth

MV-GARCH, BEKK - Estimation by BFGS
Convergence in    69 Iterations. Final criterion was  0.0000013 <=  0.0000100
Weekly Data From 1992:01:08 To 2008:04:30
Usable Observations                       852
Log Likelihood                      3461.6956

    Variable                        Coeff      Std Error      T-Stat      Signif
************************************************************************************
1.  Mean(1)                       0.002090746  0.001593417      1.31211  0.18948148
2.  Mean(2)                       0.001726831  0.000745034      2.31779  0.02046089
3.  C(1,1)                        0.008817796  0.002553867      3.45272  0.00055496
4.  C(2,1)                       -0.001048472  0.001613817     -0.64968  0.51589605
5.  C(2,2)                       -0.002347804  0.000803534     -2.92185  0.00347960
6.  A(1,1)                       -0.221519390  0.041868875     -5.29079  0.00000012
7.  A(1,2)                       -0.021152662  0.019613492     -1.07848  0.28082182
8.  A(2,1)                        0.081336204  0.066591889      1.22141  0.22192966
9.  A(2,2)                       -0.250079660  0.038994711     -6.41317  0.00000000
10. B(1,1)                        0.956635720  0.017735128     53.94016  0.00000000
11. B(1,2)                       -0.002970195  0.009949480     -0.29853  0.76530050
12. B(2,1)                        0.025768393  0.028568335      0.90199  0.36706143
13. B(2,2)                        0.962394976  0.012044865     79.90085  0.00000000


MV-GARCH, BEKK - Estimation by BFGS
Convergence in    69 Iterations. Final criterion was  0.0000013 <=  0.0000100
Weekly Data From 1992:01:08 To 2008:04:30
Usable Observations                       852
Log Likelihood                      3461.6956

    Variable                        Coeff      Std Error      T-Stat      Signif
************************************************************************************
1.  Mean(1)                       0.002090746  0.001593417      1.31211  0.18948148
2.  Mean(2)                       0.001726831  0.000745034      2.31779  0.02046089
3.  C(1,1)                        0.008817796  0.002553867      3.45272  0.00055496
4.  C(2,1)                       -0.001048472  0.001613817     -0.64968  0.51589605
5.  C(2,2)                       -0.002347804  0.000803534     -2.92185  0.00347960
6.  A(1,1)                       -0.221519390  0.041868875     -5.29079  0.00000012
7.  A(1,2)                       -0.021152662  0.019613492     -1.07848  0.28082182
8.  A(2,1)                        0.081336204  0.066591889      1.22141  0.22192966
9.  A(2,2)                       -0.250079660  0.038994711     -6.41317  0.00000000
10. B(1,1)                        0.956635720  0.017735128     53.94016  0.00000000
11. B(1,2)                       -0.002970195  0.009949480     -0.29853  0.76530050
12. B(2,1)                        0.025768393  0.028568335      0.90199  0.36706143
13. B(2,2)                        0.962394976  0.012044865     79.90085  0.00000000


MV-GARCH, BEKK - Estimation by BFGS
Convergence in    77 Iterations. Final criterion was  0.0000000 <=  0.0000100
Weekly Data From 1992:01:08 To 2008:04:30
Usable Observations                       852
Log Likelihood                      3461.6956

    Variable                        Coeff      Std Error      T-Stat      Signif
************************************************************************************
1.  Mean(1)                       0.002090891  0.001522827      1.37303  0.16974228
2.  Mean(2)                       0.001726786  0.000709147      2.43502  0.01489099
3.  C(1,1)                        0.008817420  0.002478359      3.55777  0.00037402
4.  C(2,1)                       -0.001048361  0.001536697     -0.68222  0.49510147
5.  C(2,2)                       -0.002347789  0.000869196     -2.70111  0.00691094
6.  A(1,1)                        0.221506698  0.045047721      4.91716  0.00000088
7.  A(1,2)                        0.021157518  0.020016119      1.05702  0.29050063
8.  A(2,1)                       -0.081345990  0.069290842     -1.17398  0.24040346
9.  A(2,2)                        0.250075672  0.041868681      5.97286  0.00000000
10. B(1,1)                        0.956639791  0.017589268     54.38770  0.00000000
11. B(1,2)                       -0.002973061  0.008713917     -0.34119  0.73296403
12. B(2,1)                        0.025776046  0.028494835      0.90459  0.36568443
13. B(2,2)                        0.962395291  0.013489873     71.34206  0.00000000


I get very different results and neither match the autours.

Would you say I'm executing the model differently or my dataset does not match?

How do I bring the two as close as possible?


Alos, I was hoping you could tell me how to obtain a Ljung–Box statistic for serial correlation for my data?


Many Thanks
Attachments
paper.pdf
(201.51 KiB) Downloaded 1059 times
wti health weelky.xlsx
(32.34 KiB) Downloaded 780 times
dataset des.pdf
(112.15 KiB) Downloaded 798 times
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Volatility Spillovers with Bivariate BEKK

Unread post by TomDoan »

First, you're not using the AR(1) mean model that the authors were using (their equation (1)). Also, they are converting the BEKK estimates to the corresponding VECH representation, which you can do with the @MVGARCHTOVECH procedure. From the statistics, it looks as if your data is fairly close. You would estimate the model with
equation healtheq xhealth
# constant xhealth{1}
equation oileq xoil
# constant xoil{1}           
group ar1 oileq healtheq 
garch(model=ar1,mv=bekk) / xoil xhealth
@mvgarchtovech(mv=bekk)
disp %%vech_b
disp %%vech_a
The first row of the %%vechb model are the lag coefficients on the H's for the oil equation and the third row are the lag coefficients in the health equation (the second row is for the covariance, and isn't reported), similarly the %%vech_a and the eps interactions.

The bad news is that those aren't even close to what's reported. The paper's results for that pair just don't look correct at all. (They have a typo in equation (3) --- the cross terms should be 11 x 21 not 11 x 12, but I think the calculations of the VECH form are done correctly given what appear to be bad estimates of the BEKK coefficients). There appears to be a second but substantially lower mode (log likelihood of -4381 vs -4373 with the RATS estimates) with the coefficients that they're showing. The BEKK model actually doesn't fit all that well anyway. A simpler CC model has a higher likelihood.

See TSAYP514.RPF in the Tsay textbooks examples of the use of diagnostics in the MV GARCH model.
kian651
Posts: 3
Joined: Mon Jun 11, 2012 2:04 pm

Re: Volatility Spillovers with Bivariate BEKK

Unread post by kian651 »

Completely agree with you on the error. It’s a triangular matrix and that term does not even exist.
Also, thank you for providing the correct script.

This has raised a few questions.

What is the need for converting these BEKK estimates to VECH? Why can't we just take the BEKK coefficients and put them in the VECH equations?

2- How do you interpret the (–) log likelihood? Do you want to have a more negative number? What if I get a positive value?
3- How could I expand your script to a trivariate model? and an the CC be computed by changing the “bekk” to “CC”?
4- The example mentioned is not on http://www.estima.com/textexam_tsay_financial2.shtml


Thanks once again.
Last edited by kian651 on Sun Jun 24, 2012 3:45 pm, edited 2 times in total.
kian651
Posts: 3
Joined: Mon Jun 11, 2012 2:04 pm

Re: Volatility Spillovers with Bivariate BEKK

Unread post by kian651 »

Hi Tom

Two more questions if I may.

The matrices displayed by : disp %%vech_a and disp %%vech_a. Are these the ones that were meant to be reported in the paper (and were but are wrong??) If so then what are the A(1,1) A(2,1) etc.?

and how do you interpret the H matrix in VECH?

Also

where are the significance values for these?
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Volatility Spillovers with Bivariate BEKK

Unread post by TomDoan »

kian651 wrote:Hi Tom

Two more questions if I may.

The matrices displayed by : disp %%vech_a and disp %%vech_a. Are these the ones that were meant to be reported in the paper (and were but are wrong??) If so then what are the A(1,1) A(2,1) etc.?
The A(1,1), A(2,1) ... are the matrices in the BEKK matrix quadratic form. They don't report those in the paper, but just the derived VECH weights.
kian651 wrote: and how do you interpret the H matrix in VECH?
I'm not sure what you mean. The H matrix is a 2 x 2 symmetric matrix. In VECH form, that is vectorized into a 3 vector in the order H(1,1), H(1,2), H(2,2).

Also
kian651 wrote: where are the significance values for these?
If you want to compute standard errors for non-linear functions of the estimated GARCH parameters (which is what these are) you need to use the SUMMARIZE instruction. The following computes the VECH coefficients for the GARCH lagged variance term along with their standard errors. The 10, 11, 12, and 13 are for a two-variable model using the same data set as in GARCHMV. Yours will be 12 to 15 because of the added elements in the mean model.

Code: Select all

garch(p=1,q=1,mv=bek,pmethod=simplex,piters=10) / xjpn xfra
@MVGarchtoVECH(mv=bek)
disp %%vech_b
summarize(title="(1,1) on (1,1)") %beta(10)^2
summarize(title="(1,1) on (1,2)") 2*%beta(10)*%beta(12)
summarize(title="(1,1) on (2,2)") %beta(12)^2
summarize(title="(2,2) on (1,1)") %beta(11)^2
summarize(title="(2,2) on (1,2)") 2*%beta(11)*%beta(13)
summarize(title="(2,2) on (2,2)") %beta(13)^2
Output from the GARCH instruction:

Code: Select all

1.  Mean(1)                       0.000438071  0.004897226      0.08945  0.92872193
2.  Mean(2)                      -0.007497356  0.005506777     -1.36148  0.17336268
3.  C(1,1)                        0.085823418  0.005459682     15.71949  0.00000000
4.  C(2,1)                        0.022453906  0.007050593      3.18468  0.00144913
5.  C(2,2)                        0.056754608  0.006182545      9.17981  0.00000000
6.  A(1,1)                        0.416395406  0.012794044     32.54603  0.00000000
7.  A(1,2)                        0.120622687  0.010547354     11.43630  0.00000000
8.  A(2,1)                        0.008592993  0.012294581      0.69893  0.48459877
9.  A(2,2)                        0.300439955  0.011496545     26.13306  0.00000000
10. B(1,1)                        0.917463896  0.004890406    187.60484  0.00000000
11. B(1,2)                       -0.029663071  0.003892537     -7.62050  0.00000000
12. B(2,1)                        0.001002173  0.004325629      0.23168  0.81678459
13. B(2,2)                        0.951801104  0.004017512    236.91308  0.00000000
Post Reply