综合

基于bp神经网络的股票预测

时间:2010-12-5 17:23:32  作者:焦点   来源:知识  查看:  评论:0
内容摘要:用BP神经网络预测股票价格,本质上是在做一件很拧巴的事——用确定性的数学框架去逼近一个充满随机性的市场。我2019年拿上证50的日线数据跑过一个三层网络,输入层放了20个神经元,对应过去20个交易日的

用BP神经网络预测股票价格,基于本质上是神经在做一件很拧巴的事——用确定性的数学框架去逼近一个充满随机性的市场。我2019年拿上证50的网络日线数据跑过一个三层网络,输入层放了20个神经元,票预对应过去20个交易日的基于收盘价、成交量和MACD指标。神经训练集上的网络MSE降到了0.0003,看着挺美。票预拿测试集一跑,基于预测曲线几乎就是神经实际价格平移了一天的复制品。模型学到的网络东西说白了就一句话:明天的价格约等于今天的价格。这跟没预测一样。票预

问题出在BP算法的基于核心机制上。它靠梯度下降调权重,神经目标是网络最小化预测值和真实值之间的误差。股票价格序列恰恰是高度自相关的,相邻两天的价格相关系数经常在0.95以上。网络很快发现一个偷懒的最优解——把输入直接映射到输出,不做任何有意义的变换。反向传播的梯度信号在这个平坦区域里几乎消失,权重更新微乎其微。你调学习率、加动量项、换激活函数,都绕不开这个陷阱。

有人会说那就多喂点特征。我试过把输入扩到60维,加了RSI、布林带宽度、换手率、甚至北向资金流数据。结果过拟合来得更快。训练到第200个epoch的时候,训练误差还在降,验证误差已经翘头向上走了。BP网络对噪声的容忍度很低,金融数据里的信噪比又差得离谱。你以为喂进去的是信号,其实大半是市场情绪的碎屑。

那BP网络在股票预测里就完全没用?也不至于。我后来换了个思路,不预测价格,改预测方向。把问题从回归变成分类,输出层用sigmoid,标签设成涨或跌。准确率从回归时的接近100%虚高,掉到了54%左右。这个数字看着寒碜,但考虑到A股日线涨跌的基准分布本身就接近五五开,54%至少说明网络抓住了某些微弱的结构性信息。我检查了那些预测正确的样本,发现它们大多集中在波动率较低的区间。一旦市场进入剧烈震荡,模型就抓瞎。

还有一个坑是数据预处理。早期我直接拿原始价格扔进网络,收敛极慢。后来改成做一阶差分再标准化,训练速度上来了,但预测出来的差分值积分回价格序列时,误差会累积。跑一百步之后,预测价格能偏离实际值十几个点。这个误差累积问题在BP网络里没有优雅的解法,只能靠缩短预测窗口来缓解,比如只预测未来一天。

我现在的看法是,BP神经网络做股票预测,适合当辅助工具而不是决策核心。它的价值在于帮你验证某些因子是否含有增量信息——如果加了某个特征之后验证集准确率有稳定提升,那这个特征值得进一步研究。但指望它直接输出买卖信号,大概率会失望。市场不是静态函数,它的数据生成过程本身在漂移。今天有效的权重矩阵,下个月可能就失效了。BP网络的静态训练范式跟这个动态环境之间的根本矛盾,不是调参能解决的。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap