01学完你能做到
你能把价值、规模、动量、质量和低波等投资想法写成截面因子;解释财务数据的时点、复权、去极值、标准化、缺失值和行业市值中性化;还能够指出一个因子构造中可能存在的前视偏差。
02这课解决什么问题
“这只股票便宜”或“这家公司质量好”只是判断,不能直接用于排序和检验。量化研究需要把判断写成一个有明确分子、分母、时点、方向和数据来源的数字。本课从定义开始,逐步处理极端值、缺失值以及行业和市值影响。
03一、先把投资想法写成数字
构造一个因子,至少要回答三个问题:
- 用什么数据衡量?例如便宜可以用市盈率倒数或市净率倒数;质量可以用 ROE 或毛利率。
- 数据对应哪个时点?利润是哪一期的,价格是哪一天的?在截面日是否已经公告?
- 数字越大是否代表信号越强?是否要取倒数、取对数或改变符号?
截面日记为 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五、构造因子的可复查流程
- 固定股票池和截面日。
- 记录每个原始字段的含义、单位、公告时间和版本。
- 明确价格是否复权、收益窗口和跳月规则。
- 先处理明显错误,再按当期截面去极值。
- 选择标准化方法,并记录是否使用市值权重或排序。
- 区分结构性缺失和随机缺失,记录剔除或填补数量。
- 按当时的行业归属和市值做中性化。
- 保存原始值、清洗值、中性化值和每一步的参数,确保另一位研究者能复算。
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 道自测
先在心里答一遍,再展开对照。能说清理由,比答对数字更重要。
01为什么价值研究常用 EP 而不是直接按 PE 从小到大排序?
02经典 12–1 动量为什么跳过最近一个月?
03为什么半年累计 ROE 不能直接和年报 ROE 比较?
04银行毛利率为什么不应把营业成本缺失当成 0?
05OLS 中性化后,行业内残差和以及与市值的线性相关分别有什么性质?
06为什么把今天的行业成分用于多年前的回测会产生前视偏差?
已看 0/6 题
练动手练习
任务:选一只股票和一个截面日,分别写出它的 EP、BP、LNCAP、12–1 动量、ROE 或毛利率、VOL 的原始数据来源、计算公式和可得时间。再选择一个因子,设计一份清洗记录:去极值方法、标准化方法、缺失值规则、中性化变量和股票池。
完成这一课
读完讲义、看完自测答案,这一课就算学完了。
- 读完讲义
- 看完全部自测
本课为投资者教育内容,案例数字均为示意,不构成任何投资建议,也不承诺收益。规则和费率会变,实际操作前请以交易所、监管机构和产品的最新公告为准。