Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率

R语言单变量和多变量(多元)动态条件相关系数DCC-GARCH模型分析股票收益率金融时间序列数据波动率

作者头像
拓端
发布于 2025-03-28 08:55:41
发布于 2025-03-28 08:55:41
9700
代码可运行
举报
文章被收录于专栏:拓端tecdat拓端tecdat
运行总次数:0
代码可运行

全文下载链接:http://tecdat.cn/?p=2595

当您处理金融时间序列时,我们通常可以获得相对高频的观察结果。例如,每天进行观察是很常见的。事实上,现在可以获得每小时、分钟、秒甚至毫秒的观测值。

使用的包

有许多软件包可以使我们能够估计波动率模型。我们还将使用该 quantmod 软件包,因为它可以让我们轻松访问一些标准财务数据。

数据上传

在这里,我们将使用包提供的方便的数据检索功能(getSymbolsquantmod 来检索一些数据。例如,此函数可用于检索股票数据。默认来源是 Yahoo Finance. 如果您想找出哪些股票有哪个符号,您应该能够在互联网上搜索以找到股票代码列表。下面介绍如何使用该功能。但请注意,我的经验是有时连接不起作用,您可能会收到错误消息。在这种情况下,只需在几秒钟后重试,它就可以正常工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getSymbols("IBM")
## \[1\] "IBM"
getSymbols("GOOG")
## \[1\] "GOOG"
getSymbols("BP")
## \[1\] "BP"

在您的环境中,您可以看到这些命令中的每一个都使用各自的股票代码名称加载一个对象。让我们看一下这些数据框之一,以了解这些数据是什么:

您可以看到该对象包含一系列每日观察结果( OpenHighClose股价 )。我们还了解到对象被格式化为xts 对象, 是一种时间序列格式,实际上我们了解到数据范围从 2007-01-03 到 2022-03-24。

使用以下命令生成一个看起来有点花哨的图表

当我们估计波动率模型时,我们使用收益率。有一个函数可以将数据转换为收益率。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dailyReturn(IBM)

单变量 GARCH 模型

您需要做的第一件事是确保您知道要估计的 GARCH 模型类型,然后让 R 知道这一点。让我们看看:

这里的关键问题是 Mean Model (这里是 ARMA(1,1) 模型)和 GARCH Model, 这里 sGARCH(1,1) 基本上是 GARCH(1,1) 的模型。

假设您要将平均模型从 ARMA(1,1) 更改为 ARMA(1,0),即 AR(1) 模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uec <- ugarchspec

以下是 EWMA 模型示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ewm = ugarchspe

模型估计

现在我们已经指定了一个模型来估计,我们需要找到最好的参数,即我们需要估计模型。这一步是通过 it 函数来实现的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fit(specrIBM)

fit 现在是一个包含一系列估计结果的列表。让我们看看结果

ar1 是均值模型的 AR1 系数(这里非常小且基本上不显着), alpha1 是 GARCH 方程中残差平方 beta1 的系数,是滞后方差的系数。

通常,您会希望使用模型输出进行一些进一步的分析。因此,了解如何提取参数估计值、标准误差或残差等信息非常重要。该对象 ugfit 包含所有信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
names

如果您想提取估计的系数,您可以通过以下方式进行:

让我们绘制平方残差和估计的条件方差:

模型预测

通常您会希望使用估计模型来随后预测条件方差。用于此目的的函数是 forecast 函数。该应用程序相当简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hforecast(ugfit

正如你所看到的,我们已经对未来十天进行了预测,包括预期收益 ( Series) 和条件波动率(条件方差的平方根)。您可以提取条件波动率预测如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
forecast$sigmaFor
plot

请注意,波动率是条件方差的平方根。

为了将这些预测放在上下文中,让我们将它们与估计中使用的最后 50 个观察值一起显示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 (tail(ug_var,20) )  # 得到最后20个观察值
 tail(ug_res2,20 ))  # 得到最后的20个观测值

您可以看到条件方差的预测是如何从上次估计的条件方差中得出的。事实上,它从那里慢慢地向无条件方差值递减。

多元 GARCH 模型

通常,您需要对波动性进行建模。这可以通过单变量 GARCH 模型的多变量版本来完成。估计多变量 GARCH 模型比单变量 GARCH 模型要困难得多,但幸运的是,已经开发了处理大多数这些问题的程序。

在这里,我们来估计 BP、Google/Alphabet 和 IBM 股票收益率的多元波动率模型。

在这里,我们坚持使用动态条件相关 (DCC) 模型。在估计 DCC 模型时,基本上是估计单个 GARCH 类型模型。然后将这些用于标准化各个残差。作为第二步,必须指定这些标准化残差的相关动态。

模型设置

在这里,我们假设我们对三种资产中的每一种都使用相同的单变量波动率模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# DCC (MVN)
u.n = multispec

这个命令有什么作用?它指定了一个 AR(1)-GARCH(1,1) 模型。将这个模型复制了 3 次(因为我们拥有三种股票,IBM、Google/Alphabet 和 BP)。

我们现在使用命令估计

结果保存在 multf 其中,您可以 multf 在命令窗口中键入以查看这三个模型的估计参数。但是我们将在这里继续指定 DCC 模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spec

模型估计

现在我们可以使用该 fit 函数来估计模型了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fit1 =fit(spec1)

当您估计像 DCC 模型这样的多元波动率模型时,您通常对估计的协方差或相关矩阵感兴趣。毕竟,这些模型的核心是允许股票之间的相关性随时间变化。因此,我们现在将学习如何提取这些。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 获取基于模型的时间变化协方差(阵列)和相关矩阵
rcov(fit1) # 提取协方差矩阵
rcor(fit1) # 提取相关矩阵

要了解我们手头的数据,我们可以看一下维度:

我们得到三个输出,告诉我们我们有一个三维对象。前两个维度各有 3 个元素(想想一个 3×3 相关矩阵),然后是第三个维度,有 3834个元素。这告诉我们 cor1 存储了 3834(3×3) 个相关矩阵,一个用于每天的数据。

让我们看看最后一天的相关矩阵,第 3834天;

因此,假设我们要绘制 Google 和 BP 之间的时变相关性,即最后一天的 0.1924。在我们的收益矩阵中, rX BP 是第二个资产,而 Google 是第三个。因此,在任何特定的相关矩阵中,我们都需要第 2 行和第 3 列中的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 cor1\[2,1,\] # 将最后一个维度留空意味着我们需要所有元素
 as.xts(c G) # 采用xts的时间序列格式--对绘图很有用

现在我们绘制这个。

如您所见,随着时间的推移存在显着变化,相关性通常在 0.2 和 0.5 之间变化。

让我们绘制三种资产之间的所有三种相关性。

预测

通常您会希望使用您的估计模型来生成协方差或相关矩阵的预测

相关性的实际预测可以通过

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 mforecast$R    # 用H来预测协方差

检查结构时 Rf

您意识到该对象 Rf 是一个包含一个元素的列表。事实证明,这个列表项是一个 3 维矩阵/数组,其中包含 3×3 相关矩阵的 10 个预测。例如,如果我们想提取 IBM(第一项资产)和 BP(第二项资产)之间相关性的 10 个预测,我们必须按以下方式进行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Rf\[\[1\]\]\[1,2,\] # IBMBP之间的相关预测值
 Rf\[\[1\]\]\[1,3,\] # IBM和谷歌之间的相关预测
 Rf\[\[1\]\]\[2,3,\] # BP和Google之间的相关性预测

至于单变量波动性模型,让我们将预测与相关性的最后样本内估计一起显示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 这将创建一个有3个窗口的框架,由图画来填充
c(tail(cor1\[1,2,\],20),rep(NA,10))# 得到最后20个相关观测值
c(rep(NA,20),corf_IB)# 得到10个预测值
plot 

c(tail(cor1\[1,3,\],20),rep(NA,10))# 得到最后20个相关观测值
c(rep(NA,20),corf_IG)# 得到10个预测值


c(tail(cor1\[2,3,\],20),rep(NA,10))# 获得最后20个相关观测值
c(rep(NA,20),corf_BG) # 得到10个预测值
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测
最近我们被客户要求撰写关于MVGARCH的研究报告,包括一些图形和统计输出。在本文中,当从单变量波动率预测跳到多变量波动率预测时,我们需要明白,现在我们不仅要预测单变量波动率元素,还要预测协方差元素
拓端
2022/12/06
9270
R语言改进的DCC-MGARCH:动态条件相关系数模型、BP检验分析股市数据
股票市场波动性模型一直是金融领域研究的热点之一。传统的波动性模型往往只考虑了静态条件下的波动性和相关性,难以准确捕捉市场的复杂性和多样性。
拓端
2023/06/19
4890
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模|附代码数据
本文将说明单变量和多变量金融时间序列的不同模型,特别是条件均值和条件协方差矩阵、波动率的模型
拓端
2023/05/06
4650
R语言多元Copula GARCH 模型时间序列预测
直观的来说 ,后者是比前者“波动”更多且随机波动的序列,在一元或多元的情况下,构建Copula函数模型和GARCH模型是最好的选择。
拓端
2024/12/25
1370
R语言多元Copula GARCH 模型时间序列预测
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化
从Engle在1982发表自回归条件异方差(ARCH)模型的论文以来,金融时间序列数据的波动性就倍受关注。同时,近几年又出现了研究股票市场的波动传递性。多市场的多维广义自回归条件异方差模型及其在不同条件下的扩展与变形,它们不仅包含了单变量的波动特性,而且很好的描述了不同变量间的相互关系。所以,多维GARCH模型为分析金融市场的相互影响提供了有力的工具。
拓端
2022/12/01
6240
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
从Engle在1982发表自回归条件异方差(ARCH)模型的论文以来,金融时间序列数据的波动性就倍受关注。同时,近几年又出现了研究股票市场的波动传递性
拓端
2023/01/12
1.5K0
R语言多元Copula GARCH 模型时间序列预测
和宏观经济数据不同,金融市场上多为高频数据,比如股票收益率序列。直观的来说 ,后者是比前者“波动”更多且随机波动的序列,在一元或多元的情况下,构建Copula函数模型和GARCH模型是最好的选择。
拓端
2022/06/08
7740
R语言多元Copula GARCH 模型时间序列预测
R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列|附代码数据
风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险
拓端
2023/02/23
1.3K0
指数加权模型EWMA预测股市多变量波动率时间序列
但是您的客户需要快速理解。他们没有意愿或时间去处理任何太乏味的事情,即使模型可以稍微准确一些。简单性是商业中非常重要的模型选择标准。
拓端
2022/04/14
1.1K0
指数加权模型EWMA预测股市多变量波动率时间序列
基于R语言股票市场收益的统计可视化分析|附代码数据
要执行此分析,我们需要资产的历史数据。数据提供者很多,有些是免费的,大多数是付费的。在本文中,我们将使用Yahoo金融网站上的数据。
拓端
2023/02/07
1.9K0
R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测
在多变量波动率预测中,我们有时会看到对少数主成分驱动的协方差矩阵建模,而不是完整的股票。使用这种因子波动率模型的优势是很多的。
拓端
2022/03/14
5990
R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测
ARMA-GARCH-COPULA模型和金融时间序列案例|附代码数据
这个想法是在这里使用一些多变量ARMA-GARCH过程。这里的启发式是第一部分用于模拟时间序列平均值的动态,第二部分用于模拟时间序列方差的动态。
拓端
2023/01/31
3880
【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它 。
拓端
2023/01/10
9210
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
从Engle在1982发表自回归条件异方差(ARCH)模型的论文以来,金融时间序列数据的波动性就倍受关注。同时,近几年又出现了研究股票市场的波动传递性
拓端
2023/01/05
6250
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
最近我们被客户要求撰写关于ARMA-GARCH的研究报告,包括一些图形和统计输出。
拓端
2023/02/21
1.1K0
基于R语言股票市场收益的统计可视化分析
金融市场上最重要的任务之一就是分析各种投资的历史收益。要执行此分析,我们需要资产的历史数据。数据提供者很多,有些是免费的,大多数是付费的。在本文中,我们将使用Yahoo金融网站上的数据。
拓端
2020/10/24
2.2K0
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测
P 和 Q 分别是 GARCH 和 ARCH 多项式中的最大非零滞后。其他模型参数包括平均模型偏移、条件方差模型常数和分布。
拓端
2021/11/23
1.9K0
R语言乘法GARCH模型对高频交易数据进行波动性预测
在过去十年中,人们对高频交易和模型的兴趣成倍增长。虽然我对高频噪音中出现信号的有效性有一些怀疑,但我还是决定使用GARCH模型研究一下收益率的统计模型。与每日和较低频率的收益不同,日内高频数据有某些特殊的特点,使得使用标准的建模方法是无效的。在这篇文章中,我将使用花旗集团2008年1月2日至2008年2月29日期间的1分钟收益率。这个数据集删除了异常值。考虑的日内时间范围是09:30至16:00,即证券交易所的正式交易时间。与大多数此类关于日内数据建模的研究一样,当天的第一个收益被删除。每日数据从雅虎财经下载。
拓端
2021/06/15
1.5K0
R语言乘法GARCH模型对高频交易数据进行波动性预测
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列|附代码数据
最近我们被客户要求撰写关于ARIMA-GARCH的研究报告,包括一些图形和统计输出。
拓端
2023/01/09
5530
R语言使用多元AR-GARCH模型衡量市场风险|附代码数据
董事会感到关切的是,公司已连续第五个季度未能实现盈利预期。股东不高兴。罪魁祸首似乎是商品销售成本的波动。
拓端
2022/11/08
3840
推荐阅读
R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测
9270
R语言改进的DCC-MGARCH:动态条件相关系数模型、BP检验分析股市数据
4890
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模|附代码数据
4650
R语言多元Copula GARCH 模型时间序列预测
1370
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化
6240
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
1.5K0
R语言多元Copula GARCH 模型时间序列预测
7740
R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列|附代码数据
1.3K0
指数加权模型EWMA预测股市多变量波动率时间序列
1.1K0
基于R语言股票市场收益的统计可视化分析|附代码数据
1.9K0
R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测
5990
ARMA-GARCH-COPULA模型和金融时间序列案例|附代码数据
3880
【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
9210
R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
6250
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
1.1K0
基于R语言股票市场收益的统计可视化分析
2.2K0
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测
1.9K0
R语言乘法GARCH模型对高频交易数据进行波动性预测
1.5K0
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列|附代码数据
5530
R语言使用多元AR-GARCH模型衡量市场风险|附代码数据
3840
相关推荐
R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量波动率预测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验