资本资产定价模型

Python 投资组合风险管理入门

Dakota Wixom

Quantitative Analyst | QuantCourse.com

资产定价模型的奠基者

CAPM

资本资产定价模型是众多资产定价与因子模型的基础。

Python 投资组合风险管理入门

超额收益

计算超额收益:用总收益减去无风险收益率:

$$ \text{Excess Return} = \text{Return} - \text{Risk Free Return} $$

示例:

投资巴西:

10% 组合收益 − 15% 无风险利率 = −5% 超额收益

投资美国:

10% 组合收益 − 3% 无风险利率 = 7% 超额收益

Python 投资组合风险管理入门

资本资产定价模型

$$ E(R_{P}) - RF = \beta_{{P}}(E(R_{M})-RF)\ $$

  • $E(R_{P}) - RF$:股票或组合 P 的超额期望收益
  • $E(R_{M}) - RF$:宽基市场组合 B 的超额期望收益
  • $RF$:区域无风险利率
  • $\beta_{{P}}$:组合对宽基市场组合 B 的 Beta(暴露)
Python 投资组合风险管理入门

用协方差计算 Beta

用协方差计算历史 Beta:

$$ \beta_P = \frac{Cov(R_P, R_B)}{Var(R_B)} $$

  • $\beta_P$:组合 Beta
  • $Cov(R_P, R_B)$:组合(P)与基准市场指数(B)的协方差
  • $Var(R_B)$:基准市场指数的方差
Python 投资组合风险管理入门

在 Python 中用协方差计算 Beta

假设已将超额组合与市场收益存于对象 Data

covariance_matrix = Data[["Port_Excess","Mkt_Excess"]].cov()
covariance_coefficient = covariance_matrix.iloc[0, 1]
benchmark_variance = Data["Mkt_Excess"].var()
portfolio_beta = covariance_coefficient / benchmark_variance
portfolio_beta
0.93
Python 投资组合风险管理入门

线性回归

线性回归示例:

矩阵表示的回归公式:

Python 投资组合风险管理入门

用线性回归计算 Beta

假设已将超额组合与市场收益存于对象 Data

import statsmodels.formula.api as smf
model = smf.ols(formula='Port_Excess ~ Mkt_Excess', data=Data)
fit = model.fit()
beta = fit.params["Mkt_Excess"]
beta
0.93
Python 投资组合风险管理入门

R² 与调整后 R²

提取调整后 R² 与 R²:

import statsmodels.formula.api as smf
model = smf.ols(formula='Port_Excess ~ Mkt_Excess', data=Data)
fit = model.fit()
r_squared = fit.rsquared
r_squared
0.70
adjusted_r_squared = fit.rsquared_adj
0.65
Python 投资组合风险管理入门

让我们来练习!

Python 投资组合风险管理入门

Preparing Video For Download...