主流因子解读
第 2 章给了你一套统计武器,这一章把武器对准具体目标:市场、规模、价值、动量、盈利、投资、换手率——七个最主流的因子,逐个讲清它从哪来(起源)、它凭什么赚钱(成因)、它在 A 股到底灵不灵(实证)。但在开火之前必须先把弹药检查一遍:数据怎么处理、因子怎么构造,坑都在哪里。3.1 节的数据流程规范,是后面所有实证结论可信的前提。
先把结论地图摆出来。原书用 2000—2019 年共 20 年的 A 股数据、按统一流程对七个因子逐一做了检验,定性结论如下表(细节在各节展开):
| 因子 | 排序变量 | 起源 | A 股定性结论(原书实证) |
|---|---|---|---|
| 市场 | 全市场市值加权组合 | Treynor、Sharpe、Lintner、Mossin(1960 年代) | 解释个股时序波动有效;但 β 与截面收益无正向关系,反有低 β 异象苗头 |
| 规模 SMB | 总市值 | Banz (1981) | 显著(月均约 1.4%),但受壳价值污染,2017 年后大幅回撤 |
| 价值 HML | 账面市值比 BM | Stattman (1980)、Fama–French (1993) | 显著(月均约 0.7%—1%),大市值中明显减弱 |
| 动量 MOM | 过去 11 个月收益(跳过最近一月) | Jegadeesh–Titman (1993) | 不显著;小市值反转、仅大市值有微弱动量 |
| 盈利 | ROE(TTM) | Novy-Marx (2013)、FF (2015)、HXZ (2015) | 控制市值后显著(月均约 0.6%) |
| 投资 | 总资产增长率 | Titman et al. (2004)、Cooper et al. (2008) | 不显著(控制盈利后仍不显著) |
| 换手率 | 异常换手率 | Liu et al. (2019) 的 PMO | 非常显著(月均约 1.2%—1.5%,t 值超过 5),但空头贡献大 |
下图把其中四个代表性因子的多空组合累计收益画成示意曲线——漂移和波动按上表的定性结论设定,让你先对"谁强谁弱"有个直观印象:
3.1数据和流程
因子研究是"垃圾进、垃圾出"的重灾区:一个不小心用了未来数据的回测,可以把任何废物包装成圣杯。本节把原书全部实证遵循的数据处理流程讲清楚——这些约定同样适用于第 4、5 章的实证,也应该成为你自己做研究时的默认规范。
数据来源与研究范围
原书的行情、指数与宏观数据来自 Wind,财务数据来自开源接口 Tushare;全部实证为日线级别、月末调仓。股票池是沪深两市主板、中小板与创业板的全部 A 股(不含科创板);样本期为 2000 年 1 月至 2019 年 12 月,整 20 年。起点选 2000 年有两个理由:会计准则从 1999 年起才成型、口径前后可比;且此时上市公司已有九百余家,样本量足以支撑截面统计(到 2019 年末已近 3700 家)。
量价数据处理
分红、送股会让股价出现"假跳水",复权就是把这些技术性缺口补上,让价格曲线只反映真实的赚亏。
前复权保持当前价格不变、往回调整历史价格:看盘方便,是行情软件的默认方式。但它有两个缺陷——每次除权除息都要重算历史,所以"历史价格"本身是时变的(今天看到的 2015 年前复权价和明年看到的可能不同);对持续分红的公司,前复权价甚至可能出现负值。
后复权保持历史价格不变、向前调整当前价格:它偏离真实报价、不适合看盘,但正因为历史值从不改动,它就是投资者"从头拿到现在"的财富增长曲线。做回测和计算收益率,一律用后复权价,原书亦然。
除了复权,量价数据还有三个常见的坑:
- 复牌无涨跌停的极端收益。长期停牌股(重大重组、恢复上市等)复牌首日不受涨跌停限制,单日收益可以极端到失真。原书的处理:对 1996 年 12 月涨跌停制度实施之后的数据,把日收益率压缩到 $[-10\%, +10\%]$ 区间内(超出者用边界值代替)。
- 停牌日的填充。停牌日没有交易数据,是"用上一个交易日的价格填充"还是"记缺失",要看用途:计算动量(当前价格相对基期价格的涨幅)时填充在逻辑上是通顺的;但计算波动率或市场 β 时,填充会让停牌日收益恒为零,系统性低估波动率、扭曲 β——这类场景必须记缺失、不参与计算。
- 最少交易日约束。对需要滚动窗口计算的指标,原书要求窗口内有效样本超过三分之二才计算(如 21 个交易日的月波动率至少要 14 个有效样本),否则记缺失,避免频繁停牌的股票用极小样本算出离谱的数。
"停牌没数据,补个 0 呗"——这是新手最常见的一类错误。收益率补 0 等于宣称"这只股票停牌期间毫无风险",波动率被低估、β 被拉向零,低波动/低 β 类策略会系统性地把长期停牌股误认为"稳健股"买进来。填充还是缺失,永远取决于指标的经济含义,没有一劳永逸的答案。
财务数据:point-in-time 是铁律
财务数据远比量价复杂。A 股公司每年披露四次财报(一季报、半年报、三季报、年报),报告期用"年份 + 季度末日期"标识(如 20180930)。麻烦在于:同一个报告期的数字,会被披露不止一次,且数值可能变化。
- 基准报表。披露最新财报时会顺带披露一份历史对照:资产负债表对照上年年报(期初余额),利润表和现金流量表对照上年同期。如果对照值与当初首次披露值不同,就发生了调整。
- 不定期更正。因会计差错或政策变更,公司可能对以前某期报告发布更正公告,时间没有规律。
于是数据库里同一报告期可能存在四类记录:初始报表(最新值)、基准报表(最新值)、初始报表(原始值)、基准报表(原始值)。用哪一条?两种偷懒做法都不可取:只用首次披露值,简单但浪费了调整和更正的新信息;一律用最新值,则在历史回溯时用到了当时根本看不到的数字——这就是前视偏差(look-ahead bias)。正确答案只有一个:
回测里的任何一天,只准用那一天已经公布的数据——后来才发布、才修正的数字,一律不许偷看。
操作上,就是给每条财务记录挂上公告日期,回测走到日期 $t$ 时,取"公告日期不晚于 $t$ 的、同一报告期的最新一条记录"。举例:某公司 $t_1$ 日披露年报、$t_2$ 日发更正公告、$t_3$ 日随次年年报披露基准报表,那么在 $[t_1,t_2)$ 之间用首次披露值,$[t_2,t_3)$ 之间用更正值,$t_3$ 之后用基准报表值。这样既充分利用了最新信息(包括业绩预告、快报),又杜绝了前视偏差。
假设某公司 2018 年 8 月底披露半年报净利润 5 亿元,9 月底发更正公告改为 3 亿元。如果你的回测在 9 月初按盈利排序建仓,正确的输入是 5 亿——那是当时市场看到的数字。用 3 亿去回测,等于假设你提前一个月知道了更正内容;这类"小抄"积累起来,足以把一个平庸策略的回测曲线修饰得光彩照人,而实盘立刻原形毕露。
单季度与 TTM
直接拿报告期数据比较还有一个问题:一季报是 3 个月的累计,年报是 12 个月的累计,不同报告期、不同季节性的公司之间没法直接比。两件标准工具:单季度数据——资产负债表是时点数,单季值即报告期值;利润表和现金流量表的单季值等于当期累计减去上一季累计(一季度即一季报本身)。以及更常用的 TTM:
把最近四个季度的业绩接起来凑满一整年,抹平淡旺季差异,不同披露进度的公司才能放到一起比。
对利润表和现金流量表科目:最新报告期若是年报,TTM 就是年报本身;否则按下式滚动拼接。对资产负债表这类时点科目,常见做法有三种——直接取最新值、取最近四个报告期均值、取最新报告期与其上年同期的均值。原书计算 ROE(TTM)时,分母用的就是四期均值。若上年年报或同期数据缺失,可退而用年化系数近似(一季报、半年报、三季报分别乘 4、2、4/3)。
因子构造流程
数据备好之后,构造因子还要回答四个问题:股票池怎么定、异常值怎么处理、怎么排序分组、怎么加权调仓。
- 股票池与"黑名单"。原书保留金融股(多数因子不依赖特殊会计科目;金融业有优质公司;Fama–French 的经典研究也未刻意剔除),但剔除四类高风险股票:待退市股、风险警示股(ST/*ST)、最近报告期净资产为负的股票、上市不满一年的次新股。这些股票要么面临退市地雷,要么被炒作逻辑主导,留在池子里会污染对因子本身的评价。
- 异常值。指标是特征的代理变量,应有合理的取值区间;由于数据质量和极端会计科目(如净资产趋近于零导致 ROE 上千个百分点),极端值必须处理。原书对每期截面在两侧各 1% 分位处做极端值处理(剔除两端极端样本);更常见的缩尾(winsorization)则是把极端值压回分位数边界,第 7 章还会系统介绍。
- 排序与分组。单变量排序按指标十分位分 10 组;双重排序用市值与目标变量独立分组、各分 5 档,相交得 5×5 = 25 个组合(正因市值是默认的控制变量,规模因子本身只做单变量排序)。组合内部同时汇报等权重与市值加权两套结果。因子收益率由"每个市值档内 High−Low,再对五档取平均"合成——相当于在控制市值后提取纯因子收益。
- 调仓与可交易性。所有因子统一每月末调仓;调仓日剔除停牌股与一字涨跌停股票(根本成交不了——限制买入一字跌停股,等价于限制空头卖出,使空头收益更贴近现实)。交易成本设为零,即所谓纸面收益率(paper return)——这是实证资产定价的惯例,但读结果时要时刻记得这一点。
把以上约定汇总成一张表,方便对照后面各节的实证:
| 项目 | 本书实证设定 |
|---|---|
| 股票池 | 沪深主板、中小板、创业板全部 A 股(不含科创板) |
| 样本期 / 频率 | 2000-01 至 2019-12;每月末调仓 |
| 黑名单 | 待退市、风险警示(ST)、最近报告期净资产为负、上市不满一年 |
| 金融股 | 保留 |
| 价格 | 后复权;日收益率压缩至 ±10% |
| 财务数据 | point-in-time;TTM 与单季度按上文规则计算 |
| 异常值 | 截面两侧各 1% 极端值处理 |
| 排序 | 单变量 10 组;与市值独立双重排序 5×5 |
| 权重 | 等权与总市值加权两套结果 |
| 可交易性 / 成本 | 调仓日剔除停牌与一字涨跌停;不计交易成本 |
- 收益率计算一律用后复权价;复牌极端收益压缩到 ±10%;停牌日"填充还是缺失"取决于指标含义。
- 财务数据的同一报告期有多条记录,唯一正确的用法是 point-in-time:回测日只用当天已公布的最新记录。
- TTM 把最近四个季度拼成一年,消除季节性,是财务类因子的标准输入。
- 统一流程:剔除黑名单、1% 极端值处理、10 组单排序 + 与市值 5×5 双排序、月末调仓、零成本纸面收益。
3.2市场因子
整个股市一起涨、一起跌的那部分风险。买指数基金,赚的就是它的钱。
市场因子的收益率是全市场市值加权组合的超额收益 $R_M - R_f$。它是历史上第一个被辨识出来的因子——CAPM 说它是唯一的因子。原书构造市场因子时,用全部 A 股按总市值加权。
起源:CAPM 与切点组合
多因子模型的源头是 CAPM。它的逻辑链条:假设投资者按均值—方差权衡收益与风险(沿袭 Markowitz 1952),且能按无风险利率自由借贷。那么每个人都会持有同一个风险组合——从无风险利率向最小方差前沿作切线得到的切点组合(tangency portfolio),它是夏普比率最高的组合;风险偏好只决定"无风险资产与切点组合各配多少"。既然所有人都持有它,加总起来它必然就是市场组合。由此得到:
对 CAPM 的质疑
"按无风险利率自由借贷"是个很奢侈的假设。Black(1972)证明:去掉这个假设,CAPM 依然能推出来,只是"无风险资产"的角色要换人——由一个与市场组合协方差为零的零 β 组合顶替:
此后几十年,学者们把 CAPM 拆成三个可检验的假说:(1)β 能且仅能线性地解释预期收益的截面差异;(2)市场超额收益显著为正;(3)零 β 资产的超额收益为零。用截面回归(Fama–MacBeth 1973 等)和时序回归(Jensen 1968 的 α 检验)反复检验后,结论令人尴尬:市场组合本身的超额收益确实高,但高 β 与低 β 组合之间的收益差远小于 CAPM 隐含的差距(线太平了,符合 Black 版本);而且市值、账面市值比(BM)、盈利市值比(EP)等变量都能解释 β 解释不了的截面差异。CAPM 被数据拒绝——但正因如此,才有了多因子模型和因子投资(Fama and French 2004 对这段历史有精彩综述)。
越"稳"的股票(跟大盘联动小),风险调整后反而赚得越多——和教科书的预言正相反。
证券市场线太平坦,意味着做多低 β 股票、做空高 β 股票能获得超额收益。Frazzini and Pedersen(2014)以 Betting Against Beta(BAB)为题系统实证了它:对杠杆受限的投资者来说,想要高收益只能去追高 β 股票(变相加杠杆),把高 β 股票的价格抬得过高、预期收益压得过低。这是第 5 章异象研究的重要伏笔。
A 股实证
市场因子不是多空对冲组合,无须构造因子模拟组合,原书直接检验两件事。第一,时序解释力:把每只个股的超额收益对市场组合超额收益做时序回归,看可决系数 $R^2$。A 股的结果:$R^2$ 均值约 29%、中位数约 31%——市场因子对个股收益的时序波动有相当解释力,这一点没有争议。
第二,检验 CAPM:每月末用过去 252 个交易日估计个股 β,按 β 分 10 组,看各组收益是否随 β 递增。结果恰恰相反:等权重下十组收益与 β 的秩相关约为 −0.4(不显著),市值加权下约为 −0.75 且显著——β 越高,收益反而越低。这与传统 CAPM 相悖、与 Black CAPM 相容,并且暗示 A 股同样可能存在低 β 异象。
"高 β 股票长期必然收益更高,拿它博牛市就行"——A 股数据(以及全球大量证据)并不支持。β 是时序上放大市场涨跌的杠杆,不是截面上预期收益的保证;长期看高 β 组的平均收益甚至更低。把"波动大"当成"预期收益高",是混淆了风险的两种含义。
- CAPM:所有人持有同一个切点组合 ⇒ 它就是市场组合 ⇒ 预期收益只由 β 决定。
- 放松无风险借贷假设得到 Black CAPM,零 β 组合替代无风险资产,隐含更平坦的证券市场线。
- 实证:市场因子解释时序波动很强,但解释截面差异很弱;SML 过于平坦催生了低 β 异象(BAB)。
- A 股:$R^2$ 均值约 29%;β 分组收益不升反降,市值加权时显著为负。
3.3规模因子
小公司股票长期平均比大公司股票多赚一点;做多小盘、做空大盘,就能把这份差价拿出来。
规模效应指小市值股票的平均收益系统性高于大市值股票。Fama–French 三因子模型中的 SMB(Small-Minus-Big)因子就是它的标准化身。规模效应还有明显的非线性:溢价集中在市值最小的那部分股票上,而不是沿市值均匀分布。
起源
故事从 Banz(1981)开始:基于纽约证券交易所约 40 年的数据,按市值分五组后,最小市值组的月均收益比其余股票高约 0.4%,差异高度显著。此后一批研究跟进(Reinganum、Keim 等),有的甚至估出每月超过 1.5% 的规模溢价——但样本偏少、结论不稳。真正的里程碑是 Fama and French(1993):系统考察规模、BM、EP 等变量后,估计规模因子溢价月均约 0.63%,并以此为基础提出三因子模型。FF 构造 SMB(连同 HML)的 2×3 双重排序法,成了此后所有因子构造的模板:
| 低 BM(L,成长) BM 后 30% | 中 BM(M) 中间 40% | 高 BM(H,价值) BM 前 30% | |
|---|---|---|---|
| 小市值(S) 市值中位数以下 | S/L | S/M | S/H |
| 大市值(B) 市值中位数以上 | B/L | B/M | B/H |
注意区分两套构造:FF 官方因子用上面的 2×3;原书的 A 股检验用的是 3.1 节的规范——单变量 10 组、或与市值独立双排 5×5。二者思想一致(控制一个变量、提取另一个),只是分组粗细不同。规模因子本身因为"市值就是排序变量",只做单变量排序。
成因:风险补偿还是别的什么
风险补偿一派给出三条主要线索。其一,财务困境风险:小市值公司很多是过去遭遇困境、市值大幅缩水的"坠落天使"(fallen angels,Chan and Chen 1991),破产风险更高,理应有补偿(Fama and French 1995, 1996)——但 Campbell et al.(2008)泼了冷水:破产概率高的公司确实对规模因子暴露更大,预期收益却没有更高。其二,流动性:小盘股流动性差,非流动性本身要求溢价,规模只是流动性的影子——可惜非流动性因子只能解释规模溢价的一小部分。其三,信息不对称与投资者基础:小公司信息少、缺乏分析师覆盖,机构投资者系统性回避,价格被压低、预期收益因此更高(Gompers and Metrick 2001 等)。
还有一派更釜底抽薪。Berk(1995)指出:只要定价模型设定有误,"市值小"就必然与未被解释的收益正相关——规模效应可能只是遗漏变量问题的镜像。
公司 A 和 B 期末现金流的期望相同,但 A 的现金流风险更大。风险大 ⇒ 折现率高 ⇒ A 的股价更低 ⇒ A 的市值更小;同时折现率高本身就意味着 A 的预期收益更高。于是"市值小"和"预期收益高"天然绑在一起——不需要任何"规模风险",只要模型漏掉了 A 的那种风险,规模就会看起来"被定价"。这就是 Berk 的机械论:规模是万能的残差收集器。
各派共同的尾声:随着规模效应广为人知、资金蜂拥而入,其在美国、欧洲乃至中国的表现都趋于平庸,长期超额收益的显著性在下降。
A 股实证:辉煌、回撤与壳价值
原书按总市值单变量排序分 10 组,小市值效应极其醒目:组合收益随市值上升几乎单调下降(收益与市值的秩相关接近 −1)。做多最小组、做空最大组构造的规模因子,等权与市值加权下月均收益均约 1.4%,t 值约 3——统计与经济意义双双显著。代价是高波动:多头组合年化波动率接近 37%。
但两点必须泼冷水。第一,这是不计成本的纸面收益。第二,因子有周期:2017 年起,大市值蓝筹走出独立行情,规模因子遭遇深度回撤——Liu et al.(2019)用 2000—2016 年数据发现的显著规模效应,在 2017—2018 年样本外被大幅稀释。图 3-1 中 SMB 曲线尾部的下坠画的正是这一段。
壳价值污染:A 股 SMB 不是干净的"规模"。在核准制下上市资格稀缺,借壳上市有真实需求,于是微小市值公司的股价里含着一份"壳期权"的价值。这部分股票的收益波动,很大程度由重组预期和 IPO/退市政策驱动,而不是任何"规模风险"。后果有二:历史上壳价值畸高抬升了 SMB 的纸面溢价;而政策转向(IPO 提速、退市从严、注册制推进)会让壳价值坍塌,SMB 随之断崖。Liu et al.(2019)因此在构造 A 股因子前先剔除市值最小的 30% 股票,剔除后规模效应依然显著——但"30% 一刀切"是否合理,原书持保留态度(见 3.4 节与第 4 章的进一步讨论)。
- Banz(1981)发现规模效应,FF(1993)用 2×3 双排序把它铸成 SMB;溢价集中在最小市值股票,非线性。
- 成因候选:财务困境、流动性、信息不对称/投资者基础;Berk(1995)提醒它可能只是模型设定偏误的残差。
- A 股规模因子历史上月均约 1.4%、高度显著,但被壳价值污染,且 2017 年后深度回撤。
- 公开后的因子会衰减——规模效应在全球范围内都已趋于平庸。
3.4价值因子
按"股价相对家底贵不贵"挑股票:买便宜的、卖贵的,长期平均能多赚一份钱。
估值低(高 BM)的股票预期收益高于估值高(低 BM)的股票,这就是价值效应。思想源头可以追到 Graham 和 Dodd 1934 年的《证券分析》——"用四毛钱买一块钱的资产";半个世纪后它被实证资产定价接管,以 HML(High-Minus-Low)的形式进入 Fama–French 三因子模型。
起源
学术线索起自 20 世纪 80 年代:Stattman(1980)最早发现高 BM 公司的股票预期收益显著更高(Rosenberg et al. 1985 有类似发现);Basu(1983)指出盈利市值比 EP 有解释力;Bhandari(1988)发现高杠杆企业有显著超额收益。集大成的是 Fama and French(1992):用排序法和 Fama–MacBeth 回归同时检验这些变量,发现单独看 BM 和 EP 都有显著溢价,但同时控制规模与 BM 后,EP 不再显著——EP 的溢价很可能只是它与规模、BM 相关性的投影。FF(1993)据此把 BM 定为价值因子的构造变量,FF(1995)进一步发现高 BM 预示着持续较差的盈利、低 BM 预示着持续较好的盈利——便宜有便宜的道理。此后的国际证据遍地开花:日本、英国、各新兴市场,乃至 Asness et al.(2013)著名的 Value and Momentum Everywhere——价值效应广泛存在于不同国家和股票、债券、商品、外汇等不同资产类别中。
成因:风险补偿 vs 过度外推
风险一派的候选解释很多,共同主题是"高 BM 公司在坏时候更脆弱":财务困境风险——Griffin and Lemmon(2002)发现困境风险高的企业里,高低 BM 组合的收益差是其他股票中的约两倍;Zhang(2005)的"在位资产"论——经济不景气时,价值公司满手难以削减的在位资产(assets in place),风险高于手握增长期权(growth option)的成长公司,因此要求更高回报;Hahn and Lee(2006)发现高 BM 企业对期限利差暴露更大,联系到商业周期风险;还有经营杠杆等角度(Obreja 2013)。
行为一派的旗手是 Lakonishok, Shleifer and Vishny(1994):投资者把过去的业绩简单外推(extrapolate)到未来——对过去差的公司过度悲观、把价格压得过低,对过去好的公司过度乐观、把价格捧得过高;此后的均值回归就表现为价值溢价。两条佐证:Ali et al.(2003)发现 BM 效应在套利限制更强的股票(特质波动率高、交易成本高、投资者不专业)中更显著——如果是风险补偿,没道理跟套利难度挂钩;Daniel and Titman(2006)发现投资者对"无形信息"反应过度,而 BM 恰好能预测无形收益的反转。
价值因子近年的日子并不好过:2008 年金融危机之后的十余年间表现惨淡;Fama–French 自己在 2015 年五因子论文中也承认,加入盈利与投资因子后 HML 变得冗余(第 4 章详述)。于是涌现出大量"改造 BM"的研究(把商誉、研发资本化处理等)。价值是死了还是蛰伏,是当前学界与业界最热的争论之一。
A 股实证
原书用 BM 做单变量 10 组排序:无论等权还是市值加权,组合收益都随 BM 上升表现出很好的单调性。High−Low 构造的价值因子,等权下月均约 1.0%(t 值约 3.1),市值加权下约 0.9%(t 值约 2.1)——等权更高,因为等权变相多暴露了小市值。与市值做 5×5 双重排序、五档平均后,价值因子月均约 0.69%(t 值约 2.9),依然显著。
但拆开看藏着重要结构:BM 的区分能力随市值增大而衰减——最小市值档内 High−Low 的 t 值高达约 4.8,最大市值档内则不再显著(t 值约 1.2)。也就是说,A 股的价值效应主要活在中小市值里。
"EP 在 A 股比 BM 好用,所以应该用 EP 构造价值因子"——先看一个会计恒等式:$\mathrm{EP} = \mathrm{BM} \times \mathrm{ROE}$(每股收益/价格 =(净资产/价格)×(收益/净资产))。BM 在小市值中强、大市值中弱;而 ROE(3.6 节将看到)恰好相反,小市值中弱、大市值中强。于是"剔除市值最小的 30% 股票"这一个动作,就会机械地削弱 BM、抬升 ROE,从而让 EP 显得优于 BM——Liu et al.(2019)用 EP 替代 BM 的选择,很大程度是这种数据处理的产物,缺乏独立的金融学依据。教训:换一个构造变量,必须有经济逻辑撑腰,不能只看实证跑分。
- BM = 账面权益/市值,是 P/B 的倒数;高 BM=价值股,低 BM=成长股。
- FF(1992):控制规模与 BM 后 EP 不再显著,BM 成为价值因子的标准变量;价值效应遍布全球多资产。
- 成因两派:坏时候更脆弱的风险补偿(在位资产、困境风险)vs 过度外推 + 套利限制的行为解释。
- A 股价值因子显著(双排序后月均约 0.7%),但集中在中小市值;EP 与 BM 之争背后是 EP = BM × ROE 的机械关系。
3.5动量因子
过去大半年到一年里涨得好的股票,接下来往往还会好一阵——追着强者买、把弱者卖掉。
严格地说是截面动量:比的是股票之间的相对强弱,而非某只股票自己的涨跌趋势(那是时序动量)。做多过去表现最好的"赢家组合"、做空最差的"输家组合"。它也是主流因子里争议最大的一个——Fama 旗帜鲜明地反对把它当作系统性因子,但它又实实在在出现在众多国家和大类资产中。
起源:Jegadeesh–Titman 与 11-1 构造
Jegadeesh and Titman(1993)定义了标准玩法:每月末按过去 $J$ 个月的总收益排序分 10 组,做多最高组、做空最低组,持有 $K$ 个月。为避免结果依赖某个特定起始月,同一时刻并存 $K$ 个错开一个月建仓的子组合,取平均——这就是"重叠组合"技巧。实证结果:多空组合与纯多头都有显著且稳健的超额收益,规模、β、季节性都解释不掉。JT(2001)用样本外数据回应了"数据挖掘"的质疑;Rouwenhorst(1998, 1999)在欧洲和新兴市场、Asness et al.(2013)在全球多资产上确认了动量的普遍性。刺眼的例外恰好是日本和中国 A 股。
后续文献(包括原书实证)最常用的版本是"11-1":
现在是 2019 年 1 月末,要构造动量变量:取 2018 年 1 月末到 2018 年 12 月末的累计涨幅(即 2018 年 2—12 月这 11 个月的收益),2019 年 1 月自己的涨跌不参与排序。排好序后建仓,持有 2019 年 2 月。
成因:反应不足 vs 过度反应
风险补偿一派的核心是"时变的系统性暴露":赢家和输家组合的风险暴露不同且随市场状态变化,多空对冲后的动量组合带着一个时隐时现的风险敞口。最生动的证据是 动量崩溃(momentum crashes,Daniel and Moskowitz 2016):熊市末端市场反弹时,空头端(跌得最惨的高 β 股)暴力反弹,动量策略在短时间内巨亏——这种肥尾风险本身可以视作动量溢价的来源。Liu and Zhang(2008)则发现赢家组合对产出增长率有更高的短期暴露。但宏观解释并非共识,反对证据同样不少。
行为一派的解释更丰富,可以分成两条主线。反应不足(underreaction):信息扩散慢,价格慢慢消化利好;Grinblatt and Han(2005)给出微观机制——处置效应(投资者急于兑现浮盈、死扛浮亏)让价格粘在成本价附近,拉开了价格与基本面的距离,之后缓慢收敛就形成趋势;他们发现控制了未实现盈利后动量不再显著。过度反应(overreaction):Daniel, Hirshleifer and Subrahmanyam(1998)认为投资者对私有信息过度自信、且有偏地自我归因(赚了是我英明、亏了是运气差),推着价格越走越远;推定预期(extrapolative expectations)模型(Barberis et al. 2015 的 X-CAPM 等)刻画的也是"把最近的涨幅外推成未来预期"的机制。市场情绪(Stambaugh et al. 2012)与知情交易也各有证据。一个有趣的跨国观察:Chui et al.(2010)发现越崇尚个人主义的国家,过度自信越严重,动量越强——这为"日本与中国动量弱"提供了一种文化侧写。
针对动量崩溃,实务上有两类改良:波动率管理——按预测的均值与波动动态调仓(Daniel–Moskowitz 2016;Barroso and Santa-Clara 2015 的目标波动版本,可把夏普比率提升约一倍);残差动量(Blitz et al. 2011)——先用多因子模型剥掉系统性暴露,只用残差收益排序,趋势更稳、不再有崩溃烦恼,甚至在日本和 A 股也有效(但原书提醒:A 股残差动量为何有效仍待深究)。
A 股实证:动量弱、反转强
原书按 11-1 构造动量变量后的检验结果,可以浓缩成一句话:学术界标准动量在 A 股不存在。单变量排序下,十组收益与动量的秩相关毫无章法(等权下甚至呈倒 U 形);多空组合月均收益无论等权还是市值加权都在零附近(t 值约 ±0.2)。与市值双重排序后拆开看更有意思:小市值组内赢家跑输输家(反转),只有大市值组内有微弱的动量;五档平均后仍然不显著(月均约 0.05%,t 值约 0.2—0.3)。这与散户占比高、交易换手极高的市场结构一致——短线资金追涨杀跌,把趋势提前透支成了反转。
一个统计细节:双重排序表里动量因子的算术月均收益略为正,但累计收益曲线却收在零下。没有矛盾——累计曲线对应几何平均,而几何平均 ≈ 算术平均 − 方差/2;当算术平均近零时,波动就足以把几何平均拖成负数。看因子表现,均值和波动要一起看。
下面的交互图把"排序期 $J$ × 持有期 $K$"的组合空间做成了示意实验台。拖动 $K$、切换"是否跳过最近一月",观察多空年化收益如何变化——特别注意 $J$ 很小时(短周期"动量"实为反转)和不跳月时的塌方:
"美股论文里动量年化两位数,搬到 A 股肯定也行"——直接照搬 11-1 动量在 A 股 20 年检验下来约等于零,短周期动量更是反着走。因子是有"国籍"的:同一个构造,在不同市场结构(投资者构成、换手率、做空限制)下的表现可以天差地别。任何因子出海或引进,都必须本地重验。
- JT(1993):按过去 J 个月收益排序、持有 K 个月、重叠组合取平均;标准构造为 11-1,跳过最近一月以避开短期反转。
- 成因:风险派讲时变暴露与动量崩溃的尾部风险;行为派讲反应不足(处置效应、信息慢扩散)与过度反应(过度自信、外推)。
- A 股是全球著名的例外:标准动量不显著,小市值反转、仅大市值微弱动量。
- 改良方向:波动率管理动量、残差动量;但在 A 股使用前都要本地重验。
3.6盈利因子
同样的价钱下,更会赚钱的公司,之后的股票回报平均更高——"好公司"并没有贵到把好处提前吃光。
盈利能力强的公司未来预期收益更高,这一效应被 Fama and French(2015)五因子模型(RMW,Robust-Minus-Weak)和 Hou–Xue–Zhang(2015)q 因子模型(ROE 因子)同时收编,是 2015 年后"因子大战"的主角之一。它的理论根基比多数因子扎实:估值模型(DDM/RIM)和生产端的 q 理论都能推出"盈利与预期收益正相关"。
起源:从毛利率到 ROE
用什么变量度量"盈利能力",学术界吵了很多年。分子可以是毛利润、营业利润、净利润、现金流;分母可以是总资产、净资产、投入资本。代表性变量一览:
| 变量 | 定义(分子 / 分母) | 代表文献 |
|---|---|---|
| GP/A | 毛利润(营业收入 − 营业成本)/ 总资产 | Novy-Marx (2013) |
| ROE | 营业利润或净利润 / 股东权益 | FF (2015) 的 RMW;HXZ (2015) 用季度净利润 |
| ROA | 利润 / 总资产 | Ball et al. (2015) |
| ROTC | 息税前利润 / 有形资本 | Greenblatt 的"神奇公式" |
| ROIC | 息前税后利润 / 投入资本 | Damodaran (2007) |
| RNOA | 经营利润 / 净经营资产 | Nissim–Penman (2001) |
转折点是 Novy-Marx(2013):他主张用毛利润做分子——毛利站在利润表最上游,离真实经营最近、被会计科目"加工"得最少;越往下走到净利润,混进的噪声越多。他发现 GP/A 的预测能力与 BM 相当,且与价值负相关,堪称"价值的另一面"。Ball et al.(2015)则反驳:GP/A 的优势主要来自分母(总资产),把分母统一后,营业利润、净利润作分子同样出色。原书 A 股实证选用 FF(2015)一脉的 ROE(TTM):
成因:为什么"好公司"也有溢价
直觉上这是个悖论:好公司人尽皆知,价格早该贵到把未来的好处吃光,凭什么还有超额收益?两派回答。
理性/理论一派:这不是悖论,是折现率的恒等式。从股利贴现模型出发(Fama and French 2006, 2015):在估值(BM 或价格)给定的条件下,预期盈利越高的公司,隐含的折现率——也就是预期收益——必然越高。换句话说,市场并没有"漏看"好公司,而是给某些好公司标了更高的折现率(它们在某些状态下风险更大),高盈利 + 价格没有相应更贵,本身就是"高预期收益"的显性化。q 理论(HXZ 2015)从生产端得到同样结论:给定投资水平,盈利率高而投资没有跟上,说明企业面对的资本成本(折现率)高。实证中用当期盈利代替预期盈利,是因为盈利有很强的持续性(Zhang 2017)。
行为一派:市场对盈利的质量与持续性关注不足。开山之作 Sloan(1996)把盈利拆成现金流和应计(accruals)两部分:应计含量高的盈利质量差、难持续,但投资者不加区分地按总盈利定价——于是高应计公司被高估、随后跑输,这就是著名的应计异象。基于现金流的盈利指标表现更好、且能解释应计异象(Ball et al. 2016),与这个故事一致。盈利维度还催生了一整个家族:盈利波动(低波动者盈利更可预测)、盈利增长(SUE、盈利加速度)、以及把盈利、成长、安全性打包的质量因子(Asness et al. 2019 的 QMJ)——Frazzini et al.(2018)著名的结论是:巴菲特的长期超额收益,很大程度可以用"低 β + 高质量 + 适度杠杆"解释。
A 股实证
按 ROE(TTM)单变量排序的结果乍看令人失望:等权下十组收益虽有单调性但差异很小,多空组合不显著;市值加权后显著性才上来。谜底在描述性统计里——ROE 与市值高度正相关:高 ROE 组平均市值大、低 ROE 组多为小市值。等权配置变相给低 ROE 组注入了小市值溢价,把盈利因子的差距抹平了。美股同样如此(Penman and Reggiani 2018);Asness et al.(2018)的名文 Size matters, if you control your junk 说的正是同一枚硬币的另一面——剔除"垃圾股"(低质量、低盈利)后,规模因子反而更显著。
因此必须控制市值。与市值 5×5 双重排序后,盈利因子五档平均月均收益约 0.58%(t 值约 3.3),显著;且呈"中间强、两头弱"——在最小市值档里区分度最差。这与 3.4 节 BM 的格局(小市值强、大市值弱)恰好互补,再次呼应了"剔除小市值会机械性抬升 EP、削弱 BM"的讨论。
- 盈利因子由 Novy-Marx(2013,GP/A)点燃,被 FF5(RMW)与 HXZ(ROE)收编;变量之争的核心是"分子取利润表哪一行、分母配什么存量"。
- 理论根基扎实:给定估值,高盈利必然对应高折现率(DDM);给定投资,高盈利对应高资本成本(q 理论)。
- 行为侧:市场不区分盈利质量(应计异象),质量因子甚至能解释巴菲特。
- A 股:ROE 与市值正相关,等权单排序看不出来;控制市值后显著(月均约 0.6%),小市值中较弱。
3.7投资因子
大举扩张、疯狂铺摊子的公司,之后的股票回报平均更低;花钱克制的公司反而更好。
投资效应:当期投资多的公司未来预期收益更低——注意方向是负的。FF(2015)的 CMA 因子(Conservative-Minus-Aggressive,做多低投资、做空高投资)和 HXZ(2015)的 I/A 因子都用总资产增长率作代理变量。它真正被重视是 2015 年两大模型同时纳入之后,但理论根子早已扎在公司金融的 q 理论里。
起源
最早的实证是 Titman et al.(2004):异常资本投资高的公司,随后一年收益显著走低,且常见风险因子解释不掉。Xing(2008)最早把 q 理论正式引入构造投资因子;Cooper et al.(2008)用约 40 年美股数据确立了总资产增长率的稳健负向预测力,此后它成为标准代理变量。国际证据方面,投资效应在发达市场明显强于新兴市场;而针对 A 股的多项研究(Guo et al. 2017;Qiao 2019;Liu et al. 2019)大都认为 A 股不存在显著的投资效应——这为原书的实证埋下伏笔。
成因:q 理论的一阶条件
投资因子最漂亮的解释来自 q 理论(Cochrane 1991 首倡;Zhang 2017 拓展为投资资产定价模型)。逻辑只需要一条一阶条件。设想一个两期的公司:今天投资,明天收获利润。投资有调整成本——扩张越猛,每多投一块钱的代价越高(工期挤压、管理摊薄)。公司把投资推进到"边际成本 = 边际收益的现值"为止:
其他解释还有:实物期权——投资等于行权,把高风险的期权换成低风险的在位资产,公司整体风险与预期收益随之下降(Berk et al. 1999;Carlson et al. 2004);规模报酬递减——投资越多,资本边际产出越低(Lyandres et al. 2008)。行为/公司行为一侧:管理层择时增发——股价被高估时发股融资扩张,此后估值回落(Baker and Wurgler 2002);帝国构建——高投资公司倾向过度投资、上净现值为负的项目,投资者反应不足,价值随后回归(Titman et al. 2004;Cooper et al. 2008 的外推故事);以及盈余管理配合高估值并购带来的虚假关联。
A 股实证:一个不存在的因子
原书的检验给 A 股投资因子判了"无罪释放式的死刑"——不是方向反了,而是压根不显著。单变量排序:十组收益与总资产增长率无单调关系,Low−High 多空组合 t 值不足 1。与市值双重排序更奇怪:各市值档内低投资组的收益反而低于高投资组,因子月均收益约 −0.2%(t 值约 −1.6)——与理论方向相反(虽仍不显著)。
怎么回事?线索又在描述性统计里:总资产增长率与 ROA 高度正相关——A 股上市公司负债率长期稳定(平均约 85%),总资产的增长很大程度由利润积累驱动,于是高投资组同时是高盈利组。3.6 节说过盈利因子在 A 股显著为正,所以"做多低投资"暗中做空了盈利因子,收益被拖累。为剥离这层污染,原书用 ROA 与总资产增长率做条件双重排序(先按 ROA 分组、组内再按投资分组——HXZ 用市值、ROE、投资三重排序的思路与此同源):控制盈利后,投资因子月均收益仅 0.03%—0.07%,t 值约 0.2—0.3,仍然不显著。结论:A 股不存在显著的投资效应——不是理论错了,而是这一效应在 A 股恰好缺席。一个可能的补充解释:A 股的总资产扩张常来自并购重组,而并购题材往往伴随股价上涨,正负两股力量相互抵消。
- 投资效应=高投资、低预期收益;标准代理变量是年报总资产增长率(CMA、I/A 皆用它)。
- q 理论一阶条件:预期收益 ≈ 预期盈利 /(1 + 调整成本 × 投资率)——投资与盈利两因子同根同源;投资是折现率的"显示器",不是原因。
- 行为侧解释:择时增发、帝国构建 + 反应不足、并购与盈余管理的虚假关联。
- A 股:单排序、与市值双排序、控制 ROA 的条件双排序全都不显著——投资因子在 A 股缺席,且总资产增长率与 ROA 的正相关会污染朴素检验。
3.8换手率因子
最近被炒得火热(换手异常放大)的股票,之后平均表现差;被冷落的反而好。
换手率=成交量 / 流通股本,是标准化的成交活跃度。学界与业界的共识:换手率与未来收益负相关。它未被纳入海外主流多因子模型,但在 A 股极其显著、认可度很高——Liu et al.(2019)为 A 股定制的四因子模型专门纳入了用异常换手率构造的 PMO 因子(Pessimistic-Minus-Optimistic),这也是本章收录它的原因:一个有 A 股特色的因子。
起源
对量价关系的运用,业界远早于学界——20 世纪初 Jesse Livermore 的趋势交易法就讲究"突破需要放量配合"。学术线索始于 20 世纪 90 年代:Datar et al.(1998)发现换手率有助于解释股票收益;Chordia et al.(2001)确认成交金额与换手率的变化对未来收益有显著负面影响;Subrahmanyam(2005)发现这种关系存在不对称性。国际证据总体支持负相关(日本、新兴市场),但也有例外报告正溢价。原书采用 Liu et al.(2019)的异常换手率定义:
成因:从流动性到情绪
早期研究把换手率当作流动性的代理:流动性差的股票要求补偿,低换手 ⇒ 低流动性 ⇒ 高收益。但 Amihud(2002)用"单位成交金额推动的价格变化"重新定义非流动性之后,换手率就不再适合扮演这个角色——高换手完全可以发生在流动性很差的炒作股上。此后解释的重心转向投资者行为:Odean(1998)与 Statman et al.(2006)指出换手率反映过度自信与盲目乐观,本质是一个情绪指标;Lee and Swaminathan(2000)、Hong and Stein(2007)把它联系到投资者注意力与意见分歧——分歧大、做空又受限时,价格主要反映乐观者的出价,随后回落。Liu et al.(2019)给因子起名"悲观减乐观"(PMO),立场已经写在名字里:低异常换手=被冷落=悲观定价,高异常换手=过热=乐观定价。此外还有崩盘风险(Chen et al. 2001)与总体波动率(Barinov 2014)等风险侧解释。
文献并非铁板一块:Gervais et al.(2001)发现异常高成交量的股票短期反而更好——高成交带来"可见性",吸引潜在买家(高成交溢价)。Lee et al.(2016)调和了矛盾:高成交溢价是短期(几周内)现象,更长期限上高换手依然是负面信号。原书的月频异常换手率因子站在"长期负相关"一侧。
A 股实证
这是本章 A 股表现最好的因子。单变量排序:组合收益随异常换手率上升而明显下降;做多低换手、做空高换手的因子组合,等权下月均约 1.5%(t 值约 5.5),市值加权下约 1.1%(t 值约 3)。与市值双重排序后五档平均,月均约 1.2%,t 值高达 6.5 以上,且累计收益曲线异常平顺。还有一个难得的优点:按异常换手率分组的十个组合,在市值、β、波动率、P/B、ROA 上都几乎没有差异——它携带的信息与其他常见特征近乎正交,"干净"。低换手效应在小市值中更强,但即便在最大市值档也大多显著。
"t 值 6 以上、曲线笔直,重仓干就完了"——先看这份收益从哪来。拆开多空两端:对因子组合贡献更大的是空头端——高换手组的收益特别差。但 A 股做空个股极其困难,空头端的贡献在实盘中注定大打折扣;这仍是不计成本、可自由做空假设下的纸面收益。可行的用法是退一步:低异常换手率的多头组合本身能跑赢市场(原书估计其年化夏普比率约 0.65,同期市场组合约 0.40),实际投资中可以让组合有计划地暴露于低换手特征,而不是幻想复制多空对冲的完美曲线。
- 异常换手率 = 近一月平均换手 / 近一年平均换手:度量相对自身常态的"过热程度"。
- 成因主线从流动性补偿转向投资者情绪:高换手=过度自信 + 意见分歧 + 做空受限下的乐观定价。
- A 股表现极强(双排序月均约 1.2%,t 值 6.5 以上)且与常见特征近乎正交。
- 清醒剂:收益大头在难以做空的空头端;实盘价值主要在多头暴露(跑赢市场)而非多空对冲。
本章练习
练习刻意有难度。代码题请准备 Python 环境(numpy / pandas),先自己写,再看提示,最后对答案。
下面的代码模拟一个 500 只股票、60 个月的市场:市值与 BM 都有持续性,且收益中植入了真实的规模溢价(负向暴露于市值)与价值溢价(正向暴露于 BM)。请你按 Fama–French 的 2×3 规则逐月构造 SMB 与 HML:
- 每月按市值中位数分 S/B 两档,独立地按 BM 的 30%、70% 分位分 L/M/H 三档,相交得 6 个组合;
- 组合收益一律市值加权;按定义式合成 SMB 与 HML 月度序列,输出月均收益与 t 值;
- 思考题:把 HML 换成"只在小市值内做 H−L"(即 $R_{S/H}-R_{S/L}$),对比二者的均值与波动。为什么 FF 要在两个市值档内分别做差再平均?
import numpy as np
import pandas as pd
rng = np.random.default_rng(42)
N, T = 500, 60
rows = []
log_mc = rng.normal(9.0, 1.2, N) # 对数总市值(有持续性)
log_bm = rng.normal(-0.5, 0.6, N) # 对数 BM(有持续性)
for t in range(T):
log_mc = log_mc + rng.normal(0, 0.08, N)
log_bm = 0.95 * log_bm + rng.normal(0, 0.15, N)
z_mc = (log_mc - log_mc.mean()) / log_mc.std()
z_bm = (log_bm - log_bm.mean()) / log_bm.std()
ret_next = 0.008 - 0.004 * z_mc + 0.003 * z_bm + rng.normal(0, 0.10, N)
rows.append(pd.DataFrame({
"month": t, "stock": np.arange(N),
"mc": np.exp(log_mc), "bm": np.exp(log_bm), "ret_next": ret_next,
}))
panel = pd.concat(rows, ignore_index=True) # 每行: 月份, 股票, 市值, BM, 下月收益
提示
逐月 groupby,分组标签用 np.where 两层嵌套即可;市值加权收益用 np.average(g["ret_next"], weights=g["mc"])。六个组合收益装进以 (size_g, bm_g) 为索引的 Series 后,SMB 是"S 三个的均值减 B 三个的均值",HML 是"两个 H 的均值减两个 L 的均值"。t 值 = 均值 / (标准差 / sqrt(月数))。
参考答案
import numpy as np
import pandas as pd
rng = np.random.default_rng(42)
N, T = 500, 60
rows = []
log_mc = rng.normal(9.0, 1.2, N)
log_bm = rng.normal(-0.5, 0.6, N)
for t in range(T):
log_mc = log_mc + rng.normal(0, 0.08, N)
log_bm = 0.95 * log_bm + rng.normal(0, 0.15, N)
z_mc = (log_mc - log_mc.mean()) / log_mc.std()
z_bm = (log_bm - log_bm.mean()) / log_bm.std()
ret_next = 0.008 - 0.004 * z_mc + 0.003 * z_bm + rng.normal(0, 0.10, N)
rows.append(pd.DataFrame({
"month": t, "stock": np.arange(N),
"mc": np.exp(log_mc), "bm": np.exp(log_bm), "ret_next": ret_next,
}))
panel = pd.concat(rows, ignore_index=True)
def factor_returns(df):
med = df["mc"].median()
size_g = np.where(df["mc"] <= med, "S", "B")
lo, hi = df["bm"].quantile([0.3, 0.7])
bm_g = np.where(df["bm"] <= lo, "L",
np.where(df["bm"] >= hi, "H", "M"))
df = df.assign(size_g=size_g, bm_g=bm_g)
vw = (df.groupby(["size_g", "bm_g"])
.apply(lambda g: np.average(g["ret_next"], weights=g["mc"])))
smb = vw["S"].mean() - vw["B"].mean()
hml = (vw[("S", "H")] + vw[("B", "H")]) / 2 \
- (vw[("S", "L")] + vw[("B", "L")]) / 2
hml_s = vw[("S", "H")] - vw[("S", "L")] # 思考题: 只用小市值
return smb, hml, hml_s
smb, hml, hml_s = [], [], []
for t, df in panel.groupby("month"):
a, b, c = factor_returns(df)
smb.append(a); hml.append(b); hml_s.append(c)
smb, hml, hml_s = map(np.array, (smb, hml, hml_s))
def report(name, x):
t_val = x.mean() / (x.std(ddof=1) / np.sqrt(len(x)))
print(f"{name}: 月均 {x.mean():+.3%}, 月波动 {x.std(ddof=1):.3%}, t = {t_val:+.2f}")
report("SMB ", smb)
report("HML ", hml)
report("HML(仅小盘)", hml_s)
典型结果:SMB 与 HML 月均都在 0.4%—0.7% 一带、t 值 3 上下,成功回收了植入的溢价。思考题:仅在小市值内做 H−L 的版本均值相近甚至略高(模拟里价值溢价对市值均匀),但波动明显更大、t 值更低——因为它只用了一半样本,而且没有对冲掉规模暴露:小盘 H 减小盘 L 的组合仍随"小盘整体行情"起伏。FF 在两个市值档内分别做差再平均,正是为了让 HML 对规模近似中性,把"纯价值"从"小盘价值行情"里剥出来。这也是一切"控制变量式构造"的原型。
下面的模拟市场里,每只股票的收益由三部分构成:慢变的"真实动量"成分 $\mu$(高度持续)、当月随机冲击 $u$、以及上月冲击的反转项 $-\theta u_{\text{上月}}$(短期反转:上月被炒高的股票这个月平均回吐)。请实现两个动量策略并对比:
- 策略 A(11-1):排序期为第 $t-11$ 至 $t-1$ 月的累计收益,跳过最近的第 $t$ 月;
- 策略 B(不跳月):排序期为第 $t-10$ 至 $t$ 月的累计收益,包含最近一月;
- 两者都做多信号最高 10%、做空最低 10%(等权),持有第 $t+1$ 月。输出月均多空收益与 t 值,解释差异的来源。
import numpy as np
rng = np.random.default_rng(7)
N, T = 800, 120
theta = 0.3 # 短期反转强度
mu = np.zeros(N) # 慢变的期望收益成分
u_prev = rng.normal(0, 0.08, N)
R = np.zeros((T, N))
for t in range(T):
mu = 0.98 * mu + rng.normal(0, 0.002, N)
u = rng.normal(0, 0.08, N)
R[t] = mu + u - theta * u_prev
u_prev = u
提示
注意切片边界:R[t-11:t] 是第 t−11 到 t−1 行(共 11 个月,不含第 t 月);R[t-10:t+1] 则包含第 t 月。信号用收益的简单加总即可。分位阈值用 np.quantile(sig, [0.1, 0.9])。差异的关键:不跳月时,信号里混进了 $u_t$,而 $u_t$ 恰恰是下个月要以 $-\theta u_t$ 的形式"还债"的那笔钱。
参考答案
import numpy as np
rng = np.random.default_rng(7)
N, T = 800, 120
theta = 0.3
mu = np.zeros(N)
u_prev = rng.normal(0, 0.08, N)
R = np.zeros((T, N))
for t in range(T):
mu = 0.98 * mu + rng.normal(0, 0.002, N)
u = rng.normal(0, 0.08, N)
R[t] = mu + u - theta * u_prev
u_prev = u
def momentum_backtest(skip_recent):
rets = []
for t in range(12, T - 1):
if skip_recent:
sig = R[t-11:t].sum(axis=0) # t-11 ~ t-1, 跳过第 t 月
else:
sig = R[t-10:t+1].sum(axis=0) # t-10 ~ t, 含最近一月
lo, hi = np.quantile(sig, [0.1, 0.9])
rets.append(R[t+1][sig >= hi].mean() - R[t+1][sig <= lo].mean())
rets = np.array(rets)
t_val = rets.mean() / (rets.std(ddof=1) / np.sqrt(len(rets)))
return rets.mean(), t_val
mA, tA = momentum_backtest(skip_recent=True)
mB, tB = momentum_backtest(skip_recent=False)
print(f"A 跳过最近一月: 月均多空 {mA:+.3%}, t = {tA:+.2f}")
print(f"B 不跳过: 月均多空 {mB:+.3%}, t = {tB:+.2f}")
典型结果:策略 A 月均显著为正(t 值很大),策略 B 月均显著为负。机制:两个策略都能通过 11 个月的累计捕捉到持续成分 $\mu$,但 B 的信号里额外混进了当月冲击 $u_t$——被选进多头的股票平均有很大的正 $u_t$,而下个月的收益里带着 $-\theta u_t$ 的"还债项",反转的拖累(约 $2\theta \times$ 多空两端 $u_t$ 之差)远大于动量成分的贡献,直接把策略拖成负收益。这就是 11-1 构造跳过最近一月的全部理由:排序期的尾巴不能沾上会均值回复的短期噪声。在短期反转更强的 A 股,这一点尤其致命。
信息系数(information coefficient,IC)是业界评估因子最常用的口径:第 $t$ 期的 Rank IC 定义为"$t$ 期特征值"与"$t+1$ 期收益"的截面 Spearman 秩相关系数。请你:
- 模拟 300 只股票、120 个月:特征 $x$ 服从 AR(1)(有持续性),下期收益 = 0.003 × 特征 z 值 + 噪声(月波动 8%);
- 逐月计算 Rank IC,得到 IC 序列;输出平均 IC、ICIR(= 均值/标准差)和 t 值(= ICIR × $\sqrt{T}$),判断显著性;
- 再造一个纯噪声的"假特征"跑同样流程作为对照;
- 思考题:平均 IC 只有 0.03—0.04,看起来小得可怜,为什么实务中这已经算相当不错的因子?
提示
Spearman 相关 = 先把两列各自转成秩,再算 Pearson 相关:pd.Series(x).rank().corr(pd.Series(r).rank()),不需要 scipy。IC 序列近似独立时,均值的 t 检验就是 ICIR × sqrt(T);可以顺手算一下 IC 的一阶自相关确认这一点。
参考答案
import numpy as np
import pandas as pd
rng = np.random.default_rng(0)
N, T = 300, 120
def run_ic(has_signal):
r_local = np.random.default_rng(1 if has_signal else 2)
x = r_local.normal(0, 1, N)
ics = []
for t in range(T):
x = 0.9 * x + r_local.normal(0, np.sqrt(1 - 0.9**2), N)
z = (x - x.mean()) / x.std()
coef = 0.003 if has_signal else 0.0
r_next = coef * z + r_local.normal(0, 0.08, N)
ic = pd.Series(x).rank().corr(pd.Series(r_next).rank())
ics.append(ic)
return pd.Series(ics)
for name, flag in [("真特征", True), ("假特征", False)]:
ics = run_ic(flag)
mean_ic = ics.mean()
icir = mean_ic / ics.std(ddof=1)
t_val = icir * np.sqrt(len(ics))
print(f"{name}: 平均RankIC={mean_ic:+.4f}, ICIR={icir:+.3f}, "
f"t={t_val:+.2f}, IC一阶自相关={ics.autocorr(1):+.3f}")
典型结果:真特征的平均 Rank IC 约 +0.035、t 值 6 上下,显著;假特征的平均 IC 在零附近、t 值不到 1。IC 一阶自相关接近零,说明"ICIR × sqrt(T)"这个朴素 t 检验基本可信(若自相关明显,需要 Newey–West 类修正,见第 2 章)。
思考题:IC 是单期截面的相关系数,而因子收益按月复利、按数百只股票分散地积累。粗略地,多空组合的信息比率 ≈ ICIR × sqrt(年调仓次数),平均 IC 0.03—0.04、IC 波动 0.06 时 ICIR 约 0.5—0.6,月频对应年化 IR 约 2——已经是非常出色的策略。截面预测问题的信噪比天然极低,评价标准必须跟着校准:不要用"相关系数 0.03 太小了"的直觉否定一个因子,也不要因为回测里 IC 高达 0.2 而狂喜——那更可能是前视偏差的味道。
假设你在 A 股发现某特征构造的多空组合月均收益显著为正。"风险补偿"与"行为/错误定价"两种解释都能讲出自洽的故事。请设计至少四类可操作的检验来区分二者,并对每类检验写明:在风险假说下预期看到什么、在错误定价假说下预期看到什么。(提示:想想两种假说各自"不允许"什么。)
参考答案
核心思路:风险假说的硬约束是"收益是对坏状态下亏损的补偿,且不能被无风险地套走";错误定价假说的硬约束是"收益来自纠错,纠错依赖套利,会随套利难度与投资者学习而变化"。据此设计:
(1)坏状态检验。考察因子在经济衰退、市场危机、流动性枯竭期的表现。风险假说:因子应在这些高边际效用时期系统性亏损(这正是它平时有溢价的原因)——如价值因子在深度衰退中受创、动量在市场反转时崩溃。错误定价假说:因子表现与宏观坏状态没有稳定关系,亏损时点更多与情绪极端期对应。若因子在坏时候反而稳健、好时候也赚,风险故事很难自圆其说。
(2)套利限制截面。按特质波动率、交易成本、融券可得性、机构持股比例把股票分组,看因子收益是否集中在难套利的组。风险假说:溢价是对暴露的补偿,与套利难度无关,各组内应大致同强。错误定价假说:效应应显著集中在高特质波动、难做空、散户主导的股票中(Ali et al. 2003 对 BM 的检验正是此思路)。
(3)信息事件收益集中度。把组合收益按"财报公告日附近 vs 平常日"拆解。错误定价假说:如果收益来自预期纠错,超额收益应不成比例地集中在盈余公告等信息释放时点(预期被现实打脸的时刻)。风险假说:补偿应随时间大致均匀积累,不该挤在公告日。
(4)样本外与发表后衰减。检验因子在发现/发表之后的表现(McLean–Pontiff 式检验),以及在无学习效应的早期历史、其他市场的表现。风险假说:溢价源自偏好与技术,应长期稳定、跨市场存在。错误定价假说:随着投资者学习和资金涌入,溢价应明显衰减;跨市场表现取决于各市场的投资者结构(如动量在个人主义文化中更强)。
(5)暴露—收益一致性检验(加分项)。风险假说要求"暴露高 ⇒ 预期收益高"这条链在事前可测的风险上成立:如破产风险解释规模溢价,就直接检验"高破产概率组是否真的收益更高"(Campbell et al. 2008 用此法证伪了规模因子的困境风险解释)。若特征预测收益、但对应的风险度量不预测收益,风险故事被架空。
结论写法:没有单项检验是决定性的(联合假说问题),但多项证据的合力可以强烈倾斜天平——例如价值因子:坏状态表现(部分支持风险)+ 套利限制集中(支持行为)+ 公告日集中(支持行为),学界至今两派并存,这本身就是诚实的答案。
请完整回答:(1)什么是壳价值,它通过什么机制进入微小市值股票的价格与收益?(2)它从哪些方面"污染"了用全样本构造的 A 股 SMB 因子——至少从溢价水平、风险来源、政策敏感性三个角度分析;(3)给出至少三种构造"更干净"的规模因子的方案,并各自指出代价。
参考答案
(1)机制。在核准制下,IPO 排队漫长、上市资格稀缺,未上市企业可以通过"借壳"——收购一家已上市小公司、注入资产——绕过排队。于是每只微小市值股票都内嵌一份期权:被选为壳、迎来重组的可能性。市值越小,壳期权占总市值的比例越高。这部分股票的价格与收益因而由重组概率、IPO 政策松紧驱动,而不是由其自身基本面或任何"规模风险"驱动。
(2)三重污染。① 溢价水平失真:样本期内壳价值上升(如并购重组活跃期)会持续推高微小市值股收益,SMB 的历史均值被系统性抬高——它度量的是"壳变贵了"而非"规模风险的报酬"。② 风险来源错配:SMB 的小盘腿名义上暴露于"规模",实际上暴露于重组博弈与政策预期;用它做风险模型或业绩归因,会把壳价值波动误标为规模风险。③ 政策敏感、结构断裂:壳价值依赖上市管制存在。IPO 提速、退市从严、注册制推进都会让壳价值坍塌——2017 年后 A 股 SMB 的深度回撤有很大一部分是壳价值重估,而非"规模风险的报酬"周期性走弱。用历史 SMB 外推未来,等于假设管制环境不变。
(3)更干净的方案与代价。① 剔除法:如 Liu et al.(2019)剔除市值最小的 30% 再构造。简单直接;代价是阈值武断(为何是 30%),且会机械地改变其他因子的相对表现(本章 EP vs BM 之争),损失小盘样本信息。② 正交化法:构造壳价值代理变量(如壳概率模型的拟合值、重组预期指标),把市值对其回归取残差作为排序变量。保留全样本;代价是壳价值本身难度量,代理变量误差会引入新噪声。③ 控制质量/剔除"垃圾":借鉴 Asness et al.(2018),在控制盈利质量后构造规模因子(小盘腿里剔除低质量股);壳股通常质量极差,会被顺带清理。代价是"规模"与"质量"的身份从此纠缠,因子不再纯粹。④ 补充做法:把黑名单从 ST 扩展到"净壳"特征股(主业空心、市值贴近壳价值底线),或用中证 500/1000 一类的中盘作为小盘腿回避最小市值段。所有方案共同的教训:因子变量只是特征的代理,代理被别的东西污染时,第一步是识别机制,而不是换个数据挖法。
考虑一个两期公司:期初资产 $A_0$,选择投资 $I_0$;投资的总成本为 $I_0 + \frac{a}{2}\frac{I_0^2}{A_0}$(含二次调整成本,$a>0$);下一期每单位新资本产生利润 $\Pi_1$(随机),公司按折现率 $\E[r]$(即股东要求的预期收益率)贴现。请:
- 写出公司选择 $I_0$ 的最大化问题,推导一阶条件;
- 整理出 $1+\E[r]$ 的表达式,并说明:给定 $\E[\Pi_1]$,为什么 $I_0/A_0$ 越高、$\E[r]$ 越低;给定 $I_0/A_0$,为什么 $\E[\Pi_1]$ 越高、$\E[r]$ 越高;
- 回答:在这个框架里,"高投资 ⇒ 低收益"是因果关系吗?它与"管理层帝国构建 + 投资者反应不足"的行为解释,在可检验含义上有什么不同?
参考答案
(1)公司最大化投资的净现值:
$$ \max_{I_0}\; -I_0 - \frac{a}{2}\frac{I_0^2}{A_0} + \frac{\E[\Pi_1]\, I_0}{1+\E[r]} $$
对 $I_0$ 求导并令其为零:
$$ -1 - a\,\frac{I_0}{A_0} + \frac{\E[\Pi_1]}{1+\E[r]} = 0 \quad\Longleftrightarrow\quad 1 + a\,\frac{I_0}{A_0} = \frac{\E[\Pi_1]}{1+\E[r]} $$
左边是多投一块钱的边际成本(1 元本金 + 调整成本的边际项),右边是这块钱明天产出的贴现值——最优投资把两者推平。
(2)整理得
$$ 1+\E[r] \;=\; \frac{\E[\Pi_1]}{1 + a\, I_0/A_0}. $$
固定分子 $\E[\Pi_1]$:$I_0/A_0$ 越大,分母越大,$\E[r]$ 越低。直觉:面对同样的盈利前景,一家公司敢把投资推到边际成本很高的位置,只可能因为它的资本很便宜——折现率低。于是"高投资"是"低折现率"的显示信号。固定 $I_0/A_0$:$\E[\Pi_1]$ 越大,$\E[r]$ 越高。直觉:盈利这么好却只投这么多,说明有一个很高的折现率在拦着它。一条一阶条件同时预言了投资因子(负向)与盈利因子(正向),这正是 HXZ q 因子模型的理论骨架。
(3)不是因果,是联立均衡下的揭示关系:折现率(预期收益)与投资由公司的最优化联合决定,投资行为把不可观测的折现率"暴露"了出来——就像"打伞的人多"不导致下雨,而是揭示了在下雨。可检验含义的差异:① q 理论是无 α 的理性故事——投资效应应被含投资因子的模型完全吸收,风险调整后不留超额收益;行为故事预言纠错型 α,且应集中在盈余公告等信息事件附近(高投资公司随后的负收益伴随"业绩不及预期")。② q 理论下投资与折现率的关系不依赖套利难度;行为故事预言效应集中在套利受限、散户主导的股票。③ q 理论要求效应对所有投资形式对称;帝国构建故事则预言效应集中在并购、多元化扩张等代理问题严重的投资类型上。A 股的实证(3.7 节)显示两套故事都缺乏用武之地——控制盈利后投资效应本身就不存在。