跳到正文

CAPM 与市场 Beta

CAPM 认为,股票的预期收益就是无风险利率加上 Beta 乘以市场风险溢价。它以一些很有意思的方式错了,而理解这些错误是打好基础的关键。

第 6 篇 · 共 8 篇 约 7 分钟

CAPM 于 1964 年发表。它假设一个因子(市场)能够解释所有股票收益。现实里有几百个因子。但 CAPM 仍然是每场量化面试的必考题,因为它失败的地方,恰好揭示了哪些因子真正重要。

如果你只记住一件事:CAPM 是错的,而它出错的方式,正是你可以提取出来的 alpha。每一个持续偏离 CAPM 的现象,都是一个等待被发现的因子模型。Fama 和 French 正是把其中三个正式化之后,拿到了诺贝尔奖。

模型

资本资产定价模型认为,资产 ii 的预期收益是:

E[Ri]=Rf+βi⋅(E[Rm]−Rf)\mathbb{E}[R_i] = R_f + \beta_i \cdot \left(\mathbb{E}[R_m] - R_f\right)

三个组成部分,然后得出一个结论:

  • RfR_f——无风险利率。视为已知。实践中通常用 3 个月期国库券收益率。
  • E[Rm]−Rf\mathbb{E}[R_m] - R_f——市场风险溢价。市场因为你承担市场风险而额外给你的收益。历史上美国市场每年大约为 4-7%。具体估计会随着样本区间和方法的不同而大幅变化。
  • βi\beta_i——资产对市场的敏感度。把资产收益对市场收益做回归时得到的斜率系数。

重点是:在 CAPM 下,两个 Beta 相同的股票,预期收益也相同。就这样。不存在价值、规模、动量、质量或情绪溢价,只有市场风险。

这不对。下面看看为什么。

Beta 在机械上代表什么

Beta 是资产与市场之间的协方差除以市场方差:

βi=Cov(Ri,Rm)Var(Rm)\beta_i = \frac{\text{Cov}(R_i, R_m)}{\text{Var}(R_m)}

怎么理解:

  • β=1\beta = 1——和市场一比一地变动。SPY 大致就是 1。
  • β=1.5\beta = 1.5——市场涨跌幅的 1.5 倍。如果市场下跌 10%,这只股票平均预期会下跌 15%。
  • β=0.5\beta = 0.5——只跟着市场一半的幅度走。防御型资产。
  • β<0\beta < 0——和市场反向变动。股市崩盘时,黄金从实际表现看大致是负 Beta(严格说不完全等同于 Beta,但传导渠道是这个)。
  • β=0\beta = 0——不相关。现实中不存在真正的零相关资产,但固定收益和黄金经常有较低的 Beta。

Beta 是历史斜率。它是基于过去数据、在给定条件下的平均共同变动。它不假设因果关系,也不包含任何经济机制——它只是一个回归系数。

分解总收益

CAPM 能把任何股票的实际收益做一个干净的分解:

Ri−Rf=αi+βi(Rm−Rf)+εiR_i - R_f = \alpha_i + \beta_i (R_m - R_f) + \varepsilon_i

三个组成部分:

  • αi\alpha_i——CAPM 无法解释的部分。这就是 Jensen alpha 意义下的 “alpha”。
  • βi(Rm−Rf)\beta_i (R_m - R_f)——由市场敞口解释的部分。如果你持有一只高 Beta 股票,而市场在上涨,这通常是你收益的大头。
  • εi\varepsilon_i——残差噪声。个股特有的意外。

交易策略的“alpha”,指的是扣除 Beta × 市场这一部分之后赚到的收益。如果你的策略 β=0.3\beta = 0.3,而市场上涨 20%,那么你仅靠市场敞口就拿到了 6% 的“免费”收益——这根本不算 alpha。

用 Python 对 AAPL 和 SPY 做回归

这是标准的 CAPM 练习:提取 AAPL 和 SPY 的日收益,运行回归,取出 alpha 和 beta。

import numpy as np
import pandas as pd
import yfinance as yf
import statsmodels.api as sm
import matplotlib.pyplot as plt

# Five years of daily data
px = yf.download(["AAPL", "SPY"], start="2020-01-01", end="2024-12-31",
                 auto_adjust=True)["Close"]
px = px.dropna()

# Daily returns
ret = px.pct_change().dropna()

# Excess returns vs 3-month T-bill proxy (close enough for the example)
# Use 0% for simplicity — illustrative, not exact
excess_aapl = ret["AAPL"] - 0.0
excess_spy  = ret["SPY"]  - 0.0

# Run the regression: AAPL ~ beta * SPY + alpha
X = sm.add_constant(excess_spy)   # add intercept
model = sm.OLS(excess_aapl, X).fit()
print(model.summary())

alpha = model.params["const"]
beta  = model.params["SPY"]

提示词

用 yfinance 拿 AAPL 和 SPY 日线,用 statsmodels 对 AAPL 日收益对 SPY 做 OLS 回归,打印 alpha、beta 和回归摘要。

预期输出(截断):

                 coef      std err          t      P>|t|
const        0.0006      0.0002      3.420      0.001
SPY          1.1834      0.0253     46.780      0.000

R-squared:    0.62

怎么读这个结果:2020-2024 年间,AAPL 的 β≈1.18\beta \approx 1.18——平均来看,它的波动比市场大约高 18%。截距(Jensen alpha)是每天 6 个基点,年化后大约是 α≈15%\alpha \approx 15\%——但这个结果会误导你,因为样本期包含了一轮巨大的科技股上涨和一次重大的科技股回撤。

R-squared 为 0.62,意味着 AAPL 每日收益方差的 62% 可以由 SPY 解释。剩下的 38% 是个股特有的噪声(财报、产品发布、管理层变动等)。对单只股票来说,这已经是你能得到的市场 Beta 解释度上限附近了。

现在把数据重新聚合成月收益,得到更干净的统计量:

# Monthly aggregation
monthly = (1 + ret).resample("ME").prod() - 1
X_m = sm.add_constant(monthly["SPY"])
m_model = sm.OLS(monthly["AAPL"], X_m).fit()
print(f"Monthly alpha : {m_model.params['const']*100:.2f}% / month")
print(f"Monthly beta  : {m_model.params['SPY']:.2f}")
print(f"R-squared     : {m_model.rsquared:.2f}")

提示词

把日收益复合成月收益,对 AAPL 和 SPY 月收益跑 OLS 回归,打印月度 alpha、beta 和 R²。

月度 Beta 大致会稳定在 1.15-1.25 附近。Alpha 的读数则会随着你截取样本的年份不同而剧烈波动。

CAPM 三个著名的失败之处

CAPM 预测,Beta 单独就能解释横截面的预期收益。有三种模式打破了这个预测,而且每一种后来都成了一个命名因子。

失败 1:价值——便宜的胜过昂贵的

账面市值比(B/M)较高的股票——也就是“价值”股票——获得的收益高于 CAPM 的预测。成长股(低 B/M)则表现落后。

相关证据:

  • Basu(1977)——盈利收益率(P/E 的倒数)。
  • Rosenberg、Reid、Lanstein(1985)——明确研究账面市值比。
  • Fama & French(1993)——把 HML(High Minus Low)正式化为一个因子。

1963-1990 年的证据非常有力:在经过市场调整后,价值股每年跑赢成长股大约 5%。CAPM 对此没有任何预测——在 CAPM 下,因为它们的 Beta 类似,所以预期收益应该相同。

失败 2:规模——小盘股胜过大盘股

小盘股(市值低于中位数)历史上在市场调整后跑赢大盘股。Banz(1981)最早记录了这一现象;Fama & French(1993)把它做成了 SMB 因子(Small Minus Big)。

从 1970 年代到 1990 年代初,规模溢价很强。自 2008 年以来,它一直疲软甚至转负——现在小盘股赚到的收益大致就是 CAPM 隐含的水平,有时还更低。规模效应是“死了”,还是只是被套利掉了,目前仍有争论。

失败 3:动量——赢家会继续赢

过去 12 个月的收益会正向预测未来 12 个月的收益。Jegadeesh & Titman(1993)记录了这一点。CAPM 完全没有预测到它——CAPM 意味着动量应该为零。

动量是已发表金融研究中规模最大、最可靠的异常现象。它在股票、债券、货币和商品中都有效。2009 年它也曾在 3 个月内暴跌 50%,后面还会再讲到这一点。

坦白说:为什么你仍然要用它

CAPM 是错的。但还是要把它当作基准。你找到的每一个 alpha,都是 CAPM 漏掉的东西。

原因在于:CAPM 给你提供了一个基准,用来衡量“我的策略是真的产生了 alpha,还是只是获得了市场敞口再加上一点运气?”模型的用途就在这里——它不是事实真相,而是一把尺子。

如果你回测一个策略,报告 Sharpe 为 1.5,却没有和基准做比较,那你不知道自己赚的是 alpha,还是只是搭上了高 Beta 敞口的顺风车。CAPM 回归 30 秒就能给你答案。先用它,再转向更复杂的因子模型。

Beta 并不稳定

这里有个实际问题,经常没有得到足够关注:Beta 会随时间变化,而且变化很大。

# Estimate rolling 252-day beta for AAPL over 5 years
rolling_beta = ret["AAPL"].rolling(252).cov(ret["SPY"]) / ret["SPY"].rolling(252).var()
rolling_beta.plot(figsize=(11, 4), title="AAPL rolling 252-day beta on SPY (2020-2024)")
plt.axhline(1.0, color="black", lw=0.7, ls="--")
plt.ylabel("Beta")
plt.show()

提示词

用 pandas 算 252 日滚动 Beta = cov(AAPL,SPY) / var(SPY),用 matplotlib 画时间序列,加 1.0 参考线。

你会看到,平静时期 Beta 可能低于 1.0,压力时期则会上到 1.4 以上。2019 年的 Beta 可能是 0.8,到了 2022 年就可能变成 1.5。这就是 Beta 不稳定问题,也是为什么统计套利基金会在滚动 Beta、状态条件 Beta 和指数加权 Beta 估计器上投入真金白银。

三个可以照着执行的规则:

  1. 不要相信少于 60 个月度观测值估出来的 Beta。 日频数据可以让你用更短的样本,但会带来自相关噪声。
  2. 生产环境使用指数加权 Beta。 越近的观测值,权重应该越高。
  3. 预期危机期间 Beta 会飙升。 如果你的止损是按平静市场的 Beta 校准的,崩盘时会直接把你碾过去。

这也是单因子 CAPM 之所以被多因子模型(Fama-French、Carhart)普遍替代的原因之一——用单一因子处理随时间变化的 Beta,会进一步放大噪声。

它在整个体系中的位置

CAPM 是地板。Fama-French 三因子模型和 Carhart 四因子模型在此基础上加入了价值、规模和动量敞口。你测量完一个策略的 CAPM alpha 和 beta 后,下一个问题就是:“这个 alpha 只是价值 + 规模 + 动量敞口吗?”下一篇文章从这里接着讲。

在 Arithmion SDK 里,arithmion.factor.capm_regression() 可以针对任意股票、任意基准和任意时间窗口,返回 alpha、beta 以及残差。标准输出。真正有意思的是后面的分析。

References

  • Sharpe, “Capital Asset Prices: A Theory of Market Equilibrium Under Conditions of Risk,” Journal of Finance, 1964.
  • Lintner, “The Valuation of Risk Assets and the Selection of Risky Investments in Stock Portfolios and Capital Budgets,” Review of Economics and Statistics, 1965. (Independent derivation of CAPM.)
  • Fama & French, “Common Risk Factors in the Returns on Stocks and Bonds,” Journal of Financial Economics, 1993.
  • Grinold & Kahn, Active Portfolio Management, Ch. 3. McGraw-Hill, 2000. ISBN: 978-0-07-135638-4.
  • Ang, Asset Management, Ch. 5-6. Oxford University Press, 2014. ISBN: 978-0-19-995932-3.
  • Frazzini, Israel, Moskowitz, “Trading Against the Anomaly,” Journal of Financial Economics, 2018 (on beta instability and the “betting against beta” factor).