資本資產定價模型

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 的貝他(曝險)
Python 投資組合風險管理入門

用共變異數計算貝他

用共變異數計算歷史貝他:

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

  • $\beta_P$:投資組合貝他
  • $Cov(R_P, R_B)$:投資組合(P)與基準市場指數(B)的共變異數
  • $Var(R_B)$:基準市場指數的變異數
Python 投資組合風險管理入門

用 Python 以共變異數計算貝他

假設你已在物件 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 投資組合風險管理入門

用線性迴歸計算貝他

假設你已在物件 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...