arma模型_R语言ARMA-GARCH-COPULA模型和金融时间序列案例
原文
拓端数据科技 / Welcome to tecdattecdat.cn
最近我被要求撰写关于金融时间序列的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
这个想法是在这里使用一些多变量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
隐含相关性
- > 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))
- +}
多变量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])
从单变量GARCH模型中模拟残差
第一步可能是考虑残差的一些静态(联合)分布。单变量边缘分布是
边缘密度的轮廓(使用双变量核估计器获得)
也可以将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)
- +}
可以考虑这个
函数,
计算三个序列的的经验版本,并将其与一些参数版本进行比较,
- >
- > 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]))
- +
但人们可能想知道相关性是否随时间稳定。
- > 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”)
斯皮尔曼与时变排名相关系数
或肯德尔 相关系数
为了模型的相关性,考虑DCC模型(S)
- > m2 = dccFit(dat_res_std)
- > m3 = dccFit(dat_res_std,type =“Engle”)
- > R2 = m2 $ rho.t
- > R3 = m3 $ rho.t
要获得一些预测, 使用例如
- > 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)
最受欢迎的见解
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 介绍 对商业周期的分析需要提取时间序列的周期性成分,该时间序列通常也受到诸如潜在趋势或噪声等其他因素的影响.本文介绍了一些在最近的文献中用于 ...
最新文章
- mysql修改密码的三种方式
- strlen函数_7.2 C++字符串处理函数
- AI入门:不用任何公式把主成分分析讲清楚
- java输出毫秒时间
- [W班]第二次结对作业成绩评价
- JavaScript---DOM事件
- opengl 高级技巧
- WPF DataGrid 根据某一特定内容进行交叉变色
- java关联查询实战_MyBatis初级实战之六:一对多关联查询
- 通达OA2015 数据选择控件的使用随笔
- 虚拟机VMware的下载与安装——详细教程
- matlab里面求出两条曲线的交点问题
- Compose 这次要送 Pixel 5 了!
- 线性代数——对向量的线性组合中的“线性”的理解
- 【有效】最新爬取音乐,纯接口访问实现。Python3、requests、美丽汤、tqdm实战
- Java设计模式(03) -- 里氏替换原则
- 在CMD中登陆MySQL
- 数据中心蓄冷罐的开式与闭式的选择-孙长青
- 计算机应用基础考查方案,《计算机应用基础》考查方案
- Microsoft Excel 2010错误:此工作簿包含嵌入对象。Microsoft Excel 可能无法从这些对象中删除个人信息。