基于梯度决策提升树的选股方法研究
2021-10-09卢笛
作者简介:卢笛(2000-),女,汉族,吉林长春人,主要研究方向:金融数学。
摘 要:多因子的选股模型作为投资领域的重要方法,一直以来活跃在主流量化投资领域决策中,而如何根据股票的各个因子来准确地预测个股的月度超额收益,也是多因子模型希望解决的主要问题之一。本文将梯度决策提升树引入量化投资决策,建立了一套基于梯度决策提升树模型的多因子量化投资策略,并利用沪深300成分股进行选股回测,选取模型预测收益率靠前的30只股票进行实证分析。研究表明,梯度决策提升树模型指导下的年华收益率为29.1%,较基准年化收益率有大幅提升,且回撤率更低,验证了该量化选股模型的有效性。
关键词:多因子选股;梯度决策提升树;量化投资
近年来,随着机器学习理论的高速发展,其在量化投资领域也得到了广泛应用,美国的许多投资机构早已在投资策略,选股方案指定上引入了多种机器学习模型辅助决策;而国内的股票基金行业也逐渐开始使用机器学习模型来指导选股,相较于传统的多因子策略取得了較高的超额收益。
本质来说,选股问题可以抽象为一个回归问题,选股即是对股票的多个因子构成的向量进行对收益率的拟合。该分类问题可分解为两个子问题,一方面是因子的选择,即选用股票的哪些方面的特征;另一方面是回归模型的选择,即使用的分类算法。传统的多因子策略模型需要为因子分配合理权重,否则会极大的影响模型效果,通常是超额收益越大,为因子赋予的权重越大,但衡量因子选股效果的指标有很多,如收益相关系数,跑赢指数概率等,难以人为进行均衡来配置。本文拟以梯度决策提升树为核心回归算法,建立一套选股指导系统来探索量化交易市场。
一个优秀的量化选股策略能够有效克服投资者面临的信息过载,令投资者的投资获得提升。对于买方机构来说,既可以以该策略为指导自营获得收益,也可以基于此发布理财产品,以管理费、赎回费等方式赚取零风险收益;对于卖方机构,则能够将策略打包为股票推荐功能来作为软件卖点,获取更多佣金。
梯度决策提升树选股模型
选股问题本质是分类问题,因此选择合适的分类模型能极大影响量化投资策略的效果。在选股领域,常用的决策模型有决策树、神经网络、支持向量机等,其中决策树在处理噪音数据时效果交叉,且存在过拟合的可能;而神经网络模型对个股的走势预测效果欠佳;支持向量机模型虽然优于传统神经网络推断,但支持向量机自身的特性使得其在多分类问题上天生弱于决策树模型,因而还存在一定提升空间。基于以上模型的特点,本文选择梯度决策提升树作为选股模型。
梯度决策提升树(Gradient Boosted Decision Tree,GBDT)是由Friedman等[1]在2001年提出的一种经典的机器学习方法,属于boosting系列算法中的一个代表算法,它是一种迭代的决策树算法,所有树的结论累加起来作为最终答案。GBDT设计的目的为了求解损失函数的优化,具体思路为对损失函数求梯度,以负梯度的方向代入模型的当前值,以当前值作为残差值的近似。它采用了加法模型,通过向着减小残差的方向收敛得到将输入数据分类或回归的模型。图 1说明了GBDT的训练过程:
GBDT的经多次迭代后收敛,每轮训练多个分类器,每个分类器基于上一次迭代得到的残差础上进行训练。作为集成学习方法的一种,GBDT的基分类器属于弱分类器,需要结构简单且满足低方差、高偏差的条件,这与GBDT的损失函数是基于降低偏差有关;通常来说,GBDT通常以CART TREE作为基分类器,且每棵CART TREE的深度相对较低以保证基分类器的复杂度不会过高。最终将每轮训练得到的基分类器加权求和,得到总的分类器。
GBDT既可以解决分类问题,也可以解决回归问题,对于选股适用于回归模型,数学语言表述如下:
对训练样本,最大迭代次数T,损失函数为L,其中为股票因子组成的向量,为股票价格。
1.初始化弱分类器
a)样本负梯度
b)利用 拟合一个CART回归树,得到第棵回归树,其对应叶子结点区域为,其中为回归树叶子节点的个数
股票因子选择
在确定了核心模型后,还需要确定参与训练和股价预测股票因子,股票因子的选择将和模型一起决定股价预测的效果。目前,多因子的选股模型是国际上主流的量化选股模型,该模型认为股票的未来收益率受公司的财务指标和其他某些行情指标影响,且这种影响在时间上是可重复的,因此通过对历史数据中各种因子的分析,能够发现那些有投资价值的公司,因而适合的股票因子选择也对选股策略的准确性有着很大影响。本文参考了多篇文献[2-4]的分析,从动量因子,交易量因子,估值因子等多个方面初步选取了28个有效因子。
首先对因子进行归一化处理,这里使用均值方差法将因子值域归一到区间[0,1];另外为了减少噪声,将当月超额收益分为数在20%到80%之间的数据去除。
对于机器学习来说,虽然更多的特征通常意味着对样本更全面的表示,但使用的特征过多也会带来训练样本数的增加,甚至可能引发维度灾难[5],所以本文对28个因子的特征进行一次主成分分析,并根据分析结果选择了前20维的因子,最终使用的股票因子如表 1所示。
实验数据选用了2015年1月1日至2020年12月31日期间沪深300成分股全部股票每月最后交易日的股票因子值和月收益率。2015年1月1日至2019年5月31日的数据被作为训练集来训练模型,2019年6月1日到2020年12月31日的数据用于回测部分,经缺失值筛选后,剩余股票数据为11634条。
我们在计算因子时,需要获得公司的某些财务数据,但在实际的投资过程中,公司财务数据的获取往往并不是及时的,比如在6月底7月初时,第二季度已经结束,但有些公司的二季报仍未公布,这就带来了信息的滞后性,为了使实验结论能够指导实际的投资,我们也需要对训练的数据做相应的滞后处理。从公司财报最晚的公布时间来看,一二三季报的时间分别是当年4月底、8月底、10月底,而年报则是次年的4月底,由此可知我们在11、12月和次年前4个月应使用前一年三季报的数据,而5、6、7、8月则应使用本年度一季报及前一年的年报数据,9、10月份则正常使用三季报即可,如此可以贴合实际的操作。