EEMD-LSTM模型择时策略 --- 1.EEMD分解与LSTM模型搭建

EEMD-LSTM模型用于股票价格预测

量化思路介绍:
EEMD分解 + LSTM预测

资料来源

  1. 将股票数据的开盘价收盘价分别进行EEMD分解, 每组数据分解为6个IMFs, 6个IMFs中由2个残差项, 2个周期项2个趋势项组成, 共12个IMFs
  2. 模型输入数据为滞后7天的开盘价收盘价分解后的两个IMFs, 输出数据为下一天的收盘价, 总共构建6个LSTM模型
  3. LSTM模型使用较为简单的双层lstm, 每层50个神经元, Adam优化器, 共100个神经元
  4. 得到6个IMFs的预测结果, 求和便是预测的收盘价结果

数据方面: 分为训练集, 验证集与测试集
测试集为题目指定的2022年至2024年4月30日数据, 即后562条数据
验证集为后762至562条数据, 主要目的是控制模型早停, 避免过拟合
测试集为前2717条数据, 即去掉验证集与测试集的数据

主要原理:

  1. EEMD分解可以帮助提取时间序列数据中不同尺度的特征信息,将原始数据分解成多个固有模态函数(IMFs),这些IMFs反映了不同尺度上的波动和趋势, 使得模型更好地捕捉到时间序列数据的内在规律和周期性
  2. LSTM神经网络能够解决传统RNN存在的梯度消失或梯度爆炸等问题,同时能够更好地捕捉长期依赖关系, 能够提高模型的预测性能和泛化能力,从而更准确地预测股票价格序列的走势
  3. 考虑了使用区间型股票价格数据以及区间型数据的相互作用对预测精度的提高, 利用开盘价与收盘价反映波动,有效捕捉了单日股价的真实波动。

一. 下载导入必要库

安装EEMD分解的python库--EMD-signal
! pip install -i https://mirrors.aliyun.com/pypi/simple/ EMD-signal

在这里插入图片描述

#导入各种库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
from PyEMD import EEMD
import datetime

二. 数据读取与预处理

1.数据读取

df = pd.read_csv("/home/mw/input/stock9243/data_00300.csv")

2.数据类型转换

df['date'] = pd.to_datetime(df['date'],format='%Y-%m-%d %H:%M:%S%z')
df['date'] = df['date'].dt.date
df = df.set_index('date')
df.info()

在这里插入图片描述

df.head()

在这里插入图片描述

三. EEMD分解

# 初始化 EEMD 对象
eemd = EEMD()

# 执行 EEMD 分解
eIMFs_open = eemd.eemd(df['open'].values, max_imf=5)

# 绘制原始信号和分解后的各个 IMF
plt.figure(figsize=(12, 9))
plt.subplot(len(eIMFs_open) + 1, 1, 1)
plt.plot(range(0,len(df['open'])), df['open'].values, 'r')

for i, eIMF in enumerate(eIMFs_open):
    plt.subplot(len(eIMFs_open) + 1, 1, i + 2)
    plt.plot(range(0,len(df['open'])), eIMF, 'g')

plt.tight_layout()
plt.show()

在这里插入图片描述

# 初始化 EEMD 对象
eemd = EEMD()

# 执行 EEMD 分解
eIMFs_close = eemd.eemd(df['close'].values, max_imf=5)

# 绘制原始信号和分解后的各个 IMF
plt.figure(figsize=(12, 9))
plt.subplot(len(eIMFs_open) + 1, 1, 1)
plt.plot(range(0,len(df['close'])), df['close'].values, 'r')

for i, eIMF in enumerate
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值