AI量化策略开发第五步:模型训练+股票预测

用户成长系列
标签: #<Tag:0x00007fc05bac4bd0>

(小Q) #1

导语:完成了数据处理,接下来就可利用平台集成的各算法进行模型训练和模型预测啦。本文将详细介绍“模型训练”、“模型预测”两大模块操作、原理。

模型训练模型预测是AI策略区别于传统量化策略的核心,我们通过模型训练模块利用训练集因子和标注数据构建一个模型,并通过模型预测模型将预测集的因子数据输入模型进行预测。

在模块列表的 机器学习深度学习 下可找到众多AI算法,可根据需要选择对应算法做训练和预测。本文以BigQuant专为量化开发的有监督性机器学习算法StockRanker为例,用 StockRanker训练 模块来训练模型,用 StockRanker预测 模块来做出股票预测。

一、操作流程

第一步:在模块列表搜索框中输入“StockRanker”,在 机器学习 下找到 StockRanker训练StockRanekr预测 模块并拖入画布。

第二步:将训练集的 缺失数据处理输入特征列表 连接至 StockRanker训练 模块。

第三步:选中 StockRanker训练 模块,保持默认设置,右键 运行选中模块

StockRanker算法原理、模块属性参数含义,请继续查看下文。
右键 查看结果1 ,可观察训练好的模型(StockRanker为决策树)样子。如下图所示,可以看到有20个决策树,每个节点表示决策树的分支条件,每个分支都会依据各自的条件根据预测集中每只股票的因子数据进行打分。最终将所有决策树的打分结果汇总得到每只股票的得分和排序。

再右键 查看结果2 ,可观察各因子对此模型的贡献重要度分值(gain)。

第四步:将训练好的 StockRanker训练 和测试集的 缺失数据处理 模块连接至 StockRanker预测



第五步:选中 StockRanker预测 , 保持默认设置,右键 运行选中模块

右键 查看结果1 ,可观察每日各股票的得分、排序,即每日最值得买入的股票排序。

StockRanker算法介绍:

StockRanker 算法专为量化而生,核心思想是排序学习和梯度提升树。 如下图这个模型有20棵决策树组成,每棵决策树最多有30个叶节点。给定一个样本,每个决策树会对样本打分(分数为样本根据判定条件到达的叶节点的值);最后的分数是所有决策树打分的总和。决策树的结构、判定条件和叶节点的分数等等都是由算法在训练数据上学习出来的。将测试集数据喂给训练好的决策树,则可得到测试集数据数据在该模型上的分数,再根据分数形成股票排序、回归、分类预测,指导后续的买入卖出。

点击查看StockRanker训练模块参数说明
  1. 输入数据1:训练数据,如本例中由 缺失数据处理 模块输出的含因子数据、标注数据的训练数据。
  2. 输入数据2:因子列表。
  3. 学习算法:StockRanker下包含排序、回归、二分类、logloss四种优化算法,默认为排序。
  4. 叶节点数量:如上图决策树中每棵树最大叶节点数量。一般情况下,叶子节点越多,则模型越复杂,表达能力越强,过拟合的可能性也越高;默认值是30。
  5. 每叶节点最小样本:每个叶节点最少需要的样本数量,一般值越大,泛化性性越好;默认值是1000。
  6. 树的数量:如上图决策树中树的数量。一般情况下,树越多,则模型越复杂,表达能力越强,过拟合的可能性也越高;默认值是20。
  7. 学习率:学习率如果太大,可能会使结果越过最优值,如果太小学习会很慢;默认值是0.1。
  8. 特征值离散化数量:离散化即在不改变因子(即特征)数据相对大小的前提下,对数据进行相应的映射,减小复杂度。离散化数量越大,数据复杂度越高,过拟合的可能性也越高;默认值是1023。
  9. 特征使用率:在构建每一颗树时,每个特征(即因子)被使用的概率,如果为1,则每棵树都会使用所有特征;默认值是1。
  10. 输出数据1:训练好的模型
  11. 输出数据2:各因子对模型的贡献度
点击查看StockRaner预测模块说明
  1. 输入数据1:训练好的模型
  2. 输入数据2:测试数据集
  3. 输出数据1:预测结果。即每日各股票的得分、顺序。

小结:至此,我们完成了 模型训练股票预测 ,接下来就可利用预测好的股票进行买入卖出,计算并评估对应的收益、风险。当然,你也可利用其它AI算法进行训练和预测,更多AI算法详解,请查阅机器学习、深度学习文档

AI量化策略开发入门系列文章请查看:

1. AI量化策略开发第一步:确定数据(如股票池),划分训练集、测试集
2. AI量化策略开发第二步:定目标:数据标注
3. AI量化策略开发第三步:找因子
4. AI量化策略开发第四步:数据连接+缺失数据处理
5. AI量化策略开发第五步:模型训练+股票预测
6. AI量化策略开发第六步:回测
7. AI量化策略开发第七步:查看、分析结果
8. AI量化策略开发第八步:模拟实盘


AI量化策略开发第八步:模拟实盘
AI量化策略开发第四步:数据连接+缺失数据处理
(TinyQuanter) #2

[2019-04-28 20:54:38.091879] ERROR: bigquant: module name: general_feature_extractor, module version: v7, trackeback: Traceback (most recent call last):
TypeError: compile() arg 1 must be a string, bytes or AST object

如何处理该报错呢


(iQuant) #3

您好,这个应该是连线连错了哈,可以参考一下样例模板。


(oldwound) #4

训练的时候没问题,预测的时候报错:
TypeError Traceback (most recent call last)
in ()
93 start_date=‘2017-01-01’,
94 end_date=‘2018-12-31’,
—> 95 before_start_days=90
96 )
97

TypeError: compile() arg 1 must be a string, bytes or AST object

可是日期明明有写啊


(iQuant) #5

看下是否连线连错,参考样例模板。


(oldwound) #6

知道了,对多个输入端口来说,每个输入端接什么模块,顺序都是固定的,不能随意调换,你们的文档应该着重说明一下呀!


(liyi) #7

模型训练失败:可能导致错误的原因是训练数据问题,请检查训练数据, err_code=1 (31a9edfc7fc511e9a6c00a580a810724)
这个错误 应该怎么办