R语言多元Copula GARCH 模型时间序列预测

和宏观经济数据不同,金融市场上多为高频数据,比如股票收益率序列。

由Kaizong Ye,Coin Ge和Sherry Deng撰写

直观的来说 ,后者是比前者“波动”更多且随机波动的序列,在一元或多元的情况下,构建Copula函数模型和GARCH模型是最好的选择。

GARCH模型特别适用于捕捉金融时间序列中的波动性聚类现象,即大波动后面往往跟着大波动,小波动后面往往跟着小波动。GARCH模型通过引入条件异方差的概念,能够刻画这种时变的波动性。Copula函数模型则主要用于描述多个随机变量之间的相依结构。在金融领域,这通常意味着分析不同资产或市场之间的相关性。Copula函数允许我们灵活地选择边缘分布和相依结构,从而能够更准确地刻画多个时间序列之间的复杂关系。

多元GARCH家族中,种类非常多,需要自己多推导理解,选择最优模型。本文使用R软件对3家上市公司近十年的每周收益率为例建立模型。

首先我们可以绘制这三个时间序列。

×

经济全球化的发展致使各国之间愈加紧密的经济联动,如果某一国家的金融领域发生危机,危机将在各国金融市场间快速传播。为了降低金融危机的负面影响,人们愈加重视金融市场间关联性的研究。在准确把握市场关联性的基础上进行金融对冲,投资获利的同时有效降低商业风险。

研究金融资产相关性最重要的前提条件是确定资产收益率序列的拟合模型,即边缘拟合模型。Engle Robert 发明了ARCH模型(自回归条件异方差模型),但当模型残差序列的异方差函数具有长期自相关性时,ARCH模型的拟合精度会受到影响。为此Bollerslev [以ARCH模型为基础,提出了GARCH模型(广义自回归条件异方差模型),该模型很好地描述出市场波动的异方差性和波动集群性。

在动态研究金融变量间的相依关系领域,Copula-GARCH模型建立金融市场间的非线性相关关系,优点是边缘拟合GARCH模型残差择优服从t分布或GED分布,缺点是高维相关结构整体为Gaussian Copula函数。

Copula函数

Copula理论即可以将一个联合分布函数分解成多个边缘分布函数和一个Copula函数,适合描述多维随机变量相关关系的复杂性。

定理  :令 F 为一个 n 维随机向量的联合分布函数,其中各变量的边缘分布函数记为 Fi ,那么一定存在一个Copula函数,使得  ,其中 Fi(xi)(0,1),i=1,,n 。若边缘分布函数 Fi 是连续的一元函数,则Copula函数 C 的形式是唯一确定的。

Copula理论发展出了各种形式的家族函数,经常使用的类型主要分为两类:一类是椭球Copula,常用的包括Gaussian Copula和t-Copula;另外一类是由生成函数 φ(t) ( t 为边缘分布)生成的阿基米德Copula,包括Clayton Copula、Gumbel Copula和Frank Copula。其中以边缘分布函数( u,v )为自变量的二元Gaussian Copula、t-Copula、Clayton Copula、Gumbel Copula、Frank Copula分布函数具体的表达式分别如式(1)~(5)所示。

C1(u,v;ρ)=Φ1(u)Φ1(v)12π1ρ2exp((s2+r22ρsr)2(1ρ2))dsdr(1)

式中: Φ1() 为标准正态分布函数 Φ() 的逆函数;相关系数 ρ(1,1) ; s,r 分别为  的自变量。

C2(u,v;ρ,m)=T1m(u)T1m(v)12π1ρ2exp[1+(s2+r22ρsr)m(1ρ2)]m+22dsdr(2)

式中: T1m() 为自由度是  的一元t分布函数 Tm() 的逆函数;相关系数  ;  分别为的自变量。

C3(u,v;θ)=(uθ+vθ1)1θ(3)

式中:生成函数 φ(t)=tθ1θ,θ(1,)\{0} 。

C4(u,v;θ)=exp([(lnu)1θ+(lnv)1θ]θ)(4)

式中:生成函数  。

C5(u,v;θ)=1θln(1+(eθu1)(eθv1)eθ1)(5)

式中:生成函数 φ(t)=lneθt1eθ1,θ0 。



在这里使用多变量的ARMA-GARCH模型。  

 本文考虑了两种模型

1 ARMA模型残差的多变量GARCH过程

2 ARMA-GARCH过程残差的多变量模型(基于Copula)

ARMA-GARCH模型

> fit1 = garchFit(formula = ~arma(2,1)+ garch(1,1),data = dat [,1],cond.dist =“std”)

可视化波动 


自适应网页宽度的 Bilibili 视频

视频

时间序列分析模型 ARIMA-ARCH GARCH模型分析股票价格数据

探索见解

去bilibili观看

探索更多视频

隐含的相关性 

> emwa_series_cor = function(i = 1,j = 2){
+ if((min(i,j)== 1)&(max(i,j)== 2)){+ a = 1; B = 5; AB = 2}
+}

BEKK(1,1)模型:

 BEKK11(dat_arma)

隐含的相关性

 ​

对单变量GARCH模型残差建模

 ​ ​

查看相关性是否随着时间的推移而稳定。  ​

斯皮尔曼相关性


R语言ARMA-GARCH-COPULA模型和金融时间序列案例

阅读文章


肯德尔相关性


随时关注您喜欢的主题


对相关性建模,考虑DCC模型

 ​ 

对数据进行预测 


视频

Copula算法原理和R语言股市收益率相依性可视化分析

探索见解

去bilibili观看

探索更多视频

> fcst = dccforecast(dcc.fit,n.ahead = 200)

我们已经完全掌握了多元GARCH模型的使用,接下来就可以放手去用R处理时间序列了!


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds