我们在用AI来编写量化策略过程中,主要用到了机器学习,先来从一张图直观理解什么是机器学习:人类对新问题做出有效决策依靠的是过去积累的许多经验,并对经验进行利用,而对机器来说,“经验”以“数据”方式存在,机器从过去众多“数据”中产生模型,并对新数据进行预测,这个过程就可理解为“机器学习”

那么机器学习到底要经历哪几个步骤,我们如何用机器学习来构建一个完整的量化策略,下面,我们通过一个生活中的样例,来类比AI量化策略的工作流程,来帮助大家快速理解AI量化策略:

老王挑瓜

我们接到了隔壁老王求助:要我们帮他去瓜田判断一堆西瓜的好坏,并且需要在保证正确率的情况下独自完成。如果我们对此毫无经验,那我们应该如何应对呢?大家可以先思考一下再与下面步骤进行对比。

  • 第一步:明确目标,获取资源
    首先我们应明确目标,就是判断出这堆西瓜好坏,为了达到这个目标,我们应该先去另找来一堆西瓜用来学习,来积累判断西瓜好坏的经验。

  • 第二步:资源划分
    接下来我们要把找来的这些瓜分成两堆,其中第一堆瓜用来练手总结规律,为了确保我们总结的规律是真实可靠的,我们用第二堆瓜来验证我们总结的规律。

  • 第三步:观察学习

    • 针对第一堆瓜,我们首先通过观察和思考,挑选出一些可能影响瓜好坏瓜的特征也可以称为属性,例如颜色、大小、产地、纹理等;
    • 之后,我们不断观察每个瓜的这些特征并切瓜来验证每个瓜的好坏并进行记录;
    • 现在我们获取了每个瓜的特征与其对应的好坏结果,我们需要通过不断总结归纳找到瓜的好坏与瓜的属性之间的关联,最后制定一套标准的判断模型,就是我们的经验。
  • 第四步:预测
    此时我们需来验证我们上面总结的经验是否满足要求,我们拿第二堆瓜来验证,根据第二堆瓜的颜色、大小、产地等特征来预测第二堆瓜的好坏。

  • 第五步:检验
    最后,在预测环节中我们得出了每个西瓜的预测结果,为了检验我们预测结果是否准确,我们需要切瓜来验证我们的预测值是否与真实情况相符。

这一过程我们可以表示为流程图:

image.png828x513 21.5 KB

AI量化策略构建流程

类比上述挑瓜过程,我们可以对AI量化策略流程进行分解:

  • 第一步:明确目标,获取数据
    首先我们要明确我们模型的训练目标,是A股还是港股,就好比是西瓜还是苹果;是预测股票收益率高低还是波动率高低,就好比是预测西瓜好坏还是年份。确定后获取股票或其他数据。

AI量化策略的目标(Label):人为定义的模型预测目标,例如未来N日收益率、未来N日波动率、未来N日的收益率排序等统计量,平台AI量化策略默认使用股票收益率作为目标。

  • 第二步:数据划分
    接着我们把历史数据按时间顺序切分为两部分,类比于分瓜任务中的两堆瓜。

训练集: 第一部分的数据用来训练模型,类比第一堆瓜;
验证集: 第二部分的数据用来验证模型效果,类比第二堆瓜;

  • 第三步:选取特征,进行标注

    • 选择构建可能影响目标的特征,如模板策略中的return_5(5日收益)、return_10(10日收益)等,类比于瓜的产地、大小等特征。
    • 对目标结果进行标注,类比于切瓜后记录每个瓜的好坏,样例模板中,我们用5日收益率高低来定义股票的走势好坏等级,并将每只对应等级标记在每只股票上。

AI量化策略的特征(features): 反映事物在某方面的表现或性质的事项,在AI量化策略中,特征可以是换手率、市盈率、KDJ技术指标等等

AI量化策略的标注: 我们计算训练集数据所在时间阶段的每日目标值,比如按每日的未来N日收益率高低来定义股票的走势好坏等级,计算出每只股票未来N日收益率的好坏等级并标记在每只股票上。

  • 第四步:模型训练
    我们通过“好坏等级”对股票进行标注贴上标签,连同其所对应的特征值一起来构建训练模型,类比于上述我们获取了第一堆瓜的大小、颜色等特征数据以及对应切瓜验证其’“好坏”标签,总结出瓜的分类经验;

  • 第五步:预测
    用验证集数据来检验训练前面构建好的模型,即检验模型根据验证集的特征数据预测出的目标值(股票走势好坏等级)是否准确。这步类比于鉴瓜任务中根据第一堆瓜总结的鉴瓜经验用第二堆西瓜的大小、颜色等特征数据来判断预测瓜的好坏。

  • 第六步:回测
    将验证集的预测结果放入历史真实数据中检测,类比于鉴瓜过程中根据第二堆瓜预测出瓜的好坏最后进行切瓜验证。

因此,AI量化策略的构建过程也可以用流程图的方式表达如下:

认识了机器学习流程和AI量化策略流程,就能够理解BigQuant平台的BigStudio实验工作流。BigStudio实验工作流是AI量化策略在BigStudio上的可视化展示。一个典型的AI可视化量化策略流程图如下:

可视化.png1106x761 52.7 KB

简单划分:

 

具体而言:

  • 策略流程图的左支是训练集特征数据(features)的抽取训练集目标(label)的标注,标注结果和训练集特征数据通过合并和数据缺失值清洗处理,然后传给机器学习模型进行模型训练。

  • 策略流程图的右支是测试集特征数据的抽取,通过缺失值清洗处理,然后传给机器学习模型进行预测,这里机器学习模型采用StockRanker模型,是一个排序模型,预测的结果是每日的股票排名。

  • 这个排名列表即预测结果最后传给回测模块按一定的规则进行买卖模拟交易,进行检测。

以上就是一个AI量化策略构建大体流程,初学者可先尝试修改特征值来寻找有效因子,往往好的因子组合是策略成功的关键。

快来新建一个人工智能量化策略检测一下你的学习成果吧,在新建策略过程中,回想一下每一步操作对应我们上述的第几步,掌握后,你已经可以超越60%的传统交易员啦,快快行动起来!

深入浅出 1 - AI量化策略快速理解的更多相关文章

  1. 数字货币期货与现货JavaScript量化策略代码详解汇总

    1.动态平衡策略 按照当前的 BTC 的价值,账户余额保留¥5000 现金和 0.1个 BTC,即现金和BTC 市值的初始比例是 1:1. 如果 BTC 的价格上涨至¥6000,即 BTC 市值大于账 ...

  2. 快速理解高性能HTTP服务端的负载均衡技术原理(转)

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  3. 三分钟玩转微软AI量化投资开源库QLib

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 微软QLib简介 微软亚洲研究院发布了 AI 量化投资开源平台"微矿 Qlib".Q ...

  4. Beam Search快速理解及代码解析

    目录 Beam Search快速理解及代码解析(上) Beam Search 贪心搜索 Beam Search Beam Search代码解析 准备初始输入 序列扩展 准备输出 总结 Beam Sea ...

  5. 【转】快速理解Kafka分布式消息队列框架

     from:http://blog.csdn.net/colorant/article/details/12081909 快速理解Kafka分布式消息队列框架 标签: kafkamessage que ...

  6. Spark机器学习 Day2 快速理解机器学习

    Spark机器学习 Day2 快速理解机器学习 有两个问题: 机器学习到底是什么. 大数据机器学习到底是什么. 机器学习到底是什么 人正常思维的过程是根据历史经验得出一定的规律,然后在当前情况下根据这 ...

  7. 快速理解web语义化

    什么是Web语义化 Web语义化是指使用恰当语义的html标签.class类名等内容,让页面具有良好的结构与含义,从而让人和机器都能快速理解网页内容.语义化的web页面一方面可以让机器在更少的人类干预 ...

  8. 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...

  9. 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

    原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...

随机推荐

  1. [JOISC2014]スタンプラリー

    [JOISC2014]スタンプラリー 题目大意: 有\(n(n\le3000)\)个车站,另有一个起点站和终点站,所有车站排成一条链,相邻两个车站之间的距离为\(t\).每个车站都有一个上行站台.一个 ...

  2. Mysql中大数据类型的存取

    标准SQL中提供了八种大数据类型 上面四种是针对字节数据(二进制字符串类型,主要存储图片.音频信息等),下面四种是针对字符数据(非二进制字符串类型,纯文本文件). MySql中不使用标准SQL中针对字 ...

  3. js 基本包装类型 String

    为了操作基本类型值,ECMAScript提供了三个特殊的引用类型: Boolean , Number , String 举例: var s1 = "some text"; var ...

  4. YIi url美化

    一.Yii Url美化,配置urlManager组件 'urlManager' => [ 'enablePrettyUrl' => true, // 开启URL美化,可以去掉 index. ...

  5. json串转化成xml文件、xml文件转换成json串

    1.json串转化成xml文件 p=[{"name":"tom","age":30,"sex":"男" ...

  6. vue使用element-ui的el-input监听不了回车事件

    原因 今天在使用element-ui时,el-input组件监听不了回车事件,如下代码没有想要的效果: <el-input class="search-input" plac ...

  7. mysql:Cannot proceed because system tables used by Event Scheduler were found damaged at server start

    mysql 5.7.18 sqlyog访问数据库,查看表数据时,出现 Cannot proceed because system tables used by Event Scheduler were ...

  8. django之Ajax初识

    Ajax准么说是用于Javascript与服务器端进行交互的,我们之前呢没有了解ajax也同样可以完成与服务器的交互,那么ajax的优势在哪里?首先ajax是异步交互的也就是说我们基本不会遇到卡顿现象 ...

  9. Delphi 获取当前鼠标下的控件内容

    Delphi 获取当前鼠标下的控件内容 主要函数: GetCursorPos://获取鼠标的位置 WindowFromPoint://获取制定point下的handle GetClassName:// ...

  10. [CentOS7]redis设置开机启动,设置密码

    简介 上篇文章介绍了如何安装redis,但每次重启服务器之后redis不会自启,这里将介绍如何进行自启设置,以及如何设置redis的密码,进行密码验证登陆. 上篇文章: Centos7安装Redis ...