Fama–MacBeth 回归:两步估计风险溢价
从时间序列 beta 估计到逐期横截面风险价格,了解 Fama–MacBeth 两步法,并区分标准误、Shanken 调整与 HAC 推断。
本指南内容它估计的是暴露的价格,不是一个时间序列 beta
简短摘要
Fama–MacBeth 方法先用每项测试资产的时间序列估计因子暴露,再在每个日期的横截面上用这些估计暴露解释资产收益,并将逐期风险价格斜率按时间取平均。斜率序列通常用于计算不确定性。但第二步的标准误不会自动涵盖 beta 的估计误差、序列相关或定价模型设定错误;显著的平均风险价格也不是交易利润估计。
它估计的是暴露的价格,不是一个时间序列 beta
因子 beta 和因子风险价格回答的是不同问题。beta 描述某项资产的收益在第一步时间序列回归中如何随因子变动。通常记作 \(\lambda\) 的风险价格系数,则描述在第二步横截面中,估计 beta 不同的资产其收益有何差异。Fama–MacBeth 方法先为每个日期估计风险价格,再对这些估计作时间序列汇总。
当研究问题是:在所选股票或投资组合中,某项假设风险因子的暴露是否与平均收益相关,这种设计就很有用。它是一种统计资产定价程序,不是因果识别设计;它本身也没有规定一个只用当时可得信息就能实际交易的投资组合。
Fama 和 MacBeth 的原始研究对纽约证券交易所股票重复进行横截面风险—收益回归。后来的研究,包括 Fama 和 French 的实证检验,让按月估计横截面斜率、再据此估计和检验平均风险价格,成为常见做法。理解这套方法的关键,是把两次回归分开,并检查每一步各自使用的样本和假设。
第一步:估计每项测试资产的因子暴露
对每项资产或测试投资组合 \(i\),估计如下的时间序列回归:
\[ r^{e}_{i,t} = \alpha_i + \boldsymbol{\beta}_i^\top \mathbf{f}_t + \varepsilon_{i,t}, \]
其中,\(r^{e}_{i,t}\) 是资产的超额收益,\(\mathbf{f}_t\) 是日期 \(t\) 的因子收益向量,\(\boldsymbol{\beta}_i\) 是因子暴露向量。拟合得到的 \(\hat{\boldsymbol{\beta}}_i\) 随后会成为第二步的解释变量。只含市场因子的例子会有一个 beta;多因子模型则会为每项因子估计一个载荷。
第一步需要因子在时间序列上有足够变动,才能估计斜率。长估计窗口能提供更多观测,但可能混合不同市场状态;短窗口更能体现近期暴露,却可能令 beta 估计更嘈杂。研究者应说明收益频率、样本日期、因子构造、缺失数据规则、截距处理方式和估计窗口。
这并不意味着所有 beta 都必须用全样本估计。在样本结束后的资产定价检验中,全样本 beta 可以概括所研究样本中的暴露。但在历史交易模拟中,用未来观测估计 beta 会造成前视信息泄漏。此时应按每个模拟决策时点重估 beta,只使用当时之前已经可得的数据。
第二步:在每个日期的横截面为暴露定价
在每个日期 \(t\),用第一步估计的 beta 对该日测试资产的收益进行横截面回归:
\[ r^{e}_{i,t} = \lambda_{0,t} + \hat{\boldsymbol{\beta}}_i^\top \boldsymbol{\lambda}_t + \eta_{i,t}. \]
\(\boldsymbol{\lambda}_t\) 是该日期的风险价格向量。若只有一个因子,横截面斜率 \(\lambda_t\) 表示在该日期的横截面中,估计 beta 每相差一个单位所对应的收益差异。\(\lambda_{0,t}\) 是单独的横截面截距。它应自由估计、受到限制,还是解释为零 beta 收益,取决于所检验的模型,以及使用原始收益还是超额收益。
第二个回归是在某一个日期比较不同资产,不是再做一次时间序列回归。拟合效果会受到测试资产数量和组成、估计 beta 的横截面分散程度,以及这些 beta 之间相关性的影响。如果资产之间的 beta 几乎没有差异,横截面就缺乏信息来区分风险价格。加入很多暴露几乎相同的资产,无法凭空创造不存在的暴露差异。
重复这一回归会得到风险价格序列 \(\hat{\boldsymbol{\lambda}}_1,\ldots,\hat{\boldsymbol{\lambda}}_T\)。因子 \(k\) 的 Fama–MacBeth 估计量是下面的时间平均:
\[ \bar{\lambda}_k = \frac{1}{T}\sum_{t=1}^{T}\hat{\lambda}_{k,t}. \]
平均值的单位和频率,与第二步横截面回归所用收益的单位和频率相同。如果横截面使用权重、部分日期缺失,或资产范围随时间改变,这些选择会改变该平均值所代表的对象,报告时应一并说明。

用计算例子区分单月斜率和时间平均
假设三个测试投资组合的第一步市场 beta 估计值分别为 \(0.5\)、\(1.0\) 和 \(1.5\)。在一个假设月份中,它们的超额收益分别是 \(0.3\%\)、\(0.8\%\) 和 \(1.3\%\)。这三个点恰好落在直线上:
\[ r^{e}_{i,t} = -0.2\% + 1.0\%\times\hat{\beta}_{i}. \]
该月估计斜率为 beta 每增加一个单位、收益增加 1.0 个百分点,截距为 \(-0.2\%\)。这个完全拟合的例子刻意做得很小,仅用于说明计算;它不能证明市场 beta 已被定价,三个点也不足以构成有用的实证检验。
再假设六个不同月份估出的第二步斜率依次为:beta 每单位 \(0.8\%\)、\(-0.4\%\)、\(1.0\%\)、\(-0.2\%\)、\(0.6\%\) 和 \(0.0\%\)。它们的算术平均为:
\[ (0.8 - 0.4 + 1.0 - 0.2 + 0.6 + 0.0)/6 = 0.3\%\text{每月}. \]
第一个月的斜率不是最终的 Fama–MacBeth 估计量;估计量是六个日期斜率的平均。负值月份也必须保留在计算中。只挑选正值月份会改变估计目标,并增加一次筛选。这里的数字都是假设输入,只展示算术,不代表市场结果,也不主张某因子能够预测收益。
常规标准误以时间作为推断维度
最简单的计算方式,是先求 \(T\) 个按月斜率估计的样本标准差 \(s_\lambda\),再除以 \(\sqrt{T}\):
\[ \operatorname{SE}(\bar{\lambda}) = \frac{s_\lambda}{\sqrt{T}}. \]
用估计的平均斜率除以该标准误,就得到相应的 t 统计量。这种计算用时间上反复观测到的斜率来估计平均风险价格的不确定性。资产数 \(N\) 会影响每个月横截面斜率的估计精度,但不能替代时间平均标准误里的 \(T\)。
对上面的六个假设斜率,样本标准差约为每月 0.576 个百分点。除以 \(\sqrt{6}\),常规标准误约为 0.235 个百分点;\(0.3/0.235\) 约为 1.28。六个观测远不足以作出可靠的显著性判断。这个计算只是说明:平均值为正,与平均值被精确估计,是两个不同的主张。
常规标准误还依赖斜率时间序列满足相应条件。如果估计值存在序列相关,假设各观测相互独立的标准误可能错误地衡量不确定性。样本较短或测试资产组成改变时,渐近 t 统计量尤其容易不稳。报告 \(\lambda_t\) 序列的长度和频率,而不只是横截面资产数量。
Fama–MacBeth 与 pooled OLS 的点估计不一定不同
有时人们会把“Fama–MacBeth”和“pooled 面板回归”描述成一定会产生不同斜率的两种方法。这里有一个重要的特殊情形:如果每个日期都包含相同资产、beta 回归量在日期之间固定,而且每个月的横截面使用相同的普通最小二乘设计,那么按日期计算的 OLS 系数平均值,就等于 pooled OLS 的共同斜率系数。两者汇总的是同一组平衡横截面回归。
若资产集合或权重随日期改变、beta 随时间变化、面板不平衡、控制变量不同,或 pooled 模型施加了额外限制,这种相等关系就可能不成立。在这些情形中,各方法可能以不同方式加权日期或观测值,因此回答不同的样本问题。不要只凭方法名称选择;应写明确切设计矩阵、加权方式和目标系数。
即使点估计相同,不确定性的计算也未必相同。Fama–MacBeth 推断利用横截面斜率随时间的变化。pooled 回归需要与面板误差结构相符的协方差估计量。按日期或资产聚类、双向协方差估计,或时间序列 HAC 估计各自依赖不同假设;仅仅把模型称为 pooled 或 Fama–MacBeth,并不能自动使某种标准误正确。
估计 beta 和 HAC 处理的是不同不确定性
第二步把 \(\hat{\boldsymbol{\beta}}_i\) 当作已知值,但它其实来自第一步估计回归。生成回归量中的估计误差会影响风险价格估计及其不确定性。Shanken 的分析针对特定资产定价设定推导了 beta 定价推断的调整;这不是能修复所有两步设计的通用乘数。后续研究还在不同条件下考察大样本性质和替代估计量。应说明使用何种修正或推断方法,以及相关假设为何适用。
\(\hat{\lambda}_{k,t}\) 的序列相关是另一个问题。例如,重叠的多月收益可能令相邻日期的第二步斜率共享部分收益观测。Newey–West 等异方差与自相关一致(HAC)协方差估计,会在选定的滞后窗口内考虑序列依赖,从而调整时间平均的方差估计。它不会把第一步 beta 估计误差补进第二步,不会修复因子设定错误,也无法纠正前视偏差。反过来,Shanken 调整也不能代替对 lambda 序列依赖性的检查。
Jagannathan 和 Wang,以及 Shanken 和 Zhou,分别在特定模型和抽样条件下分析 beta 定价程序的性质。因此应描述实际的两步设计,而不是笼统地说普通 Fama–MacBeth 标准误总是过小或总是有效。报告 beta 是一次估计还是持续更新、如何处理 lambda 序列的依赖、是否使用生成 beta 修正,以及这些选择为何符合研究问题。
显著的平均风险价格不是交易利润估计
在所选测试资产范围、因子定义、beta 估计和推断程序下,显著为正的平均 \(\lambda\) 表示:样本中估计因子暴露较大的资产,平均收益也较高。这并不证明投资者能在扣除成本后赚到这项收益差异,不证明因子是收益的因果来源,也不证明定价模型正确。
如果改变因子集合、样本期间、投资组合构造、beta 窗口、测试资产或加权方式,结果都可能变化。若在许多因子、样本切分和规格中搜索,还会产生多重检验问题。检验单个估计风险价格,也不能概括每项资产的联合定价误差。应明确说明结果属于条件相关性、基于模型的定价检验,还是样本外预测;不要混用这些表述。
对于真实或模拟策略,暴露和投资组合权重必须仅根据当时可得的信息构造。还需要可执行的入场价格、换手率、交易成本、融资、容量和再平衡规则。因子 beta 是暴露估计;平均 \(\lambda\) 并不是某个会自动赚取 beta 溢价的投资组合收益。相关概念可参阅[因子载荷与因子模型](/zh-CN/learn/factor-models-factor-loadings-finance-explained)、[稳健标准误与 HAC](/zh-CN/learn/robust-standard-errors-heteroskedasticity-hac-finance-explained),以及[秩信息系数](/zh-CN/learn/information-coefficient-rank-ic-quant-trading-explained)。
记录设计,使其他研究者能够复现
一项可解释的结果应标明测试资产、因子收益、若有使用时的无风险收益序列、收益单位、日期频率和样本期间。还应说明 beta 的估计方式、第一步窗口是否与第二步检验期重叠、每个日期纳入哪些资产、如何处理缺失收益和成分变化、横截面是否加权,以及截距是否纳入或受到限制。
推断部分应报告日期斜率数量 \(T\)、其时间序列均值和离散程度、标准误估计方法、任何 HAC 带宽、beta 估计误差修正和有限样本处理选择。除 t 统计量外,也应展示 beta 的分散程度和横截面拟合情况;资产数量很大,仍无法弥补暴露几乎相同的问题。可以比较合理的估计窗口、因子定义和测试资产构造,但不要只挑选偶然给出最小 p 值的版本。
原始方法和应用研究提供了例子,却不能保证每个现代数据集都满足其假设。Fama 和 MacBeth 的1973 年论文、Fama 和 French 的1992 年横截面检验、Shanken 的beta 定价分析、Jagannathan 和 Wang 的渐近分析、Shanken 和 Zhou 的beta 定价估计量比较,以及 Newey 和 West 的HAC 协方差方法,分别讨论了设计中的不同部分。报告系数时,也应交代与之对应的假设。
常见问题
Q1Fama–MacBeth 回归是因果检验吗?
不是。它在所选定价模型和测试资产设计下,估计资产暴露与收益之间的关系。因果解释需要另行论证识别条件。
Q2增加资产数量总能提高风险价格估计的精度吗?
不能。增加资产可能改善某日期的横截面估计,但精度还取决于 beta 的分散程度、beta 估计的准确性,以及用于计算平均值的日期数量。
Q3什么时候应考虑使用 HAC 标准误?
如果日期特定的风险价格序列可能存在异方差或序列相关,例如收益区间相互重叠时,可以考虑使用 HAC。应说明滞后窗口,并记住 HAC 不会修正第一步 beta 估计误差。
资料来源与延伸阅读
报告问题
我们会准备一封包含本文链接的邮件。发送后,Mark 才会收到你的反馈
快速检查
读完指南后,用 3 道题检查一下
问题 01
在标准两步程序中,日期 t 的第二步斜率估计什么?
选择答案即可查看解释