策略分享

使用深度学习技术预测股票价格

由crisvalentine创建,最终由iquant 被浏览 551 用户

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发IDE(AIStudio):

https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW

新版模版策略:

https://bigquant.com/wiki/doc/demos-ecdRvuM1TU

新版数据平台:

https://bigquant.com/data/home

https://bigquant.com/wiki/doc/dai-PLSbc1SbZX

新版表达式算子:

https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS

新版因子平台:

https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5

\

深度学习策略的交易规则

买入条件:预测的上涨概率>0.5,则买入或保持已有持仓。 卖出条件 :预测的上涨概率<0.5,则卖出已有股票。

策略构建步骤

  1. 确定股票池和数据起止时间

    在证券代码列表m24和m28模块中输入要回测的单只股票,以及数据的起止日期(分别为训练集和验证集)。

  2. 确定因子

    在输入特征列表m8模块中输入用于预测的N个因子表达式。

  3. 获取基础数据

    通过基础特征数据抽取模块m22和m16获取指定股票池的基础数据,如收盘价等字段。

  4. 确定并计算模型标注

    通过自动标注股票模块m21计算需要的标注指标,本例中首先计算未来10天收益,然后根据其正负来给每日数据标注1或0,来标识涨跌

  5. 抽取因子数据

    通过衍生数据抽取模块m23和m26计算因子数据。

  6. 合并标注与因子数据

    通过连接数据m17模块合并因子数据和标注数据。

  7. 生成序列窗口滚动数据集

    通过序列窗口滚动(深度学习)模块m25和m27将训练集和预测集的数据生成固定窗口长度的数据序列,为后续模型训练和预测做准备。

  8. 构建LSTM + CNN模型构架

    在画布左侧模块列表中依次拖入输入层模块、Reshape层模块、Conv2D层模块、Reshape层模块、LSTM层模块、Dropout层模块和全连接层模块(两组),构成深度学习网络构架,

    最后通过“构建(深度学习)”模块组装各层。这里需要注意:

    输入层的shape参数是 窗口滚动数据集的大小 X 因子数量 , 本例为 50 行 X 5个因子

    ReShape层的参数是 窗口滚动数据集的大小 X 因子数量 X 1 ,本例为 50 行 X 5个因子 X1

    Conv2D层中的 kernel_size参数是滑动窗口的尺寸,本例中使用 3行 X 5列 的窗口, 每次滑动的步长为 1行 X 1列 , 卷积核数目为32,这里的窗口设置决定了后面ReShape层的参数

    ReShape层中的target_shape 参数,这是由 窗口滚动数据集 X 因子数量 和 Conv2D层中设置的窗口尺寸以及步长决定的。本例中 50行 X 5因子 的输入数据,使用 3行 X5列 的窗口滑动取数据,

    每次移动1行,共计可以得到48次数据(即可以通过滑动3行 X 5列的窗口48次来获取完整的数据),因此target_shape= 48 X 卷积核数32

    LSTM层的输出空间维度设置为卷积核数32,并设置激活函数

    Dropout层是防止过度拟合采用的主动裁剪数据技术,这里设置rate 为0.8

    全连接层共两层,第一层的输出空间维度与LSTM的输出维度保持一致为32,第二层将第一层的32维数据转变为1维数据输出,即获取预测的label值,此例为0到1之间的连续值,可以认为是上涨的概率。

  9. 训练深度学习模型 在画布左侧模块列表中拖入“训练(深度学习)”模块m6,设置属性中的优化器、目标函数、评估指标、每次训练的数据量batch_size、迭代次数epochs和GPU的数量以及日志输出频率。

  10. 使用深度学习模型预测

    在画布左侧模块列表中拖入“预测(深度学习)”模块m7,并将“训练(深度学习)”模块m6的模型输出和验证集的序列窗口滚动数据集传给预测模块,通过预测模块即根据股票验证集的数据预测上涨的概率。

  11. 将预测结果与时间拼接 通过自定义模块m2将预测的每个滚动序列窗口的最后一个值最为当日的预测结果,并与预测集数据的时间列拼接,形成最终的每日预测结果。

  12. 根据模型预测结果构建策略 如果当日预测的上涨概率大于0.5,则保持持仓或买入

    如果当日预测的上涨概率小于0.5,则卖出股票或保持空仓。

  13. 模拟回测 通过 trade 模块中的初始化函数定义交易手续费和滑点,通过 context.prediction 获取每日的上涨概率预测结果;

    通过 trade 模块中的主函数(handle函数)查看每日的买卖交易信号,按照买卖原则执行相应的买入/卖出操作。

https://bigquant.com/experimentshare/641d6555487a4360b166e92421c46853

\

标签

股票价格预测交易规则回测训练集
{link}