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

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

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

https://developer.aliyun.com/article/1488197


模型预测

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

hforecast(ugfit

image.png

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

forecast$sigmaFor
plot

image.png

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

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

(tail(ug_var,20) )  # 得到最后20个观察值
tail(ug_res2,20 ))  # 得到最后的20个观测值

image.png

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

多元 GARCH 模型

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

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

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

模型设置

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

# DCC (MVN)
u.n = multispec

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

我们现在使用命令估计

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

spec

模型估计

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

fit1 =fit(spec1)

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

# 获取基于模型的时间变化协方差(阵列)和相关矩阵
rcov(fit1) # 提取协方差矩阵
rcor(fit1) # 提取相关矩阵

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

7b9f55018c8daa6a58fa6b3103e55c69_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

c62409923ac77cea9d5ec272ec039b47_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

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

cor1\[2,1,\] # 将最后一个维度留空意味着我们需要所有元素
as.xts(c G) # 采用xts的时间序列格式--对绘图很有用

现在我们绘制这个。

68dfa1a56fed7f70fa9ac876defdff22_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

d1dfddc19301180c427ad9eb85843cf8_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

预测

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

57711c6444908394b840be8ee945ca73_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

a83bc878afbb0c2ef0a90f17d9d1fb8f_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

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

mforecast$R    # 用H来预测协方差

检查结构时 Rf

7eae251f5897513ee0de461910c2dabc_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

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

Rf\[\[1\]\]\[1,2,\] # IBM和BP之间的相关预测值
Rf\[\[1\]\]\[1,3,\] # IBM和谷歌之间的相关预测
Rf\[\[1\]\]\[2,3,\] # BP和Google之间的相关性预测

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

# 这将创建一个有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个预测值

64542a955e3f79a50c0b609cf741f292_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
67 3
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
6月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)