最近思考了一些关于因子合成的东西。多因子的体系里,我们希望通过多个因子的叠加来提高模型整体对于未来收益率的预测能力。如何确定叠加后的因子一定会效果更好?
一般来说,我们考虑更多的是因子的共线性,也就是因子的相关性,之前写过一篇文章(点这里),分析了因子共线性对于因子合成结果的影响以及通过正交化的方式消除相关性。这里再从IC的角度来分析这个问题。(公式难打,直接贴图了)
这是合成后因子IC与合成前两因子的关系,可以说明两个问题:
1. 两个因子加权合成后的IC至少大于两个IC的加权和,当且仅当相关性为1时取等
2. 两个因子相关性越低,合成后因子IC越高,这也是符合常理的
以等权合成为例
相关性为1时,和的IC为两IC的均值。也就是说合成后因子的IC至少是二者的平均水平。相关性越低,合成后因子的IC会越高,相关性为负时,IC可以非常高。从这个角度来说,只要我们能找到很多正相关性很低并且有效的因子,最终的IC可以累的很高。
但上面的分析没有考虑到的是,一方面两个因子的相关性最低能低到什么程度。另一方面是,现实中是否真的有很多有效并且相关性很低的因子。
对于第一个问题,有这样一个结论:
因此理论上来说,两因子的相关性可以非常低,但对于第二个问题,答案是否定的。除了已经大量使用的成长、价值、动量、流动性、盈利、流动性、一致预期等因子外,要找到新的有效并且相关性很低的因子,难度很高。
除了因子的相关性,还有一个很重要的问题是因子的分布特征,两个分布不同的因子合成之后,因子的效果是否会变好?从IC的角度来说,前面的推导可以看出,因子分布是不影响IC,但分布会影响因子效果。
可以这样去理解考虑分布和考虑IC的差异,IC刻画的是所有股票因子值和未来收益率方向的一致性, 每个股票权重是一样的,高IC可能是因子头尾部顺序比较一致,也可能是中间部分顺序比较一致,因此IC评价结果比较稳健。但分布特征对于股票的权重是不一样的,评价的是股票在不同因子取值下的情况,实际选股更关注的也只是因子头尾部的一致性,所以这也是考虑分布的必要性。
一般都假设因子是服从正态分布的,但实际中因子的分布可能是各种各样的,[1]中提到一个结论,我觉得非常有道理,当因子不服从正态分布时,偏度和峰度的影响会使得个股在某一个因子上的得分偏大或偏小,使得其在多因子的效用被显著放大或缩小。
比如一个因子是正态的,另一个因子是均匀分布的,均匀分布的峰度会异常低,数据集中度低,头尾部的概率会高很多,结果是合成因子得分的头尾部会严重依赖于均匀分布因子的值,正态分布因子的效果会被严重削弱,中间部分会严重依赖于正态分布的值。
反之如果是一个t分布的因子和正态分布的因子,t分布的因子峰度会异常高,使得因子值的集中度非常高,两端概率很小,结果是头尾部会严重依赖于正态分布因子的值,而中间部分严重依赖于t分布因子的值。不论哪种情况,即使是按照IC或ICIR去加权,也并不能达到预先的想法。
[1]中还提到了一些对因子做标准化及正态性转换的方法,标准化包括zscore、winsor、MAD、boxplot,正态性转换主要是box-cox,都是很常见的方法,不一一列出了。有兴趣可以看看报告,后台回复“正态转换”获取研报。但个人觉得ranknorm效果会更好一些,此外还看到一个signlog的方法,没试过,后面有时间会自己测一下对比这些方法的效果。