本文开始探索使用深度学习进行量化交易的过程,几点说明如下:
- 文章仍然以“趟路”为主要目的,旨在走通将深度学习在量化交易中使用过程,忽略当前学习模型的收益情况。
- 深度学习框架选择使用Keras。没有特殊原因,就是之前下载zwPython时,里面集成了Keras,拿来直接用了,省去配置环境的工作量,图个方便。
- 后续文章将陆续尝试多种模式、多种深度模型(包括RNN)在量化中的应用,望读者多多捧场指教。
- 笔者对Python和深度学习来说都是新手,如有错误或待改进之处,还请多多批评指正。
本文首先探索使用简单的全连接网络筛选短线个股的流程,主要步骤如下:
- 数据预处理,根据短线个股筛选标准,给个股日线数据打标。
- 模型训练,针对每只股票,训练得到分类模型。
- 结果预测,根据训练得到的模型,计算股票每日的分类预测值。
- 策略回测,基于股票每日的分类预测值,回测策略收益情况。
- 个股筛选,如果策略验证可行,即可根据模型筛选出当前符合买入条件的股票。
这里将短线个股的筛选问题处理为使用深度学习解决的分类问题,目标是筛选出10个交易日内,上涨幅度大于10%的股票。这里选择2017年12月31日及之前的数据作为训练数据,2018年1月1日之后的数据用于做预测。
为了应用深度学习算法,需要有足够的训练数据。为此,选择2016年1月1日至2017年12月31日内日线数量多于300的个股,代码如下:
选择2017年12月31日及之前的数据作为训练数据,计算训练数据的输入特征及分类标签。
将10个交易内上涨幅度超过10%的股票标记为类别1,其他股票标记为类别0。
为了给深度学习模型提供更多的输入维度,可以基于日线数据的开盘价、收盘价、最高价、最低价、成交量等进行扩展。这里只扩展5、10、20、30、60、120、240均线及均量线数据,后续可根据需要计算MACD、KDJ、RSI等指标数据,进一步扩展输入维度。
指标及类别计算代码如下:
上面代码中,调用topq_talib来计算扩展指标,读者可以根据具体情况调用其他包或者自己实现相应的指标。
为了应用时序上的信息,将前10日的指标数据合并到当日,作为输入特征,代码如下:
为了便于后面的回测使用,这里将预测数据的计算与训练数据的计算分开处理,但二者计算实现逻辑基本相同,对2018年1月1日至2020年6月30日间的数据进行预测,代码如下:
这篇文章完成了数据预处理工作,后续文章继续介绍基于这些数据进行训练、预测以及回测的过程。
欢迎大家关注、点赞、转发、留言,感谢支持!
为了便于相互交流学习,已建微信群,感兴趣的读者请加微信。
京东已向全国2661个区县提供自营配送服务,支持货到付款、POS机刷卡和售后上门服务。
互联网出版许可证编号新出网证(京)字150号 | | | 违法和不良信息举报电话:
| 消费者维权热线: |
京东旗下网站: | | 网络内容从业人员违法违规行为举报电话:-3