“便宜”“强势”“好公司”和“稳”,怎样变成可以比较、可以检验的因子数字?

单因子研究:构造

约 14 分钟6 道自测更新于 2026-11-02

一句话记住先定义口径,再做去极值、标准化和中性化;一个因子值必须能追溯到当时可得的数据。

01学完你能做到

你能把价值、规模、动量、质量和低波等投资想法写成截面因子;解释财务数据的时点、复权、去极值、标准化、缺失值和行业市值中性化;还能够指出一个因子构造中可能存在的前视偏差。

02这课解决什么问题

“这只股票便宜”或“这家公司质量好”只是判断,不能直接用于排序和检验。量化研究需要把判断写成一个有明确分子、分母、时点、方向和数据来源的数字。本课从定义开始,逐步处理极端值、缺失值以及行业和市值影响。

03一、先把投资想法写成数字

构造一个因子,至少要回答三个问题:

  1. 用什么数据衡量?例如便宜可以用市盈率倒数或市净率倒数;质量可以用 ROE 或毛利率。
  2. 数据对应哪个时点?利润是哪一期的,价格是哪一天的?在截面日是否已经公告?
  3. 数字越大是否代表信号越强?是否要取倒数、取对数或改变符号?

截面日记为 t,股票记为 i。所有财务数据必须使用 t 日之前已经公告、且当时可获得的版本。数据库中的追溯调整版本不能直接代替当时的首次公告版本。

04二、价值、规模、动量、质量和低波

1. 价值:EP 与 BP

收益率因子 EP 和账面价值因子 BP 可以写成:

EP_i,t = E_TTM_i,t ÷ MV_i,t = 1 ÷ PE_TTM_i,tBP_i,t = B_i,t ÷ MV_i,t = 1 ÷ PB_i,t

E_TTM 是最近 12 个月的归母净利润,常见拼法是最近一期年报加上本年累计与去年同期累计的差;B 是最近一期报告的净资产;MV 是总市值。具体字段口径要在数据字典中确认。

用 EP 而不是直接用 PE,有三个常见理由:

  • 利润从正数变成负数时,PE 会从正无穷跳到负无穷,排序不连续;
  • EP 是每一元市值对应的利润,更接近收益率的量纲;
  • 微利股的 PE 可能极大,EP 更容易识别其接近零的状态。

净资产为负时,BP 也可能为负。负 BP 不是“特别便宜”的自动证明,必须结合亏损、资产质量和一次性收益等因素判断。

2. 规模:取总市值的对数

LNCAP_i,t = ln(MV_i,t)

股票市值通常跨越多个数量级,直接使用原值会让少数大市值股票强烈影响回归。取对数可以压缩尺度,便于比较,但仍需要检查极端值和股票池口径。

3. 动量:12–1 与最近一个月反转

经典 12–1 动量可以写成:

MOM_i,t = P_i,t−1m ÷ P_i,t−12m − 1

P 使用复权价格。区间从过去第 12 个月末到过去第 1 个月末,跳过最近一个月。跳月是为了避免短期反转把中期动量抵消。信号含义不是由公式名称决定的:在 A 股,单独使用最近一个月收益时,常见研究会把它作为短期反转方向检验,而不是直接当成中期动量。

不同研究的动量口径并不相同。有的使用过去 12 个月收益,有的使用滞后 21 个交易日的加权收益,有的直接测试 1、3、6、12 个月收益。比较结果时必须先对齐窗口、跳月规则、复权方式和股票池。

4. 质量:ROE、毛利率和综合质量

ROE_i = NI_i ÷ BE_iGM_i = (Revenue_i − COGS_i) ÷ Revenue_i

质量因子必须明确:分子是单季、年初至今累计还是 TTM;利润是否归母、是否扣除非经常性损益;分母是期末权益还是期初期末平均权益;是否年化。

半年报累计 ROE 不年化时,不能和年报 ROE 直接比较。分子和分母还要匹配,例如归母净利润应与归母权益配套,含少数股东的利润应与相应口径的权益配套。

毛利率并不适用于所有行业。银行、保险和券商的利润表结构不同,直接把不存在的营业成本当作 0,会得到虚假的 100% 毛利率。遇到结构性缺失,应将该因子置空、改用适用全行业的指标,或按行业分别研究,而不是机械填成中性值。

综合质量可以由盈利、成长和安全等维度构成。多个指标合成时,要说明每个指标的方向、标准化方法、缺失处理和合成权重。

5. 低波:总波动与特质波动

总波动:

VOL_i = std(r_i,1, …, r_i,K) × √m

先把股票收益对市场收益做回归:

r_i,k = α_i + β_i × r_M,k + ε_i,k

特质波动:

IVOL_i = √[Σ(ε_hat_i,k²) ÷ (K − 2)] × √m

m 是一年中的期数,日频约为 252,周频约为 52。IVOL 依赖市场代理、回归窗口、收益频率和停牌处理,不能脱离这些条件比较。

05三、去极值、标准化和缺失值

1. MAD 缩尾

截面中位数:

x_M = median(x_1, …, x_n)

绝对中位差:

MAD = median(|x_i − x_M|)

可以把超出边界的值拉回边界:

[x_M − k × c × MAD, x_M + k × c × MAD]

这叫缩尾,不是删除股票。若数据近似正态,MAD 约等于 0.6745σ,所以 σ 约等于 1.4826 × MAD。乘以 1.4826 后的 3 倍 MAD,约相当于 3 个标准差。

也有研究直接使用 5 倍原始 MAD。它约等于 3.37 个标准差的宽度,两种写法不能只看数字大小判断谁更严格。

2. 其他去极值方法

3σ 法使用均值和标准差,但极端值本身会抬高均值和标准差,出现“掩蔽效应”。分位数缩尾则把两端固定比例的值拉回分位点,例如 1% 和 99%。

方法没有绝对优劣:如果极端值是录入错误,应该核查或剔除;如果它反映真实的困境或高盈利状态,机械缩尾可能抹掉信号。报告中要写清处理规则和被影响的观察数。

3. 三种标准化

等权 Z 分:

z_i = (x_i − mean(x)) ÷ std(x)

市值加权均值、等权标准差的形式:

z_i = (x_i − μ_cap) ÷ s_eqμ_cap = Σ(w_i × x_i),w_i = MV_i ÷ ΣMV_j

排序 Z 分先把原值替换为名次,再对名次标准化。排序 Z 更关注顺序,能降低极端值对距离的影响;代价是排第 1 和第 2 的差距,与排第 150 和第 151 的差距被视为类似。

4. 缺失值要先判断原因

  • 直接剔除:本期没有数据的股票不参与该因子测试;
  • 标准化后填 0:把缺失放到截面均值位置,但可能掩盖缺失本身的信息;
  • 行业内填补:只适合行业内确实有可比观测的情况;
  • 回归替补:利用其他描述符估计缺失值,但会把模型假设带入因子。

结构性缺失和随机缺失必须分开。银行没有营业成本属于结构性不适用,不能把毛利率填成 0 或平均值;个别公司的数据暂时缺失,才有讨论填补的必要。

06四、行业和市值中性化

1. 截面回归取残差

在每个截面期,对因子值回归:

f_i = b × lnMV_i + Σ(c_j × D_i,j) + ε_i

D_i,j 是行业哑变量,ε_i 是中性化后的因子值。可以去掉截距、保留全部行业哑变量,也可以保留截距、去掉一个基准行业;不能同时放截距和全部行业哑变量,因为它们完全共线。

OLS 正规方程说明,残差与每个行业哑变量的内积为 0,所以每个行业的等权残差和为 0;残差与 lnMV 的线性相关也为 0。这里的“中性”只表示线性、等权意义上的中性,秩相关或非线性关系仍可能存在。

如果使用 WLS,变成加权残差和为 0,等权行业均值通常不再为 0。实现时要区分“目标权重”和最小二乘变换中的行缩放:若目标是 w_i = √流通市值,则每行应乘 √w_i,也就是流通市值的四次方根。

2. FWL 定理的直觉

先把因子对行业和市值回归取残差,再用残差解释收益;或者在收益回归中直接加入行业和市值控制变量,在标准线性条件下得到相同的因子系数。它们是在不同步骤中做同一件事。

3. 中性化会拿走什么

中性化后的 BP 不再是“全市场绝对便宜”,而是“在行业和市值条件下相对便宜”。如果行业差异本身有预测意义,中性化也会把这部分信号削掉。因此应同时比较原始因子、中性化因子和行业因子,而不是预设中性化一定更好。

小行业尤其要谨慎:某行业只有一只股票时,加入行业哑变量后该股票的残差必然为 0;只有两三只股票时,行业内比较也很不稳定。

07五、构造因子的可复查流程

  1. 固定股票池和截面日。
  2. 记录每个原始字段的含义、单位、公告时间和版本。
  3. 明确价格是否复权、收益窗口和跳月规则。
  4. 先处理明显错误,再按当期截面去极值。
  5. 选择标准化方法,并记录是否使用市值权重或排序。
  6. 区分结构性缺失和随机缺失,记录剔除或填补数量。
  7. 按当时的行业归属和市值做中性化。
  8. 保存原始值、清洗值、中性化值和每一步的参数,确保另一位研究者能复算。

08六、和研究人员交流时可以怎么问

  • “EP 的利润是归母、扣非还是 TTM?分母是总市值还是流通市值?”
  • “动量是 12–1 还是最近一个月?价格是否复权?”
  • “ROE 是半年累计还是 TTM?金融业的毛利率如何处理?”
  • “低波是日频还是周频?特质波动对哪个市场指数回归?”
  • “去极值和标准化是逐截面做的吗?缺失值是剔除、填 0 还是单独建模?”
  • “行业分类用哪个版本?历史回测是否使用当时的行业归属?”

09延伸阅读

  • Fama 与 French:《The Cross-Section of Expected Stock Returns》
  • Jegadeesh 与 Titman:《Returns to Buying Winners and Selling Losers》
  • Novy-Marx:《The Other Side of Value: The Gross Profitability Premium》
  • Asness、Frazzini 与 Pedersen:《Quality Minus Junk》
  • Ang、Hodrick、Xing 与 Zhang:《The Cross-Section of Volatility and Expected Returns》
想一想

6 道自测

先在心里答一遍,再展开对照。能说清理由,比答对数字更重要。

  1. 01为什么价值研究常用 EP 而不是直接按 PE 从小到大排序?

  2. 02经典 12–1 动量为什么跳过最近一个月?

  3. 03为什么半年累计 ROE 不能直接和年报 ROE 比较?

  4. 04银行毛利率为什么不应把营业成本缺失当成 0?

  5. 05OLS 中性化后,行业内残差和以及与市值的线性相关分别有什么性质?

  6. 06为什么把今天的行业成分用于多年前的回测会产生前视偏差?

已看 0/6 题

练动手练习

任务:选一只股票和一个截面日,分别写出它的 EP、BP、LNCAP、12–1 动量、ROE 或毛利率、VOL 的原始数据来源、计算公式和可得时间。再选择一个因子,设计一份清洗记录:去极值方法、标准化方法、缺失值规则、中性化变量和股票池。

完成这一课

完成这一课

读完讲义、看完自测答案,这一课就算学完了。

  • 读完讲义
  • 看完全部自测

本课为投资者教育内容,案例数字均为示意,不构成任何投资建议,也不承诺收益。规则和费率会变,实际操作前请以交易所、监管机构和产品的最新公告为准。