2、行业中性化基础:为什么要做行业中性化、行业分类标准(GICS/申万)、行业因子暴露的概念
2.1 为什么要做行业中性化?
做配对交易,说白了就是找两只走势相似的股票,赌它们的价差会回归。
但这里有个坑——如果两只股票刚好属于同一个行业,比如都是银行股,那它们的走势相似,很可能只是因为行业整体在涨跌,而不是个股之间有稳定的配对关系。
我刚开始做配对交易时,就吃过这个亏。当时选了招商银行和兴业银行,回测漂亮得不行,结果一上实盘,行业一回调,两边一起跌,亏损直接翻倍。后来我才意识到:行业因子暴露才是罪魁祸首。
为什么要做行业中性化?核心原因就三个:
- 剔除行业噪音:两只股票同涨同跌,可能只是行业β在起作用,而不是个股α。行业中性化能帮你把行业层面的影响剥离掉。
- 提升配对稳定性:行业中性化后,你找到的配对关系更纯粹,价差回归的可靠性更高。说白了,你赌的是个股之间的相对强弱,而不是行业走势。
- 避免伪回归:很多配对交易策略回测漂亮,实盘就崩,原因就是没做行业中性化。行业轮动一来,你的配对就失效了。
2.2 行业分类标准:GICS vs 申万
做行业中性化,首先得有个行业分类标准。目前国内用得最多的就两个:GICS(全球行业分类标准)和申万行业分类。
我个人习惯用GICS,因为它更国际化,适合做跨市场配对。但如果你只做A股,申万其实更接地气。
下面这张表,我整理了两者的核心区别:
| 对比维度 | GICS | 申万行业分类 |
|---|---|---|
| 发布机构 | MSCI + S&P | 申万宏源证券 |
| 层级结构 | 4级(行业组→行业→子行业→细分行业) | 3级(一级→二级→三级) |
| 一级行业数量 | 11个 | 31个(2021年新版) |
| 适用市场 | 全球 | A股为主 |
| 更新频率 | 每年一次 | 不定期调整 |
| 典型应用 | 国际对冲基金、跨市场配对 | 国内私募、券商自营 |
你想想看,如果你做的是A股内部的配对交易,用申万一级行业就够了。但如果你要跨市场(比如A股和港股配对),那就得用GICS,因为申万不覆盖港股。
2.3 行业因子暴露的概念
行业因子暴露,听起来很高大上,其实很简单——就是一只股票受行业走势影响的程度。
举个例子:贵州茅台和五粮液,它们对白酒行业的暴露度都很高。如果白酒行业涨5%,茅台可能涨4.5%,五粮液涨5.2%。这个4.5%和5.2%,就是它们对行业因子的暴露。
量化上怎么算?通常用线性回归:
# 伪代码示例:计算行业因子暴露
# 假设我们有一个行业指数收益率 r_industry
# 个股收益率 r_stock
# 回归模型:r_stock = alpha + beta * r_industry + epsilon
# 这里的 beta 就是行业因子暴露
import numpy as np
def calc_industry_exposure(stock_returns, industry_returns):
# 简单线性回归
X = np.vstack([np.ones(len(industry_returns)), industry_returns]).T
y = stock_returns
beta = np.linalg.lstsq(X, y, rcond=None)[0]
return beta[1] # 行业因子暴露系数
嗯,这里要注意:行业因子暴露不是固定不变的。我曾在实盘中遇到过一只股票,原本对银行行业暴露度很高,结果公司转型做科技,暴露度一下子就变了。所以建议每季度重新计算一次。
2.4 行业中性化的核心逻辑
行业中性化的核心逻辑,说白了就是:把行业因子暴露给对冲掉。
怎么做?有两种主流方法:
- 回归残差法:用个股收益率对行业因子做回归,取残差作为行业中性化后的收益率。残差就是剔除行业影响后的个股α。
- 行业配对法:只在同一行业内选配对股票,这样天然就中性化了。但缺点是可选范围小。
我个人更推荐回归残差法,因为它更灵活,可以同时处理多个行业因子。
下面这张SVG图,展示了行业中性化的完整流程:
从这张图可以看得很清楚:行业中性化不是把行业信息扔掉,而是把它剥离出来,单独处理。这样你得到的配对关系,才是真正基于个股自身逻辑的。
好了,行业中性化的基础概念就讲到这里。记住一句话:不做行业中性化的配对交易,就是在裸泳。
公众号:蓝海资料掘金营,微信deep3321