Fama–MacBeth 回归¶
定义¶
每个时期做一次截面回归,再把这些时期的斜率当成一个时间序列,用它的均值和标准误做推断。
公式¶
\[
\hat\lambda=\frac{1}{T}\sum_{t=1}^{T}\hat\lambda_t,\qquad
\mathrm{se}(\hat\lambda)=\frac{\sigma(\hat\lambda_t)}{\sqrt{T}}
\]
截面上的残差相关被「先每期一个斜率」吸收掉一部分。斜率自己在时间上相关时,还要 Newey–West,不能停在独立同分布的标准误。
直觉¶
你不是把所有股票所有月份堆成一个大回归。你是在问:这个月横截面上的斜率,下个月还像不像。
实务要点 / 常见误区¶
- 先形成暴露,再用下一期收益。当期收益进回归是前视。
- 标准误若把各期斜率当独立,自相关为正时会偏小。
- 一个显著的平均斜率不是组合扣费后的收益。
相关概念¶
代码¶
import math
def fama_macbeth(slopes: list[float]) -> tuple[float, float]:
# slopes 已经是各期截面回归的系数。这里只对这条时间序列做均值和 t。
n = len(slopes)
mean = sum(slopes) / n
var = sum((x - mean) ** 2 for x in slopes) / (n - 1)
t_stat = mean / math.sqrt(var / n)
return mean, t_stat
教材:M06 因子研究方法论