因子中性化函数, 已经推出一段时间, 可能很多果友还不太会用, 或者不太明白这些函数的目的何在。 我在这里大约描述一下。 


中性化一个最常见的用途就是市值中性化, 很多指标都会受到市值因素的影响。 比如成交额,小市值股票的成交额总体上比大市值股票的成交额要低, 如果选成交额小的股票, 一般选出来的股票都是小市值的股票, 因为成交额和总市值有很多信息重复。多因子选股模型如含有信息大部分重复的因子, 收益波动率会增大,稳定性会降低。


我们可以对成交额指标做市值中性化, 以排除市值因素的影响。 具体的表达式是 hNeutralize(当日成交额, 总市值,0 ), hNeutralize将对所有的股票在成交额和总市值之间做线性拟合, 得到的残差就是中性化后的成交额。 在下图中, 我们把股票按照中性化后的成交额从小到大排名, 发现几个大股票排在前面。 因为相对市值来说, 他们的成交额是最小的。 



第二个例子是市盈率 。 一般来说大市值股票的市盈率比较低, 而小市值的股票市盈率比较高。 除了和市值相关外, 市盈率还和行业相关, 银行业的股票市盈率普遍较低, 而计算机行业的市盈率都比较高。 所以如果直接使用低市盈率选股票, 得到的结果往往就是大市值的 银行股。 如果要消除市值和行业的影响, 我们可以使用hNeutralizeMI(市盈率), 可以同时对市值和行业中性化。 但是,市盈率这种指标的数学性质并不适合做中性化,因为市盈率会出现极大的数值(比如现在大连重工的市盈率是33748), 而且不能保持数值的单调性: 按理来说市盈率是越小越好, 但是小到负数的时候又不好了, 所以市盈率没有意义上的单调性。 市净率、市销率、市现率都有同样问题。 这些指标做中性化的效果并不好。 而它们的倒数,比如市盈率的倒数EP, 就有很好的单调性:大肯定是好, 小肯定是差; 而且值域有限(比如现在EP的值域是-0.5到0.52),没有极大或极小值, 所以非常适合作中性化。 所以, 我们建议用户使用hNeutralizeMI(EP)对EP做中性化。 如下图。 中性EP最高的中国高科, 它的EP比第二个股票要低。 





为了方便大家进一步探索中性化指标的使用, 我们对一些最常用的技术指标作了市值中性化, 一些最常用的财务指标作了市值行业中性化, 作为系统指标提供出来。 如下图。 



中性化因子能提高收益吗?


不一定。 中性化因子的目的是降低选股因子在市值和行业的暴露度, 以降低股票在市值和行业上分别过于集中带来的风险, 希望由此提高策略的收益稳定战胜大盘的概率, 也就是策略的IR。 它不一定能提高策略绝对收益。

 

中性化函数的使用要注意什么?

因为中性化函数使用线性回归残差, 指标本身的数值最好是分布均匀而且有单调意义, 中性化的结果才会有效。 如果指标有极大或极小值, 且分布不均匀, 最好首先去极值,比如使用Winsorize函数,或者Log函数还有zScore函数(HStandarize)。 或者把指标作个转换, 比如PE变成EP等。  


还有, 技术面指标受到市值影响较大, 所以适合做市值中心化(hNeutralize函数),而基本面指标受到市值和行业的影响都比较大, 所以适合做市值行业中性化(使用hNeutralizeMI函数)。


行业中性化还有什么其它途径?

行业中性化不一定非要使用以上描述的数学函数来实现, 更直接的方法是将筛选条件和排名条件里的范围选项设为行业内。 如下图