R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化

简介: R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化

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

介绍

Box 等人的开创性工作(1994) 在自回归移动平均模型领域的相关工作为波动率建模领域的相关工作铺平了道路,分别由 Engle (1982) 和 Bollerslev (1986) 引入了 ARCH 和 GARCH 模型。这些模型的扩展包括更复杂的动力学,例如阈值模型来捕捉新闻影响的不对称性,以及除正态之外的分布来解释实践中观察到的偏度和过度峰度。在进一步的扩展中,

本文旨在为单变量 GARCH 过程建模提供一套全面的方法,包括拟合、过滤、预测、模拟以及诊断工具,包括绘图和各种测试。用于评估模型不确定性的其他方法(例如滚动估计、引导预测和模拟参数密度)为这些过程的建模提供了丰富的环境。

示例

拟合对象属于 uGARCHfit 类,可以传递给各种其他方法,例如 show (summary)、plot、ugarchsim、ugarchforecast 等。

> fit = ugarchfit(spec = spec)

image.png

image.png

拟合诊断

稳健标准误差基于 White (1982) 的方法,该方法通过计算参数 (θ) 的协方差 (V) 来生成渐近有效的置信区间:

image.png

其中,

image.png

这是最佳分数的Hessian和协方差。稳健标准误差是 V 的对角线的平方根。拟合或过滤对象上的 inforcriteria 方法返回 Akaike (AIC)、贝叶斯 (BIC)、Hannan-Quinn (HQIC) 和 Shibata (SIC) 信息标准,以通过以不同速率惩罚过拟合来启用模型选择。形式上,它们可以定义为:

image.png

Q-statistics 和 ARCH-LM 检验已被 Fisher 和 Gallagher (2012) 的 Weighted Ljung-Box 和 ARCH-LM 统计量取代,这更好地说明了来自估计模型。ARCH-LM 检验现在是一个加权组合检验,用于检验充分拟合的 ARCH 过程的原假设,而 Ljung-Box 是另一个组合检验,其 ARMA 拟合的充分性为零。signbias 计算 Engle 和 Ng (1993) 的 Sign Bias Test,也显示在摘要中。这测试了标准化残差中杠杆效应的存在(以捕捉 GARCH 模型可能的错误指定),

image.png

其中 I 是指标函数, ^t 是 GARCH 过程的估计残差。原假设是 H0:ci = 0(对于 i = 1、2、3),并且联合 H0:c1 = c2 = c3 = 0。从先前拟合的总结可以推断,存在显着的负和对冲击的积极反应。使用诸如 apARCH 之类的模型可能会减轻这些影响

gof 计算卡方拟合优度检验,将标准化残差的经验分布与所选密度的理论分布进行比较。该实现基于 Palm (1996) 的测试,该测试通过重新分类标准化残差而不是根据它们的值(如在标准测试中),而是根据它们的大小,计算在存在非独立同分布观察的情况下的测试,计算观察到小于标准化残差的值的概率,该残差应该是相同的标准均匀分布。该函数必须采用 2 个参数,即拟合对象以及用于对值进行分类的箱数。在拟合摘要中,使用了 (20, 30, 40, 50) 个 bin 的选择,

nymblom 检验计算了 Nyblom (1989) 的参数稳定性检验,以及联合检验。显示用于比较结果的临界值,但在超过 20 个参数的情况下,这不适用于联合测试。


最后,一些信息图可以交互绘制(which = 'ask'),单独绘制(which = 1:12),或者一次全部绘制(which = 'all'),如图 2 所示。

image.png


过滤

有时希望使用一组预定义的参数简单地过滤一组数据。例如,当新数据到达并且人们可能不希望重新拟合时,可能就是这种情况。

> filt = ugarchfilter(spec = spe)
> show(filt)

image.png

预测和 GARCH bootstrap程序

两种类型的预测。一种滚动方法,其中基于拟合例程中设置的 out.sample 选项创建连续 1-ahead 预测,以及用于 n>1 超前预测的无条件方法。(也可以将两者结合起来创建一个相当复杂的对象)。在后一种情况下,也可以使用 Pascual 等人描述的 bootstrap程序。bootstrap 方法基于从拟合模型的经验分布中重新采样标准化残差,以生成序列和 sigma 的未来实现。实现了两种方法:一种通过模拟和重新拟合建立参数的模拟分布来考虑参数不确定性,另一种只考虑分布不确定性,从而避免昂贵且冗长的参数分布估计。在后一种情况下,1-ahead sigma 预测的预测区间将不可用,因为在这种情况下,只有参数不确定性与 GARCH 类型模型相关。

> sec = ugrspc(are.e=list(model="csGARCH"),ititin="std")
> fi = grit(sc,sp5et)
bot(fit, mehod = c("Pl", "Full")\[1\],

image.png

完整 GARCH bootstrap程序总结如下:

1. 从估计对象中提取标准化残差。如果是具有固定参数的规范,首先使用提供的数据集进行过滤,然后从过滤后的对象中提取标准化残差。

2. 使用 spd 或基于内核的方法从原始标准化残差中采样大小为 N 的 n.bootfit 集(原始数据集减去任何样本周期外)。

模拟

模拟可以直接在拟合对象上进行:

image.png

其中 n.sim 表示模拟的长度,而 m.sim 表示独立模拟的数量。出于速度的原因,当 n.sim 相对于 m.sim 较大时,仿真代码在 C 中执行,而对于较大的 m.sim,使用了特殊用途的 C++ 代码(使用 Rcpp 和 RcppArmadillo),发现这会导致速度显着提高。

滚动估计

对模型/数据集组合执行滚动估计和预测,可选择返回指定水平的 VaR。更重要的是,它返回计算预测密度所需的任何度量所必需的分布预测参数。以下示例说明了该方法的使用,其中还使用了并行功能并在 10 个内核上运行。

> cl = mkSluter(10)
> spec = uarpc(vaaneoel = list(model = "eGARCH"), ditrtonodel = "jsu")
> roll = ghrospe,se .at = 1000, ef.every= 10,
refit.windw =moing, calult.V= TRUE,
V.ha = c(0.01, 0.05), cser = c, eep.oef = TUE)
> report

image.png

image.png

蒙特卡罗实验:模拟参数分布和RMSE

通过多次模拟和拟合模型并针对不同的“窗口”大小来执行蒙特卡罗实验。这允许通过查看均方根误差的下降率以及我们是否具有 √ N 一致性,在数据窗口增加时对参数估计的一致性有所了解。

> spec = urhprnmel = list(model = "gjrGARCH"),
+ distuto.el  "ged")
> dist = ugacdsribton(fiOspec spec, n.sm = 2000),
+ user = cl)
> stopCluster(cl)
> show(dist)

image.png

image.png

常见问题解答和指南

问:我应该使用多少数据对 GARCH 过程进行建模?

但是,使用 100 个数据点来尝试拟合模型不太可能是一种合理的方法,因为您不太可能获得非常有效的参数估计。提供了一种方法(ugarchdistribution),用于从预先指定的模型、不同大小的数据进行模拟,将模型拟合到数据,并推断参数的分布以及作为数据长度的 RMSE 变化率增加。这是检查参数分布的一种计算成本非常高的方法(但在非贝叶斯世界中是唯一的方法),因此应谨慎使用并在有足够计算能力的情况下使用。

相关文章
|
6月前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
2月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
6月前
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
25天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
42 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。