1、谨请参阅尾页重要声明及华泰证券股票和行业评级标准 1 证券研究报告证券研究报告金工研究/深度研究 2019年04月22日 林晓明林晓明 执业证书编号:S0570516010001 研究员 0755-82080134 陈烨陈烨 执业证书编号:S0570518080004 研究员 010-56793942 李子钰李子钰 0755-23987436 联系人 何康何康 021-28972039 联系人 1金工金工:机器学习选股模型的调仓频率实证机器学习选股模型的调仓频率实证2019.04 2金工金工:市值因子收益与经济结构的关系市值因子收益与经济结构的关系2019.03 3金工金工:人工智能选股之数据
2、标注方法实证人工智能选股之数据标注方法实证2019.03 偶然偶然中的必然中的必然:重采样技术重采样技术检验检验过拟合过拟合 华泰人工智能系列之十九Bootstrap 是一种可行的构建“平行是一种可行的构建“平行 A 股市场”的重采样方法股市场”的重采样方法 Bootstrap 是一种可行的构建“平行 A 股市场”的重采样方法,能够模拟机器学习不同环节的随机性,从而检验在真实 A 股市场中得出的研究结论是否为过拟合。我们分别对样本内数据、样本外数据和回测时间进行Bootstrap 重采样,发现在“平行 A 股市场”中分组时序交叉验证方法的模型性能和单因子回测指标均优于其它两种方法,统计检验结果
3、显著。真实世界的研究结论能够在平行世界中复现,表明该结论为过拟合的可能性较低。我们借助“偶然”的工具,探寻出“必然”的规律。Bootstrap 重采样的核心重采样的核心思想思想是有放回地抽样是有放回地抽样 Bootstrap 是一种统计学上的重采样方法,又称自举法,主要用于研究统计量的统计特性。该方法的核心思想是有放回地抽样。对原始数据集进行有放回地抽样,得到 N 组 Bootstrap 数据集。每组 Bootstrap 数据集中,有的样本可能被重复抽到,有的样本没有被抽到。计算每一组 Bootstrap 数据集的统计量,将得到 N 组 Bootstrap 数据集的该统计量的分布,进而得到该统
4、计量的统计量。Bootstrap 重采样重采样对机器学习量化研究体系的构建具有指导意义对机器学习量化研究体系的构建具有指导意义 Bootstrap 重采样对机器学习量化研究体系的构建具有指导意义。机器学习量化策略开发和传统量化策略开发的重要区别在于,机器学习研究的复杂度、其所涉及的环节、超参数和参数数量远超传统量化研究,任何环节随机性的引入,对最终整个系统都可能造成类似蝴蝶效应式的影响。本文采用 Bootstrap 模拟不同环节的随机性,系统性地评估随机性对机器学习结果的影响方向和影响程度。机器学习不同环节随机性对模型表现的影响各异机器学习不同环节随机性对模型表现的影响各异 三种 Bootst
5、rap 方案对同一组交叉验证方法的影响方向和程度有区别。Bootstrap 样本内数据集相当于向训练集因子值添加小幅扰动,可能小幅削弱模型表现;Bootstrap 样本外数据集相当于向测试集因子值添加小幅扰动,可能部分增强或削弱模型表现;Bootstrap 回测时间即改变模型的回测时间段,可能大幅增强或削弱模型表现。上述结果对研究者的启示是在开发过程中需要密切关注训练数据的质量,同时应避免因回测时间选择不当而造成的误判。Bootstrap 提供刻画随机性的思路,提供刻画随机性的思路,使研究者能使研究者能基于指标分布基于指标分布进行进行决策决策 在以往的量化模型开发过程中,通常将历史回测表现视作
6、确定性的结果,而忽略随机性对结果的影响。在面临不同量化策略的取舍之时,往往只是简单基于策略的年化收益率、夏普比率、收益回撤比等评价指标。Bootstrap重采样方法提供了一种刻画随机性的思路,使研究者能够基于评价指标的统计分布而非单个统计量,对模型优劣做出相对客观的判断和决策。本文从方法论的角度,对结合机器学习的多因子选股框架进行反思,针对模型比较和模型评价环节提出创新式的改造,希望对本领域的投资者有所启发。风险提示:人工智能选股方法是对历史投资规律的挖掘,若未来市场投资环境发生变化,该方法存在失效的可能。机器学习选股模型随机性的来源多样,本研究只考虑有限的三种情况,存在忽略其它更重要随机性来
7、源的可能。Bootstrap 重采样方法是对随机性的简单模拟,存在过度简化的可能。相关研究相关研究 2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 2 正文目录正文目录 本文研究导读.5 采用 Bootstrap 重采样构建“平行世界”.6 问题的提出:回测过拟合的困境.6 Bootstrap 重采样方法.6 Bootstrap 和机器学习的关系.8 构建“平行 A 股市场”.8 方法.11 考察对象:三组交叉验证调参方法.11 人工智能选
8、股模型测试流程.12 单因子测试.15 回归法和 IC 值分析法.15 分层回测法.15 结果.16 方案 1:对样本内数据集进行 Bootstrap 重采样.16 模型性能.16 回归法和 IC 值分析法.17 分层回测法.17 方案 2:对样本外数据集进行 Bootstrap 重采样.19 回归法和 IC 值分析法.19 分层回测法.20 方案 3:对回测时间进行 Bootstrap 重采样.21 回归法和 IC 值分析法.21 分层回测法.22 三种 Bootstrap 重采样方案的横向比较.23 回归法和 IC 值分析法.23 分层回测法.24 结果汇总以及回测过拟合风险的定量刻画.2
9、4 总结.26 风险提示.27 图表目录图表目录 图表 1:回测过拟合困境示意图.6 图表 2:Bootstrap 重采样方法示意图.7 图表 3:Bootstrap 方法计算 2019 年 4 月 1 日 A 股非停牌个股平均涨跌幅均值及标准差.7 图表 4:机器学习选股问题中随机性的来源和对应的 Bootstrap 方案.9 2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 3 图表 5:方案 1:对样本内数据集进行 Bootstrap
10、重采样示意图.9 图表 6:方案 2:对样本外数据集进行 Bootstrap 重采样示意图.10 图表 7:方案 3:对回测时间进行 Bootstrap 重采样示意图.10 图表 8:两组交叉验证方法相对于 K 折 AUC 之差累积值.11 图表 9:两组交叉验证方法相对于 K 折 Rank IC 之差累积值.11 图表 10:基线模型 1:K 折交叉验证示意图(K=5).12 图表 11:基线模型 2:乱序分组递进式交叉验证示意图(折数=5).12 图表 12:推荐模型:分组时序交叉验证示意图(折数=5).12 图表 13:人工智能选股模型测试流程示意图.12 图表 14:选股模型中涉及的全
11、部因子及其描述.13 图表 15:年度滚动训练示意图.14 图表 16:模型历年滚动训练最优超参数.14 图表 17:Bootstrap 样本内数据集的样本内正确率分布.16 图表 18:Bootstrap 样本内数据集的样本内 AUC 分布.16 图表 19:Bootstrap 样本内数据集的样本外正确率分布.16 图表 20:Bootstrap 样本内数据集的样本外 AUC 分布.16 图表 21:Bootstrap 样本内数据集的回归法|t|均值分布.17 图表 22:Bootstrap 样本内数据集的回归法 t 均值分布.17 图表 23:Bootstrap 样本内数据集的回归法因子收
12、益率均值分布.17 图表 24:Bootstrap 样本内数据集的 Rank IC 均值分布.17 图表 25:Bootstrap 样本内数据集的分层回测法多空组合年化收益率.18 图表 26:Bootstrap 样本内数据集的分层回测法多空组合夏普比率.18 图表 27:Bootstrap 样本内数据集的分层回测法 Top 组合年化收益率.18 图表 28:Bootstrap 样本内数据集的分层回测法 Top 组合夏普比率.18 图表 29:Bootstrap 样本内数据集的分层回测多空组合净值展示(回测期:2011013120190131).18 图表 30:Bootstrap 样本外数据
13、集的回归法|t|均值分布.19 图表 31:Bootstrap 样本外数据集的回归法 t 均值分布.19 图表 32:Bootstrap 样本外数据集的回归法因子收益率均值分布.19 图表 33:Bootstrap 样本外数据集的 Rank IC 均值分布.19 图表 34:Bootstrap 样本外数据集的分层回测法多空组合年化收益率.20 图表 35:Bootstrap 样本外数据集的分层回测法多空组合夏普比率.20 图表 36:Bootstrap 样本外数据集的分层回测法 Top 组合年化收益率.20 图表 37:Bootstrap 样本外数据集的分层回测法 Top 组合夏普比率.20
14、图表 38:Bootstrap 样本外数据集的分层回测多空组合净值展示(回测期:2011013120190131).21 图表 39:Bootstrap 回测时间的回归法|t|均值分布.21 图表 40:Bootstrap 回测时间的回归法 t 均值分布.21 图表 41:Bootstrap 回测时间的回归法因子收益率均值分布.22 图表 42:Bootstrap 回测时间的 Rank IC 均值分布.22 图表 43:Bootstrap 回测时间的分层回测法多空组合年化收益率.22 2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/
15、深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 4 图表 44:Bootstrap 回测时间的分层回测法多空组合夏普比率.22 图表 45:Bootstrap 回测时间的分层回测法 Top 组合年化收益率.22 图表 46:Bootstrap 回测时间的分层回测法 Top 组合夏普比率.22 图表 47:三种 Bootstrap 方案分组时序模型回归法|t|均值横向比较.23 图表 48:三种 Bootstrap 方案分组时序模型回归法 t 均值横向比较.23 图表 49:三种 Bootstrap 方案分组时序模型因子收益率均值横向比较.23 图表
16、 50:三种 Bootstrap 方案分组时序模型 Rank IC 均值横向比较.23 图表 51:三种 Bootstrap 方案分组时序模型多空组合年化收益横向比较.24 图表 52:三种 Bootstrap 方案分组时序模型多空组合夏普比率横向比较.24 图表 53:三种 Bootstrap 方案分组时序模型 Top 组年化收益横向比较.24 图表 54:三种 Bootstrap 方案分组时序模型 Top 组夏普比率横向比较.24 图表 55:三组交叉验证方法在三种 Bootstrap 方案下的回测表现与真实回测表现.25 图表 56:三组交叉验证方法在三种 Bootstrap 方案下回测
17、表现的单因素方差分析及排序结果.25 2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 5 本文本文研究研究导读导读 世界上几乎唯一可以确定的事情是不确定性。在自然科学领域,小到微观世界里粒子的高速运动,大到宏观世界里生物的漫长演化,无不受随机性这双看不见的手的摆布。在社会科学领域,无数遵从随机性的个体经由随机的连接和交互,构成一张复杂的巨型网络,派生出种种纷繁多彩的社会现象。一代代人类穷尽心智,透过随机性的迷雾试图认识和理解世间万象。现代科
18、学经过数百年的发展,已被公认为理解世界最有力的武器之一。科学的本质特征是可证伪性。“所有天鹅是白色的”这一命题本身是错误的,但是其命题的表述是科学的,原因在于该命题可以通过“找出一只黑天鹅”加以证伪。然而,由于随机性的存在,大部分科学命题并不能简单通过找反例的方式证伪。例如想证伪“吸烟者寿命更长”并不容易,吸烟对健康的影响机制过于复杂,该命题仅仅是一个模糊的、概率上的表述。单纯找出一个寿命较短的烟民并没有多大的说服力,人们需要借助统计学的工具,透过“偶然”的外衣一窥“必然”的真相。研究随机性的统计学是现代科学的基石之一。统计学是如何解决上述问题的呢?首先定义“吸烟者寿命更长”为虚无假设,“吸烟
19、者寿命不会更长”为备择假设。其次对烟民和非烟民进行随机抽样,样本量尽可能大,并且尽量控制其它影响寿命的因素。进而对两类人群的寿命分布进行定性比较和定量统计检验,计算虚无假设成立的概率(p 值)。最终在一定显著性水平下拒绝或接受虚无假设,作出相应推断。以上例子只是相对简化的表述,实际上可以通过更精巧的设计、更复杂的统计模型作出更准确的论断。但无论其模型多么繁复,本质仍是基于大量样本结合统计模型,以推断虚无假设成立的概率。尽管 p 值的使用近年来在学术界备受质疑,上述比较随机变量分布并进行统计检验的思路仍是目前人们从偶然中发现必然的几乎是最有力的工具。令人稍感意外的是,在量化投资领域,研究者在优质
20、量化策略的求索之路上,却似乎遗忘了随机性的存在,将历史回测表现视作确定性的结果。在面临不同量化策略的取舍之时,往往只是简单基于策略的年化收益率、夏普比率、收益回撤比等评价指标。例如策略 A 的夏普比率比策略 B 更高,我们便舍弃策略 B,选择策略 A。然而,金融市场是一个开放复杂的巨系统,只需要随机性的手稍加摆弄(例如样本内、外数据集的轻微改变),回测结果就可能大相径庭。我们所有的观测以及得到的结论,都是基于确定性的历史,都是针对我们所生活的真实世界。如果这些结论在与真实世界相仿的“平行世界”里不成立,那么我们就有理由认为,这些结论只是针对真实世界的过拟合。更值得忧虑的是,上述问题在人工智能量
21、化研究领域都会被放大。机器学习量化策略开发和传统量化策略开发的重要区别在于,机器学习研究的复杂度、其所涉及的环节、超参数和参数数量远超传统量化研究,任何环节随机性的引入,对最终整个系统都可能造成类似蝴蝶效应式的影响。然而不同环节随机性对结果的影响程度,尚没有被系统性的研究过。例如,我们观测到的一切选股因子值都是信号和噪音的叠加。如果训练集因子发生微小扰动,是否会大幅影响机器学习模型的训练结果?如果测试集因子发生微小扰动,是否会大幅影响机器学习策略的回测表现?如果上述问题的回答均为“是”,那么我们同样有理由认为,机器学习模型存在较大的过拟合风险。能否创造出和真实世界相仿的平行世界?能否将真实世界
22、中的结论放在平行世界中加以验证?能否借鉴统计检验的思路,测量基于真实世界开发的量化策略出现过拟合的概率?作为针对上述问题的初次探索,本文采用基础的重采样方法Bootstrap,对多因子选股的月度截面数据进行重采样,创造出和真实 A 股市场相仿的若干组“平行 A 股市场”,并且以华泰金工人工智能 16:再论时序交叉验证对抗过拟合中的三组机器学习策略为考察对象,利用定性比较和定量统计检验方法考察各策略在平行 A 股市场中的表现,最终评估该研究得到的最优策略为过拟合的可能性。本文从方法论的角度,对结合机器学习的多因子选股框架进行反思,针对模型比较和模型评价环节提出创新式的改造,希望对本领域的投资者有
23、所启发。2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 6 采用采用 Bootstrap 重采样重采样构建“平行世界”构建“平行世界”问题的提出:回测过问题的提出:回测过拟合拟合的困境的困境 量化策略开发的过程中,对多组策略进行取舍时,大多依据回测阶段的业绩表现。例如策略 A 的夏普比率为 2,策略 B 的夏普比率为 1.5,策略 C 的夏普比率为 1,那么我们一般认为策略 A 优于策略 B、C。然而,回测阶段的良好表现可能源于一些偶然因素
24、,并非意味着该策略正确捕捉到了市场中的规律,回测阶段的最优策略在实盘阶段可能表现平平,如下图所示,我们将这种现象称为回测过拟合。图表图表1:回测回测过拟合过拟合困境困境示意图示意图 资料来源:华泰证券研究所 回测表现的差距究竟源于真实效果上的差异,还是源于一些偶然因素,我们很难做确切地归因。非不为也,实不能也。真实金融市场不存在“平行世界”,无法通过多次测量进行统计检验的方式,确认研究结论的真实性。Bootstrap 方法为我们提供了一个窗口,能够基于单个真实金融市场数据,模拟出众多金融市场数据的“平行世界”。假设模拟出 10000 组 A 股数据集,那么我们可以得到 10000组 A、B、C
25、 三组策略的夏普比率,基于三者的分布进行统计检验,进而推断“策略 A 优于策略 B、C”的研究结论究竟是由于模型正确捕捉到了市场中的规律,还是由于模型陷入了回测过拟合。Bootstrap 重采样重采样方法方法 Bootstrap 是一种统计学上的重采样方法,又称自举法,主要用于研究统计量的统计特性,从而检验统计结果的稳定性。其基本思想如下图所示。原始数据集的统计量(如均值)等能够很方便地得到,那么如何计算该统计量的统计量呢(如均值的标准差)?Bootstrap方法的核心思想是有放回地抽样。对原始数据集进行有放回地抽样,得到 N 组 Bootstrap数据集,N 通常需要大于 1000。计算每一
26、组 Bootstrap 数据集的统计量(如均值),将得到 N 组 Bootstrap 数据集的该统计量的分布,进而得到该统计量的统计量(如标准差)。0.511.522.50102030405060708090100110120130140150160170180190200单位:倍时间策略A策略B策略C(样本外)回测阶段(样本外)回测阶段实盘阶段实盘阶段“策略“策略A优于策略优于策略B、C”的研究结论可能为回测过拟合”的研究结论可能为回测过拟合如何衡量回测过拟合的可能性?如何衡量回测过拟合的可能性?2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5
27、1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 7 图表图表2:Bootstrap 重采样方法示意图重采样方法示意图 资料来源:华泰证券研究所 下面我们以具体的例子说明。我们希望研究 2019 年 4 月 1 日 A 股非停牌个股的平均涨跌幅,数据集 D 为 2019 年 4 月 1 日 A 股 3569 只非停牌个股的涨跌幅,求均值得到=3.6132%,那么均值的均值和标准差应该如何计算呢?图表图表3:Bootstrap 方法计算方法计算 2019 年年 4 月月 1 日日 A 股非停牌个股平均涨跌幅均值及标准差股非停牌个股平均涨跌
28、幅均值及标准差 资料来源:Wind,华泰证券研究所 首先对数据集进行有放回地抽样,从数据集中随机抽取一个样本,然后放回,再抽取一个样本,再放回,如此重复 3569 次,得到了一个包含 3569 只股票的新数据集 D1。注意到原始数据集 D 中有的股票可能被重复抽到,有的股票可能没有被抽到。我们将新数据集 D1称为一组 Bootstrap 数据集,求均值得到1。重复上述步骤,我们可以得到 N 组Bootstrap 数据集 D2,D3,DN,以及每组数据集的均值2,3,。假设重采样次数=10000,可以求出这 10000 个平均涨跌幅的均值:=11000010000=1=3.6138%020040
29、06008001000120014003.40%3.42%3.44%3.46%3.48%3.50%3.52%3.54%3.56%3.58%3.60%3.62%3.64%3.66%3.68%3.70%3.72%3.74%3.76%3.78%3.80%频次2019年4月1日A股非停牌个股平均涨跌幅真实值:x=3.6132%Bootstrap:x=3.61380.0369%(均值1倍标准差)真实值Bootstrap模拟值2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证
30、券股票和行业评级标准 8 标准差:SD()=110000 1()210000=1=0.0369%借助 Bootstrap 方法,我们从一个原始数据集衍生出了 N 个新的 Bootstrap 数据集。有的读者可能提出质疑:对原始数据集进行 Bootstrap 重采样后,得到的 Bootstrap 数据集中有的股票可能被反复抽到,有的股票没有被抽到,针对这样的“假数据集”计算均值有何意义?实际上,单个 Bootstrap 数据集的统计量确实没有多大意义,然而众多Bootstrap 数据集统计量构成的分布提供了有效的增量信息。以一个通俗的例子说明,一颗沙粒可能无足轻重,我们更关心聚沙成塔后那座塔的特
31、性。Bootstrap 和机器学习的关系和机器学习的关系 作为一种统计学方法,Bootstrap 和机器学习有何关系?我们试从两个层面回答。首先,从“术”的层面,Bootstrap 对机器学习算法能起到优化作用。Bootstrap 广泛应用于弱学习器的集成,这种集成方法也称为 Bagging。随机森林是经典的基于 Bagging 思想的集成学习模型之一,将大量决策树通过并行的方式集成。在训练每一棵决策树时,首先对原始数据集进行行采样和列采样,列采样即每一步分裂时仅从随机抽取的一部分特征中做出选择,行采样即对原始样本进行有放回地抽样,从而得到一个与原始数据集样本量相同的 Bootstrap 数据
32、集。最后将大量决策树通过少数服从多数的原则集成起来,实现随机森林的预测。这里每一棵树的训练只是基于不完整的 Bootstrap 数据集,学习能力相对较弱,其判断可能无足轻重,但是众木成林后,随机森林拥有更强的学习泛化能力。其次,从“道”的层面,Bootstrap 对机器学习量化研究体系的构建具有指导意义。机器学习量化策略开发和传统量化策略开发的重要区别在于,机器学习研究的复杂度、其所涉及的环节、超参数和参数数量远超传统量化研究,任何环节随机性的引入,对最终整个系统都可能造成类似蝴蝶效应式的影响。然而不同环节随机性对结果的影响程度,尚没有被系统性的研究过。例如,我们观测到的一切选股因子值都是信号
33、和噪音的叠加。如果训练集因子发生微小扰动,是否会大幅影响机器学习模型的训练结果?如果测试集因子发生微小扰动,是否会大幅影响机器学习策略的回测表现?我们需要借助工具评估不同环节随机性对结果的影响。本文将采用 Bootstrap 方法模拟这些随机性,构建一系列“平行 A 股市场”,考察机器学习量化模型在这些平行世界中的表现,对不同策略进行比较和取舍,检验策略是否陷入回测过拟合。下面章节我们将详细介绍构建平行 A 股市场的方法。构建“平行构建“平行 A 股市场”股市场”机器学习选股模型随机性的来源较为多样,我们试列举三种可能的来源,如下图所示。1.我们观测到的选股因子值是信号和噪音的叠加。假设个股的
34、因子值是服从某个特定分布的随机变量,真实世界里的观测值是该随机变量的采样,那么在另一些“平行 A 股市场”中,无论是样本内还是样本外数据集,相同个股的相同因子都可能取不同的值。样本内数据集因子值的随机噪音可能对模型训练环节造成影响。我们不希望因子的随机扰动使得训练得到的机器学习模型发生大幅改变。2.和第 1 点类似,样本外数据集因子值的随机噪音可能对模型回测环节造成影响。我们不希望因子的随机扰动使得机器学习策略的回测表现发生大幅改变。3.模型的回测表现和回测时间的选择密切相关。回测区间是牛市还是熊市占主导,是小市值风格还是从价值风格占主导,表现都会大相径庭。我们希望策略能够穿越不同市场环境,不
35、希望回测时间的选择对结果造成大幅影响。2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 9 图表图表4:机器学习选股问题中随机性的来源和对应的机器学习选股问题中随机性的来源和对应的 Bootstrap 方案方案 资料来源:华泰证券研究所 针对以上三种随机性的来源,我们尝试下列三种 Bootstrap 重采样构建“平行 A 股市场”的方案。1.针对样本内数据集的随机性,我们对样本内数据集进行 Bootstrap 重采样,具体如下图所示。对于样本
36、内的每个月底截面期,假设全 A 股票池有效个股数量(非停牌、非次新股、下月初非涨停)为 3600 只,那么我们对全 A 股票池进行有放回地抽样,重复 3600 次,得到一个包含 3600 只股票的 Bootstrap 股票池及其对应的截面期因子数据。相比于真实全 A 股票池,Bootstrap 股票池中有的股票可能重复抽到,有的股票可能没有被抽到。在随后机器学习的训练环节,该月底截面期的特征即为这 3600 只“新”股票的因子值。需要说明的是,Bootstrap 的重采样次数通常应大于 1000。但是考虑到研究的时间开销,本文将重采样次数 N 设为 100。我们发现 N=100 已经能够观察到
37、分布间的差异,并且得到具备一定统计效力的结果,细节请参考本文结果部分。图表图表5:方案方案 1:对样本内数据集进行:对样本内数据集进行 Bootstrap 重采样示意图重采样示意图 资料来源:华泰证券研究所 2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 10 2.针对样本外数据集的随机性,我们对样本外数据集进行 Bootstrap 重采样,具体如左下图所示。对于样本外的每个月底截面期,对全 A 股票池做有放回地抽样,得到 Bootstra
38、p股票池及其对应的截面期因子数据。在随后的回测环节,该月底截面期的特征即为这些“新”股票的因子值。图表图表6:方案方案 2:对样本外数据集进行:对样本外数据集进行 Bootstrap 重采样示意图重采样示意图 图表图表7:方案方案 3:对回测时间进行:对回测时间进行 Bootstrap 重采样示意图重采样示意图 资料来源:华泰证券研究所 资料来源:华泰证券研究所 3.针对回测时间的随机性,我们对回测时间进行 Bootstrap 重采样,具体如右上图所示。假设原始样本外数据集包含从 2011 年 1 月2018 年 12 月共 96 个月底截面期对应的回测月份(最后一个月底截面期 2018 年
39、12 月对应的回测月份为 2019 年 1 月),我们对于这96 个回测月份进行有放回地抽样,重复 96 次,得到一个包含新的 96 个回测月份的Bootstrap 回测时间。相比于原始的 96 个回测月份,Bootstrap 回测时间中有的月份可能被重复抽到,有的月份可能没有被抽到。我们随后基于这 96 个“新”回测月份进行机器学习模型的回测。需要指出的是,这 96 个新回测月份不存在严格的时序关系,即 Bootstrap回测时间段中靠前的月份在真实市场中所对应的月份并不一定靠前。2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深
40、度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 11 方法方法 考察对象考察对象:三组三组交叉验证调参方法交叉验证调参方法 我们希望采用 Bootstrap 方法模拟金融市场中的随机性,构建一系列“平行 A 股市场”,考察机器学习量化选股模型在这些平行世界中的表现,对不同策略进行比较和取舍,检验策略是否陷入回测过拟合。具体而言,本研究的考察对象是华泰金工人工智能 16:再论时序交叉验证对抗过拟合(20190218)中的三组交叉验证调参方法,分别为:K 折交叉验证、乱序分组递进式交叉验证、分组时序交叉验证。三组调参方法使用的基学习器相同,均为 XGBo
41、ost 模型,模型构建细节也相同,仅有的区别是通过调参最终选定的超参数不同。人工智能 16:再论时序交叉验证对抗过拟合的研究结论是:基于分组时序交基于分组时序交叉验调参方法得到的人工智能选股策略表现优于叉验调参方法得到的人工智能选股策略表现优于另外另外两种方法两种方法。本研究将检验上述结论是否存在回测过拟合。下面简单介绍待检验的结论。对于三组交叉验证方法,我们逐月计算模型性能(如 AUC)以及单因子测试表现(如 Rank IC)。为了突出方法间的差异,将乱序分组递进式和分组时序的 AUC 或 Rank IC 减去 K 折的 AUC 或 Rank IC,再对差值做累加。如果差的累积值稳定上升,那
42、么可认为该方法稳定优于 K 折;如果差的累积值维持在 0 轴,那么可认为该方法和 K 折没有差别。下图结果显示,分组时序表现优于乱序分组递进式,说明时序交叉验证带来的提升源于时序信息的保留;同时乱序分组递进式优于 K 折,说明使用更少样本也能部分提升模型表现。图表图表8:两组交叉验证方法相对于两组交叉验证方法相对于 K 折折 AUC 之差累积值之差累积值 图表图表9:两组交叉验证方法相对于两组交叉验证方法相对于 K 折折 Rank IC 之差累积值之差累积值 资料来源:Wind,华泰证券研究所 资料来源:Wind,华泰证券研究所 关于三种交叉验证调参方法的概念,本文不再赘述,感兴趣的读者请参考
43、华泰金工人工智能 14:对抗过拟合:从时序交叉验证谈起(20181128)和人工智能 16:再论时序交叉验证对抗过拟合(20190218)。简单而言:1.K 折交叉验证是经典的交叉验证方法,适用于独立同分布的非时间序列数据,应用于金融领域的时间序列数据存在过拟合风险,是本文的基线模型。2.乱序分组递进式交叉验证相比于 K 折使用更少样本,但是破坏时序信息,也是本文的基线模型。3.分组时序交叉验证是针对时间序列数据提出的改进,能一定程度上减轻过拟合,是本文推荐使用的模型。-0.0500.050.10.150.20.250.30.352011-022011-082012-022012-082013
44、-022013-082014-022014-082015-022015-082016-022016-082017-022017-082018-022018-08XGBoost模型累积AUC乱序分组递进式-K折分组时序-K折-0.100.10.20.30.40.50.60.72011-022011-082012-022012-082013-022013-082014-022014-082015-022015-082016-022016-082017-022017-082018-022018-08XGBoost模型累积Rank IC乱序分组递进式-K折分组时序-K折2 0 4 7 6 0 2 4/
45、3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 12 图表图表10:基线模型基线模型 1:K 折交叉验证示意图(折交叉验证示意图(K=5)图表图表11:基线模型基线模型 2:乱序分组递进式乱序分组递进式交叉验证示意图交叉验证示意图(折数(折数=5)资料来源:华泰证券研究所 资料来源:华泰证券研究所 图表图表12:推荐模型:推荐模型:分组时序交叉验证示意图(折数分组时序交叉验证示意图(折数=5)资料来源:华泰证券研究所 人工智能选股模型测试流程人工智能选股模型测试流程 图表
46、图表13:人工智能选股模型测试人工智能选股模型测试流程流程示意图示意图 资料来源:华泰证券研究所 本文选用 XGBoost 作为基学习器,测试流程包含如下步骤:1 数据获取:a)股票池:全 A 股。剔除 ST 股票,剔除每个截面期下一交易日停牌的股票,剔除上市 3 个月内的股票,每只股票视作一个样本。b)回测区间:2011 年 1 月 31 日至 2019 年 1 月 31 日。2 特征和标签提取:每个自然月的最后一个交易日,计算之前报告里的 70 个因子暴露度,作为样本的原始特征,因子池如下表所示。计算下一整个自然月的个股超额收益(以沪深 300 指数为基准),在每个月末截面期,选取下月收益
47、排名前 30%的股票作为正例(y=1),后 30%的股票作为负例(y=0),作为样本的标签。数据获取特征和标签提取特征预处理滚动训练集和验证集划分交叉验证调超参数样本内训练(样本内Bootstrap)样本外测试(样本外Bootstrap,回测时间Bootstrap)模型评价(指标分布情况)2 0 4 7 6 0 2 4/3 6 1 3 9/2 0 1 9 0 4 2 3 1 6:5 1 金工研究/深度研究|2019 年 04 月 22 日 谨请参阅尾页重要声明及华泰证券股票和行业评级标准 13 图表图表14:选股模型中涉及的全部因子及其描述选股模型中涉及的全部因子及其描述 大类因子大类因子 具
48、体因子具体因子 因子描述因子描述 因子方向因子方向 估值 EP 净利润(TTM)/总市值 1 估值 EPcut 扣除非经常性损益后净利润(TTM)/总市值 1 估值 BP 净资产/总市值 1 估值 SP 营业收入(TTM)/总市值 1 估值 NCFP 净现金流(TTM)/总市值 1 估值 OCFP 经营性现金流(TTM)/总市值 1 估值 DP 近 12 个月现金红利(按除息日计)/总市值 1 估值 G/PE 净利润(TTM)同比增长率/PE_TTM 1 成长 Sales_G_q 营业收入(最新财报,YTD)同比增长率 1 成长 Profit_G_q 净利润(最新财报,YTD)同比增长率 1
49、成长 OCF_G_q 经营性现金流(最新财报,YTD)同比增长率 1 成长 ROE_G_q ROE(最新财报,YTD)同比增长率 1 财务质量 ROE_q ROE(最新财报,YTD)1 财务质量 ROE_ttm ROE(最新财报,TTM)1 财务质量 ROA_q ROA(最新财报,YTD)1 财务质量 ROA_ttm ROA(最新财报,TTM)1 财务质量 grossprofitmargin_q 毛利率(最新财报,YTD)1 财务质量 grossprofitmargin_ttm 毛利率(最新财报,TTM)1 财务质量 profitmargin_q 扣除非经常性损益后净利润率(最新财报,YTD)
50、1 财务质量 profitmargin_ttm 扣除非经常性损益后净利润率(最新财报,TTM)1 财务质量 assetturnover_q 资产周转率(最新财报,YTD)1 财务质量 assetturnover_ttm 资产周转率(最新财报,TTM)1 财务质量 operationcashflowratio_q 经营性现金流/净利润(最新财报,YTD)1 财务质量 operationcashflowratio_ttm 经营性现金流/净利润(最新财报,TTM)1 杠杆 financial_leverage 总资产/净资产-1 杠杆 debtequityratio 非流动负债/净资产-1 杠杆 c