arma模型_R语言ARMA-GARCH-COPULA模型和金融时间序列案例
![](/assets/blank.gif)
原文
拓端数据科技 / Welcome to tecdattecdat.cn
![](/assets/blank.gif)
最近我被要求撰写关于金融时间序列的copulas的调查。 从读取数据中获得各种模型的描述,包括一些图形和统计输出。
- > temp < - tempfile()
- > download.file(
- +“oil.xls",temp)
- > oil = read.xlsx(temp,sheetName =“DATA”,dec =“,”)
然后我们可以绘制这三个时间序列
- 1 1997-01-10 2.73672 2.25465 3.3673 1.5400
- 2 1997-01-17 -3.40326 -6.01433 -3.8249 -4.1076
- 3 1997-01-24 -4.09531 -1.43076 -6.6375 -4.6166
- 4 1997-01-31 -0.65789 0.34873 0.7326 -1.5122
- 5 1997-02-07 -3.14293 -1.97765 -0.7326 -1.8798
- 6 1997-02-14 -5.60321 -7.84534 -7.6372 -11.0549
![](/assets/blank.gif)
这个想法是在这里使用一些多变量ARMA-GARCH过程。这里的启发式是第一部分用于模拟时间序列平均值的动态,第二部分用于模拟时间序列方差的动态。
本文考虑了两种模型
- 关于ARMA模型残差的多变量GARCH过程(或方差矩阵动力学模型)
- 关于ARMA-GARCH过程残差的多变量模型(基于copula)
因此,这里将考虑不同的序列,作为不同模型的残差获得。我们还可以将这些残差标准化。
ARMA模型
- > fit1 = arima(x = dat [,1],order = c(2,0,1))
- > fit2 = arima(x = dat [,2],order = c(1,0,1))
- > fit3 = arima(x = dat [,3],order = c(1,0,1))
- > m < - apply(dat_arma,2,mean)
- > v < - apply(dat_arma,2,var)
- > dat_arma_std < - t((t(dat_arma)-m)/ sqrt(v))
ARMA-GARCH模型
- > fit1 = garchFit(formula = ~arma(2,1)+ garch(1,1),data = dat [,1],cond.dist =“std”)
- > fit2 = garchFit(formula = ~arma(1,1)+ garch(1,1),data = dat [,2],cond.dist =“std”)
- > fit3 = garchFit(formula = ~arma(1,1)+ garch(1,1),data = dat [,3],cond.dist =“std”)
- > m_res < - apply(dat_res,2,mean)
- > v_res < - apply(dat_res,2,var)
- > dat_res_std = cbind((dat_res [,1] -m_res [1])/ sqrt(v_res [1]),(dat_res [,2] -m_res [2])/ sqrt(v_res [2]),(dat_res [ ,3] -m_res [3])/ SQRT(v_res [3]))
多变量GARCH模型
可以考虑的第一个模型是协方差矩阵的多变量EWMA,
> ewma = EWMAvol(dat_res_std,lambda = 0.96)
波动性
- > emwa_series_vol = function(i = 1){
- + lines(Time,dat_arma [,i] + 40,col =“gray”)
- + j = 1
- + if(i == 2)j = 5
- + if(i == 3)j = 9
![](/assets/blank.gif)
隐含相关性
- > emwa_series_cor = function(i = 1,j = 2){
- + if((min(i,j)== 1)&(max(i,j)== 2)){
- + a = 1; B = 9; AB = 3}
- + r = ewma $ Sigma.t [,ab] / sqrt(ewma $ Sigma.t [,a] *
- + ewma $ Sigma.t [,b])
- + plot(Time,r,type =“l”,ylim = c(0,1))
- +}
![](/assets/blank.gif)
多变量GARCH,即BEKK(1,1)模型,例如使用:
- > bekk = BEKK11(dat_arma)
- > bekk_series_vol function(i = 1){
- + plot(Time, $ Sigma.t [,1],type =“l”,
- + ylab = (dat)[i],col =“white”,ylim = c(0,80))
- + lines(Time,dat_arma [,i] + 40,col =“gray”)
- + j = 1
- + if(i == 2)j = 5
- + if(i == 3)j = 9
- > bekk_series_cor = function(i = 1,j = 2){
- + a = 1; B = 5; AB = 2}
- + a = 1; B = 9; AB = 3}
- + a = 5; B = 9; AB = 6}
- + r = bk $ Sigma.t [,ab] / sqrt(bk $ Sigma.t [,a] *
- + bk $ Sigma.t [,b])
![](/assets/blank.gif)
从单变量GARCH模型中模拟残差
第一步可能是考虑残差的一些静态(联合)分布。单变量边缘分布是
![](/assets/blank.gif)
边缘密度的轮廓(使用双变量核估计器获得)
![](/assets/blank.gif)
也可以将copula密度可视化(上面有一些非参数估计,下面是参数copula)
- > copula_NP = function(i = 1,j = 2){
- + n = nrow(uv)
- + s = 0.3
- + norm.cop < - normalCopula(0.5)
- + norm.cop < - normalCopula(fitCopula(norm.cop,uv)@estimate)
- + dc = function(x,y)dCopula(cbind(x,y),norm.cop)
- + ylab = names(dat)[j],zlab =“copule Gaussienne”,ticktype =“detailed”,zlim = zl)
- +
- + t.cop < - tCopula(0.5,df = 3)
- + t.cop < - tCopula(t.fit [1],df = t.fit [2])
- + ylab = names(dat)[j],zlab =“copule de Student”,ticktype =“detailed”,zlim = zl)
- +}
![](/assets/blank.gif)
可以考虑这个
![](/assets/blank.gif)
函数,
![](/assets/blank.gif)
计算三个序列的的经验版本,并将其与一些参数版本进行比较,
- >
- > lambda = function(C){
- + l = function(u)pcopula(C,cbind(u,u))/ u
- + v = Vectorize(l)(u)
- + return(c(v,rev(v)))
- +}
- >
- > graph_lambda = function(i,j){
- + X = dat_res
- + U = rank(X [,i])/(nrow(X)+1)
- + V = rank(X [,j])/(nrow(X)+1)
- + normal.cop < - normalCopula(.5,dim = 2)
- + t.cop < - tCopula(.5,dim = 2,df = 3)
- + fit1 = fitCopula(normal.cop,cbind(U,V),method =“ml”)
- d(U,V),method =“ml”)
- + C1 = normalCopula(fit1 @ copula @ parameters,dim = 2)
- + C2 = tCopula(fit2 @ copula @ parameters [1],dim = 2,df = trunc(fit2 @ copula @ parameters [2]))
- +
![](/assets/blank.gif)
但人们可能想知道相关性是否随时间稳定。
- > time_varying_correl_2 = function(i = 1,j = 2,
- + nom_arg =“Pearson”){
- + uv = dat_arma [,c(i,j)]
- nom_arg))[1,2]
- +}
- > time_varying_correl_2(1,2)
- > time_varying_correl_2(1,2,“spearman”)
- > time_varying_correl_2(1,2,“kendall”)
![](/assets/blank.gif)
斯皮尔曼与时变排名相关系数
![](/assets/blank.gif)
或肯德尔 相关系数
![](/assets/blank.gif)
为了模型的相关性,考虑DCC模型(S)
- > m2 = dccFit(dat_res_std)
- > m3 = dccFit(dat_res_std,type =“Engle”)
- > R2 = m2 $ rho.t
- > R3 = m3 $ rho.t
![](/assets/blank.gif)
要获得一些预测, 使用例如
- > garch11.spec = ugarchspec(mean.model = list(armaOrder = c(2,1)),variance.model = list(garchOrder = c(1,1),model =“GARCH”))
- > dcc.garch11.spec = dccspec(uspec = multispec(replicate(3,garch11.spec)),dccOrder = c(1,1),
- distribution =“mvnorm”)
- > dcc.fit = dccfit(dcc.garch11.spec,data = dat)
- > fcst = dccforecast(dcc.fit,n.ahead = 200)
![](/assets/blank.gif)
最受欢迎的见解
1.HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
2.R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增长
3.波动率的实现:ARCH模型与HAR-RV模型
4.R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
5.GARCH(1,1),MA以及历史模拟法的VaR比较
6.R语言多元COPULA GARCH 模型时间序列预测
7.R语言基于ARMA-GARCH过程的VAR拟合和预测
8.matlab预测ARMA-GARCH 条件均值和方差模型
9.R语言对S&P500股票指数进行ARIMA + GARCH交易策略
arma模型_R语言ARMA-GARCH-COPULA模型和金融时间序列案例相关推荐
- arma模型_R语言: GARCH模型股票交易量的研究道琼斯股票市场指数
原文链接: R语言: GARCH模型股票交易量的研究道琼斯股票市场指数tecdat.cn 我将建立道琼斯工业平均指数(DJIA)日交易量对数比的ARMA-GARCH模型. 获取数据 load(fil ...
- arma模型_R语言与计量经济学(七)ARMA模型
前面说了AR模型和MA模型,ARMA就是结合一下,既有自回归又有移动平均 就是这样形式哈!懒得打公式... 同样还是举个栗子 ! #ARMA自回归移动平均模型 mod<-arima.sim(mo ...
- 网页中加载obj模型比较慢_R语言估计时变VAR模型时间序列的实证研究分析案例...
原文 http://tecdat.cn/?p=3364tecdat.cn 加载R包和数据集 上述症状数据集包含在R-package 中,并在加载时自动可用. 加载包后,我们将此数据集中包含的12个心 ...
- r语言boxcox异方差_R语言异方差回归模型建模:用误差方差解释异方差
在社会科学中将OLS估计应用于回归模型时,其中的一个假设是同方差,我更喜欢常误差方差.这意味着误差方差没有系统的模式,这意味着该模型在所有预测级别上都同样差. 异方差性是同方差性的补充,不会使OLS产 ...
- R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数
全文链接:http://tecdat.cn/?p=31023 如何构建合适的模型以恰当的方法对风险进行测量是当前金融研究领域的一个热门话题(点击文末"阅读原文"获取完整代码数据). ...
- R语言用Garch模型和回归模型对股票价格分析
原文链接:http://tecdat.cn/?p=18310 为了找出影响价格波动的主要因素,我们使用逐步回归法来剔除一些对于应变量即价格影响很小的自变量剔除出我们的模型(点击文末"阅读原文 ...
- r语言 python 股票_R语言使用ARIMA模型预测股票收益
原文链接:http://tecdat.cn/?p=2831 "预测非常困难,特别是关于未来".丹麦物理学家尼尔斯·波尔(Neils Bohr) 很多人都会看到这句名言.预测是这篇博 ...
- python做var模型_【Python金融量化】VaR系列(五):Copula模型估计组合VaR-阿里云开发者社区...
1. 资产组合VaR建模方法回顾 文章中总结了通过DCC模型估计组合向前一日VaR的方法,整体思路如下: ● 通过Garch族模型估计各资产的波动率 ● 通过DCC模型估计各资产间的相关系数,结合 ...
- python做var模型_【Python金融量化】VaR系列(五):Copula模型估计组合VaR
作者:量化小白H Python爱好者社区专栏作者 个人公众号:量化小白上分记 前文传送门: 之前总结的大部分模型都是基于正态性的假设,但实际上,正态性假设并不非常符合金融时间序列的特征.如果从 ...
- python 计量做hp滤波_R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等...
原文链接:http://tecdat.cn/?p=5399 介绍 对商业周期的分析需要提取时间序列的周期性成分,该时间序列通常也受到诸如潜在趋势或噪声等其他因素的影响.本文介绍了一些在最近的文献中用于 ...
最新文章
- ​闻一闻就能诊断癌症?可与“狗鼻子”媲美的AI癌症检测系统问世
- 字符串与整数之间进行转换
- LED和LCD的区别
- linux常用命令:wget 命令
- 老男孩教育50期左婷婷-day03-xhell连接服务器-远程连接排错-基础命令
- poj2632 累死了
- 2020运动相机推荐_2020年超有价值入门级微单相机推荐,超高性价比几款入门级微单相机(选购指南)...
- 常见的立体匹配算法介绍
- Android Studio 4.1中的模板插件
- 关闭windows自动更新N种方法
- 通过mysql修改后台密码_怎么通过修改数据库修改网站后台的管理员密码?
- 在html中input是什么意思,在HTML代码中input是什么意思?
- c语言学生成绩系统综合实验,C语言学生管理系统_综合实验报告.docx
- 一个关于Linux Bridge配置的吐嘈
- box-sizing: border-box;box-sizing:content-box;讲解
- EasyCVR平台接入大华EVS存储服务器,需要注意哪些事项?
- 7、KSQL刨根问底和实战操作教程
- Oracle分区简介
- 终身 服务器_阿里云VS腾讯云618年中活动云服务器价格对比哪个更优惠?
- 关于Mac软件不兼容的解决方案(xattr)
热门文章
- 微信域名防封、域名检测接口api、域名跳转技术、360防拦截揭秘(一)------域名防封的核心技术
- php的替换快捷键是什么,wps替换快捷键是什么
- Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)
- mysql怎么设置角色_mysql 用户角色权限表建立
- 华为当个pl怎么样_华为8PL∪S提示灯 | 手游网游页游攻略大全
- thon中的全局变量
- 【沐风课堂】MIRG for 3DMAX材质ID随机生成器使用教程
- html怎么让音乐隐藏在网页中循环播放,怎么在网页中循环播放声音
- WPS中插入“公式”后行距不正常的解决办法
- matlab实现icp算法,ICP算法(Iterative Closest Point)及VTK实现