第 2 章 · 02 单因子测试流程


文档摘要

第 2 章 · 02 单因子测试流程 本节摘要:有了候选因子,下一步不是直接拿去选股,而是先做「单因子测试」——用标准化的流程检验因子到底有没有预测力,以及它的收益分布长什么样。华泰多因子系列第 1 篇与海通选股因子系列方法论部分确立了一套通用流程:先对原始因子做预处理(去极值、标准化、行业市值中性化),剔除数据噪声与已知的收益来源;再按因子值把股票分若干组(常用五分组或十分组);最后统计各组未来收益、计算多空收益与单调性。本节讲透这套标准流程的每一步,为后面 IC/IR、因子合成打基础。读完本节,你能独立设计一个干净的单因子测试。 内容来源:仓库研报 华泰多因子系列第 1 篇 + 海通选股因子系列方法论,知识结构化整理。

第 2 章 · 02 单因子测试流程

本节摘要:有了候选因子,下一步不是直接拿去选股,而是先做「单因子测试」——用标准化的流程检验因子到底有没有预测力,以及它的收益分布长什么样。华泰多因子系列第 1 篇与海通选股因子系列方法论部分确立了一套通用流程:先对原始因子做预处理(去极值、标准化、行业市值中性化),剔除数据噪声与已知的收益来源;再按因子值把股票分若干组(常用五分组或十分组);最后统计各组未来收益、计算多空收益与单调性。本节讲透这套标准流程的每一步,为后面 IC/IR、因子合成打基础。读完本节,你能独立设计一个干净的单因子测试。

内容来源:仓库研报 华泰多因子系列第 1 篇 + 海通选股因子系列方法论,知识结构化整理。

⚠️ 学习提示:很多初学者跳过预处理直接回测,得到的「有效因子」其实是行业/市值因子借尸还魂。预处理是单因子测试里最容易被忽视却最关键的一环。

学习目标

阅读完本节,你应当能够:

  1. 写出单因子测试的标准流程(预处理→分组→收益统计)。
  2. 掌握三种去极值方法(MAD/3σ/百分位)与标准化(Z-score)。
  3. 说清行业市值中性化为什么是必做的交叉检查。
  4. 分组回测画出因子的收益分布与多空收益。

一、为什么要做单因子测试

候选因子来自理论或数据挖掘,但它「到底有没有预测力、收益分布是否单调、能否稳定」必须用统一流程检验。直接拿去选股会同时混淆几个问题:是因子本身有效,还是它隐含了行业/市值暴露?收益是均匀分布还是只来自极端组?换手和容量能否接受?

单因子测试的目的就是把这些问题逐个拆开。它的标准流程是:

💡 核心心法:单因子测试的核心不是「证明因子有效」,而是「在干净环境里量度它有多有效」。预处理把环境弄干净,分组把效应暴露出来,统计把效应量化。三步缺一不可。

二、第一步:去极值

原始因子数据常有极端值——可能是数据错误(如停牌期的虚假值),也可能是真实但异常的极端公司。这些极值会严重扭曲相关系数和回归结果。

常用三种方法:

方法 公式(文字) 适用
MAD 法(中位绝对偏差) 先算中位数 median,再算 MAD = median( x - median
3σ 法 均值 ± 3 倍标准差外的值截断 简单,但受极值自身影响
百分位法 把 1% 分位以下、99% 分位以上的截到分位值 工程上常用

A 股因子分布常是厚尾偏态,华泰多因子系列默认推荐 MAD 法——它用中位数做基准,极值本身不影响阈值。

# MAD 去极值示意 median = factor.median() mad = (factor - median).abs().median() bound = n * 1.4826 * mad # n 常取 5 或 3 factor = factor.clip(lower=median - bound, upper=median + bound)

三、第二步:标准化(Z-score)

去极值后,因子值的尺度差异巨大(PE 可能是几十,波动率是 0.2),无法直接比较或加权。标准化把不同因子拉到同一尺度。

最常用 Z-score 标准化:

z = (x - mean) / std

标准化后因子均值为 0、标准差为 1,后续分组、加权、回归才有可比性。

💡 关键观察:标准化必须在每个横截面(即每个交易日截面上,所有股票一起算 mean/std)做,不能跨时间序列。否则会引入未来函数——用了未来才知道的均值。

四、第三步:行业市值中性化(必做的交叉检查)

这是单因子测试里最关键也最常被忽略的一步。很多因子表面有效,实际只是隐含了行业或市值暴露。例如低 PE 因子,本质上多分布在金融、地产等大盘行业;若不做中性化,你以为发现的是「估值效应」,实际可能只是「市值/行业效应」。

中性化的做法:把标准化后的因子值对行业哑变量与市值的对数做线性回归,取残差作为「纯净因子值」。

factor_pure = factor_standardized ~ 行业哑变量 + log(市值) 的残差

残差就是因子剥离了行业与市值影响后的「纯 alpha 部分」。海通系列几乎每个因子报告都会同时给出中性化前后的结果对照,这是判断因子「独立贡献」的标准动作。

检验方式 含义
未中性化收益 因子的原始表现(含行业市值暴露)
行业中性化收益 剥离行业影响后的表现
行业+市值中性化收益 同时剥离行业与市值,最严格

一个因子若在中性化后失效,就说明它的预测力主要来自行业或市值,自身没有独立 alpha。

五、第四步:分组回测

预处理拿到纯净因子值后,按因子值把全市场股票等数量分成若干组(常用五分组十分组),统计每组的未来收益。

预处理的顺序很关键:必须是「去极值 → 标准化 → 中性化」三步串联,顺序不能乱。去极值先剔除异常点,保证后续均值/标准差估计不被污染;标准化把因子拉到同一尺度;中性化在标准化后做回归,残差仍是 0 均值、单位尺度的「纯净因子值」。若顺序颠倒(如先中性化再标准化),残差结构会被破坏,失去尺度一致性。

多空收益 = 第 5 组(多头)收益 − 第 1 组(空头)收益,是因子预测力的核心度量。

分组的几个细节:

  • 等数量分组:每组股票数相同(按因子值排序后五等分),保证可比性;而不是等间距分组(可能某组样本极少)。
  • 调仓周期:常见月度、周度调仓;调仓越频繁,换手与成本越高,但能更及时反映因子变化。
  • 收益计算:组内股票等权(简单)或市值加权(贴近实战),两种口径都要看。
  • 回看对齐:因子值在 t 时刻取,未来收益从 t+1 开始算(避免未来函数,即当天的因子值对应从明天起的收益)。

💡 关键观察:回看对齐这一条是最容易被忽略的陷阱。若误用「t 日因子值对应 t 日起的收益」,等于用了当日收盘价(当天才知道)对应当天收益,引入轻微未来函数。正确做法是 t 日因子值 → t+1 到 t+N 日的收益,与第 3 章第 04 节 shift(-N) 的逻辑严格一致。

理想的因子应具备两个性质:

  • 单调性:各组收益随因子值单调变化(线性递增或递减),说明因子值与收益有稳定关系。
  • 极端组拉开:第 1 组与第 5 组的收益差足够大,说明信号强度够。

若中间几组收益混乱、只有某一组极端,因子质量较差——它可能是被极端值驱动,而非整体有效。

六、第五步:收益统计与多角度检验

分组后,除了看多空收益,还要从多个角度交叉验证:

  • 时序稳定性:多空收益在历史上各年是否稳定为正,还是只靠个别年份。
  • 换手率:因子值变化快不快,高换手意味着高交易成本。
  • IC/IR:因子值与未来收益的相关性(下节详讲)。
  • 不同股票池:全市场、沪深 300、中证 500、中证 1000 上分别测试,看因子在哪类股票上有效。
  • 多空收益衰减:未来 1 日、5 日、10 日、20 日、60 日的收益分布,判断因子的衰减速度。

海通系列还特别强调分年度看收益——一个因子可能 10 年平均多空年化 10%,但其中 8 年贡献为 0,全部收益来自 2 个特殊年份(如某次金融危机)。这种「靠少数年份撑起平均」的因子,实战可靠性差,需要警惕。

下面是一份典型的单因子测试报告(以假想的低 PE 因子为例):

指标 全市场 沪深 300 中证 500
多空年化收益(未中性化) 12.5% 5.2% 9.8%
多空年化收益(行业+市值中性) 6.3% 1.1% 4.5%
月均 Rank IC 0.052 0.028 0.041
年化 IR 0.62 0.21 0.48
多头月换手率 35% 22% 40%

读这张表能得出几个判断:(1) 中性化后多空收益大幅下降,说明原始效果很大程度来自行业市值暴露;(2) 在沪深 300 上几乎失效,因子更适合中小盘;(3) 换手率 35% 偏高,扣成本后实际收益会更低。这种「多维度交叉检验」正是单因子测试的价值所在。

补充一个常被问到的细节:「多空收益」与「IC」不一致怎么办? 例如某因子 IC 显著为正但多空收益平淡。常见原因是因子只在中间组有效、极端组拉开不够,导致 IC(整体相关性)正而多空(极端组之差)小。这种因子质量差,实战中宁可放弃。

⚠️ 学习提示:卖方研报的单因子测试结果普遍存在「幸存者偏差」与「回测期挑选」问题。看到漂亮的分组收益曲线,先问:这些组里的股票是否都可交易?回测期是否覆盖多种市场状态?多空收益是否扣了交易成本?

本节要点回顾

  1. 标准流程:原始因子 → 预处理(去极值/标准化/中性化)→ 分组 → 收益统计 → 结论,五步缺一不可。
  2. 去极值:MAD 法用中位数做基准最稳健,3σ 简单但被极值污染,百分位法工程常用。
  3. 标准化:Z-score 必须在横截面做,跨时序会引入未来函数。
  4. 中性化:因子对行业哑变量+log(市值)回归取残差,是判断因子「独立 alpha」的标准动作;中性化后失效的因子只是行业/市值借尸还魂。
  5. 分组回测:五分组或十分组,看多空收益与单调性;理想因子单调且极端组拉开。
  6. 多角度检验:时序稳定、换手、IC/IR、不同股票池、不同持有期——单看多空收益会被蒙蔽。

下一节,我们看怎么把这套分组检验浓缩成两个核心数字——信息系数 IC信息比率 IR,以及更严格的分层回测


发布者: 作者: 灏天文库 转发
评论区 (0)
U