一、原理
DCC-GARCH(DynamicConditional Corelational Autoregressive Conditional Heteroscedasticity Model)用于研究市场间波动率的关系。
接下来我们按照GARCH族模型的发展历程来梳理一遍
1. ARCH和GARCH
研究对象:波动率的时间序列,即研究当期波动率与上一期波动率之间的关系。常用于存在波动急剧现象的时间序列,最简单关系的就是线性方程,即:
ARCH和GARCH的含义一样,第一个方程称为均值方程,表示均值和以往均值的关系,第二个方程是条件方差方程,称为ARCH方程,一个表示方差和以往方差的关系。GARCH可以减少待估参数,即AR(q)等价于GARCH(1,1),实际应用中GARCH(1,1)一般可以满足要求。
两个模型要求(1)xt平稳;(2)ut存在arch效应
(1)只有xt平稳,我们才可以从当前状态推导出未来的趋势,如果不平稳,根据当前数据计算出来的东西对未来没有任何意义,两个变量间的相关性不一定真实(伪回归问题)。平稳性展开可以讲很多东西(如何深入理解时间序列分析中的平稳性?—知乎),这里先大致说一下平稳性的数学推导和软件实现。
平稳性
记滞后算子为L,即有
按照数学中差分方程的解法,再按照数学中高次方程的解法,要求特征方程的根在单位圆外,具体数学过程我们就不深究了,只要记得存在单位根=不平稳即可。
软件实现(from百度文库)
最常用的是ADF检验(见下图),其他非参数检验方法中常用的有PP检验,KPSS检验,多用几种方法检验,如果都平稳就可以确定该时间序列平稳啦!
Python需安装statsmodels模块,R需安装tseries模块(from)stata的命令为:dfuller xt,lag(i)
第二个方程除了要求平稳,还要求系数均大于0(这样才能保证方差的非负性)
(2)ARCH效应的检验有两种方法:Ljung-Box Q检验和arch-LM检验
所谓ARCH效应即残差的异方差性,表现为残差平方项(ut^2)存在自相关,Q检验是直接看自相关系数(p=0存在arch效应),LM检验是看方差方程的系数是否全部为零(p=0存在arch效应)。
Eviews中,做完xt的自回归后,在view下的residual test 可以找到 Qstatistic 和 serial correlation LM test;stata中,Q检验要先搞出来残差序列,命令为:predict r, residual, 然后做自相关Q检验:corrgram r^2,LM检验是做完xt的自回归后,输入命令:estat archlm, lags(p)
(3)有的文献会检验残差的自相关性,看看均值方程是否已经消除了xt的自相关性。
ARCH和GARCH的软件实现
stata: (GARCH(1, 1)): arch xt, arch(1) garch(1)
个人而言,我比较喜欢用stata做ARCH和GARCH
1. 设置时间变量:tsset t
2. 画图直观了解:line 变量1,变量2,...,t
3. 平稳性检验/单位根检验:dfuller xt ,lags(i) noconstant/drift/trend
通过varsoc看信息准则以确定滞后阶数,信息准则越小越好
Stata: 单位根检验就这么轻松—stata连享会
4. 残差自相关检验 & arch效应检验:LM检验:estat archlm, lags(p)
5. GARCH模型(arch xt, arch(1) garch(1))
GARCH模型结果中,a表示残差对方差的影响程度,用经济语言来说就是新信息对市场波动的影响程度 ;β表示以往方差对现在方差的影响程度,也可以理解为市场波动的持续程度。
2. 其他单变量GARCH
(1)TGARCH称为门限ARCH模型,表示利好消息和利空消息对条件方差的影响不同。
EGARCH,GJR-GARCH,APARCH也是考虑杠杆效应的GARCH衍生模型.
(2)ABSGARCH称为绝对值ARCH模型,把ut^2换成ut的绝对值,减小了ut的幅度
(3)IGARCH称为方差无穷GARCH模型,把GARCH的两个参数合为一个参数,简化了计算
(4)GARCH-M称为均值GARCH模型,在均值方程中加入了一个方差变量,主要是因为风险越大投资回报率越大
……
3.多变量GARCH/多元GARCH(序列--矩阵)
单变量的GARCH用来分析序列的波动集聚特征,多变量的GARCH用来分析不同序列间的波动是否相关,有多么相关。
所谓多元。就是把原来的一个序列拓展成为包括多个序列的矩阵,于是方差序列也随着拓展成为协方差矩阵(Ht),如何算出矩阵方程的参数这种高深的数学问题不是我等学术菜鸟目前可以解决的问题,我们比较关心怎么用。
按照多元GARCH模型的提出时间,依次是:CCC(1990)、BEKK(1995)、DCC(2001)。DCC的估计包括两个步骤:
(1)估计每个变量的GARCH模型得到残差(ut);
(2)使用(1)中残差的无条件方差矩阵(Qt)计算动态条件相关系数矩阵(Rt)。
DCC的结果中,系数a+β<1说明模型稳定,即动态相关关系有效。a表示残差对不同序列方差相关系数的影响程度,用经济语言来说就是新信息对市场波动相关性的影响程度;β表示以往市场波动相关对现在市场波动相关的影响程度,即市场波动相关性的持续程度。
另外就是看条件动态相关系数图,结合实际情况做出合乎经济学理论的解释。
DCC模型估计完参数后,还要进行假设检验,检验动态相关系数和常相关系数是否有显著差异。(stata的命令为:test _b[Adjustment:lambda1]=_b[Adjustment:lambda2])可以参考论文:DCC-MVGARCH模型计算方法研究及在金融市场中的应用
知乎:多种GARCH模型的比较中对各种单变量/多变量GARCH模型做了很全面的整理(英文比较多)。
4. 其他
GARCH常常和Copula函数结合,Copula-GARCH和DCC-GARCH的功能类似,都是看不同市场间的相关性。
相关系数:只能衡量变量间的线性关系;
DCC:动态相关性
copula:尾部相关性,基于copula函数的相关性测度有三种:(1)Kendall秩相关系数;(2)Spearman秩相关系数;Gini关联系数。
二、模型实现
1. R程序包有几个DCC的实现,需要研究一下文档。
2. Matlab可以用Kevin Sheppard的Matlab MFE toolbox;
3. Eviews是菜单式操作,可以实现单序列的garch,不知道能否做多元arch;
4. stata
实现dcc-garch的命令:mgarch dcc
检验dcc和ccc的区别:test _b[Adjustment:lambda1]=_b[Adjustment:lambda2]
后续:predict H*,variance; predict D*, correlation