【光大金工】分域法改进因子的新尝试——量化选股系列报告之十五

【光大金工】分域法改进因子的新尝试——量化选股系列报告之十五
2024年10月29日 09:30 市场投研资讯

(来源:EB金工)

因子分域研究前景广阔

因子分域的研究在市场中由来已久,因子分域研究被广泛应用于选股、资产配置等方面。通过对股票进行因子分域,可以识别出不同分域内股票的独特性和优势。分域思想的本质是基于不同市场环境中,数据表达的信息不同,采用差异化的方式处理因子来更有效的表达因子信息。

在实证研究中,不少案例证明了因子分域研究的有效性。例如对于估值因子来说,市值风格就是一个有效的分域。在前期报告中,我们介绍了因子分域研究框架。在多因子框架下,分域一般会应用在两个步骤中:因子计算和因子合成。本篇报告将聚焦于因子计算中分域法的应用。

基于遗传算法的分域尝试

一般提到分域研究,普遍的做法是在不同行业内对因子做不同处理,这种方式属于截面分域。我们认为在时间序列上也存在分域效应。我们以估值因子和早盘收益因子为案例,讨论了两种分域方式——截面分域和时序分域,并给出了两种分域方式的逻辑。

以上两种分域方式中,除了人工挖掘因子外,我们同样可以借助算法来挖掘潜在的因子。本文借助遗传规划算法来进行分域尝试。首先基于遗传规划算法进行分域因子生成,并基于成熟的遗传规划库做出深度改进。最后,我们测试了基于遗传规划算法生成的分域因子,结果表明,因子分域后的提升效果显著。

实证方式论证了因子分域的有效性

我们从时序分域和截面分域两个维度入手,借助遗传规划算法批量挖掘了未知的分域因子,并从中挑选了部分结果作为代表,进行展示。

在截面分域部分,对营收同比因子、净利润同比因子和反转因子改进后,因子提升效果明显,平均周频RankIC分别从0.8%、1.25%和3.77%,提升到了6.68%、8.31%和8.03%。

在时序分域部分,对反转因子、尾盘收益因子和振幅因子改进后,因子提升效果明显,平均周频Rank IC分别从4.96%、4.89%和6.12%,提升到了8.45%、7.85%和6.92%。

风险分析:报告结果均基于模型及历史数据,模型存在失效的风险,历史数据存在不被重复验证的可能。

1、因子分域建模的逻辑

因子分域的研究在市场中由来已久,在多因子框架下,分域一般会应用在两个步骤中:因子计算和因子合成。

分域法应用于因子计算较为常见,首先选定一个特征将股票划分成多个域,再对不同分域内的股票差异化计算因子。常见的因子计算有多种分域方式,比如按照行业划分,将因子不适用的行业中的股票因子值设置为全市场股票因子值的中位数;再比如按照风格因子划分,探究不同市值、估值等风格下,因子的不同表现。

除了应用于因子计算以外,因子合成阶段也可以使用分域法,市场中已有研究如动态情景模型等就是如此。

在前期报告《因子分域初探:确定分域方式——量化选股系列报告之十四》(2024.09.28)中,我们介绍了因子分域的研究框架,本篇报告将聚焦于因子计算中分域法的应用

首先,我们讨论了两种分域方式——截面分域和时序分域,并给出了两种分域的底层逻辑。其次,我们还使用了遗传规划算法进行分域因子生成,并基于成熟的遗传规划库做出深度改进。最后,我们测试了基于遗传规划算法生成的分域因子,通过实证方式论证了分域法改进因子的有效性。

1.1 分域法对估值因子的修复

估值因子无论在学术界还是投资界都是关注度较高的价值类因子,在A股市场,该因子多空组合在2019年—2021年间出现了较大回撤,AQR对冲基金的创始人Cliff Asness在2020年写了一篇《Is (Systematic) Value Investing Dead?》的文章来讨论价值因子失效问题。

如果按照市值将股票分成大市值和小市值两个分域,我们发现估值因子在小市值股票池内依然有稳健的超额收益,而在大市值股票池内的表现与全市场的表现一致。对于估值因子来说,市值风格就是一个有效的分域。

除了上述在截面上根据市值大小将股票池分为大小市值两组外,我们可以对估值因子做一个简单的市值加权,提升小市值股票的估值因子权重。权重的构造方式如下:

其中,x为对数市值的倒数。参数n越大,权重越向x正方向集中。

从回测表现来看,提升了小市值股票的因子值权重之后,估值因子的表现提升明显,且提升效果随着n的增大而变强。n由0增大到4后,因子的周频Rank IC从3.84%提升至了4.67%;月度胜率从65.89%提升至了74.42%。

1.2 分域法对动量因子的修复

我们在报告《日内收益的精细切分:提炼动量与反转效应——量化选股系列之二》(2021.10.23)中也使用到了时序分域的方式修复早盘收益因子。早盘收益因子计算方式如下:

我们先以vwap(成交量加权价格)方式计算早盘涨幅,open-morning_cut表示早盘量价数据的时间范围为9:30至10:30;然后,定义早盘收益率为早盘 vwap 涨幅与开盘价涨幅之差,这种计算方式使得一字涨停板并不计入早盘收益;最后,用过去一段天数(window)的早盘收益率之和作为因子。

通过观察图中展示的回测结果,我们发现原始的早盘收益因子没有如期呈现出稳定的动量效果。在前述报告中,我们认为早盘收益需要“温和”才能呈现动量效果。因此,我们对早盘收益因子进行了改进,改进方式如下:

我们在时序上对早盘收益进行了极值调整,我们以2%为阈值,将股票池进行分域。改进后的早盘收益因子回测结果如下。从回测结果可以发现,改进后的因子呈现了单调的特征,且呈现了稳定的动量特征。

2、分域法因子改进研究框架

上述两个案例都是分域法在因子计算阶段的应用,分别对应了截面分域和时间序列分域。从结果来看,该方法的确能够有效提升因子表现。

分域思想的本质是基于不同市场环境中,数据表达的信息不同,采用差异化的方式处理因子来更有效的表达因子信息。

一般提到分域研究,普遍的做法是在不同行业内对因子做不同处理,这种方式属于截面分域。我们认为,在时间序列上也存在分域效应。正如上一章节中所展示的,估值因子相对于市值的分域就属于截面分域,早盘收益因子的极值调整就属于时间序列分域。

2.1 截面分域概述

按照行业、板块或宽基将因子进行分域的方式,属于截面分域。一般地,我们还可以使用分域因子对目标因子进行截面分域,截面分域又可细分为离散型分域和连续型分域。

离散型分域即表示利用分域因子,按照一定准则,将目标因子划分为有限个数的域。例如:按照分域因子Y从小到大,将目标因子X平均划分为2组,然后测试因子X在各组的表现。

利用分域因子,直接将目标因子进行改进,而并未将其划分到具体个数的域中,这种分域方式即是连续型分域。上一章中展示的使用市值因子对估值因子进行加权的方式,即为连续型分域。

2.2 时序分域概述

上一章中,我们对早盘收益因子在时序上进行了极值调整,即以2%为阈值,当日早盘收益的绝对值超过2%,则取相反数,这种方式即是时序分域。更一般地,我们可以使用分域因子对目标因子在时序上进行分域。

时序因子常见方式为在时序上根据算子(如sum、mean、median、std等)来构造目标因子,在构造过程中,我们即可使用分域因子来对目标因子进行改进,达到时序分域的目的。

例如,对股票i,分域因子Y对目标因子X进行时序分域,目标因子X为过去d个交易日某指标之和,分域目标为计算Y最大的e个交易日对应的X的均值,我们定义这样的分域算子为:ts_max_mean(X,Y,e,d)。

2.3 分域法因子改进研究框架

本文将从时序分域和截面分域两个维度入手,借助遗传规划算法寻找未知的分域。

首先需要验证方法的有效性,可以采用固定计算公式,遍历目标因子和分域因子的方式来验证。对于目标因子来说,最好设置为一些已经失效的因子,这样改进的效果才更明显,比如动量因子、估值因子、市值因子等。对于分域因子来说,最好设置为一些有交易逻辑的因子,比如收益率、换手率、交易量等。

除了人工挖掘因子外,我们同样可以借助算法来挖掘潜在的因子。例如采用遗传算法,模仿生物学种群演化进程,从复杂的原始数据和原始算子中,筛选出潜在有效的目标因子和分域因子以及分域方式。

我们需要设定分域是否有效的标准,通过计算原始因子的Rank IC(RawIC)和分域之后新因子的Rank IC(NewIC),如果NewIC大于RawIC,我们就认为分域操作有效。

3、遗传规划的分域尝试

遗传规划算法在因子挖掘领域已经不是什么新方法,但该方法仍存在许多弊端,如因子的可解释性差、计算成本高等。本文的研究框架仅在因子挖掘的局部使用到遗传规划,本质上还是通过分域算法对因子的改进,也即在原始因子可解释且有效的情况下,对因子进一步细化挖掘。一定程度上可以解决传统算法存在的弊端。

3.1 遗传规划算法概览

遗传规划是因子挖掘的常用工具,为了保证内容的完整性,我们简单对遗传规划的流程进行介绍,若投资者已经熟悉可跳过本小节。

遗传规划是遗传算法的一个分支,是一种监督学习方法。它通过模拟自然界中生物进化的过程,来寻找最适合目标群体繁衍特征的模型及参数。遗传规划能够寻找到原始数据中的一些隐藏特征,利用这些隐藏特征,模型可以更好地预测目标群体。

传统的监督学习算法主要运用于特征与标签之间关系的拟合,而遗传规划则更多运用于特征工程。以往的因子研究都是“先有逻辑,后有公式”,是一种“演绎法”。但遗传规划的形式是“先有公式,后有逻辑”,属于“归纳法”。它的优势在于可以充分利用计算机的强大算力进行启发式搜索,同时突破人类的思维局限,挖掘出某些隐藏的、难以通过人脑构建的因子,为因子研究提供更多的可能性。

遗传规划的基本流程如下:

类比于自然界中个体对其生存环境的适应程度,在遗传规划中,每个公式也有自己的适应度,适应度衡量了公式运算结果与给定目标的相符程度,是公式进化的重要参考指标。在不同的应用中,可以定义不同的适应度,对于回归问题,可以使用公式结果和目标值之间的均方误差为适应度,对于使用遗传规划生成的因子来说,可以使用因子在回测区间内的平均IC或因子收益率来作为适应度。

3.1.1 遗传规划的数学表达

遗传规划用二叉树的方式表达需要进化的公式。假设有特征

需要预测目标y初代公式为:

在遗传规划中用S-表达式表示:

我们可以把公式表示为一个二叉树,如下图所示:

3.1.2 交叉

交叉是在两个已有公式树之间生成子树的方法,是最常用也最有效的进化方式。交叉首先需要在种群中选择适应度最高的公式树A作为父代,并从A中随机选择子树

,替生成后代。

作为被替换对象;然后在剩余种群中选择适应度最高的公式树B作为捐赠者,从中随机选择子树

3.1.3 子树变异

子树变异是一种较为激进的变异操作,父代的子树可以被随机生成的子树完全替代,这样做的好处是将已经被淘汰的公式重新引入公式种群,保持了公式的多样性。如图,首先选择适应度最高的公式树A作为父代,然后随机选择子树

作为被替换的子树,接着随机生成子树

替代。

3.1.4 点变异

点变异也是一种常用的变异操作。点变异也可以将已经被淘汰的公式重新引入种群,从而保持种群的多样性。如图,首先选择适应度最高的父代公式树A,然后随机选择子树

和子叶

被含有相同参数个数的公式所替换,子叶被其他子叶替换。

被替换。

3.1.5 Hoist变异

Hoist变异是一种较为复杂的变异方法。这种方法的目的是移除公式树中的部分节点或子叶,以达到简化公式树的目的。如图,首先选择适应度最高的父代公式树A,然后随机选择子的子叶将子叶提升到节点的位置,删除其他子叶,生成新的后代。

3.2 算法改进:构建分域方程

前一节介绍的S-表达式是一种人类可读的文本形式表达半结构化数据的数学标记语言,其本质是一个树状的结构,这使得其非常适合表示复杂的数据结构和算法。

本文聚焦因子分域的研究,因此需要构建分域方程以生成因子。传统的时间序列算子都是对数据本身做操作。无法达到分域的效果。比如ts_mean(X, window),表示的是对数据X,计算历史window个交易日的均值。

时序分域的算子可以构建为:

ts_max_mean(X,Y, window1, window2)

该算子表示的是对数据X,计算历史window2 个交易日中,Y数据最大的window1 个交易日对应的X的均值。

在截面分域部分,根据上文中对因子进行连续分域的方式,截面分域算子可以构建为:

multiply(X,sigmoid(standardize(winsorize(Y))))

该算子表示,使用因子Y对因子X进行连续分域:通过winsorize函数对因子Y进行MAD去极值、standardize函数对因子Y标准化、sigmoid激活函数对因子Y进行非线性变换,将其映射到区间(0,1)内,最后与因子X相乘。

我们引入的时序分域算子如下表所示。

为了保证分域因子Y的多样性,我们引入时序算子和一般算子,用以在遗传算法生成子代的过程中,生成多种多样的个体Y。时序算子和一般算子如下表所示。

有了上述算子后,我们便可构建因子分域方程,例如时序分域方程:

ts_max_std(X,subtract(Y1,Y2), 5, 15)

表示过去15个交易日中,Y1减去Y2最大的5个交易日,对应X的标准差;截面分域方程:

multiply(X,sigmoid(standardize(winsorize(add(ts_mean(Y1,5),Y2)))))

表示过去5个交易日中,求Y1的均值,再加上Y2,经过去极值、标准化、非线性变换后,与X相乘。

3.3 模型参数

在截面分域阶段,我们的原始因子取自光大金工因子数据库(因子信息见光大金工系列量化周报),我们采用下表中的原始数据对因子进行分域。在时序分域阶段,我们均采用下表所列数据。

在模型参数方面,模型参数设置如下表所示。

4、截面分域改进因子展示

4.1 营收同比因子改进

原始因子为单季度营业收入同比增长率(SalesYOY),该因子近几年失效明显。通过分域算法挖掘出的改进因子提升明显。分域因子为股票过去8个交易日最高价的标准差,减去当天的成交笔数。

分域因子:

Y = subtract(ts_std(HIGH,8), TRADES_COUNT)

改进因子:

multiply(SalesYOY,sigmoid(standardize(winsorize(Y))))

因子回测区间为2014.01.03-2024.09.30,其中2016.01.04-2018.12.28为样本内区间,其余为样本外区间。若无特别说明,下文所称的样本外区间,均指2019.01.02-2024.09.30。

从回测结果来看,改进因子相对于原始因子提升明显。样本外区间内,改进因子的多空组合大幅领先于原始因子。从多头组来看,改进因子的多头组相对于原始因子的多头组,具有明显优势。

从因子Rank IC来看,原始因子在2022年-2023年失效明显,改进因子Rank IC在时序上提升明显,平均周频Rank IC从0.8%提升至6.68%。

4.2 净利润同比因子改进

原始因子为单季度净利润同比增长率(ProfitYOY),该因子近几年失效明显。通过分域算法挖掘出的改进因子提升明显。分域因子为股票当日成交笔数加上换手率。

分域因子:

Y = add(TRADES_COUNT,TURN)

改进因子:

multiply(ProfitYOY,sigmoid(standardize(winsorize(Y))))

从回测结果来看,改进因子相对于原始因子提升明显。样本外区间内,改进因子的多空组合大幅领先于原始因子。从多头组来看,改进因子的多头组相对原始因子的多头组,提升效果较为明显,但近期改进因子多头组出现了较大回撤。

从因子Rank IC来看,原始因子在2022年-2023年失效明显,改进因子Rank IC在时序上提升明显,平均周频Rank IC从1.25%提升至8.31%。

4.3 反转因子改进

原始因子为5日反转(5DR,当前股价除以过去5个交易日股价均值再减1),该因子历史表现较好。通过分域算法挖掘出的改进因子仍然具有明显的提升效果。分域因子为股票过去14个交易日开盘价的最小值,求过去5天的变化率,再减去当天的成交笔数。

分域因子:

Y = subtract(ts_delta(ts_min(OPEN,14), 5), TRADES_COUNT)

改进因子:

multiply(5DR,sigmoid(standardize(winsorize(Y))))

从回测结果来看,改进因子相对于原始因子提升明显。样本外区间内,改进因子的多空组合仍然大幅领先原始因子。从多头组来看,改进因子的多头组相对原始因子的多头组,提升效果明显。

从Rank IC来看,平均周频Rank IC从3.77%提升至8.03%。

5、截面分域改进因子展示

5.1 反转因子改进

原始因子为过去15个交易日的RETURN均值(15日反转因子),该因子历史表现较好。通过分域算法挖掘出的改进因子具有明显的提升效果。分域因子为股票过去15个交易日中,股票收益率最大的5个交易日的平均收益率,减去股票收益率最小的5个交易日的平均收益率。

原始因子:

ts_mean(RETURN,15)

改进因子:

ts_max_mean_minus_min_mean(RETURN,RETURN, 5, 15)

从回测结果来看,改进因子相对于原始因子提升明显。样本外区间内,改进因子的多空组合大幅领先原始因子。从多头组来看,改进因子的多头组相对原始因子的多头组,提升效果十分显著。

从Rank IC来看,平均周频Rank IC从4.96%提升至8.45%。

5.2 尾盘收益因子改进

原始因子为过去15个交易日的TAIL_RET均值,该因子历史表现较好。通过分域算法挖掘出的改进因子具有一定的提升效果。分域因子为股票过去15个交易日中,股票尾盘收益率最大的5个交易日的平均尾盘收益率。

原始因子:

ts_mean(TAIL_RET,15)

改进因子:

ts_max_mean(TAIL_RET, TAIL_RET, 5, 15)

从回测结果来看,改进因子相对于原始因子有一定提升效果。样本外区间内,改进因子的多空组合在2022年至今领先原始因子。从多头组来看,改进因子的多头组相对原始因子的多头组,在样本外区间内,具有较为稳定的提升效果

从Rank IC来看,平均周频Rank IC从4.89%提升至7.85%。

5.3 振幅因子改进

原始因子为过去15个交易日的SWING均值,该因子历史表现较好。通过分域算法挖掘出的改进因子具有明显的提升效果。分域因子为股票过去15个交易日中,最高价开方后最大的5个交易日的振幅均值,减去最高价开方后最小的5个交易日的振幅均值。

原始因子:

ts_mean(SWING,15)

改进因子:

ts_max_mean_minus_min_mean(SWING, sign_sqrt(HIGH), 5, 15)

从回测结果来看,改进因子相对于原始因子提升明显。样本外区间内,改进因子的多空组合大幅领先原始因子。从多头组来看,改进因子的多头组相对原始因子的多头组,提升效果较为明显,但去年底、今年初,改进因子多头组出现了较大回撤。

从Rank IC来看,平均周频Rank IC从6.12%提升至6.92%。

6、总结

因子分域的研究在市场中由来已久,因子分域研究被广泛应用于选股、资产配置等方面。通过对股票进行因子分域,可以识别出不同分域内股票的独特性和优势。分域思想的本质是基于不同市场环境中,数据表达的信息不同,采用差异化的方式处理因子来更有效的表达因子信息。

在实证研究中,不少案例证明了因子分域研究的有效性。例如对于估值因子来说,市值风格就是一个有效的分域。在前期报告中,我们介绍了因子分域研究框架。在多因子框架下,分域一般会应用在两个步骤中:因子计算和因子合成。本篇报告将聚焦于因子计算中分域法的应用。

一般提到分域研究,普遍的做法是在不同行业内对因子做不同处理,这种方式属于截面分域。我们认为在时间序列上也存在分域效应。我们以估值因子和早盘收益因子为案例,讨论了两种分域方式——截面分域和时序分域,并给出了两种分域方式的逻辑。

以上两种分域方式中,除了人工挖掘因子外,我们同样可以借助算法来挖掘潜在的因子。本文借助遗传规划算法来进行分域尝试。首先基于遗传规划算法进行分域因子生成,并基于成熟的遗传规划库做出深度改进。最后,我们测试了基于遗传规划算法生成的分域因子,结果表明,因子分域后的提升效果显著。

我们从时序分域和截面分域两个维度入手,借助遗传规划算法批量挖掘了未知的分域因子,并从中挑选了部分结果作为代表,进行展示。

在截面分域部分,对营收同比因子、净利润同比因子和反转因子改进后,因子提升效果明显,平均周频RankIC分别从0.8%、1.25%和3.77%,提升到了6.68%、8.31%和8.03%。

在时序分域部分,对反转因子、尾盘收益因子和振幅因子改进后,因子提升效果明显,平均周频Rank IC分别从4.96%、4.89%和6.12%,提升到了8.45%、7.85%和6.92%。

海量资讯、精准解读,尽在新浪财经APP

VIP课程推荐

加载中...

APP专享直播

1/10

热门推荐

收起
新浪财经公众号
新浪财经公众号

24小时滚动播报最新的财经资讯和视频,更多粉丝福利扫描二维码关注(sinafinance)

股市直播

  • 图文直播间
  • 视频直播间

7X24小时

  • 10-29 聚星科技 920111 6.25
  • 10-25 健尔康 603205 14.65
  • 10-25 港迪技术 301633 37.94
  • 10-22 科拜尔 920066 13.31
  • 10-21 强达电路 301628 28.18
  • 新浪首页 语音播报 相关新闻 返回顶部