使用CNN预测标准普尔500股票走势,JPM 股票走势预测准确率达 91%

“S&P 500 Stock’s Movement Prediction using CNN”


金融机构、银行、经纪商、对冲基金和个人依靠其走势投资、清算或对冲风险,是全球关注的关键金融指标。本文为示例,用部分 S&P 500 股票历史价格训练和测试模型。


算法输入为标准普尔500指数所有股票的原始历史时间序列数据(CSV格式),采用CNN方法基于绝对回报预测买卖。实验表示,训练所提方法/模型生成的可视化损失与准确率图表结果佳,JPM 股票走势预测准确率达 91% ,为业界领先。


图片


【 扫描文末二维码加入星球获取论文 】


摘要


过往有多种方法用于预测标准普尔500指数成分股走势,近期人工神经网络引发关注。此前多数相关研究未深入金融数据复杂性且多采用单维度数据。本文使用包含股票拆分/股息事件的多元原始数据,运用卷积神经网络处理多维股票数据,将其模拟为历史数据矩阵向量(类似图像),模型取得不错结果,预测可按单只股票、行业或股票组合进行。


简介


标准普尔 500 指数(S&P 500)是按市值加权的美国 500 家最大上市公司指数,是常用美国指数,代表美大型上市公司,聚焦大盘股板块。金融机构、银行、经纪商、对冲基金和个人依靠其走势投资、清算或对冲风险,是全球关注的关键金融指标。本文为示例,用部分 S&P 500 股票历史价格训练和测试模型。


近年来,人工神经网络(ANN)的深度学习在多领域应用广泛,卷积神经网络(CNN)在图像预测表现出色,长短期记忆网络(LSTM)在预测时间序列数据上优于传统算法。


深度学习方法(LSTM和CNN)在金融领域受投资者和学界关注。LSTM训练困难,因其时间梯度下降计算成本高、网络规模大、数据量大且需“在线”训练;CNN能学习空间特征,革新计算机视觉。


股市预测是时间序列预测难题,因噪声和波动性,CNN比LSTM更适合,且卷积特性使其更宜处理股票股息和拆分事件预测。


算法输入为标准普尔500指数所有股票的原始历史时间序列数据(CSV格式),采用CNN方法基于绝对回报预测买卖。


相关工作


  • Persio和Honchar为股票趋势预测的神经网络模型对比奠定框架,提出小波与CNN结合的新方法,证明仅用时间序列数据训练神经网络也可预测金融时间序列走势。

  • Ariel Navon和Yosi Kellery提出数据驱动的端到端深度学习方法用于金融时间序列预测,基于人工神经网络处理类似本文的原始金融数据。

  • Grob等将CNN用于预测电价,证明其能找到更优预测特征,展示将多元时间序列视为时空图片的方法,还测试两种新模型。

  • Borovykh等基于深度卷积WaveNet架构提出条件时间序列预测方法,分析CNN在多元时间序列上的性能并与其他模型对比。

  • Pinheiro和Dras用预训练字符级语言模型的循环神经网络进行股票市场预测和方向变化预测。

  • Selvin等用深度学习架构识别数据潜在动态,用滑动窗口法预测股价,本文模型也用该方法。

  • Siripurapu A.用卷积网络预测股价,但将时间序列转为图像增加额外工作,实用性降低。

  • Bi´nkowski等提出用于多元异步时间序列回归的显著性偏移卷积神经网络。

  • Sezer和Ozbayoglu提出基于图像处理的CNN - TA算法交易模型,将金融时间序列转为二维图像并标注买卖持有信号。


数据和特征


数据集为原始金融数据,采用每日 OHLCV 及其调整后数据用于模型训练和测试,OHLCV 可展示金融工具价格和交易量变化,调整后 OHLC 价格考虑了股息分配和公司行动。


股票股息和拆分影响股价,拆分时流通股增加、股价降低,拆分通常为提高股票流动性和可购买性。


图片


图片


数据预处理:去除 DATE、EX_DIVIDEND、SPLIT_RATIO、ADJ_FACTOR 列,因其大部分数据为 0 或 1 无价值;采用滑动窗口进行数据增强;用拆分和洗牌技术离散化数据防过拟合;用简单归一化技术统一数据尺度。


图片


图片


训练和测试数据集来自 Intrinio.com,涵盖标普 500 所有当前股票。


方法


深度学习可直接分析原始数据,本文提出利用CNN从原始数据学习复杂非线性模型预测金融市场趋势:

  • 基于股票原始市场数据价格的学习方案。

  • 利用CNN概率预测确定股票涨跌趋势的交易策略。

  • 用股票股息/拆分数据训练模型。


模型中卷积层一维,部分滤波器对短期看涨趋势敏感,与全连接层结合对长期看涨趋势敏感,也能处理复杂模式。输入数据形状为[batch_size, window_size, channels],经8个卷积层、批归一化、多个softmax层和sigmoid激活,输出[batch_size, output_size],代表涨跌信心。


图片


图片


使用基于二元逻辑回归损失函数的Softmax分类器,其用交叉熵损失,将任意实值得分向量压缩到0 - 1且和为1的向量,交叉熵损失衡量分类模型性能,预测概率偏离实际标签时损失增加。


图片


Softmax分类器将输出视为未校准的,给出归一化类概率,用交叉熵损失替代合页损失,最小化估计类概率与真实分布的交叉熵,可解释为最大似然估计。


图片


模型以徐(P. Xu)在GitHub上的在线博客模型为基础,除数据增强和部分模块外,代码均重新设计编写。与基础模型相比,所提模型在输入数据复杂度上有差异,训练数据涵盖未调整和调整后的股价,还在数据分批、输入通道数、滚动窗口大小、CNN架构(如增加层和偏置、使用丢弃法)、数据拆分与打乱等方面有改动,并引入了基础模型缺失的验证集。


实验


基本模型精度


基础模型经约一小时训练,使用不同数据集和多只股票,最高准确率达69%;还展示过往论文中部分深度学习模型为实现类似目标的预测准确率。


图片


初步执行/训练结果


模型经重新设计和编写后,初始执行结果显示似乎完全未学习。


图片


超参数调优


输入及超参数调优范围:

  • 高度[5, 64, 128, 256]

  • 通道[1, 5, 10]

  • 学习率[1e - 2, 1e - 3, 1e - 4, 1e - 5]

  • 优化器[SGD, Adam]

  • 批量大小[10, 400]


最优参数:

  • 通道 10

  • 高度 256

  • 宽度 9

  • 学习率 1e - 3

  • 保留率 0.6

  • 批量大小 250

  • 优化器 Adam


训练情况:高度 256 比 128 训练时间略长;批量 10 - 150 执行快但学习效果差,200 - 250 时准确率与性能最优。主要指标:准确率和损失矩阵。


图片


结果


训练所提方法/模型生成的可视化损失与准确率图表结果佳,JPM 股票走势预测准确率达 91% ,为业界领先。该方法优于本文基线及近期深度学习股票预测模型。还展示了改变输入、轮数、批量大小和超参数的实验图表。


图片


图片


总结


本文提出的模型在预测单只股票走势和行业进展方面成果可期,还可用于预测标普 500 指数。未来可基于该模型拓展应用,如生成潜力投资组合、预测国际资本市场股票和指数、外汇及大宗商品等。还可构建结合 CNN、LSTM 和 NLP 的更复杂模型,利用情感分析进行更精准预测。此外,衍生品市场的期权和期货交易是深度学习领域待挖掘的机会。



图片

▌关于我们

我们致力于人工智能、量化交易领域前沿研究,分享前沿论文、模型代码、策略实现。如有相关需求,请私信与我们联系。

▌商务合作

请加微信“LingDuTech163”,或公众号后台私信“联系方式”。

关注【灵度智能】公众号,获取更多AI资讯。

举报/反馈
分享到: 微博 QQ 空间
对本文内容有合作意向?
我们将在 1 个工作日内与您联系
留言咨询