Jikipedia
Jikipedia量化聚宽量化课堂(低频量化策略 43 篇)因子预处理(去极值、标准化与市值/行业中性化)
概念笔记

因子预处理(去极值、标准化与市值/行业中性化)

原始因子值跨股票常常不可比——银行股 BP 平均 >1、互联网相关服务平均约 0.1,直接按 BP 排序会「只买银行不买科技」。因子预处理就是在排序选股前先把这种污染剥掉:缩尾/截尾去掉极端值(去极值),(x−μ)/σ 标准化,再按市值、行业分组做中性化。量化课堂因子研究之四(part 30)用 BP 因子演示了这套流水线,结论:处理后的分位回测区分度与稳定性明显变好。

量化因子预处理缩尾截尾中性化标准化市值行业

一句话

「3 个苹果和 2 个橘子哪个好?折成人民币就能比了。」因子预处理 = 给不同股票折算同一把尺子:先压掉极端值(缩尾),再让每组内因子均值为 0、一个标准差为 1(标准化/中性化)。分组的依据(市值、行业)就是「哪些股票受同样的风格污染」,组内处理后才谈得上跨股比较与排序选股。

当前理解

为什么要处理(part 30 的 BP 案例)

  • 单因子未处理时跨股票不可比:银行 BP 高(估值口径天然高),互联网低;大盘股 BP 一般比小盘高。朴素「高 BP = 低估」会系统性偏向银行/大盘。
  • BP 的分位回测(part 18 已做)收益总体有区分度,但历史走势「凌乱混杂」——因为不同市值、不同行业的 BP 均值与分布都不同,组间差异把组内信号淹没了。
  • 市值端证据:2008 年前大盘股受追捧(BP 相对低),2008 年后小盘股被关注(BP 相对低)——BP 与市值的关系还会随年份反转。
  • 行业端证据:金融 BP 各年最高、IT 最低,行业估值逻辑稳定但水平差异大。

三步处理流水线(part 30 的示范)

  1. 分组:按「受同样因素影响」把股票归堆——示范用市值三分组(按当天总市值排序分大/中/小)与行业分组(证监会细分行业合并到一级,删无行业/单只/双标签股票)。
  2. 去极值
    • 缩尾(winsorize):超过阈值的值用阈值替换(如 BP>1.5 按 1.5 处理)——不丢样本。
    • 截尾(trim):把超阈值样本删掉再处理——股票池变小。
    • 阈值两种定法:指定分位(最大/最小 1% 等);数据驱动(均值 ±2σ ≈ 覆盖 95% 概率)。
  3. 标准化 / 中性化:组内 (x−μ)/σ,均值归 0、1σ=1。假设前提:「每组 BP 最大的公司可能有相同的相对低估程度」,标准化后它们同尺可比。
  • 示范细节:2016 年底 BP 原始分布右尾拖长,均值 ±2σ 缩尾后右部明显被压向中间;缩尾后再做市值中性化的分布更接近正态。作者试过对 BP 取对数,仍离正态很远,故用原始值。

处理后的效果(BP 分位回测)

  • 市值中性化后:BP 分位回测区分度明显、时序表现一致;高 BP 相对等权全指的超额持续放大;超额最大回撤最小处(第 2、3 分位)约 10%。
  • 行业中性化后:与市值中性化都明显好于不处理;行业中性化的分位区分度比市值中性化更好——对 BP 而言行业干扰 > 市值干扰。
  • 附加发现(未处理的市值分组分析):小市值整体收益高、回撤小,但小市值内的 BP 不产生额外超额;大市值里 BP 的超额好。2011 年前市场大小市值都认 BP,2011 年后高 BP 超额集中到大市值、小市值转向炒作。

边界与注意

  • 市值/行业是常用的分组标准,但不是所有因子都适用——分组标准要随因子受到的污染而变(流动性、波动率暴露等其它源也可作分组维度)。
  • 对纯排序的单因子策略,缩尾本身影响有限(排序只与相对大小有关),除非缩的样本很多;去极值的主要价值是别让极端值在后续回归/合成里捣乱。
  • 因子研究系列一~三(part 27–29)单因子回测时不做任何处理,正好当「未处理」对照;part 30 之后才升级成「分组研究 + 中性化」。

来源

常见混淆

  • 标准化 ≠ 中性化(但常混用):原文说有时研究中给三个定义、差异主要在表述。可记为:标准化是「全样本 (x−μ)/σ」;中性化是「分组后组内标准化」——分组处理才能消掉组间水平差。两词在口语里经常互换,看上下文。
  • 缩尾 ≠ 截尾:缩尾替换极值(样本数不变),截尾删除极值(股票池变小)。对排序类因子影响都有限,但截尾会真丢可交易标的。
  • 「高 BP 就好」≠「所有市场都成立」:BP 的方向与强度受市值、行业和年份风格影响;2011 年前后、大中小市值里结论不同。处理是让「同组内相对高低」可比,不是保证因子永远有效。
  • 中性化不是「把分布变正态」:标准化只是平移缩放;本文先缩尾再标准化让分布「看起来更正态」,那是附带效果,目的仍是对齐组间水平。
  • 分组处理 ≠ 分行业选股:行业中性化是在行业组内做相对比较后把全市场股票重新放一起排序,不是只在某个行业里选股。
  • 去极值 ≠ 造假数据:是显式、可复述的工程处理,阈值与分法都该写清楚——与「把不利数据偷偷删掉」是两回事。
  • 因子预处理 ≠ ML 特征缩放(但同家族):本篇处理的是「横截面因子跨股票可比」;kNN(part 38/41)处理的是「距离计算前各轴量纲统一」——后者用每轴除以 max−min 的 min-max 缩放,目的同为「别让大数值轴独裁」。两边都属「量纲统一」大主题,做法与用途不同,别把 (x−μ)/σ 中性化直接套到 kNN 特征上(反之亦然)。

开放问题

  • 分组标准(市值几组、行业到哪一级、要不要其它维度)与缩尾阈值(1%?2σ?)没有普适最优解——part 30 只示范 BP 一种因子的一套参数。
  • 「2011 年前后风格切换」「行业干扰大于市值干扰」是 2006–2016 上证样本内的观察,跨市场/跨时段是否成立 [需要验证]。
  • 处理后的因子拿去打分/回归合成时,多个因子的中性化标准不一致会引入什么偏差,原文未展开。
  • 中性化只对齐了「水平」,对因子「分散度/分布形状」的组间差异(四阶矩都不同)没有处理——更完整的对齐怎么做 [需要验证]。
  • 代码实现(分组、缩尾、中性化)在附图与官方源码,raw 未含,落地细节 [需要验证]。

更新 2026-09-06

检索知识库

按标题、类型或正文检索