ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

2022-03-20 15:33:05  阅读:164  来源: 互联网

标签:模型 tecdat 拓端 GARCH 拟合 copula 数据 模拟


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

原文出处:拓端数据部落公众号

在本文中,我们展示了 copula GARCH 方法拟合模拟数据和股票数据并进行可视化。 r还提供了一个特殊情况(具有正态或学生 t残差)。

 一、如何在R中对股票x和y的收益率拟合copula模型

数据集

为了这个例子的目的,我使用了一个简单的股票x和y的收益率数据集(x.txt和y.txt)。

首先,我们需要加载数据并将其转换成矩阵格式。也可以选择绘制数据。

  1.    
  2.   x <- read.table
  3.    
  4.   y <- read.table
  5.    
  6.    
  7.    
  8.    
  9.   # 实际观察结果
  10.    
  11.   plot

数据的图表

现在我们已经加载了我们的数据,可以清楚地看到,存在正相关。

下一步是拟合。为了拟合数据,我们需要选择一个copula模型。该模型应根据数据的结构和其他因素来选择。作为第一种近似值,我们可以说我们的数据显示了正相关,因此一个可以复制这种相关的copula模型应该是不错的。我选择使用正态copula。对于其他类型的copula模型来说,拟合过程是相同的。

让我们来拟合数据

  1.    
  2.   # 正态Copula
  3.    
  4.   normalCopula
  5.    
  6.   fiop<- fit
  7.    
  8.    
  9.    
  10.   # 系数
  11.    
  12.   rho <- coef
  13.    
  14.   print

请注意,数据必须通过函数pobs()输入,该函数将真实观测值转换为单位平方[0,1]的伪观测值。
还要注意的是,我们使用的是 "ml "方法(最大似然法),但是也有其他方法,如 "itau"。

在我们的例子中,拟合的协整参数rho等于0.73。让我们模拟一些伪观察结果。

通过绘制伪观测值和模拟观测值,我们可以看到使用copula的模拟与伪观测值的匹配情况。

  1.    
  2.   # 伪观察
  3.    
  4.   pobs
  5.    
  6.   plot
  7.    
  8.    
  9.    
  10.   # 模拟数据
  11.    
  12.    
  13.   u1 = rCopula

这个特定的copula可能不是最好的,因为它显示了严重的尾部相关性,而这在我们的数据中并不强烈,不过这只是一个开始。

在开始的时候,我们可以选择将数据与每个随机变量的分布画在一起,如下所示

  1.    
  2.   # 用柱状图绘制数据
  3.   hst <- hist
  4.   top <- max
  5.    
  6.   layout
  7.   par
  8.   plot
  9.   barplot


 

并得到我们的原始数据集的这种表现形式

 将 t copula 拟合到标准化残差 Z。对于边缘分布,我们还假设 t分布,但具有不同的自由度;为简单起见,此处省略了估计。

  1.   n <- rep # 边际自由度;为了简单起见,这里使用已知的自由度
  2.   es <- cbind # 拟合与真实
  3.   rownames

从拟合的时间序列模型中模拟

从拟合的 copula 模型进行模拟。

并为每个边缘绘制结果序列 (Xt)

  1.   X <- sapply # 模拟序列X_t
  2.   matplot

二、模拟数据

首先,我们模拟了分布。为了演示的目的,我们选择了一个小的样本量。

  1.    
  2.   ##模拟
  3.   Copula # 定义copula对象
  4.   set.seed(21) # 可重复性
  5.   # 对copula进行采样
  6.   sqrt * qt # 对于ugarchpath()来说,边际必须具有均值0和方差1!
  7.    

现在我们使用依赖于 copula 来模拟两个 ARMA(1,1)-GARCH(1,1) 过程。 ARMA(p1,q1)-GARCH(p2,q2) 模型由下式给出

  1.   ## 固定边缘模型的参数
  2.   fixedp <- list
  3.   var <- list(model = "sGARCH") # 标准GARCH
  4.   garch # 条件创新密度(或者使用,例如,"std")。
  5.    
  6.   ## 使用从属创新模拟ARMA-GARCH模型
  7.   garch n.sim = n, # 模拟的路径长度
  8.   m.sim = d, # 要模拟的路径数量
  9.    
  10.    
  11.   ##提取结果系列
  12.   fit# X_t = mu_t + eps_t (模拟过程)
  13.   sig # sigma_t (条件性标准偏差)
  14.   resid # epsilon_t = sigma_t * Z_t (残差)
  15.    
  16.    
  17.   ## 绘制
  18.   matplot

基于模拟数据的拟合

我们现在展示如何将 ARMA(1,1)-GARCH(1,1) 过程拟合到 X 

  1.   garchspec
  2.   fit <- apply

检查(标准化的)Z,即残差Z的伪观测值。

  1.   Z <- sapply
  2.   U <- pobs
  3.   plot

将 t copula 拟合到标准化残差 Z。对于边缘分布,我们还假设 t分布,但具有不同的自由度;为简单起见,此处省略了估计。

fitCopula

  1.   n <- rep # 边际自由度;为了简单起见,这里使用已知的自由度
  2.   es <- cbind # 拟合与真实
  3.   rownames

从拟合的时间序列模型中模拟

从拟合的 copula 模型进行模拟。

  1.   set.seed(21) # 可重复性
  2.   U <- rCopula
  3.   Z. <- sapply
  4.   ## => 标准化的garchsim()
  5.   sim <- lapply

并为每个边缘绘制结果序列 (Xt)

  1.   X <- sapply # 模拟序列X_t
  2.   matplot


最受欢迎的见解

1.R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究

2.r语言实现copula算法建模依赖性案例

3.R语言COPULAS和金融时间序列数据VaR分析

4.R语言多元COPULA GARCH 模型时间序列预测

5.GARCH(1,1),MA以及历史模拟法的VaR比较

6.matlab使用Copula仿真优化市场风险数据分析

7.R语言实现向量自动回归VAR模型

8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

9.R语言VAR模型的不同类型的脉冲响应分析

标签:模型,tecdat,拓端,GARCH,拟合,copula,数据,模拟
来源: https://www.cnblogs.com/tecdat/p/16030138.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有