全文链接: tecdat.cn/?p=43482
分析师:Junju Zhang
视频
Python对多行业板块股票数据LSTM多任务学习预测:SMA、RSI
视频出处:拓端抖音号(ID:拓端tecdat)
在金融量化领域,多板块股票行情的精准预测一直是行业难点。传统模型往往难以兼顾涨跌趋势判断与价格幅度预测,且在多板块数据处理上存在局限。本报告基于实际业务场景,探索如何帮助客户通过LSTM多任务学习突破这一困境。本报告代码数据已分享在交流群,阅读原文进群咨询、定制数据报告和600+行业人士共同交流和成长(点击文末“阅读原文”获取完整智能体、代码、数据、文档)。
本次研究聚焦近半年光伏、科技等8个板块的股票数据,从数据爬取到模型部署形成完整实操流程,通过LSTM多任务架构同时实现涨跌分类与价格回归,并结合技术指标优化模型表现,为量化分析提供可落地的技术参考。
多板块股票的LSTM多任务预测实操
项目背景
金融市场对多维度预测工具的需求日益迫切。单一板块的股票预测已无法满足资产配置需求,而多板块数据存在波动特性差异大、关联关系复杂等问题,传统模型难以应对。
LSTM模型在时序数据处理上的优势显著,尤其适合捕捉股票价格的长期依赖关系。本项目针对8大行业板块,构建多任务LSTM模型,同步预测涨跌趋势与未来价格,旨在为投资决策提供技术支撑,提升量化分析的效率与准确性。
数据获取及处理
数据爬取
实操工具:采用Python的Easyquotation库,在VSCode环境下实现多板块数据爬取。
该库专为国内股市设计,支持新浪、腾讯等多渠道数据源,仅需一行代码即可初始化接口:
ini
体验AI代码助手
代码解读
复制代码
# 初始化新浪行情接口
stock_quotation = easyquotation.use('sina')
其核心优势在于响应速度快(全市场行情获取约200ms),可批量抓取当前价、开盘价、成交量等12项关键指标,并支持历史K线数据获取。
爬取流程:
调用
stock_quotation.real()
方法获取指定板块股票代码的实时数据;用pandas将数据结构化,计算涨跌幅、成交量(手)等衍生指标;
按每日固定时间(如早6点)循环采样半年数据,每次抓取后暂停10秒规避限制;
用openpyxl将各板块数据存入Excel不同工作表(示例文件:data/板块行情周报.xlsx)。
图2-1 爬取数据保存文件图示
数据处理
数据归一化
采用Min-Max归一化消除量纲差异,公式:x’=(x - x_min)/(x_max - x_min),将特征值映射至[0,1]区间。针对每个板块单独拟合归一化器,避免跨板块数据分布差异的干扰。时间序列划分
按“前80%为训练集、后20%为测试集”的时序顺序切分,测试集起始部分多取w天(w=窗口长度)历史数据,确保每个测试样本能调用完整历史信息,杜绝未来数据泄漏。正则化策略
通过三层防护降低过拟合:①控制LSTM隐藏单元数(32个)与层数(2层);②训练时启用L2权重衰减及早停机制;③对极端波动板块进行样本平衡处理。滑动窗口构造
设置窗口长度w=15天,用t-w至t-1天的特征预测t天数据:
输入:15天归一化特征序列
分类标签:t天收盘价>t-1天则为1(涨),否则为0(跌)
回归标签:t天归一化收盘价
异常值处理
用3σ原则与分位数法检测极端值(如涨跌幅超±10%),缺失值直接剔除,确保数据质量。特征工程
引入两类核心指标:
简单移动平均线(SMA):反映中长期趋势,计算公式为指定周期内收盘价均值。
相对强弱指数(RSI):判断超买超卖状态,值>70为超买,<30为超卖。
图2-2 各板块简单移动平均线可视化
从图中可见,预测值(橙色线)与实际收盘价(蓝色线)趋势高度吻合,尤其在科技、光伏板块拟合度突出,但消费板块高波动时段存在偏差,后续可引入政策新闻等外部特征优化。
点击标题查阅往期内容
以下是关于股票预测中LSTM多任务学习的精选文章推荐,涵盖模型架构、应用案例及技术对比:
1. LSTM多任务学习框架
- Python、R用深度学习神经网络组合预测优化能源消费总量时间序列预测及ARIMA、xgboost对比
- 核心方法
:提出回归与分类双任务学习框架,回归子网预测股价,分类子网识别市场状态(牛市/熊市),通过共享LSTM层实现特征复用,MSE较单任务模型降低15%。
- 技术亮点
:动态权重调整(Softmax融合)平衡多任务损失,解决股价预测与趋势分类的冲突。
- 核心方法
2. 金融时序预测案例
- Python中TensorFlow的LSTM预测股票市场和可视化
- 应用场景
:LSTM预测股价走势(非绝对值),测试集MSE为0.004,优于移动平均法;多步预测通过滑动窗口实现,但误差随步长增加而累积。
- 优化建议
:超参数敏感性强,需网格搜索学习率(推荐0.001)和隐藏层数(2-3层为宜)。
- 应用场景
3. 多模型对比与融合
- 视频:LSTM模型原理及股票收盘价预测
- 性能对比
:LSTM在股价预测中AUC达0.92,优于ARIMA(0.85)和XGBoost(0.88),但需注意过拟合风险(Dropout率建议0.2)。
- 扩展应用
:结合注意力机制(Attention-LSTM)提升关键时间点捕捉能力。
- 性能对比
4. 行业报告与趋势
- Python、R用深度学习组合预测能源消费时间序列
- 方法论迁移
:能源预测中的多任务优化框架(如元学习权重分配)可适配股票市场,通过CNN-LSTM混合架构提取局部与全局时序特征。
- 方法论迁移
获取完整资源:
构建项目模型
采用两层LSTM堆叠架构,核心参数:隐藏单元32个、输入维度为特征数、输出层分分类(涨跌)与回归(价格)双任务。
模型代码:
ini
体验AI代码助手
代码解读
复制代码
# LSTM多任务模型实现
class StockLSTM_MultiTask(nn.Module):
def __init__(self, feature_num, hidden_size=32, layers=2, task_count=8):
super(StockLSTM_MultiTask, self).__init__()
# LSTM主体层
self.lstm = nn.LSTM(feature_num, hidden_size, num_layers=layers, batch_first=True)
# 分类任务输出(8个板块,每板块2类结果)
self.classifier = nn.ModuleList([nn.Linear(hidden_size, 2) for _ in range(task_count)])
# 回归任务输出(8个板块,每板块1个价格预测)
self.regressor = nn.ModuleList([nn.Linear(hidden_size, 1) for _ in range(task_count)])
def forward(self, x):
# x形状:[批量, 时间步, 特征数]
lstm_output, _ = self.lstm(x)
# 取最后一个时间步输出
final_output = lstm_output[:, -1, :]
# 生成分类与回归结果
class_result = [fc(final_output) for fc in self.classifier]
reg_result = [fc(final_output) for fc in self.regressor]
return class_result, reg_result
优化策略:
特征缩放:价格类用对数缩放,涨跌幅归一化至[-1,1]
推理加速:采用TorchScript静态图优化,CPU多线程并行计算
收敛优化:用K-means将涨跌幅聚类为高/中/低风险三类,辅助模型快速收敛
项目模型评估指标计算
分类任务指标
混淆矩阵:直观展示各板块涨跌预测的正误分布
准确率、召回率、F1值:综合评估分类效果
ROC AUC:衡量模型区分能力,值越接近1效果越好
图3-5 光伏、电子、金融、科技分类ROC AUC曲线图
图3-6 消费、新能源汽车、医疗、医药生物分类ROC AUC曲线图
回归任务指标
均方误差(MSE):衡量预测价格与实际值的偏差
根均方误差(RMSE):MSE的平方根,更贴合实际价格波动感知
图3-7 各板块收盘价回归预测图
表3-1 评估指标汇总表板块名称
准确率 召回率 F1值
ROC AUC
MSE RMSE
光伏
0.9891 0.9861 0.9861
0.9886
0.0773 0.2781
科技
0.9891 0.9894 0.9894
0.9891
0.0602 0.2454
医疗
0.9565 0.9457 0.9560
0.9565
0.1757 0.4192
医药生物
1.0000 1.0000 1.0000
1.0000
0.0840 0.2897
电子
0.9728 0.9500 0.9682
0.9792
0.0700 0.2646
金融
0.9837 0.9583 0.9787
0.0793
0.0793 0.2815
消费
0.9457 0.9506 0.9390
0.1298
0.1298 0.3602
新能源汽车
0.9457 0.9082 0.9468
0.9483
0.1133 0.3366
总计
0.9728 0.9597 0.9698
0.9717
0.0987 0.3142
评估结论:模型在医药生物、科技等板块表现优异,分类准确率超0.98,回归RMSE低于0.3;消费板块因波动性大,误差略高,但整体仍优于传统单任务模型。
结论
本项目构建的LSTM多任务模型实现了多板块股票涨跌与价格的联合预测,核心优势体现在:
多任务架构同时输出两类关键指标,满足投资决策的多维度需求;
结合SMA、RSI等技术指标与K-means聚类,提升模型对市场规律的捕捉能力;
经8大板块数据验证,整体准确率达0.9728,具备实际应用价值。
需注意的是,股票市场受政策、突发事件等多种因素影响,模型预测结果仅作技术研究参考,不构成任何投资建议。
参考文献
何雪锋,周洁,陈德光,廖海.自然语言处理的深度学习模型综述[J].计算机应用与软件.2025
数量技术宅.免费、开源的股票爬虫Python库:Easyquotation[N].股票数据爬虫进阶:免费、开源的股票爬虫Python库,实测真香 - 数量技术宅 - 博客园
Machine Learning.机器学习概念[J].developers.google.com/machine-lea…
马占辉.基于LSTM网络的中长期水文流量预测技术研究[J].中国水运.2025
马建阳.基于多任务学习的数据分类方法研究[D].北京交通大学.2018
关于分析师
在此对 Junju Zhang 对本文所作的贡献表示诚挚感谢,他拥有信息与计算科学专业背景。擅长 Matlab、Python,专注于数理金融、数据采集、数学建模等领域。Junju Zhang 在数据处理与分析领域积累了丰富经验,,曾任赛迩科技数据分析师,尤其在利用数理方法解决金融数据问题、搭建数据采集与建模体系方面具备扎实的专业能力,为本文的数据分析与模型构建提供了重要支持。
本文中分析的完整智能体、数据、代码、文档分享到会员群,扫描下面二维码即可加群!
资料获取
在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。
点击文末“阅读原文”
获取完整智能体、
代码、数据和文档。