经产观察
IT资讯
IT产业动态
业界
网站运营
站长资讯
互联网
国际互联网新闻
国内互联网新闻
通信行业
通信设备
通信运营商
消费电子
数码
家电
数码

AdaBoost分类算法在多因子Alpha选股策略中的

作者:habao 来源: 日期:2017-11-26 16:02:57 人气:

  一直以来,多因子Alpha选股模型都是量化投资者共同关注的领域。无论是在因子构造方面还是在利用因子预测收益的方法选择方面,量化研究工作者都投入了无限的精力。在因子选择方面,因子的数量和种类在经过长期的发展之后已经逐渐趋于标准化,在商业化的因子数据提供商不断涌现的大趋势下,量化研究员更倾向于将研究重点放在策略构造方法研究方面。另外一方面,Alpha选股方法随着数学、计算、统计等方法的发展也越发复杂,而各种方法的核心在于如何将众多因子有效的组合到一起,发挥各自的优势,从而达到选择出在统计上具有超额收益的个股组合,像我们熟知的打分法,回归法都其中典型的应用方法。在量化投资领域,或者更广泛的讲,金融领域一直在借鉴相关领域的方法和来研究其独特而复杂的市场行为。

  Fintech的技术革新虽然是在最近几年才流行的概念,但事实上,它一直伴随着金融业的发展而发展。在国际上,量化研究工作者和传统的IT工作者的区分度也逐渐在弱化,科学计算方法、统计方法、计算机应用方法等方面已经交织在一起,共同应用到了金融领域。因此,各种成功的经验也会不断的被拿到量化投资领域中来尝试,各种方法的应用本质上是紧跟潮流还是过度设计,成功与失败只有在实践中才能得到检验。本文接下来将会以逻辑回归方法为参照,以AdaBoost分类器为例,对机器学习在选股中的应用进行探讨。

  逻辑回归方法是一种常用的离散选择模型,在金融领域,很早便被应用于违约风险、早偿风险分析等方面。在选股方面也经常被用于预测涨跌分类,因此我们采用此方法为参照物对比机器学习方法的效果。

  当我们提到机器学习这个概念的时候,往往会先入为主的认为这已经超过量化的范畴。但是,从概念上讲,方法的却很简单:利用因子组合特性预测股票未来趋势;从应用上讲,和回归方法类似,它也是基于因子历史解释能力预测未来的走势。本文应用的AdaBoost算法核心思想是通过历史训练数据训练出一组弱分类器,并由这组弱分类器通过各自权重线性加权得到一个强分类器。

  1. 算法流程中指的二元AdaBoost是指分类结果分为两类,在本文应用中,具体是将股票分为强势股和弱势股两类,当然AdaBoost算法可以支持多分类,但是在选股应用情景中,多分类是否可以提高预测准确性,我们将会在以后的报告中进行讨论。

  2. 弱分类器的数量M选择也是分类的关键问题,过少的弱分类器是否可以有效的组合因子分类效果?过多的弱分类器数量是否可以持续提高分类准确性?这两个问题会在本文中进行测试。

  3. 另外,弱分类器是指计算简单,分类效果较略好于掷硬币的分类方法,如单层的树状分类器,当然,较为复杂分类方法,如逻辑回归法,SVM论上都可以作为弱分类器应用到Boosting方法中,但实际效果和计算开销都值得探讨。

  4. 在利用单层决策树作为弱分类器时,以哪个因子做为因变量进行分类训练,并不在于AdaBoost算法本身,而是AdaBoost算法将这个问题代理给弱分类器,这是我们这里应用的决策树算法需要解决的问题,通常情况下,决策树在分类过程中会遍历每个因子,从中筛选基尼不纯度或是熵信息增益,来选择当前分类效果最好的因子,作为此层弱分类器的分类因子,虽然最先选择出的因子体现了该因子在弱分类器中的相对重要作用,但我们不能仅因此判断该因子在整个AdaBoost算法中的重要程度,随着弱分类器数量的增加,相对不显著的因子被选中的次数可能在迭代过程中增加,实际上,通过对所有弱分类器中选择因子,按照因子的重要程度进行求和之后才能体现该因子的综合重要程度。

  本文涉及的测试区间为2014年1月1日至2017年7月8日,并以周度数据进行测试。由于本文采取的训练序列为50周,所以,从回测开始日期向前推50周的周度数据也在模型中应用。在测试之前,首先,我们对每周的横截面因子数据进行分档,本文采用的是按照因子大小排序分为五档,第五档为最高档的集合,依次递减。按照常规做法,收益率也采取两档分法,前30%为高档,后30%为低档,中间数据不用于训练序列。测试中,选取的因子数据包括七大类17个因子,包括技术类因子、动量因子、规模因子、质量因子、成长因子和估值因子。请参照下表。

  在算法介绍中我们提到,本文所采用的AdaBoost算法采用的是单层决策树作为弱分类器,其关键问题之一在于弱分类器数量的选择。弱分类器的叠加效果决定最终强分类器的分类能力,但是,随着弱分类数量的增加,分类效果是否还会继续提高,甚至造成过拟合,这个问题值得关注。另外,即使样本内训练数据分类效果提高,样本外的预测效果是否会随之提高,也是一个重要的衡量指标。图1是根据2016年7月1日及之前总共50周的全A股周度数据作为训练集合,以2016年7月8日相对于2016年7月1日的全A股一周收益率作为预测数据的测试结果。图中蓝色线段为训练集合的预测成功率随弱分类器数量增加的走势,开始阶段分类器样本内的预测成功率为56.3%左右,随着弱分类器数量的增加,预测成功率逐渐提高到58.1%左右,并在使用75个弱分类器叠加之后稳定在58.1%,因此,继续提高弱分类器的数量,训练成功率并没有增加。而图中绿色线段为测试序列的预测成功率随弱分类器数量变化的走势,初始阶段预测成功率随弱分类器数量增加呈现较为明显的震荡变化,但是在弱分类器数量达到300之后成功率稳定在56.3%。由于开始阶段预测具有相对较大的不确定性,本文在建模过程中选择300个弱分类器作为AdaBoost算法弱分类器个数。另外,以逻辑回归为参照物,其样本内训练序列预测成功率为57.87%,样本外预测成功率为56.6%,对比可以看到,AdaBoost算法虽然在样本内预测成功率略高,但是,样本外的表现并不能超越逻辑回归算法。其它类型的Boosting方法,如Gradient Boosting等甚至可以将样本内预测成功率随弱分类器的数量增加提高到100%,但是,样本外的预测能力却没有实质性提高,本文不再具体分析该类算法,但值得注意的是机器学习类算法很容易造成过拟合问题,需要在实际操作中检查其可信度。

  Alhpa模型的实质是通过找到因子或因子组合与未来收益率之间的关系,从而训练出较为稳定的收益预测函数,选取优质个股组合。例如,通常用的线性回归模型就是通过线性回归系数将因子映射到收益率上,从而筛选优质个股,但是其问题在于,长期来看,多数因子与收益率之间往往不存在稳定线性关系,甚至单调性也不能,所以线性模型的前提条件往往不能满足。个股分类的方法实际是将连续函数离散化,放松了对模型的,只要满足分类组合的加权平均收益有较高的区分度便可以达到模型的目的。在金融领域广泛应用的逻辑回归便是一种良好的分类模型,虽然因子之间仍然是线性叠加,但是输出结果却是分类的概率,因此,它可以作为向高阶分类方法的过度的参照物。更进一步的离散化可以将因子也分组归类,找出因子分组与未来收益分组之间的关系,进一步放松对模型的。下面,我们以动量因子为例,阐述因子到收益的映射过程。如图2所示,图中很难直观看出单个动量因子对未来收益的关系,线性拟合在长训练序列中虽然可能得到显著系数,但由于非线性或非单调性造成的预测误差也十分明显。相对而言,二元分类法的输出是分类概率,我们希望通过概率大小分组,构造组合收益具有良好区分度的组合。另外,对因子进行分组也省去了回归方法中对原始因子数据的标准化、去极值等过程。我们的分组方法是对训练序列每一期的横截面数据进行分组,使得不同时期数据具有可比性。与原始因子数据类似,分类本身并不会影响因子与未来收益之间的内在关系如图2中第三个子图所示。分组数据之后会通过模型训练得到因子分位值与决策函数之间的关系图2中第四子图所示。最后,通过决策函数结果筛选优质个股,而图2中第五子图是决策函数对应未来收益的散点图,其线性关系明显提高。另外,值得注意的是,对比图3中第四子图所示(逻辑回归结果)的因子分组均值和收益之间的关系,AdaBoost算法所示结果具有明显的非线性拟合能力,这也是该算法的突出优点之一。逻辑回归是将因子与决策函数强制定义为对数线性,但在图中所示的结果中,效果要弱于AdaBoost算法。

  Rank-IC是用来评价Alpha模型预测能力优劣的重要指标之一,图4和图5分别为AdaBoost算法和逻辑回归算法自2014年以来的Rank-IC结果。AdaBoost算法样本外测试结果为Rank-IC=10.82%,IC-IR=0.8132;逻辑回归算法样本外的测试结果为RANK-IC=10.73%,IC-IR=0.7815。两种算法的Rank-IC在每期数据中的表现基本相似,图中可以清晰辨别出2014年底连续的风格反转现象。总体来讲,AdaBoost算法在Rank-IC方面表现略好,离散化的数据处理方法是较为可靠的数据处理方法。

  另外,分位数分组也是一个模型好坏重要的评价标准。图6和图7分别为AdaBoost算法和逻辑回归算法所得到的分位数组合净值曲线。两种算法中最高档组合净值都明显优于其他各档的结果。图8中多空配对和最高档最低档净值对比中也可以看到,两种算法所计算得到结果十分相近,图中蓝色线段为逻辑回归算法结果,绿色线段为AdaBoost算法结果,关键指标如下表所示。从多空配对组合的关键指标来看,AdaBoost算法结果略微好于逻辑回归算法,但区别不大。

  两种算法净值的相似性也表明其分类结果近似。我们仍以2016年7月1日收盘之后的数据为例,进行对比。在构造股票多头组合时,我们以模型测算的最高档10%的股票构建。2016年7月1日,全A股中所选出的前10%的股票共218只,AdaBoost算法和逻辑回归算法选出相同个股数量为148只,占67.88%,不同个股为70只,占32.11%。其中,在不同分类的70只股票中,被AdaBoost分为第十档(最高档)的股票中,有61只被逻辑回归算法分为第九当(次高档),说明两模型的判断十分相似,剩余的9只不一致分类的个股中,8只股票被逻辑回归算法分为第八当,1只股票被逻辑回归算法分为第七当,分档差距很小,这也是两个模型表现相似的主要原因。当然,两种算法的组合最优还有待考察。

  接下来,我们看一下模型选择因子的结果。逻辑回归的因子选择比较直观,可以通过回归系数的显著程度进行筛选,而且可以通过系数的正负号直接看出因子与预测概率之间的单调关系,但其劣势是只能通过显著性选择因子去留,却不能直接体现因子之间的相对重要程度(本文采用97.5%为置信区间)。相对而言,AdaBoost算法通过弱分类器选择各因子频率和各弱分类的权重得到因子的重要程度,其缺点是,虽然我们可以直接看出因子之间的相对重要性,但是要通过检测才能知道因子与预测概率之间的关系,不适合直观理解。图9和图10分别为AdaBoost算法和逻辑回归算法中自2014年初以来因子选择结果的热图。在图9中,我们可以通过颜色深浅直观的看到那些因子在哪些时间段的重要性。比如,在2014年9与之前Illiquidity因子和动量因子在模型中扮演者非常重要的作用,而在此之后,Illiquidity的作用逐渐淡化,交易量的20日均值开始起到主导作用,同时20日均线和动量因子也扮演者重要的角色,最近几个月,动量因子的作用更为明显。相对于技术类因子,总市值对数因子也长期体现其重要性,其它类型因子在模型中的重要程度相对较弱。对比逻辑回归模型,由于本文中,逻辑回归模型采用因子p值作为显著性评价标准,我们只进行取舍,不判断相对强弱。图中仍然可以看到,技术类因子和规模因子在模型中长期显著。从结果来看,模型对因子的选择性也具有相似性。

  下面我们以2016年7月1日及之前50周的数据作为例子训练模型并进行比较。以p=97.5%为阈值,从逻辑回归回归中选出的10个因子中有8个因子排在AdaBoost算法重要因子的前10位,结果较为相似。

  在前一节中,我们针对模型的理论和性质做了深入的分析。本节中我们根据模型的结果构造Alpha投资组合,并展示回测结果。回测过程中,与前一节中的数据处理方式一致,我们将每期横截面数据的因子五档划分,收益率数据前30%和后30%作为高低两组,每个调仓周期利用前一年的数据进行模型训练并预测下一期选股结果。本节中,我们介绍两个投资组合的表现,分别是全A选股策略和沪深300选股策略。全A选股策略对应较高的风险承受能力,而沪深300对应较低的风险承受能力。2016年初以来,以中证500为对冲基准的全A选股策略超额组合净值为1.2082, 最大回撤仅为3.01%,日回报的年化平均值为33.07%,波动率为6.22%;以沪深300为对冲基准的沪深300选股策略超额组合净值为1.0384, 最大回撤仅为2.13%,日回报的年化平均值为6.68%,波动率为5.03%。另外,由于我们在组合中按周调仓,交易成本的影响十分明显,以单边0.3%为例,2016年以来,全A选股策略的超额收益为20.82%,相比于无手续费的回测结果(24.11%)下降3.29%;沪深300组合超额收益3.84%,相比于无手续费回测结果(6.02%)下降2.18%。

  在全A选股的股票多头策略中,我们以中证500为基准,以全A股为选股池,选取模型预测前10%个股按周度调仓,回测过程中我们以等权配置,不进行行业中性处理,交易费率采用单边0.3%。

  2014年初以来,超额组合净值为3.998, 最大回撤为32.69%,回报的年化平均值为55.19%,波动率为23.49%。如图12所示,超额组合的最大回撤是在2015年6月股灾之后出现。而2016年初以来,如图13所示,超额组合净值为1.2082, 最大回撤仅为3.01%,日回报的年化平均值为33.07%,波动率为6.22%。

  在沪深300选股的股票多头策略中,我们以沪深300为基准,以沪深300为选股池,采取相对于沪深300行业市值中性做法,选取行业内模型预测前30%个股,行业之间按行业市值加权,行业内部按个股市值加权,按周度调仓,另一条件是如果模型预测个股为弱势股,即使该股为行业内前30%个股也不进行配置,相应资金归为为现金池,回测过程中按周调仓,交易费率采用单边0.3%。

  2014年初以来,超额组合净值为1.3668, 最大回撤为8.07%,日回报的年化平均值为12.34%,波动率为10.37%。如图14所示,超额组合的显著回撤主要出现在三个时间段,2015年初相对于2014年底、2015年6月到9月相对于6月最高点和2016年年初相对于2015年底股灾之前的高点。而2016年初以来,如图15所示,超额组合净值为1.0384, 最大回撤仅为2.13%,日回报的年化平均值为6.68%,波动率为5.03%。

  我们将会在未来以周报的形式及时上节中所构建的两个投资组合表现。在模型方面,值得什么研究的方面还很多,如,数据预处理的方法、多分档分类、模型组合结果等,我们将会在接下来的系列报告中进行探讨。机器学习的分类算法只是目前较为流行的算法之一,在其它领域中广泛应用并取得成功的技术及算法众多,我们也会在未来的研究中尝试更多的优秀,来应用到多因子选股策略中。【完】

  推荐:

  

推荐文章