R语言乘法GARCH模型对高频交易数据进行波动性预测

简介: R语言乘法GARCH模型对高频交易数据进行波动性预测

在过去十年中,人们对高频交易和模型的兴趣成倍增长。虽然我对高频噪音中出现信号的有效性有一些怀疑,但我还是决定使用GARCH模型研究一下收益率的统计模型。与每日和较低频率的收益不同,日内高频数据有某些特殊的特点,使得使用标准的建模方法是无效的。在这篇文章中,我将使用花旗集团2008年1月2日至2008年2月29日期间的1分钟收益率。这个数据集删除了异常值。考虑的日内时间范围是09:30至16:00,即证券交易所的正式交易时间。与大多数此类关于日内数据建模的研究一样,当天的第一个收益被删除。每日数据从雅虎财经下载。

getSymbols('C')
C = adjustOHLC(C, use.Adjusted = TRUE)
R_d = ROC(Cl(C), na.pad = FALSE)

考虑一下花旗集团在上述样本期间的1分钟绝对收益的相关图。

acf(abs((R_i))

有规律的模式非常明显,大约每 390 个周期(1 天)重复一次,并显示出开盘和收盘时的波动性增加。GARCH,以及更普遍的ARMA模型只能处理指数衰减,而不是这里看到的那种模式。为了使绝对收益去季节化,文献中提出了几种方法,如Andersen和Bollerslev(1997)的灵活傅里叶方法,以及Bollerslev和Ghysels(1996)的定期GARCH模型。但是,我发现这些模型都不太容易操作。Engle和Sokalska(2012)(以下简称ES2012)引入了乘法分量GARCH模型作为一种简单的替代方法。本文讨论了它的实现、挑战和使用这个模型的具体细节。

模型

考虑连续复利收益率 r_{t,i}  ,其中  t  表示一天, i 表示计算收益率的定期间隔时间。在这个模型下,条件方差是每日和随机(日内)成分的乘积,因此,收益可以表示为:。

其中 q_{t,i}是随机的日内波动率,sigma\_t是每日外生确定的预测波动率, s\_i是每个定期间隔 i 的日波动率。预测波动率 sigma_t是由外部的多因素风险模型得出的,但是同样可以从每日 GARCH 模型中产生这种预测。该过程的季节性部分定义为:。

用残差除以波动率和日波动率,就得到了归一化残差。

然后可以用它来生成波动率的随机分量 q_{t,i} 与 GARCH 的动态关系。接下来的章节提供了一个使用花旗集团数据集的模型演示。

估算

模型要求用户传递一个xts对象,即所考虑时期的数据的预测日方差。

# 定义一个日模型
spec(list(armaOrder = c(1, 1)))
# 使用ugarchroll方法创建一个滚动的预测
roll(spec)
#提取sigma 预测
sigma = as.xts(df\[, 'Sigma'\])
#现在估计日内模型
spec( list(model = 'mcsGARCH'))
# DailyVar是预测日方差的必要xts对象
fit(data = R, spec, Var = sigma^2)

下面的图表显示了将波动率分解为其不同的组成部分。使用标准的 GARCH 模型不可能捕捉到总波动率的规律模式。

plot(fit@DiurnalVar^0.5))

预测

为预测编写代码的最大挑战是处理时间的对齐和匹配问题,特别是未来的时间/日期,因为该模型依赖于日内分量,而日内分量是特定的。与估计方法一样,预测程序也要求提供所考虑的时期的预测波动率。

我们用ugarchforecast估算。

forecast(fit2, n.ahead = 10, n.roll = 299, f_sigma^2)

仿真

与标准的GARCH仿真不同,区间时间在日内GARCH中很重要,因为我们生成的路径是遵循非常具体的定期抽样的时间点。此外,需要再次提供所考虑的模拟期的模拟或预测日方差。这是一个xts对象,也可以选择有m.sim列,这样每个独立的模拟都是基于日方差独立模拟的调整残差。下面的示例代码显示了对未来1分钟间隔的10,000个点的模拟,并说明了季节性成分的影响。

# dtime包含了数据集中唯一的区间点的集合
# (可从mcsGARCH模型的所有rugarch对象中获得)
sim = sim(fit, n.sim = 10000,Var = var_sim)
#
plot(as.numeric(sim@simulation$DiurnalVar^0.5), type = 'l')

滚动的回测和风险值

ugarchroll函数对于在回测应用中测试模型的充分性非常有用,下面的代码说明了模型在数据期间的情况。

n = length(index(R_d\['2008-01-01/2008-03-01'\]))
roll(spec, data = R, refit.window = 'moving')

效果比较理想。

如下图所示,VaR能很好地处理日内数据。观察到的VaR峰值是开盘前后的季节性因素造成的。

D = as.POSIXct(rownames(roll@forecast$VaR))
VaRplot(0.01, actual = xts(roll@forecast$VaR\[, 3\], D), VaR = xts(roll@forecast$VaR\[,1\], D))

展望

在乘法模型中增加额外的GARCH模型是非常 "容易 "的,如eGARCH、GJR等。另一个可能的扩展方向是分别处理一周中每一天的昼夜效应。

最后,这个模型不是 "上手即用 "的,需要在准备日内收益率数据时进行一些思考。

参考文献

Bollerslev, T., & Ghysels, E. (1996). Periodic autoregressive conditional heteroscedasticity. Journal of Business & Economic Statistics, 14(2), 139–151.

Andersen, T. G., & Bollerslev, T. (1997). Intraday periodicity and volatility persistence in financial markets. Journal of Empirical Finance, 4(2), 115–158.


相关文章
|
1月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
24天前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
1月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
1月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
2月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
2月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
5月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
5月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
2月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
50 3

热门文章

最新文章

下一篇
无影云桌面