R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测

简介: R语言多变量广义正交GARCH(GO-GARCH)模型对股市高维波动率时间序列拟合预测

在多变量波动率预测中,我们有时会看到对少数主成分驱动的协方差矩阵建模,而不是完整的股票。使用这种因子波动率模型的优势是很多的。

首先,你不需要对每个股票单独建模,你可以处理流动性相当弱的股票。第二,因子波动率模型在计算成本低。第三,与指数加权模型相比,持久性参数(通常表示为 )不必在所有股票上都是一样的。你可以为每个因子指定一个不同的过程,这样协方差矩阵过程就会有更丰富的动态变化。

但这里没有免费的午餐,代价是信息的损失。它是将协方差矩阵中的信息浓缩为少数几个因子的代价。这意味着因子波动率模型最适合于实际显示因子结构的数据。因子波动率模型并不是具有弱的截面依赖性的数据的最佳选择。在因子化的过程中会丢失太多的信息。

这篇文章,我们让主成分遵循 GARCH 过程。代数相当简单。

(1)

(2)

是一个对角矩阵,维数为选定的因子数。将此矩阵设置为对角线意味着主成分之间的协方差为零(所有非对角线元素都为零)。因此它们是正交的。当然,通过构造,主成分只是无条件正交的,但我们添加了约束\假设它们在每个时间点也是正交的。这确保 是一个有效的协方差矩阵。

的对角线 填充了因子的方差。这里我们使用阈值-GARCH 模型。

让我们实际操作,使用股票数据。前两个追踪短期和长期的债券收益,后两个追踪股票指数。每日收益矩阵 ret。

下面的代码分为两部分。首先,我们基于单个因子的阈值 GARCH 模型构建了我们自己的双因子正交 GARCH 模型。有几种不同的方法来估计参数(非线性最小二乘法、最大似然法和矩量法)。

#--------------
# 第一部分,自己的双因子正交 GARCH 模型
#--------------------
library(rugarch) # 单变量GARCH模型
# 我使用1000个观察的初始窗口,每增加一个时间点就重新估计模型的参数
wd <- 1000 #初始窗口
k <- 2 #因素的数量
Uvofit <- matrix # 用一个矩阵来保存三种资产的波动率
for(i in wd:T){
pc1 <- promp # 主成分分解
for (j in 1:k){ # 对于每个因素,这里有相同的Garch过程(但可以是不同的)。
gjel = ugarchfit
}
# 不使用内置的 prcomp 函数获得 w。
w <- matrix(eivales, nrow = l, ncol = k, byrow = F) * (eigos)
# 存储每个时间点上的协方差矩阵。
for(i in 1:TT){
# 这是Gamma D_t gamma'。
otch\[i,,\] <- w %*% as.matrix) %*% t(w)
}
# 第二部分。使用广义正交GARCH(GO-GARCH)模型
#--------------
garchestby = "mm"
summary
# 让我们从这个模型中获得协方差
mH <- array
for(i in 1:TT){
yH\[i,,\] <- faf@H\[\[i\]\] 。
}
# 绘制这两张图。因为我们用1000作为初始窗口,所以只画最近的观察值
# 改变k来表示最近的观测值。
k <- TT - wd
teme <- tail(time,k) # 定义时间
# 用来绘制相关图的函数
plot(teime
abline
lines(tetime
# 让我们来看看所产生的相关关系。

我们看到的是对应于 6 个相关序列(SPY 与 TLT、SPY 与 QQQ 等)。

01

02

03

04




我们自己估计的双因子正交 GARCH 模型和构建的广义正交GARCH(GO-GARCH)模型之间几乎没有区别。但我们自己的只使用了 2 个因子,一个差分 GARCH 模型,估计的是窗口而不是整个样本,以及不同的估计方法。我怀疑真实的相关性是否像底部面板中估计的那样稳定。

* 我们在这里混合了代数、概率和几何的术语。正交是一个来自几何学的术语,它是指两个向量之间的角度。如果它们是垂直的,就被称为正交。 代数上,如果它们的内积会发生这种情况 为零。在概率上,回到协方差矩阵,COV(x,y)=E(XY)-E(X)E(Y),但因为因子的平均值为零。COV(x,y)=E(XY)。所以E(XY)=0意味着因子是正交的。本质上,正交性意味着线性独立。

相关文章
|
4月前
|
Go
【LeetCode 热题100】DP 实战进阶:最长递增子序列、乘积最大子数组、分割等和子集(力扣300 / 152/ 416 )(Go语言版)
本文深入解析三道经典的动态规划问题:**最长递增子序列(LIS)**、**乘积最大子数组** 和 **分割等和子集**。 - **300. LIS** 通过 `dp[i]` 表示以第 `i` 个元素结尾的最长递增子序列长度,支持 O(n²) 动态规划与 O(n log n) 的二分优化。 - **152. 乘积最大子数组** 利用正负数特性,同时维护最大值与最小值的状态转移方程。 - **416. 分割等和子集** 转化为 0-1 背包问题,通过布尔型 DP 实现子集和判断。 总结对比了三题的状态定义与解法技巧,并延伸至相关变种问题,助你掌握动态规划的核心思想与灵活应用!
139 1
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
12月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
241 3
|
数据采集
基于R语言的GD库实现地理探测器并自动将连续变量转为类别变量
【9月更文挑战第9天】在R语言中,可通过`gd`包实现地理探测器。首先,安装并加载`gd`包;其次,准备包含地理与因变量的数据框;然后,使用`cut`函数将连续变量转换为分类变量;最后,通过`gd`函数运行地理探测器,并打印结果以获取q值等统计信息。实际应用时需根据数据特点调整参数。
494 8
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。