首页 > 其他分享 >ARMA-GARCH-COPULA模型和金融时间序列案例|附代码数据

ARMA-GARCH-COPULA模型和金融时间序列案例|附代码数据

时间:2023-07-24 14:44:49浏览次数:37  
标签:res 模型 dat 序列 GARCH COPULA ARMA

原文链接: http://tecdat.cn/?p=3385

最近我们被客户要求撰写关于ARMA-GARCH-COPULA的研究报告,包括一些图形和统计输出。

从读取数据中获得各种模型的描述,包括一些图形和统计输出。

 
> 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

图片


点击标题查阅往期内容

图片

R语言基于ARMA-GARCH过程的VaR拟合和预测

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

隐含相关性

 
> 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)

图片


图片

本文摘选 《 R语言ARMA-GARCH-COPULA模型和金融时间序列案例 》 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

时间序列分析:ARIMA GARCH模型分析股票价格数据
GJR-GARCH和GARCH波动率预测普尔指数时间序列和Mincer Zarnowitz回归、DM检验、JB检验
【视频】时间序列分析:ARIMA-ARCH / GARCH模型分析股票价格
时间序列GARCH模型分析股市波动率
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
Garch波动率预测的区制转移交易策略
金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测R语言GARCH-DCC模型和DCC(MVT)建模估计
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
R语言时间序列GARCH模型分析股市波动率
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
R语言多元Copula GARCH 模型时间序列预测
R语言使用多元AR-GARCH模型衡量市场风险
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
GARCH(1,1),MA以及历史模拟法的VaR比较
matlab估计arma garch 条件均值和方差模型R语言POT超阈值模型和极值理论EVT分析

标签:res,模型,dat,序列,GARCH,COPULA,ARMA
From: https://www.cnblogs.com/tecdat/p/17577180.html

相关文章

  • MATLAB用GARCH-EVT-Copula极值理论模型VaR预测分析股票投资组合|附代码数据
    全文链接:http://tecdat.cn/?p=30426最近我们被客户要求撰写关于GARCH-EVT-Copula的研究报告,包括一些图形和统计输出。对VaR计算方法的改进,以更好的度量开放式基金的风险。本项目把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Cop......
  • 【小学期实训】附加题题解——Good Karma
    [状压dp+容斥原理]实训附加题——GoodKarma目录[状压dp+容斥原理]实训附加题——GoodKarma题目描述题目输入格式输出格式数据范围样例输入1样例输出1样例输入2样例输出2样例解释2Solution题目描述题目链接题目「天空度假山庄」中有一个\(n\)点\(m\)边的无向图,图中点......
  • R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模
    原文链接:http://tecdat.cn/?p=26271最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。Box等人的开创性工作(1994)在自回归移动平均模型领域的相关工作为波动率建模领域的相关工作铺平了道路,分别由Engle(1982)和Bollerslev(1986)引入了ARCH和GARCH......
  • 金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测股票价格(适用于时序问题)、相
    金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测股票价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)1.使用CNN模型预测未来一天的股价涨跌-CNN(卷积神经网络)使用CNN模型预测未来一天的股价涨跌数据介绍open开盘价;close收盘价;high最高价low最......
  • R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据|
    全文链接:http://tecdat.cn/?p=24492最近我们被客户要求撰写关于风险价值的研究报告,包括一些图形和统计输出。此分析的目的是构建一个过程,以在给定时变波动性的情况下正确估计风险价值。风险价值被广泛用于衡量金融机构的市场风险。我们的时间序列数据包括1258天的股票收益介......
  • Karmada 部署与使用体验
    初始化karmada控制平面kubectlkrewinstallkarmadakubectlkarmadainit--kube-image-registry='registry.cn-hangzhou.aliyuncs.com/google_containers'查看karmada控制平面创建的资源kubectlgetdeployments-nkarmada-systemkubectlgetstatefulsets-nkarmad......
  • 龙芯电脑编译redis (loongarch)
    1、获取源码源码地址:https://redis.io/download/#redis-downloads 最新版本是7.2,这里用redis5测试,最后一个版本是5.0.14wgethttps://download.redis.io/releases/redis-5.0.14.tar.gztar-zxvfredis-5.0.14.tar.gzcdredis-5.0.14/2、修改源码redis用到了jemalloc库......
  • R语言使用多元AR-GARCH模型衡量市场风险|附代码数据
    原文链接:http://tecdat.cn/?p=19118最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。本文分析将用于制定管理客户和供应商关系的策略准则假设:贵公司拥有用于生产和分销聚戊二酸的设施,聚戊二酸是一种用于多个行业的化合物。制造和分销过程的投入包括各种......
  • Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES|附代码数据
    全文链接:http://tecdat.cn/?p=24753最近我们被客户要求撰写关于风险价值的研究报告,包括一些图形和统计输出。在这项工作中,我通过创建一个包含四只基金的模型来探索copula,这些基金跟踪股票、债券、美元和商品的市场指数摘要然后,我使用该模型生成模拟值,并使用实际收益和模拟收......
  • R语言使用多元AR-GARCH模型衡量市场风险|附代码数据
    关于GARCH的研究报告,包括一些图形和统计输出。本文分析将用于制定管理客户和供应商关系的策略准则假设:贵公司拥有用于生产和分销聚戊二酸的设施,聚戊二酸是一种用于多个行业的化合物。制造和分销过程的投入包括各种石油产品和天然气。价格波动可能非常不稳定。营运资金管理一......