第 30 篇
因子研究四:市值与行业的中性化
因子研究系列第四篇(postId=4594,作者 Sunx,编辑肖睿,2017-01-19 上线)。前三篇发现单因子「最大/最小端都赚钱、走势杂乱」,本篇给出解释与修法:因子取值被市值与行业污染,所以要先按分组做去极值(缩尾/截尾)与中性化(标准化),再分组回测。全篇用 BP 因子做贯穿案例,方法底座是第 18 篇的多回测/分位回测框架。核心结论:处理后的 BP 分位回测区分度与稳定性明显变好;市值、行业两个干扰源里,行业的干扰更大。素材见 raw/collections/jq-quant-classroom/30-30-因子研究四-市值与行业的中性化md.md。
这是什么
一篇「因子预处理 + 分组回测」的方法论案例。它先说清一个现象:单因子的值在未经处理时跨股票不可比(BP 为例:银行股平均 >1,互联网相关服务近一年平均约 0.1;大盘股 BP 一般比小盘股高)——直接按 BP 排序会「只买银行不买科技」。于是把受同样因素影响的股票归成堆(按市值、按行业),堆内做去极值、中性化,再用第 18 篇的框架做分组(分位)回测看效果。
核心要点
为什么单因子不可比(以 BP 为例)
- 银行股 BP 平均 >1,互联网相关服务近一年平均约 0.1;大盘股 BP 一般比小盘高。以为「高 BP = 低估」会只买银行、不买科技——不合理。
- 市值端:2005–2016 每年年底按总市值分三组(group1 小 / group2 中 / group3 大)看 BP 均值——牛市 BP 低、熊市 BP 高;早年大盘股受追捧(估值高、BP 相对低),2008 年后反转:小盘股更被关注、估值相对高、BP 相对低。
- 2016 年底分组的 BP 分布:各组的一至四阶矩(均值、方差、峰度、偏度)都不同;看似对数正态,但试过对数转换后仍离正态很远 → 后续处理用 BP 原始值而非对数值。
按市值分组的研究流程(框架示范)
- 三个市值等权基准:按当天市值排序分三组,每月初等权持有组内「上月未停牌」股票;2006-02-01 ~ 2016-11-01,初始资金 200 万,上证股票。结果:2008 年后小市值组收益明显高(对应 BP 组间排名反转的时点)。
- 每个市值组内再按 BP 分 10 组回测:小市值各 BP 分位收益都明显高、最大回撤也更小;各组内 BP 越大回报相对越高;高 BP 结合等权基准对冲后超额回撤低。
- 小市值中 BP 不带来额外超额(小市值整体好,但 BP 在小市值内部区分不出超额),大市值中 BP 的超额很好。
- 对数轴超额走势:大市值高 BP 超额持续扩大;小市值高 BP 的超额主要产生于 2011 年前,之后回撤,BP 最大的小市值股完全没有超额。判断:2011 年前市场认 BP 价值投资(大中小市值都认,中小市值回报更多);2011 年后高 BP 回报集中到大市值,小市值转向炒作——这是风格切换的时序证据。
按行业分组
- 行业分类:证监会行业分类 / 聚宽行业分类。把证监会细分行业按首字母合并到上级(A01–A05 → A),得约 14–16 个一级行业(A 农业、B 开采、C 制造、D 能源、E 建筑、F 零售、G 交通运输、H 餐饮住宿、I IT、J 金融、K 房产、L 商务租赁、M 研发、N 公共产品、P 教育、R 文化、S 综合等);删除无行业(2016 年底约占总股票 9%)、只有一只股票的行业、双行业标签的股票。
- 行业 BP 观察:金融 BP 各年都最高、IT 相对低(行业估值逻辑稳定);多数行业 BP 在 2015 年低于 2014/2016 年(跟随大盘波动);偏离这两条规律的行业体现投资风向变动。
- 行业数多,不为每个行业分别回测;直接给「按行业处理后的整体 BP 回测」。
两个处理方法
- 缩尾(winsorize)与截尾(trim):尾 = 分布图拖长但概率很小的部分。缩尾 = 超阈值的值用阈值替换(如 BP>1.5 就按 1.5 处理);截尾 = 把超阈值样本删掉再处理。阈值两种生成法:指定分位(如最大/最小 1%);或数据驱动,用均值 ± 标准差圈范围(本文用均值 ±2σ ≈ 覆盖 95% 概率)。对 2016 年底 BP 缩尾后右尾明显被压向中间(原始分布右拖长)。
- 中性化 / 标准化:把原始值减去均值再除以标准差,(x−μ)/σ → 均值 0、一个标准差 = 1。类比:「3 个苹果和 2 个橘子哪个好?折成人民币标准就能比」——假设各行业(市值组)BP 最大的公司可能有相同的「相对低估」程度,标准化后就可比了。缩尾后再做市值中性化的分布更像正态。
- 缩尾 vs 截尾对样本量的影响:截尾会减少备选股票池。对纯排序的单因子策略,缩尾影响不大——排序只与相对大小有关,除非处理参数碰到原始值很多。
处理后的回测结论
- 市值中性化后:BP 分位回测区分度明显、时序一致;高 BP 相对等权全指的超额持续放大;超额收益最大回撤最小处(第 2、3 分位)约 10%——「已经还不错」。
- 行业中性化后:与市值中性化都明显好于不处理;行业中性化的分位区分度比市值中性化更好——说明对 BP 而言,行业干扰 > 市值干扰(不同行业估值逻辑差异大,不同市值 BP 也有均值/分布差异)。
- 小结:具体股票分类与中性化标准要随因子变(市值/行业是常用特征,但不是所有因子都适用);找到合适标准后按本文流程做分组研究 + 中性化更科学。
机制 / 论证
- 为什么「一组内处理」而不全球处理:BP 的取值受投资者对不同行业/规模公司的成长预期与市场热点影响。把「受影响因素相同」的股票归一堆,堆内去极值/中性化,堆之间才可比——这是处理「行业/市值风格污染」的通用思路。
- 为什么缩尾而不是截尾:两者都是处理极值;缩尾用阈值替换(保留样本),截尾删除样本(股票池变小)。对排序类因子影响有限,但缩尾不丢样本、适合排序前先压掉极端值。
- 为什么中性化用 (x−μ)/σ:把「绝对水平」换成「相对组内均值的偏离度」,让不同组的股票在同尺子上比——「每组最大的 BP 公司可能同样被低估」这个假设是中性化能比的理论前提。
- 为什么处理前 BP 分位走势乱:分位混着不同市值(BP 高低与市值负相关)与不同行业(金融天然高 BP),组内差异被组间差异淹没;分组 + 处理后,分位间的超额才稳定显示出来。
可操作
- 因子预处理流水线(本文示范):分组成堆(市值三分组 / 行业分组)→ 组内缩尾(均值 ±2σ 或指定分位)→ 组内中性化标准化 (x−μ)/σ → 再用处理后的因子排序、分位回测。
- 回测框架沿用第 18 篇 parameter_analysis:等权全指/分市值等权作基准、超额收益与超额回撤、对数轴(细节与用法见 多回测与参数网格分析(分位回测、超额评估))。
- 分组回测参数(照录):市值三组(按当天总市值排序)、组内 BP 十分位、月度调仓、等权、2006-02-01~2016-11-01、初始资金 2,000,000、上证股票。
- 行业预处理细节:删除无行业(2016 底约 9%)、单只股票行业、双行业标签股票;行业合并到一级。
- 反用价值:BP 处理前「高 BP = 低估」的朴素用法会系统性偏向银行/大盘——先问「这个因子受什么污染」,再决定分组与中性化标准(不限于市值/行业)。
术语
- 去极值:处理分布两端极端值(缩尾/截尾的总称)。
- 缩尾(winsorize):超过阈值的值替换为阈值。
- 截尾(trim):删除超过阈值的样本。
- 中性化 / 标准化(neutralize / standardize):(x−μ)/σ,使均值 0、方差 1,消除组间水平差。
- 市值/行业暴露:组合因成分构成不同而天然偏向某类市值或行业(风格偏差),是因子比较时的干扰源。
- 超额收益/超额回撤:相对匹配基准(等权全指等)的收益与回撤,见 回测评价三指标(收益 / 最大回撤 / 交易次数) 与 多回测与参数网格分析(分位回测、超额评估)。
不确定 / 待验证
- 分组回测的收益/回撤具体数字大多在附图表里,raw 正文只有定性(「约 10%」的超额回撤是少数给数的点)。
- 「BP 干扰中行业的问题更大」是基于行业中性化区分度优于市值中性化的判断,无单一数字量化两源贡献。
- 市值三分组阈值、±2σ 缩尾、一级行业合并等参数都是本案例选择;换因子/换分组是否同样有效未给通用法则。
- 文中「对数转换后仍离正态很远所以用原始值」的判据未量化;分布图形状描述(对数正态、右拖尾)基于图。
- 处理只讲了市值与行业两个维度;其他污染源(流动性、波动率暴露等)未展开;2011 年前后风格切换的解释是推测。
- 代码(去极值/中性化实现、分组回测)与函数、变量说明书在附图,raw 未含完整实现 [需要验证]。
相关
- 因子预处理(去极值、标准化与市值/行业中性化) — 去极值/标准化/中性化的系统概念页(本篇核心对象)
- 多回测与参数网格分析(分位回测、超额评估) — 分位回测与基准对齐框架(本篇方法底座,part 18)
- 因子选股(排名 / 打分 / 阈值筛选) — 因子选股谱系(本篇是它的「去污染」升级)
- 因子研究一:估值和资本结构因子 — 系列一(BP 因子出处与未处理回测)
- PEG 估值(市盈率 ÷ 盈利增长率) / 杜邦分析(ROE 的三条来源途径) — 估值/ROE 类因子同样受市值行业影响的对照
更新 2026-09-06