跳到正文

资本资产定价模型:系统性风险与贝塔

CAPM描述了预期回报与风险的关系——具体来说,贝塔如何衡量股票对市场变动的敏感性。它是现代组合理论的基石,也是理解风险模型的起点。

第 28 篇 · 共 30 篇 约 3 分钟

1964年,Sharpe、Lintner和Mossin独立推导出了资本资产定价模型(CAPM)。它描述了证券风险与预期回报之间的关系。

核心思想

在一个有许多风险资产的世界里,投资者可以通过持有组合来分散特质性风险。但无论多少分散化都无法消除系统性风险——影响整个市场的风险。

CAPM认为:任何资产的预期回报只取决于其系统性风险,以贝塔来衡量。

CAPM公式

E(Ri)=Rf+βi×(E(Rm)−Rf)E(R_i) = R_f + \beta_i \times (E(R_m) - R_f)

其中:

  • E(Ri)E(R_i) = 资产ii的预期回报
  • RfR_f = 无风险利率
  • βi\beta_i = 资产ii的贝塔
  • E(Rm)E(R_m) = 市场的预期回报
  • E(Rm)−RfE(R_m) - R_f = 市场风险溢价

含义: 你获得的补偿来自两方面:

  1. 货币的时间价值(RfR_f)
  2. 你无法分散化的系统性风险(βi×(E(Rm)−Rf)\beta_i \times (E(R_m) - R_f))

贝塔:衡量系统性风险

贝塔衡量一只股票相对于整体市场的变动幅度。

  • β=1\beta = 1:股票与市场同步变动
  • β=1.5\beta = 1.5:股票变动幅度是市场的1.5倍(波动性更高)
  • β=0.5\beta = 0.5:股票变动幅度是市场的一半(波动性更低)
  • β=0\beta = 0:股票没有市场敞口
  • β<0\beta < 0:股票与市场反向变动(个股可能出现但罕见)

计算:

βi=Cov(Ri,Rm)Var(Rm)=ρi,m×σiσm\beta_i = \frac{Cov(R_i, R_m)}{Var(R_m)} = \rho_{i,m} \times \frac{\sigma_i}{\sigma_m}

其中ρi,m\rho_{i,m}是股票与市场的相关系数。

证券市场线(SML)

证券市场线是CAPM的可视化表示:

E(Ri)=Rf+βi×(E(Rm)−Rf)E(R_i) = R_f + \beta_i \times (E(R_m) - R_f)

在Y轴上绘制E(R)E(R),在X轴上绘制β\beta:

  • 当β=0\beta = 0时,线在RfR_f处截距
  • 斜率 = 市场风险溢价

低估资产: 在SML上方的股票(相同贝塔下回报更高) 高估资产: 在SML下方的股票(相同贝塔下回报更低)

CAPM的局限性

CAPM优雅但有已知弱点:

1. 单因子模型: 实际回报受市场以外的因素影响(规模、价值、动量等)

2. 贝塔不稳定: 从历史数据估计的股票贝塔可能无法预测未来贝塔

3. 市场组合不可观测: 我们用股票指数作为代理,但真实市场组合包括所有风险资产

4. 假设回报正态分布: 实际回报具有厚尾和偏度

5. 忽略特质性风险: 后来的研究(Fama-French)表明特质性风险也很重要

多因子模型

Fama-French三因子模型通过添加两个因子扩展了CAPM:

E(Ri)=Rf+βimkt×(E(Rm)−Rf)+βiSMB×E(RSMB)+βiHML×E(RHML)E(R_i) = R_f + \beta_i^{mkt} \times (E(R_m) - R_f) + \beta_i^{SMB} \times E(R_{SMB}) + \beta_i^{HML} \times E(R_{HML})
  • SMB(小减大): 小盘股回报减大盘股回报
  • HML(高减低): 高账面市值比股票回报减低账面市值比股票回报

后来的模型添加了更多因子(动量、盈利能力、投资)。

Python实现CAPM

import numpy as np
import pandas as pd
from scipy import stats

def calculate_beta(stock_returns, market_returns):
    """
    Calculate beta using covariance method.

    beta = Cov(stock, market) / Var(market)

    `np.cov` defaults to `ddof=1` (sample covariance, dividing by `N - 1`),
    while `np.var` defaults to `ddof=0` (population, dividing by `N`). Mixing
    them divides by different denominators and biases beta. Use matching `ddof`.
    """
    covariance = np.cov(stock_returns, market_returns)[0, 1]
    market_variance = np.var(market_returns, ddof=1)
    return covariance / market_variance


def calculate_beta_ols(stock_returns, market_returns):
    """
    Calculate beta using OLS regression.

    R_stock = alpha + beta * R_market + epsilon
    """
    slope, intercept, r_value, p_value, std_err = stats.linregress(
        market_returns, stock_returns
    )
    return {
        'beta': slope,
        'alpha': intercept,
        'r_squared': r_value ** 2,
        'p_value': p_value,
        'std_err': std_err
    }


def capm_expected_return(rf, beta, market_return):
    """
    Calculate expected return using CAPM.
    """
    return rf + beta * (market_return - rf)


def implied_market_premium(rf, expected_return, beta):
    """
    Back out the implied market risk premium from observed returns.
    """
    return (expected_return - rf) / beta


def security_market_line(betas, rf, market_risk_premium):
    """
    Calculate expected returns for a set of betas per the SML.
    """
    return rf + np.array(betas) * market_risk_premium


def idyosyncratic_volatility(stock_returns, market_returns):
    """
    Calculate idiosyncratic (residual) volatility after accounting for market.
    """
    slope, intercept, _, _, _ = stats.linregress(market_returns, stock_returns)
    predicted = intercept + slope * market_returns
    residuals = stock_returns - predicted
    return np.std(residuals)

提示词

用 numpy 和 scipy.stats 写一组 CAPM 工具函数:协方差法和 OLS 回归两种贝塔计算、CAPM 预期回报、隐含市场风险溢价、SML 曲线、特异性波动率。

为什么CAPM对量化分析师重要

尽管有局限性,CAPM仍然是基石,因为:

  1. 基准: CAPM的市场贝塔仍然是任何组合中首先考虑的风险因子
  2. 折现率: CAPM(及其多因子扩展)是我们估计DCF估值中股权成本的方式
  3. 风险预算: 组合风险分解通常从市场贝塔开始
  4. 因子投资: CAPM为因子投资打开了大门——理解系统性风险因子是构建量化策略的方式

参考文献

  • Sharpe, “Capital Asset Prices.” Journal of Finance, 1964.
  • Lintner, “Security Prices and Maximal Gains from Diversification.” Review of Economics and Statistics, 1965.
  • Fama, French, “The Cross-Section of Expected Stock Returns.” Journal of Finance, 1992.
  • Bodie, Kane, Marcus, Investments, Ch. 8-9. McGraw-Hill, 2020. ISBN: 978-1-26-057101-6.