热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于StockRanker的AI量化选股策略

近年来,人工智能(AI)慢慢渗入各行各业,在投资界,人工智能和选股结合辅助主动投资,提高量化模型的效率也逐渐得到投资经理青睐。AI策略简介最近几年人工智能(AI)技术得到飞速

近年来,人工智能(AI)慢慢渗入各行各业,在投资界,人工智能和选股结合辅助主动投资,提高量化模型的效率也逐渐得到投资经理青睐。

AI策略简介

最近几年人工智能(AI)技术得到飞速发展,其在各个领域的运用也不断取得重大成果。机器学习是实现人工智能的一种方式,被评为人工智能领域中最能够体现智能的一个分支,机器学习与人工智能、深度学习的关系可以参考下图:
640?wx_fmt=png&wxfrom=5&wx_lazy=1

机器学习可以这样简单理解:借助于计算机,对数据(训练集)进行学习后,形成模式识别(模型),进而实现对未来数据(测试集)的预测。


假设我们要去预测某个变量Y未来的取值,并找到了影响变量Y取值的K 个变量,这些变量也称为特征或因子(Feature Variable)。机器学习即是要找到一个拟合函数f(X1,X2,…,XK|Θ)去描述 Y和特征之间的关系(绝大多数是非线性关系),Θ为这个函数的参数。


要找到这样的函数,必须要足够量的观测数据,假设有 N 个样本数据y1,y2,…,yn和 x1i,x2i,…,xKi (其中i=1,2,…,N)。然后定义一个函数L来衡量真实观测数据和模型估计数据偏差,函数 L 也称作损失函数(Loss Function)。基于历史观测数据,我们可以求解下列的最化问题来得到参数Θ 的估计值 。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

求解(1.1)过程称作模型训练(Model Traing)。基于特征变量的最新观测值和训练出来的模型参数就可以预测y的数值。 接下来,我们看一下用机器学习方法开发策略的具体流程。

AI策略开发流程

640?wx_fmt=png


相对于传统策略开发的复杂流程和调参等大量重复工作,AI策略开发更简单,将我们的脑力从重复工作上解放出来,专注在更有创造性的地方。

StockRanker算法

机器学习算法太多,本文讨论只针对适用于金融数据预测的常用有监督型机器学习(Supervised Machine Learning)算法:StockRanker。


StockRanker算法是专为选股量化而设计,核心算法主要是排序学习和梯度提升树640?wx_fmt=jpeg


我们对AI策略开发做了抽象,设计了如下开发流程 (以 StockRanker 算法为例,也可以使用其他算法):

  • 目标:首先定义机器学习目标并标注数据。很多机器学习场景,需要人来做数据标注,例如标注图片里的是猫或者狗。对于股票,我们关注的风险和收益是可以明确定义并自动计算出来的。所以,我们一般使用未来N天的收益或者收益风险比作为标注分数。本文使用未来给定天数的收益作为标注

  • 数据:我们需要训练数据集来训练模型,已经评估数据集来评估效果。在模型参数研究中,我们一般还需要一个测试集用来观察调参效果

  • 特征(因子):特征是量化研究的核心之一,在AI策略上,特征直接影响了模型的学习效果。这也是本文的目的之一,通过AI找出在A股有效的因子,并最大化的挖掘出他们的效果

  • 算法模型:本文使用StockRanker算法,使用 M.stock_ranker_train 来训练模型,使用 M.stock_ranker_predict 来做出预测

  • 回测:使用回测引擎来根据预测做股票交易,并得到策略收益报告和风险分析,并以此来评估策略的最终效果


StockRanker的特点

  • 选股:股票市场和图像识别、机器翻译等机器学习场景有很大不同。StockRanker充分考虑股票市场的特殊性,可以同时对全市场3000只股票的数据进行学习,并预测出股票排序

  • 排序学习 (Learning to Rank):排序学习是一种广泛使用的监督学习方法 (Supervised Learning),比如推荐系统的候选产品、用户排序,搜索引擎的文档排序,机器翻译中的候选结果排序等等。StockRanker 开创性的将排序学习和选股结合,并取得显著的效果。

  • 梯度提升树 (GBDT):有多种算法可以用来完成排序学习任务,比如SVM、逻辑回归、概率模型等等。StockRanker使用了GBDT,GBDT是一种集成学习算法,在行业里使用广泛。


StockRanker的领先效果还得益于优秀的工程实现,目前在学习速度、学习能力和泛化性等方面,都做了大量的优化,并且提供了参数配置,让大家可以进一步根据需要调优。


可能遇到的一些问题

  • 过拟合

  • 数据集重叠

  • 数据集划分不当

  • 训练集数据太少

  • 数据预处理不够

  • 标注和特征逻辑不一致

  • 因子并非越多越好



0?wx_fmt=gif

本公众号现面向人工智能和大数据爱好者征稿(无稿酬),如果您想让您的文章、观点分享给更多人工智能和大数据爱好者,请发邮件至351745027@qq.com。

                                                       

欢迎扫码添加小编,加入人工智能和大数据公众号读者交流群,探讨、分享、交流!交流群每周会邀请行业专家进行在线分享!




推荐阅读
author-avatar
阳光卐誓言
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有