天天看点

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

在本文中,我们展示了 copula GARCH 方法​​拟合​​模拟数据和股票数据并进行可视化。 ​

​r​

​还提供了一个特殊情况(具有正态或学生 t残差)。

​​数据集​​

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

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

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

数据的图表

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

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

下一步是拟合。为了拟合数据,我们需要选择一个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      
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

请注意,数据必须通过函数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      
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

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

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

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

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

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

 将 t copula 拟合到标准化残差 ​

​Z​

​。对于边缘分布,我们还假设 t分布,但具有不同的自由度;为简单起见,此处省略了估计。

拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
  1.  n <- rep # 边际自由度;为了简单起见,这里使用已知的自由度
  2.  es <- cbind # 拟合与真实
  3.  rownames
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

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

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

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

  1.  X <- sapply # 模拟序列X_t
  2.  matplot
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

二、模拟数据

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

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) 模型由下式给出

拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
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      
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

基于模拟数据的拟合

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

​X​

​ 

  1.  garchspec
  2.  fit <- apply

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

  1.  Z <- sapply
  2.  U <- pobs
  3.  plot
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

将 t copula 拟合到标准化残差 ​

​Z​

​。对于边缘分布,我们还假设 t分布,但具有不同的自由度;为简单起见,此处省略了估计。

fitCopula      
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
  1.  n <- rep # 边际自由度;为了简单起见,这里使用已知的自由度
  2.  es <- cbind # 拟合与真实
  3.  rownames
拓端tecdat|R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化

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

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

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

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

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