基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)

简介: 基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)

👨‍🎓个人主页

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

大多数经济时间序列并不一定如我们所期望的具有恒定的均值,这些序列往往在阶段性的相对平稳之后又表现出剧烈的波动。我们将这一类序列称为条件异方差,长期来看,它们的无条件方差是恒定的,但存在着方差相对较大的时期。最典型的如股票市场,既有看上去风平浪静的时候,也有大起大落的时候。

上世纪80年代以前,由于缺乏更好的度量,时间序列的方差一直被假设为恒定。1982年,Engle 发表论文指出,时间序列存在着一种特殊的异方差即“自回归条件异方差”(Autoregressive Conditional Heteroskedasticity,简记ARCH)。1986年,Bollerslev对ARCH模型进行了推广,建立了“广义自回归条件异方差”(Generalised ARCH),也就是我们熟知的GARCH模型。因此,在讨论GARCH模型之前,我们首先对ARCH模型进行研究。

image.gif 编辑

作为计量经济学中最常用的模型之一,ARCH在实际使用的过程中也存在着一定的缺陷。例如当滞后阶数p较大时,待估计的参数数量较大,这不仅造成样本容量的损失,可能还会带来诸如多重共线性等其他问题。而Bollerslev(1996)GARCH模型的提出,减少了待估计的参数,解决的ARCH模型存在的缺陷,使得我们可以对未来条件方差进行更准确的预测。

image.gif 编辑

基于GARCH-LSTM模型的混合方法在时间序列预测领域是一个相对较新的研究方向,它结合了两种强大模型的优势:长短时记忆网络(Long Short-Term Memory, LSTM)和广义自回归条件异方差性模型(Generalized Autoregressive Conditional Heteroscedasticity, GARCH)。这种混合方法旨在提高对具有复杂动态特性和波动性的金融时间序列数据预测的准确性。下面是对这种方法的基本介绍、原理以及其应用研究的简要概述。

原理概述

  1. LSTM网络: LSTM是递归神经网络(RNN)的一种特殊形式,特别擅长处理长序列数据中的长期依赖问题。通过其独特的门控机制(输入门、遗忘门和输出门),LSTM能够选择性地遗忘无关信息,保留重要信息,并控制信息的输出,从而在时间序列预测中表现优异,特别是在如股价预测、能源需求预测等任务中。
  2. GARCH模型: GARCH模型主要用于描述和预测时间序列数据的波动性。它基于这样的观察:在许多金融时间序列中,波动性(即收益的标准差)不是常数,而是随时间变化并受过去波动性的影响。GARCH模型能捕捉到这种条件异方差性,通过考虑当前观测值的平方(或绝对值)以及过去的波动性来预测未来的波动性。

混合方法(GARCH-LSTM)

在GARCH-LSTM混合模型中,通常首先使用LSTM模型处理时间序列的数据部分,预测序列的均值或条件均值。LSTM学习到的时间序列的动态模式和趋势为预测提供了基础。随后,GARCH模型则被用来预测序列的波动性或条件方差,这一步骤尤其适用于那些显示出明显波动聚类特征的时间序列数据。

  • 步骤
  1. 数据预处理:标准化或归一化时间序列数据,以便于LSTM和GARCH模型的训练。
  2. LSTM阶段:用LSTM模型学习时间序列的结构特征,预测下一个时间点的条件均值。
  3. 残差提取:从实际值减去LSTM预测的均值得到残差序列。
  4. GARCH阶段:将残差序列作为输入,用GARCH模型拟合并预测该序列的波动性。
  5. 结果合并:将LSTM预测的均值与调整后的GARCH预测波动性结合起来,生成最终的预测值,可能包括均值加上一定倍数的标准差以形成预测区间。

应用研究

这种方法已广泛应用于金融市场的预测,如股票价格、汇率、商品价格等的波动性预测。此外,它也被探索用于能源市场、天气预测、交通流量分析等领域中具有复杂波动性的数据预测。

结论

基于GARCH-LSTM模型的混合方法提供了一种有效手段,以同时考虑时间序列的趋势、季节性以及波动性,提高了预测精度和鲁棒性。然而,这种方法也面临一些挑战,如模型参数的优化、过拟合的风险以及计算资源的需求等。未来的研究可以进一步探索更高效的集成策略、更先进的深度学习架构以及在更多领域的应用。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑 image.gif 编辑

image.gif 编辑

Epoch 1/100

3508/3508 [==============================] - 227s 65ms/step - loss: 0.0113

Epoch 2/100

3508/3508 [==============================] - 210s 60ms/step - loss: 0.0046

Epoch 3/100

3508/3508 [==============================] - 230s 65ms/step - loss: 0.0031

Epoch 4/100

3508/3508 [==============================] - 209s 60ms/step - loss: 0.0025

Epoch 5/100

3508/3508 [==============================] - 210s 60ms/step - loss: 0.0024

Epoch 6/100

3508/3508 [==============================] - 209s 60ms/step - loss: 0.0020

Epoch 7/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0020

Epoch 8/100

3508/3508 [==============================] - 208s 59ms/step - loss: 0.0018

Epoch 9/100

3508/3508 [==============================] - 208s 59ms/step - loss: 0.0016

Epoch 10/100

3508/3508 [==============================] - 208s 59ms/step - loss: 0.0015

Epoch 11/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0014

Epoch 12/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0013

Epoch 13/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0013

Epoch 14/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0012

Epoch 15/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0011

Epoch 16/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0010

Epoch 17/100

3508/3508 [==============================] - 207s 59ms/step - loss: 0.0010

Epoch 18/100

3508/3508 [==============================] - 208s 59ms/step - loss: 0.0010

Epoch 19/100

3508/3508 [==============================] - 208s 59ms/step - loss: 9.8157e-04

Epoch 20/100

3508/3508 [==============================] - 207s 59ms/step - loss: 9.5257e-04

Epoch 21/100

3508/3508 [==============================] - 207s 59ms/step - loss: 8.9070e-04

Epoch 22/100

3508/3508 [==============================] - 208s 59ms/step - loss: 8.8150e-04

Epoch 23/100

3508/3508 [==============================] - 207s 59ms/step - loss: 8.0846e-04

Epoch 24/100

3508/3508 [==============================] - 207s 59ms/step - loss: 8.1928e-04

Epoch 25/100

3508/3508 [==============================] - 207s 59ms/step - loss: 7.7277e-04

Epoch 26/100

3508/3508 [==============================] - 208s 59ms/step - loss: 7.6897e-04

Epoch 27/100

3508/3508 [==============================] - 207s 59ms/step - loss: 7.0307e-04

Epoch 28/100

3508/3508 [==============================] - 207s 59ms/step - loss: 7.5303e-04

Epoch 29/100

3508/3508 [==============================] - 207s 59ms/step - loss: 7.1193e-04

Epoch 30/100

3508/3508 [==============================] - 208s 59ms/step - loss: 7.0833e-04

Epoch 31/100

3508/3508 [==============================] - 207s 59ms/step - loss: 6.5084e-04

Epoch 32/100

3508/3508 [==============================] - 207s 59ms/step - loss: 6.3750e-04

Epoch 33/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.8134e-04

Epoch 34/100

3508/3508 [==============================] - 207s 59ms/step - loss: 6.0320e-04

Epoch 35/100

3508/3508 [==============================] - 208s 59ms/step - loss: 6.0289e-04

Epoch 36/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.9282e-04

Epoch 37/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.6629e-04

Epoch 38/100

3508/3508 [==============================] - 208s 59ms/step - loss: 5.6232e-04

Epoch 39/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.5231e-04

Epoch 40/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.3659e-04

Epoch 41/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.4437e-04

Epoch 42/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.1799e-04

Epoch 43/100

3508/3508 [==============================] - 206s 59ms/step - loss: 4.8758e-04

Epoch 44/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.2246e-04

Epoch 45/100

3508/3508 [==============================] - 206s 59ms/step - loss: 4.7491e-04

Epoch 46/100

3508/3508 [==============================] - 212s 60ms/step - loss: 5.0114e-04

Epoch 47/100

3508/3508 [==============================] - 214s 61ms/step - loss: 4.7639e-04

Epoch 48/100

3508/3508 [==============================] - 207s 59ms/step - loss: 5.0424e-04

Epoch 49/100

3508/3508 [==============================] - 206s 59ms/step - loss: 4.7534e-04

Epoch 50/100

3508/3508 [==============================] - 206s 59ms/step - loss: 4.6536e-04

Epoch 51/100

3508/3508 [==============================] - 205s 59ms/step - loss: 4.8457e-04

Epoch 52/100

3508/3508 [==============================] - 206s 59ms/step - loss: 4.9359e-04

Epoch 53/100

3508/3508 [==============================] - 205s 59ms/step - loss: 4.3020e-04

Epoch 54/100

3508/3508 [==============================] - 205s 58ms/step - loss: 4.3261e-04

Epoch 55/100

3508/3508 [==============================] - 205s 58ms/step - loss: 4.5423e-04

Epoch 56/100

3508/3508 [==============================] - 205s 59ms/step - loss: 4.6927e-04

Epoch 57/100

3508/3508 [==============================] - 206s 59ms/step - loss: 4.4117e-04

Epoch 58/100

3508/3508 [==============================] - 210s 60ms/step - loss: 4.2552e-04

Epoch 59/100

3508/3508 [==============================] - 213s 61ms/step - loss: 4.5346e-04

Epoch 60/100

3508/3508 [==============================] - 212s 60ms/step - loss: 3.9747e-04

Epoch 61/100

3508/3508 [==============================] - 213s 61ms/step - loss: 4.0462e-04

Epoch 62/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.9194e-04

Epoch 63/100

3508/3508 [==============================] - 212s 61ms/step - loss: 4.2718e-04

Epoch 64/100

3508/3508 [==============================] - 212s 60ms/step - loss: 3.9893e-04

Epoch 65/100

3508/3508 [==============================] - 213s 61ms/step - loss: 4.0014e-04

Epoch 66/100

3508/3508 [==============================] - 212s 60ms/step - loss: 3.8905e-04

Epoch 67/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.7853e-04

Epoch 68/100

3508/3508 [==============================] - 212s 60ms/step - loss: 3.5113e-04

Epoch 69/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.7891e-04

Epoch 70/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.9476e-04

Epoch 71/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.5827e-04

Epoch 72/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.8220e-04

Epoch 73/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.3573e-04

Epoch 74/100

3508/3508 [==============================] - 214s 61ms/step - loss: 3.7167e-04

Epoch 75/100

3508/3508 [==============================] - 214s 61ms/step - loss: 3.8604e-04

Epoch 76/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.6441e-04

Epoch 77/100

3508/3508 [==============================] - 218s 62ms/step - loss: 3.6098e-04

Epoch 78/100

3508/3508 [==============================] - 220s 63ms/step - loss: 3.5123e-04

Epoch 79/100

3508/3508 [==============================] - 214s 61ms/step - loss: 3.3619e-04

Epoch 80/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.4314e-04

Epoch 81/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.6033e-04

Epoch 82/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.1574e-04

Epoch 83/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.4564e-04

Epoch 84/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.5689e-04

Epoch 85/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.3262e-04

Epoch 86/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.4473e-04

Epoch 87/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.2569e-04

Epoch 88/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.2259e-04

Epoch 89/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.3683e-04

Epoch 90/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.1951e-04

Epoch 91/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.3434e-04

Epoch 92/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.1119e-04

Epoch 93/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.4121e-04

Epoch 94/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.1827e-04

Epoch 95/100

3508/3508 [==============================] - 213s 61ms/step - loss: 3.1273e-04

Epoch 96/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.1334e-04

Epoch 97/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.3695e-04

Epoch 98/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.2542e-04

Epoch 99/100

3508/3508 [==============================] - 212s 61ms/step - loss: 3.3429e-04

Epoch 100/100

3508/3508 [==============================] - 212s 60ms/step - loss: 3.3042e-04

 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]秦寰. 基于GARCH-LSTM的沪深300指数择时策略研究[D].上海财经大学,2021.DOI:10.27296/d.cnki.gshcu.2021.000445.

[2]方志军. 基于GARCH族和LSTM混合模型的股价波动预测资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
214 1
|
2月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
134 1
|
9天前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
282 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
2月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
251 2
|
2月前
|
机器学习/深度学习 数据采集 算法
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测研究(Python代码实现)
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测研究(Python代码实现)
|
2月前
|
机器学习/深度学习 数据采集 算法
基于VMD-LSTM的电力负荷预测研究(Matlab代码实现)
基于VMD-LSTM的电力负荷预测研究(Matlab代码实现)
196 0
|
SQL JSON C语言
Python中字符串的三种定义方法
Python中字符串的三种定义方法
508 2
|
Python
python之字符串定义、切片、连接、重复、遍历、字符串方法
python之字符串定义、切片、连接、重复、遍历、字符串方法
133 0
python之字符串定义、切片、连接、重复、遍历、字符串方法
|
Python
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
面向对象和面向过程,是两种编程思想. 编程思想是指对待同一个问题,解决问题的套路方式.面向过程: 注重的过程,实现的细节.亲力亲为.面向对象: 关注的是结果, 偷懒.类和对象,是面向对象中非常重要的两个概念object 是所有的类基类,即最初始的类class 类名(object): 类中的代码PEP8代码规范:类定义的前后,需要两个空行 创建的对象地址值都不一样如dog和dog1的地址就不一样,dog的地址为2378043254528dog1的地址为2378044849840 8.类内部操作属性 sel
424 1
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()

热门文章

最新文章

推荐镜像

更多