在论坛学习了如何用rats做bekk但是关于均值方程的设定有个疑问
论坛里所有关于bekk均值方程的设定都是var1 下面是别人的例子出的结果 均值方程给出的结果是滞后一阶的估计参数
DATA(FORMAT=XLS,ORG=COLUMNS) 1 434 x y z
system(model=var1)
variables x y z
lags 1
det constant
end(system)
garch(p=1,q=1,model=var1,mv=bek,pmethod=simplex,piters=10,hmatrices=hh,rvectors=rd) / x y z
MV-GARCH, BEKK - Estimation by BFGS
Convergence in 77 Iterations. Final criterion was 0.0000064 <= 0.0000100
Usable Observations 432
Log Likelihood 3026.1467
用另外两个distribution的原因是,金融的数据的distribution很可能不是normal的,很可能是fat tail (峰度(kurtosis)大于3,或者多余峰度(excess kurtosis) 大于0。 在多元garch中的话,我上面所说的distribution都是 joint distribution (联立分布)。 但是使用这两个distribution和normal distribution比的话可能会产生矛盾的AICc和BIC。原因是,在estimation中,如果使用另外两个非normal的distribution的话,你需要多评估一个参数,但是AICc和BIC对有很多参数的模型的惩罚不一样,AICc会偏向于选择更复杂的模型(参数多),BIC会偏向于精简的模型(参数少)。 这样情况下,举例子,如果你在比较用了t distribution estimate 出来的BEKK 和nomal distribution estimate 出来的BEKK 模型时,可能AICc会偏向于第一个模型(因为要多评估一个t distribution的degree of freedom),但是BIC可能会偏向于第二个模型(因为少一个参数)。 如果要是出现了这样的情况,有很多人的做法是只看一个标准,忽略另一个。 我导师教我的做法是,你可以做一个do loop,来手选非normal distribution的参数。以t distribution为例,(t distribution的性质是: degree of freedom >2, degreedom->无限大时,t distribution 就变成了normal) 你可以把你的code改成:
system(model=var1)
variables x y z
lags 1
det constant
end(system)
do i=2,10
garch(p=1,q=1,model=var1,mv=bek,pmethod=simplex,piters=10,hmatrices=hh,rvectors=rd,iters=500,dist=t,shape=i) / x y z
disp "BIC" -2.0*%logl+(%nreg)*log(%nobs)
disp "AICC" 2.0*(%nreg)-2.0*%logl+(2.0*(%nreg)*(%nreg+1))/%nobs-(%nreg)-1
end do i
这条命令是让RATS run 9 个BEKK model with t distribution,当t distribution 的degree of freedom = 2 到 10 的时候。 这样的话,你就可以从这些模型中选出AICc 和BIC 最小的,然后要和BEKK with normal distribution的AICc 和BIC 相比,这样一般就可以解决AICc 和BIC 矛盾的问题了。 这只是个例子, 你可以把do loop 的次数加到 20 (例如: do i=2,20), 一般来说,当t distribution 的degree of freedom到了15,16,20几的时候,这个distribution就基本是normal 的了。
说了这么多technical的东西,最后一点是,就算AICc和BIC还有log likelihood都好的不得了,但是做出来的参数都很不make sense (比如,某个parameter=532134.5838这样的荒唐结果),你还是要重新来做的。 做完了BEKK garch 别忘了做 diagnostic哈。而且BEKK现在也做非对称的了。