Copula 算法建模相依性分析股票收益率时间序列案例

科技   科技   2024-11-05 17:57   浙江  

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

copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。Copula是建模和模拟相关随机变量的绝佳工具。Copula的主要吸引力在于,通过使用它们,你可以分别对相关结构和边缘(即每个随机变量的分布)进行建模。

copulas如何工作 

首先,让我们了解copula的工作方式。

 set.seed(100

m < -  3
n < -  2000
 
z < -  mvrnorm(n,mu = rep(0,m),Sigma = sigma,empirical = T)

我们使用cor()和散点图矩阵检查样本相关性。

 pairs.panels(Z)

          \[,1\] \[,2\] \[,3\]
\[1,\] 1.0000000 0.3812244 0.1937548
\[2,\] 0.3812244 1.0000000 -0.7890814
\[3,\] 0.1937548 -0.7890814 1.0000000

 pairs.panels(U)

这是包含新随机变量的散点图矩阵u。 



点击标题查阅往期内容


R语言多元Copula GARCH 模型时间序列预测


左右滑动查看更多


01

02

03

04




我们可以绘制矢量的3D图表示u。 

现在,作为最后一步,我们只需要选择边缘并应用它。我选择了边缘为Gamma,Beta和Student,并使用下面指定的参数。

x1 < -  qgamma(u \[,1\],shape = 2,scale = 1
x2 < -  qbeta(u \[,2\],2,2
x3 < -  qt(u \[,3\],df = 5

下面是我们模拟数据的3D图。 

df < -  cbind(x1,x2,x3)
pairs.panels(DF)
 
          x1 x2 x3
x1 1.0000000 0.3812244 0.1937548
x2 0.3812244 1.0000000 -0.7890814
x3 0.1937548 -0.7890814 1.0000000

这是随机变量的散点图矩阵:

使用copula

让我们使用copula复制上面的过程。

现在我们已经通过copula(普通copula)指定了相依结构并设置了边缘,mvdc()函数生成了所需的分布。然后我们可以使用rmvdc()函数生成随机样本。

 colnames(Z2)< -  c(“x1”,“x2”,“x3”)
pairs.panels(Z2

模拟数据当然非常接近之前的数据,显示在下面的散点图矩阵中:

简单的应用示例

现在为现实世界的例子。我们将拟合两个股票 ,并尝试使用copula模拟 。 

让我们在R中加载 :

cree < -  read.csv('cree_r.csv'header = F)$ V2
yahoo < -  read.csv('yahoo_r.csv'header = F)$ V2

在直接进入copula拟合过程之前,让我们检查两个股票收益之间的相关性并绘制回归线:

我们可以看到 正相关 :

在上面的第一个例子中,我选择了一个正态的copula模型,但是,当将这些模型应用于实际数据时,应该仔细考虑哪些更适合数据。例如,许多copula更适合建模非对称相关,其他强调尾部相关性等等。我对股票收益率的猜测是,t-copula应该没问题,但是猜测肯定是不够的。本质上, 允许我们通过函数使用BIC和AIC执行copula选择 :

 
  pobs(as.matrix(cbind(cree,yahoo)))\[,1\]
  selectedCopula
 

$ PAR
\[1\] 0.4356302

$ PAR2
\[1\] 3.844534

拟合算法确实选择了t-copula并为我们估计了参数。 
让我们尝试拟合建议的模型,并检查参数拟合。

t.cop  
set.seed(500
m < -  pobs(as.matrix(cbind(cree,yahoo)))
 
COEF(FIT)

  rho.1 df 
0.43563 3.84453

我们来看看我们刚估计的copula的密度

rho < -  coef(fit)\[1\]
df < -  coef(fit)\[2\]

现在我们只需要建立Copula并从中抽取3965个随机样本。

  rCopula(3965,tCopula(  = 2, ,df = df))
 

          \[,1\] \[,2\]
\[1,\] 1.0000000 0.3972454
\[2,\] 0.3972454 1.0000000

这是包含的样本的图:

t-copula通常适用于在极值(分布的尾部)中存在高度相关性的现象。
现在我们面临困难:对边缘进行建模。为简单起见,我们将假设正态分布 。因此,我们估计边缘的参数。

直方图显示如下:

现在我们在函数中应用copula,从生成的多变量分布中获取模拟观测值。最后,我们将模拟结果与原始数据进行比较。

这是在假设正态分布边缘和相依结构的t-copula的情况下数据的最终散点图:

正如您所看到的,t-copula导致结果接近实际观察结果 。 

让我们尝试df=1df=8:

显然,该参数df对于确定分布的形状非常重要。随着df增加,t-copula倾向于正态分布copula。





本文摘选R语言实现 Copula 算法建模相依性案例分析报告,点击“阅读原文”获取全文完整资料。





点击标题查阅往期内容

Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES
MATLAB用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
R语言中的copula GARCH模型拟合时间序列并模拟分析
matlab使用Copula仿真优化市场风险数据VaR分析
R语言多元Copula GARCH 模型时间序列预测
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
R语言实现 Copula 算法建模依赖性案例分析报告
R语言ARMA-GARCH-COPULA模型和金融时间序列案例
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言COPULA和金融时间序列案例
matlab使用Copula仿真优化市场风险数据VaR分析
matlab使用Copula仿真优化市场风险
R语言多元CopulaGARCH模型时间序列预测
R语言Copula的贝叶斯非参数MCMC估计
R语言COPULAS和金融时间序列
R语言乘法GARCH模型对高频交易数据进行波动性预测
R语言GARCH-DCC模型和DCC(MVT)建模估计
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语言ARMA-GARCH-COPULA模型和金融时间序列案例


欲获取全文文件,请点击左下角“阅读原文”。



欲获取全文文件,请点击左下角“阅读原文”。

拓端数据部落
拓端(tecdat.cn)创立于2016年,提供专业的数据分析与挖掘服务,致力于充分挖掘数据价值。
 最新文章