历史文档

【历史文档】策略-模型训练+股票预测

由undefined创建,最终由small_q 被浏览 2189 用户

导语

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

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

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

操作流程

添加模块

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

{w:100}{w:100}{w:100}{w:100}

连接StockRanker模块

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

{w:100}{w:100}{w:100}{w:100}

运行训练模块

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

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

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

{w:100}{w:100}{w:100}{w:100}

连接至StockRanker预测

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

{w:100}{w:100}{w:100}{w:100}

运行预测模块

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

{w:100}{w:100}{w:100}{w:100}

StockRanker算法介绍

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

{w:100}{w:100}{w:100}{w:100}

StockRanker模块参数说明

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

StockRaner预测模块说明

输入数据1:训练好的模型
输入数据2:测试数据集
输出数据1:预测结果。即每日各股票的得分、顺序。

小结:至此,我们完成了 模型训练 和 股票预测 ,接下来就可利用预测好的股票进行买入卖出,计算并评估对应的收益、风险。

标签

模型训练股票预测金融数据数据处理因子数据
评论
  • 经典,牛叉
  • 已经有拼接好的dataframe,为什么还需要原始的输入特征列表给训练模块输入? \
  • 跟随步骤选择StockRanker进行训练,提示参数不对,图例是v5,现在线上是v6,是因为这个原因么?
  • 同问
  • 拼接好的dataframe中含有`m:low`, `m:high` 等几个多余的字段,疑似是在“自动标注(股票)”环节引入的。 提供原始的特征列表,可以限制哪些字段会最终进入模型
{link}