一、行业中性化概述:为什么需要行业中性化?核心思想是什么?
各位同学,今天我们来聊聊多因子模型中一个绕不开的话题——行业中性化。
说实话,我刚开始做量化那会儿,对行业中性化并不太在意。总觉得因子就是因子,选股就是选股,跟行业有什么关系?直到有一次,我跑了一个看起来非常漂亮的因子回测——夏普比率高得吓人,最大回撤也控制得很好。结果拿去实盘,直接被打脸。后来一查,发现这个因子本质上就是在赌行业配置。说白了,它选出来的股票全是某个行业的,市场风格一转,整个因子就崩了。
嗯,从那以后,我再也不敢忽视行业中性化了。
1.1 为什么需要行业中性化?
我们先想一个问题:因子选股,到底选的是什么?
你希望因子能捕捉到股票自身的alpha,而不是行业带来的beta。举个例子,假设你发现「低波动」因子很有效。但如果你不做行业中性化,这个因子可能选出来的全是银行股——因为银行股天生波动低。那问题来了:你赚的钱,到底是低波动因子的功劳,还是银行板块上涨的功劳?
我个人习惯把这个问题拆成两点来看:
- 行业风格会干扰因子纯度:不同行业的股票,在很多因子上的分布天然就不一样。比如市盈率,银行股普遍低,科技股普遍高。如果你不做中性化,因子值里混杂了行业信息,你很难判断这个因子到底在选行业还是在选股票。
- 行业轮动会带来伪回测:我在项目中遇到过好几次,某个因子在回测期表现极好,但仔细一看,是因为那几年某个行业一直在涨。因子只是碰巧选到了那个行业的股票。一旦行业轮动,因子就失效了。
所以,行业中性化的核心目的就一个:剥离行业影响,让因子只反映股票自身的差异。
1.2 行业中性化的核心思想
核心思想其实很简单,就一句话:在行业内比较,而不是跨行业比较。
你想想看,如果你要评价一个学生的数学成绩好不好,你会拿他跟全校所有学生比吗?不会。你会拿他跟同班同学比,因为不同班级的教学进度、考试难度都不一样。行业中性化也是这个道理。
具体来说,行业中性化要做两件事:
- 识别行业归属:把股票分到不同的行业里。比如申万一级行业、GICS行业分类等。
- 在行业内做标准化:对每个行业内部的因子值,分别做标准化处理(比如z-score、rank等),让每个行业的因子值分布变得可比。
这样做的好处很明显:
- 因子值不再受行业整体水平的影响
- 选出来的股票在各个行业里都有分布,不会过度集中
- 因子回测结果更稳健,不容易被行业轮动带偏
重要提醒:行业中性化不是万能的。它只能剥离行业层面的系统性影响,但无法剥离风格因子(比如市值、动量)的影响。如果你需要更干净的因子,通常还要做市值中性化、波动率中性化等。
1.3 行业中性化的两种常见做法
在实际操作中,我见过两种主流做法。这里给大家列个表对比一下:
| 方法 | 做法 | 优点 | 缺点 |
|---|---|---|---|
| 行业内标准化 | 对每个行业内的因子值,分别做z-score或rank标准化 | 简单直观,容易实现 | 行业样本量少时,标准化结果不稳定 |
| 回归法 | 用因子值对行业哑变量做回归,取残差作为中性化后的因子 | 理论上更严谨,可以同时做多维度中性化 | 计算稍复杂,需要处理多重共线性 |
我个人更推荐行业内标准化,尤其是刚入门的时候。原因很简单:它够直观,出了问题也容易排查。我记得有一次,我用回归法做中性化,结果发现残差里还残留着行业信息,排查了半天才发现是哑变量编码出了问题。换成行业内标准化,一眼就能看出问题在哪。
小技巧:如果你用行业内标准化,建议每个行业至少有20只以上的股票。行业样本太少,标准化后的因子值方差会很大,反而引入噪声。我一般会把样本量不足的行业合并到「其他」类别里。
1.4 行业中性化的直观理解——一张图说清楚
下面这张图,是我自己画的一个简单示意图,帮你理解行业中性化到底在做什么:
你看,左边是原始因子值。行业A的股票因子值普遍偏高,行业B的股票因子值普遍偏低。如果你直接拿这个因子去选股,选出来的大概率全是行业A的股票。但经过行业内标准化之后,每个行业内部的因子值都变成了相对位置——股票1在行业A里是领先的,股票4在行业B里也是领先的。这样选出来的股票,在各个行业里都有分布,因子也更干净。
1.5 什么时候可以不做行业中性化?
嗯,这里要补充一点。虽然我强烈建议大多数情况下都做行业中性化,但确实有一些场景可以跳过:
- 行业因子本身就是你的目标:比如你专门做行业轮动策略,那就不需要中性化,反而要保留行业信息。
- 全市场选股且行业分布均匀:如果你的因子天然在各个行业里分布都很均匀,那中性化的效果有限,做不做差别不大。
- 样本量极小:比如你只选几十只股票,行业中性化反而可能引入噪声。
注意:以上是例外情况,不是常规操作。如果你不确定,那就做行业中性化。我在项目中吃过亏,所以现在养成了习惯——任何因子,先做行业中性化,再看效果。多一步操作,少一个坑。
1.6 小结
行业中性化,说白了就是让因子回归本质——选股票,而不是选行业。它的核心思想是「在行业内比较」,做法也很简单:行业内标准化或回归法。我个人建议初学者先从行业内标准化入手,等熟悉了再尝试回归法。
下一节,我们会具体讲如何用Python实现行业中性化,包括代码示例和常见坑点。到时候我会拿一个真实案例来演示,保证你看完就能上手。
公众号:蓝海资料掘金营,微信deep3321