52831 321

[R] 【福利帖】DCC-GARCH模型代码及实现案例   [推广有奖]

  • 0关注
  • 94粉丝

硕士生

93%

还不是VIP/贵宾

-

威望
0
论坛币
1991 个
通用积分
40.1212
学术水平
3 点
热心指数
7 点
信用等级
3 点
经验
2741 点
帖子
166
精华
0
在线时间
241 小时
注册时间
2020-6-24
最后登录
2022-10-26

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

1. 模型简介

普通的模型对于两个序列的波动分析一般是静态的,但是dcc-garch模型可以实现他们之间动态相关的波动分析,即序列间波动并非为一个常数,而是一个随着时间的变化而变化的系数。其主要用于研究市场间波动率的关系。
2. DCC-GARCH模型代码及应用2.1,导入数据
首先是读取文件:我的文件是csv格式,内容是各行业指数的收益率
  1. dat1 = read.csv("stock.csv",header=T)

  2. head(dat1)
  3. # 除去日期列
  4. x = dat1[,2:length(dat1)]
  5. # 将变量命名
  6. name = c("能源","材料","工业","可选","消费","医药","金融","信息","电信","公用")
  7. colnames(x) = name
  8. head(x)
复制代码


得到:

变量.png


2.2,变量平稳性检验以下以ADF检验为例。
  1. library(tseries)
  2. Dickey_Fuller = 0  #(保存Dickey_Fuller的向量)
  3. ADF_p = 0    #(保存p值的向量)
  4. for( i in 1:length(x)){
  5.         adf = adf.test(x[,i])
  6.         Dickey_Fuller[i] = adf$statistic[1] #(提取Dickey_Fuller)
  7.         ADF_p[i] = adf$p.value[1] #(提取p值)
  8. }
  9. adf_result = cbind(name,Dickey_Fuller,ADF_p)
  10. write.csv(adf_result,"adf.csv") # 结果储存
复制代码

总体保存到csv的结果如下:

ADF.png


结果表明序列平稳。

2.3 ARCH效应检验

LM检验思路:循环得到每列的N(max_lag)阶LM检验值, 看是否拒绝原假设,均拒绝原假设则存在ARCH效应。

  1. library(FinTS)
  2. Lmtest = function(series,nm,max_lag){
  3.         chi = 0
  4.         lm_p = 0
  5.         chi[1] = nm
  6.         lm_p[1] = nm
  7.         chi[2] = "chi"
  8.         lm_p[2] = "p"
  9.         for( lags in 1:max_lag){
  10.                 lm = ArchTest(x=series,lag=lags)
  11.                 chi[lags+2] = lm$statistic[1]
  12.                 lm_p[lags+2] = lm$p.value[1]
  13.         }
  14.         once_mat = rbind(chi,lm_p)
  15. }

  16. max_lag = 5
  17. lm_mat = matrix(nrow=(2*length(x)),ncol=(max_lag+2))  
  18. for (j in 1:length(x)){       
  19.         start = 1+2*(j-1)
  20.         end = 2*j
  21.         lm_mat[start:end,] = Lmtest(x[,j],name[j],max_lag)
  22. }
  23. colnames(lm_mat) = append(c("变量","参数"),seq(from = 1, to = max_lag, by = 1))
  24. write.csv(lm_mat,"lm_mat.csv")
复制代码
  • 结果如下


ARCH效应.png

结果表明存在ARCH效应


2.4 Box-Ljung检验 (选择合适的ARCH模型)

最终结果如下:

选ARCH.png

可见,ARCH(5)仍然不是最优模型,因此直接选择GARCH(1,1)

TIPS:经验表明,GARCH(1,1)适用于大多数金融序列。


2.5 建立DCC模型

思路:两两建立GARCH-DCC模型,均值方程设定为常数项形式,原因:股票随机游走假设方差方程为GARCH(1,1)

R代码设定思路

        建立GARCH -DCC 需要分别设定3个方程,2个单序列GARCH方程和1个DCC联立方程2个单序列GARCH为spec1和spec2,DCC联立方程为mspec = multispec( c( spec1, spec2 ) )    代码:

  1. dcc_once=function(xx){
  2.                   spec1 = ugarchspec(variance.model = list(model="sGARCH",garchOrder=c(1,1)),
  3. mean.model = list(armaOrder=c(0,0)))
  4.                   spec2 = ugarchspec(variance.model = list(model="sGARCH",garchOrder=c(1,1)),
  5. mean.model = list(armaOrder=c(0,0)))
  6.                   mspec = multispec( c( spec1, spec2 ) )
  7.                   spec = dccspec(mspec, VAR = FALSE, robust = FALSE,external.regressors = NULL,
  8.                                  dccOrder = c(1,1), model = "DCC", distribution = "mvnorm")
  9.                   m1=dccfit(spec, xx, out.sample = 0, solver = "solnp", solver.control = list(),
  10. fit.control = list(eval.se = TRUE, stationarity = TRUE, scale = FALSE),
  11. cluster = NULL, fit = NULL, VAR.fit = NULL, realizedVol = NULL)
  12.                   show(m1)
  13.                   matcoef=m1@mfit$matcoef
  14.                   rho=m1@mfit$R
  15.                   n=length(rho)
  16.                   rho.t=0
  17.                   for(i in 1:n){
  18.                           r=rho[[i]]
  19.                   rho.t[i]=r[1,2]
  20.                   }
  21.                   return(rho.t)
  22. }
复制代码

功能:需要传入一个T×2的时间序列,打印模型的参数,返回一个残差相关性序列


      结果如下(一次为例)

图片1.png

Dcca1 和dccb1 显著,表明存在DCC效应。(行业联动性、时变相关性)

由于设定为默认形式,因此VAR参数是0。

  随后还需要循环两两计算行业间联动性,并且需要绘制时变相关性


2.6 以其他股票和能源股票为例:

结果如下:

其他图.png

注:本程序将免费提供,关注:计量模型研究院



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:DCC-GARCH GARCH模型 ARCH模型 GARCH 实现案例

已有 1 人评分论坛币 收起 理由
happy_287422301 + 100 鼓励积极发帖讨论

总评分: 论坛币 + 100   查看全部评分

本帖被以下文库推荐

TVP-VAR模型代码及应用案例
https://bbs.pinggu.org/thread-8627992-1-1.html

MS-VAR-DY模型代码及应用案例
https://bbs.pinggu.org/thread-8646650-4-1.html
GARCH-MIDAS模型代码及实现案例
https://bbs.pinggu.org/thread-8697649-1-1.html

【模型代码及实现案例(汇总)】计量模型研究院出品
https://bbs.pinggu.org/thread-8702796-1-1.html

已有 1 人评分经验 收起 理由
happy_287422301 + 100 鼓励积极发帖讨论

总评分: 经验 + 100   查看全部评分

使用道具

此程序免费提供,留下邮箱,24小时内回复

使用道具

板凳
piiroja 发表于 2020-7-6 23:50:26 |只看作者 |坛友微信交流群
thx for sharing~

使用道具

报纸
王凡yep 发表于 2020-7-7 17:50:34 来自手机 |只看作者 |坛友微信交流群
跪求DCC-GARCH模型代码,
邮箱wangfan171@126.com   
非常非常非常感谢!!!!
已有 1 人评分论坛币 收起 理由
happy_287422301 + 40 鼓励积极发帖讨论

总评分: 论坛币 + 40   查看全部评分

使用道具

王凡yep 发表于 2020-7-7 17:50
跪求DCC-GARCH模型代码,
邮箱wangfan171@126.com   
非常非常非常感谢!!!!
已发送
已有 1 人评分论坛币 收起 理由
happy_287422301 + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

使用道具

7
5109484480 发表于 2020-7-9 18:43:31 |只看作者 |坛友微信交流群
同求此DCC-GARCH完整代码,wwh517@163.com
万分感谢!
已有 1 人评分论坛币 收起 理由
happy_287422301 + 40 鼓励积极发帖讨论

总评分: 论坛币 + 40   查看全部评分

使用道具

能用stata实现两个变量动态相关系数的时变图么,非得是R语言才能实现么,本人只会Eviews和stata,不会R语言

使用道具

5109484480 发表于 2020-7-9 18:43
同求此DCC-GARCH完整代码,wwh517@163.com
万分感谢!
已发送
已有 1 人评分论坛币 热心指数 收起 理由
happy_287422301 + 40 + 3 热心帮助其他会员

总评分: 论坛币 + 40  热心指数 + 3   查看全部评分

使用道具

大明是小菜鸟 发表于 2020-7-9 20:49
能用stata实现两个变量动态相关系数的时变图么,非得是R语言才能实现么,本人只会Eviews和stata,不会R语言
R只需要你改下数据就行,小白也能跑出来

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-12 00:11