网站设计怎么学,制定 网站改版优化方案,微网站建设需付费吗,wordpress如何更换主题五、模型训练股票预测
完成了数据处理#xff0c;接下来就可利用平台集成的各算法进行模型训练和模型预测啦。本文将详细介绍“模型训练”、“模型预测”两大模块操作、原理。
模型训练和模型预测是AI策略区别于传统量化策略的核心#xff0c;我们通过模型训练模块利用训练…五、模型训练股票预测
完成了数据处理接下来就可利用平台集成的各算法进行模型训练和模型预测啦。本文将详细介绍“模型训练”、“模型预测”两大模块操作、原理。
模型训练和模型预测是AI策略区别于传统量化策略的核心我们通过模型训练模块利用训练集因子和标注数据构建一个模型并通过模型预测模型将预测集的因子数据输入模型进行预测。 在模块列表的 机器学习 、 深度学习 下可找到众多AI算法可根据需要选择对应算法做训练和预测。本文以BigQuant专为量化开发的有监督性机器学习算法StockRanker为例用 StockRanker训练 模块来训练模型用 StockRanker预测 模块来做出股票预测。
操作流程
添加模块
第一步在模块列表搜索框中输入“StockRanker”在 机器学习 下找到 StockRanker训练 、 StockRanekr预测 模块并拖入画布。 连接StockRanker模块
第二步将训练集的 缺失数据处理 和 输入特征列表 连接至 StockRanker训练 模块。 运行训练模块
第三步选中 StockRanker训练 模块保持默认设置右键 运行选中模块 。 StockRanker算法原理、模块属性参数含义请继续查看下文。
右键查看结果1 可观察训练好的模型StockRanker为决策树样子。如下图所示可以看到有20个决策树每个节点表示决策树的分支条件每个分支都会依据各自的条件根据预测集中每只股票的因子数据进行打分。最终将所有决策树的打分结果汇总得到每只股票的得分和排序。 再右键 查看结果2 可观察各因子对此模型的贡献重要度分值(gain)。 连接至StockRanker预测
第四步将训练好的 StockRanker训练 和测试集的 缺失数据处理 模块连接至 StockRanker预测 运行预测模块
右键 查看结果1 可观察每日各股票的得分、排序即每日最值得买入的股票排序。 StockRanker算法介绍
StockRanker 算法专为量化而生核心思想是排序学习和梯度提升树。 如下图这个模型有20棵决策树组成每棵决策树最多有30个叶节点。给定一个样本每个决策树会对样本打分分数为样本根据判定条件到达的叶节点的值最后的分数是所有决策树打分的总和。决策树的结构、判定条件和叶节点的分数等等都是由算法在训练数据上学习出来的。将测试集数据喂给训练好的决策树则可得到测试集数据数据在该模型上的分数再根据分数形成股票排序、回归、分类预测指导后续的买入卖出。 StockRanker模块参数说明
输入数据1训练数据如本例中由 缺失数据处理 模块输出的含因子数据、标注数据的训练数据。
输入数据2因子列表。
学习算法StockRanker下包含排序、回归、二分类、logloss四种优化算法默认为排序。
叶节点数量如上图决策树中每棵树最大叶节点数量。一般情况下叶子节点越多则模型越复杂表达能力越强过拟合的可能性也越高默认值是30。
每叶节点最小样本每个叶节点最少需要的样本数量一般值越大泛化性性越好默认值是1000。
树的数量如上图决策树中树的数量。一般情况下树越多则模型越复杂表达能力越强过拟合的可能性也越高默认值是20。
学习率学习率如果太大可能会使结果越过最优值如果太小学习会很慢默认值是0.1。
特征值离散化数量离散化即在不改变因子即特征数据相对大小的前提下对数据进行相应的映射减小复杂度。离散化数量越大数据复杂度越高过拟合的可能性也越高默认值是1023。
特征使用率在构建每一颗树时每个特征即因子被使用的概率如果为1则每棵树都会使用所有特征默认值是1。
输出数据1训练好的模型
输出数据2各因子对模型的贡献度StockRaner预测模块说明
输入数据1训练好的模型
输入数据2测试数据集
输出数据1预测结果。即每日各股票的得分、顺序。小结至此完成了 模型训练 和 股票预测 接下来就可利用预测好的股票进行买入卖出计算并评估对应的收益、风险。
六、策略回测
完成了模型训练和股票预测生成的股票排序应该在何时买入卖出行情突变怎么止盈止损交易费、成交率等怎么设置这些都在“回测”模块中找到答案。
如下图所示在AI策略开发中回测通常是策略构建的最后一步通过Trade模块实现。回测是利用测试集数据的模型预测结果编写策略并用测试集的历史数据对策略进行校验的过程。 AI策略的编写思路是利用AI模型的预测结果构建买卖交易逻辑根据AI模型的类别不同利用模型预测值构建的交易逻辑也不尽相同。例如本例的AI模板策略中根据每日股票的排序预测值构建买卖逻辑每天卖出持仓中预测排名靠后的股票并买入当日预测排名靠前的股票。
回测机制简介 BigQuant交易引擎把每一个K线当做一个事件按照时间发生先后顺序即从左往右依次运行。
具体而言回测程序在第一根K线上会依次调用初始化函数、数据准备函数、盘前处理函数和主函数从第二根K线起的每根K线会依次调用盘前处理函数和主函数。 注意最左侧黑色箭头表示只会在第一根K线会执行一次初始化函数。而每根K线上的灰箭头代表每根K线都会执行一次主函数。
函数详解 初始化函数通常设置手续费、滑点、买卖股票数量、换仓周期等全局变量。
数据准备函数通常计算交易所需的信号、每日交易的股票列表等变量。
盘前处理函数通常编写订单的撤销/更改等订单处理逻辑。
主函数通常编写策略的换仓买卖、风险控制等核心交易逻辑。
如下图所示在回测模块的属性栏中可以看到对应函数的编写位置
每根K线回调细节见下图 回测步骤
添加Trade模块
第一步 在模块列表的 回测与交易 下找到 Trade(回测/模拟) 模块并拖入画布。 连接模块
第二步将 证券代码列表 和 StockRanker预测 模块连接至 Trade(回测/模拟) 。注意输入端 Trade(回测/模拟) 第一个输入端只接收 证券代码列表 。 Trade参数属性设置
第三步选中 Trade(回测/模拟) 可在左侧属性栏更改初始资金、回测价格类型、成交率等交易参数在主函数、数据准备函数、初始化函数中更改交易逻辑。我们先保持默认设置。 Trade(回测/模拟)模块参数
交易参数设置
开始时间start_date (str)设定值只在回测模式有效在模拟实盘模式下为当前日期。一般不需要指定自动继承证券代码列表模块里的开始日期。
结束时间end_date (str)设定值只在回测模式有效在模拟实盘模式下为当前日期。一般不需要指定自动继承证券代码列表模块里的结束日期。
成交率限制执行下单时控制成交量。设置为不进行成交量检查 默认值是0.025下单量如果超过该K线成交量的0.025多余的订单量会自动取消。
买入点在何时下单买入。open开盘买入close收盘买入可选值有: ‘open’‘close’默认值是’open’。
卖出点在何时下单卖出。open开盘卖出close收盘卖出可选值有: ‘open’‘close’默认值是’close’。
初始资金默认值是1000000.0。
自动取消无法成交订单是否自动取消因为停牌、一字涨跌停等原因不能成交的订单默认值是True。
回测数据频率股票、期货暂只支持日线、分钟级回测。
可选值有: ‘daily’和’minute’默认值是daily。
回测价格类型回测中买卖下单使用的价格 支持真实价格或后复权(默认值)价格回测。
回测产品类型交易品种类型可选值有股票、期货默认为股票。
基准代码策略比较基准不影响回测结果一般传入指数代码如000300.HIX(沪深300) 。更多A股指数代码请查看A股指数代码表。
主函数
[回调函数]主函数必须实现的函数该函数每个单位时间(每根K线)会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次。在回测中可以通过对象data获取单只股票或多只股票的时间窗口价格数据。如果算法中没有schedule_function函数那么该函数为必选函数。一般策略的交易逻辑和订单生成体现在该函数中默认值是None。
数据准备函数
[回调函数]数据准备函数运行过程中只调用一次在initialize前调用准备交易中需要用到数据默认值是None。
初始化函数
[回调函数]初始化函数整个回测中只在最开始时调用一次用于初始化一些账户状态信息和策略基本参数context也可以理解为一个全局变量在回测中存放当前账户信息和策略基本参数
盘前处理函数
[回调函数]盘前处理函数每日开盘前调用一次。该函数是可选函数在handle_data函数之前运行。你的算法可以在该函数中进行一些数据处理计算比如确定当天有交易信号的股票池。
看不懂回测模块? 请移步回测模块详解看不懂策略的逻辑 请移步AI模板策略交易逻辑解读
运行并查看结果
第四步点击右上角 运行全部 等待策略回测完成并查看分析结果。 生成的回测曲线和回测结果如何解读查看下篇教程查看、分析结果
常见问题
编写策略并回测是策略构建中的核心内容我们将常用功能和模板案例进行了归纳整理主要包括
1.如何设置股票买卖比例2.如何设置手续费和滑点3.如何设置策略固定周期运行?4.如何设置持仓股票持有固定天数后卖出?5.如何设置下单数量为整百6.如何实现大盘风控7.如何实现个股的止盈止损
如果有上述策略开发方面的疑惑请移步宽客学院查看自定义买入卖出专题
小结至此完成了策略构建基本步骤。在构建策略后通常还需要对策略进行反复的评价、优化、测试才算完成策略开发。
七、查看、分析结果
当策略回测完成时系统会输出包含各种指标的收益曲线图但可能因对这些指标的释义和内容不太熟悉导致无法准群判断策略好坏本文从回测各指标概念入手希望可以帮助大家更好地理解策略回测结果。
当完成一个策略回测时会得到如下图形包含 收益概况 、 交易详情 、 每日持仓和收益 、 输出日志 。接下来我们详细介绍这几个部分。 收益概况及指标含义
收益概况以曲线图的方式显示了策略在时间序列上的收益率。红色曲线为 策略收益率 蓝色为 基准收益率 (默认的基准设置是沪深300指数)。绿色曲线为 持仓占比 10%的持仓占比表示账户里股票市值占账户总资产的10%。 可通过缩放、拖动下方时间轴控件或在右上角填入起止时间来查看不同时间段的曲线走势。
不仅如此衡量一个策略好坏的关键指标在收益概况页面也充分展示出来了。各指标含义如下
收益率
Total Returns**
策略整个回测时间段上的总收益率。比如如果收益率为30%表明起始时间是1万的本金结束时间本金就变成1.3万了一共赚了3000元。计算公式如下该值越大越好。 年化收益率
(Total Annualized Returns)
该策略每一年的收益率。比如如果回测时间段为2年总收益率为30%那么每年的年化收益率就在15附近不考虑复利。计算公式如下该值越大越好。 基准收益率
(Benchmark Returns)
策略需要有一个比较基准比较基准为沪深300。若基准收益率为15%表明在整个回测时间段大盘本身就上涨了15%如果策略收益率小于基准收益率说明策略表现并不好连大盘都没有跑赢。计算公式如下。 阿尔法
(Alpha)
投资中面临着系统性风险(即$Beta$)和非系统性风险(即$Alpha$)$Alpha$是投资者获得与市场波动无关的回报。比如投资者获得了15%的回报其基准获得了10%的回报那么Alpha或者价值增值的部分就是5%。计算公式如下该值越大越好。 Alpha值解释
α0 策略相对于市场获得了超额收益
α0 策略相对于市场获得了适当收益
α0 策略相对于市场获得了较少收益
贝塔
(Beta)
表示投资的系统性风险反映了策略对大盘变化的敏感性。例如一个策略的$Beta$为1.5则大盘涨1%的时候策略可能涨1.5%反之亦然如果一个策略的$Beta$为-1.5说明大盘涨1%的时候策略可能跌1.5%反之亦然。计算公式如下该值的绝对值越小越好。 Beta值解释
β0 投资组合和基准的走向通常反方向如空头头寸类
β0 投资组合和基准的走向没有相关性如固定收益类
0β1 投资组合和基准的走向相同但是比基准的移动幅度更小
β1 投资组合和基准的走向相同并且和基准的移动幅度贴近
β1 投资组合和基准的走向相同但是比基准的移动幅度更大
夏普比率
表示每承受一单位总风险会产生多少的超额报酬可以同时对策略的收益与风险进行综合考虑。可以理解为经过风险调整后的收益率。计算公式如下该值越大越好。 胜率
(Winning Percentage)
衡量策略盈利一指标。比如10次投资中有8次获利胜率就是80%。计算公式如下该值越大越好。 盈亏比
(The profit and coss ratio)
盈亏比是在投资市场里每次交易的盈利和亏损的比例。计算公式如下该值越大越好 。 收益波动率
(Volatility)
收益率的标准差用来测量策略的风险性波动越大代表策略风险越高。计算公式如下该值越小越好。 信息比率
(Information Ratio)
衡量单位超额风险带来的超额收益。信息比率越大说明该策略单位跟踪误差所获得的超额收益越高因此信息比率较大的策略的表现要优于信息比率较低的基准。合理的投资目标应该是在承担适度风险下尽可能追求高信息比率。计算公式如下该值越大越好。 最大回撤
Max Drawdown
策略在整个时间段上亏损最严重的时候相比净值最高值下跌的百分比。如果最大回撤为20%表明策略在某个时间点上相比之前的净值最高。计算公式如下该值越小越好。 交易详情
交易详情主要显示了策略在整个回测过程中每个交易日的买卖信息。包括买卖时间、股票代码、交易方向、交易数量、成交价格、交易成本。具体见下图 可以通过右下角的下载交易详情按钮下载数据到本地进行查看。
每日持仓及收益
每日持仓及收益主要呈现每日持有股票代码、当日收盘价、持仓股票数量、持仓金额、收益等指标。具体见下图 可以通过右下角的下载持仓详情按钮下载数据到本地进行查看。 需要注意的是这个表中的收益是指每只股票按当日收盘价结算的浮动收益而不是该只股票真实卖出后的收益因为卖出后的股票就不在持仓列表中了。策略总收益并不等于此列数据的总和
输出日志
输出日志主要为策略运行过程中的一些日志。包括涨跌停股票不能交易、停牌估计不能交易等。该日志可以便于我们检查回测结果的正确性。 如图所示展示了每笔订单的执行时间和具体标的代码以及订单的成交状态。
至此已能初步判断判断策略效果好坏。但回测结果是否可靠是否按照股票得分排序买入交易参数是否真实有无偷价漏价情形此类情况均可参考下方高阶教程进行校验。
回测数据深入分析
策略收益风险分析
八、模拟实盘
开发好一个策略且回测收益、风险都达到目标下一步该做什么呢本文将详细介绍怎么将开发好的策略通过模拟交易推送每日交易信号。
提交模拟实盘
分享策略
第一步开发出好策略后在开发界面右上角点击 分享策略。 重要的事说三遍在点击开始交易前请检查 由于模拟交易需要实现每天更新预测集数据来预测最新日的结果因此测试集的证券代码列表的开始日期和结束日期请务必确认已经勾选了绑定实盘参数 1.由于我们训练好的模型通常不希望每天变化因此训练集的证券代码列表的开始日期和结束日期请务必确认已经取消了绑定实盘参数
2.由于模拟交易需要实现每天更新预测集数据来预测最新日的结果如果您的因子计算需要历史数据例如过去5日收盘价的平均值那么除了当日的收盘价因子数据外必然需要历史前4个交易日的收盘价因子因此请检查基础特征抽取模块的参数向前取数据天数这个参数是否设置的足够长(例如取10),否则是无法计算当天的过去5日收盘价这个因子值的会导致模拟交易报错 3.简单测试模拟交易是否能运行。为了保证策略在模拟交易环境能正常运行可以在提交模拟交易前简单测试一下策略是否能在模拟交易运行成功。预测集时间更改为最近的一天再运行回测观测回测运行结果。
模拟交易
第二步选择 模拟交易点击 下一步。 设置策略名称与实盘类型
第三步输入策略名称选择实盘类型暂只支持股票点击 下一步。 绑定微信
第四步至此提交模拟交易成功。扫描 BigQuant公众号 绑定微信 实时接收调仓信号强烈建议绑定。 查看模拟交易详情
模拟交易表
第一步在导航栏点击 我的交易 查看提交的所有模拟交易详情。 模拟交易表中各字段含义 类型模拟交易类型暂只支持股票。 状态表明该策略是否处于模拟交易运行中可通过操作中的 开始/暂停 按钮控制。 累计收益从开始模拟至今的所有收益。 今日收益最近一个交易日的当日收益。 开始时间策略是什么时候开始进行模拟交易的 调仓通知-微信表明是否开启微信订阅功能开启之后每日在微信上将收到策略调仓信号。可点击开启、关闭 调仓通知-邮件表明是否开启邮件订阅功能开启之后每日在邮件里将受到策略调仓信号。可点击开启、关闭。 分享表明是否将策略分享至 策略天梯 供其他人查看、付费订阅。 操作有三个按钮为 开始/暂停、删除 。开始表明开始或重新运行该策略暂停表明暂停运行该策略删除是将策略从模拟交易中永久删除一旦删除不可恢复请谨慎操作。
交易详情
第二步点击某个 策略名称 查看该模拟交易详情包括
整体指标、收益走势、计划交易即调仓信号、持仓详情、交易详情、卖出详情、风险指标、策略日志等。 查看每日调仓信号
在 我的交易 中查看
在 BigQuant 访问 我的交易在某交易详情页中查看 计划交易 信息。 通过微信、邮箱查看
打开模拟交易的 微信调仓信号 邮箱调仓信号 通过微信、邮件消息查看。 通过API查看
通过 模拟交易API 获取交易信号并与实盘对接
使用方式请查看通过API获取自己/订阅的模拟交易持仓数据。
模拟交易运行时间
对于日线策略每个交易日收盘后BigQuant会立即更新数据再利用最新数据运行所有用户的模拟交易一般会从17:00持续到23:00。每个用户的模拟交易运行成功、失败均会推送对应的调仓信号、成功失败消息。用户可通过 模拟交易详情、 微信调仓信号 、 邮件调仓信号、 模拟交易API 等多种方式获取每日调仓信号及相关收益、风险信息。为了消息的及时接收小编强烈建议您 绑定微信、邮箱 。
小结至此分享了 策略开发的整体思路、常用功能。有任何功能使用、量化思路、AI技术相关的疑问均可社区提问、讨论。