基于 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资源获取【请看主页然后私信】

相关文章
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
232 100
|
1月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
337 95
|
2月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
229 104
|
2月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
423 99
|
1月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
149 88
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
371 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
1月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
1月前
|
机器学习/深度学习 自然语言处理 PyTorch
21_RNN与LSTM:序列建模的经典方法
在自然语言处理领域,处理序列数据是一个核心挑战。传统的机器学习方法难以捕捉序列中的时序依赖关系,而循环神经网络(Recurrent Neural Network,RNN)及其变种长短期记忆网络(Long Short-Term Memory,LSTM)通过其独特的循环结构,为序列建模提供了强大的解决方案。本教程将深入探讨RNN和LSTM的原理、实现方法和最新应用,帮助读者全面掌握这一NLP核心技术。
|
机器学习/深度学习 人工智能 分布式计算
Python搭建新冠肺炎预测模型全解读
新冠病毒疫后复工成为当务之急,然而病毒尚未消散,风险权衡面临不确定因素。传统机器学习模型虽然可以精确拟合历史数据,但由于脱离疾病传播机理,外推预测的可靠性低。与以往的疾病传播模型不同,南栖仙策的模型对病情的发展进行建模,能够更好的模拟潜伏期、无症状感染者。
Python搭建新冠肺炎预测模型全解读
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
269 102

推荐镜像

更多