Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列4

简介: Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列

Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列3;https://developer.aliyun.com/article/1485073

自回归条件异方差模型 - ARCH(p)

ARCH(p) 模型可以简单地认为是应用于时间序列方差的 AR(p) 模型。另一种思考方式是,我们的时间序列 _在时间 t_的方差取决于对先前时期方差的过去观察。

ARCH(1) 模型公式

假设系列的均值为零,我们可以将模型表示为:

零均值的 ARCH(1) 模型

# 模拟ARCH(1)序列
# Var(yt) = a\_0 + a\_1\*y{t-1}\*\*2
# 如果a_1在0和1之间,那么yt就是白噪声
Y = np.epy_lik
for t in rng(ln()):
    Y\[t\] = w\[t * sqrt((a0 + a1\*y\[t-1\*\*2)
# 模拟的ARCH(1)序列,看起来像白噪声
plot(Y, lags=30)

模拟ARCH(1)过程

模拟ARCH(1)**2 过程

请注意 ACF 和 PACF 似乎在滞后 1 处显示显着性,表明方差的 AR(1) 模型可能是合适的。

广义自回归条件异方差模型 - GARCH(p,q)

简单地说,GARCH(p, q) 是一个应用于时间序列方差的 ARMA 模型,即它有一个自回归项和一个移动平均项。AR(p) 对残差的方差(平方误差)或简单地对我们的时间序列平方进行建模。MA(q) 部分对过程的方差进行建模。基本的 GARCH(1, 1) 公式是:

GARCH(1, 1) 公式

Omega (w) 是白噪声,alpha 和 beta 是模型的参数。此外 alpha\_1 + beta\_1 必须小于 1,否则模型不稳定。我们可以在下面模拟一个 GARCH(1, 1) 过程。

# 模拟一个GARCH(1, 1)过程
n = 10000
w = rnom.ral(sze=n)
eps = np.er_ike(w)
gsq =pzslie(w)
for i in rne1, n):
    sis\[i\] = a+ a1*(eps\[i-1\]\*\*2) + b1\*siq\[i-1\]
    es\[i\] = w\[i\] * srt(sisq\[i\])

模拟 GARCH(1, 1) 过程

再次注意到,总体上这个过程与白噪声非常相似,然而当我们查看平方的eps序列时,请看一下。

模拟 GARCH(1, 1) 过程平方

显然存在着自相关,ACF和PACF的滞后期的重要性表明我们的模型需要AR和MA。让我们看看我们是否能用GARCH(1, 1)模型恢复我们的过程参数。这里我们使用ARCH包中的arch_model函数。

# 将GARCH(1, 1)模型与我们模拟的EPS序列相匹配
# 我们使用arch函数
am = arch(ps)
fit(dae_freq=5)
summary())

GARCH 模型拟合摘要

现在让我们运行一个使用 SPY 收益的示例。过程如下:

  • 迭代 ARIMA(p, d, q) 模型的组合来拟合我们的时间序列。
  • 根据 AIC 最低的 ARIMA 模型选择 GARCH 模型阶数。
  • 将 GARCH(p, q) 模型拟合到我们的时间序列。
  • 检查模型残差和残差平方的自相关

另请注意,我选择了一个特定的时间段来更好地突出关键点。然而,根据研究的时间段,结果会有所不同。

for i in pq_g:
        for d in d_ng:
            for j in p_ng:
                try:
                    tpml = ARIMA(T,order(i,d,j).fi
                    
                    if tmp\_aic < best\_aic:
                        best_ic =mpac
                        best_oder = (i, d, j)
                        best\_ml =tm\_ml
# 注意我已经选择了一个特定的时间段来运行这个分析
bstmoel(TS)

拟合SPY收益的 ARIMA(3,0,2) 模型的残差

看起来像白噪声。

拟合SPY收益的 ARIMA(3,0,2) 模型的平方残差

平方残差显示自相关。让我们拟合一个 GARCH 模型。

# 现在我们可以使用最适合的arima模型参数来拟合arch模型
p_ = bst_dr
o= st_orde
q = bst_er
# 使用学生T分布通常能提供更好的拟合
arcd(TS, p=p_, o=o_, q=q_, 'StdensT')
fit(uat_eq=5, sp='ff')
summary

GARCH(3, 2) 模型拟合SPY收益

在处理非常小的数字时,会出现收敛警告。在必要时,将数字乘以10倍的系数以扩大幅度,可以起到帮助作用,但是对于这个演示来说,没有必要这样做。下面是模型的残差。

拟合SPY收益的 GARCH(3, 2) 模型残差

上面看起来像白噪声。现在让我们查看平方残差的 ACF 和 PACF。

我们已经实现了良好的模型拟合,因为平方残差没有明显的自相关。


相关文章
|
2月前
|
运维 监控 算法
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
613 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
|
4月前
|
缓存 Rust 算法
从混沌到秩序:Python的依赖管理工具分析
Python 的依赖管理工具一直没有标准化,主要原因包括历史发展的随意性、社区的分散性、多样化的使用场景、向后兼容性的挑战、缺乏统一治理以及生态系统的快速变化。依赖管理工具用于处理项目中的依赖关系,确保不同环境下的依赖项一致性,避免软件故障和兼容性问题。常用的 Python 依赖管理工具如 pip、venv、pip-tools、Pipenv、Poetry 等各有优缺点,选择时需根据项目需求权衡。新工具如 uv 和 Pixi 在性能和功能上有所改进,值得考虑。
142 35
|
1月前
|
数据采集 数据可视化 数据挖掘
基于Python的App流量大数据分析与可视化方案
基于Python的App流量大数据分析与可视化方案
|
4月前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
611 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
4月前
|
并行计算 安全 Java
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
313 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
|
3月前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
4月前
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
2月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
2月前
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
97 28
|
2月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。