資本資産価格モデル

Pythonで学ぶポートフォリオ・リスク管理入門

Dakota Wixom

Quantitative Analyst | QuantCourse.com

資産価格モデルの原点

CAPM

資本資産価格モデル(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で学ぶポートフォリオ・リスク管理入門

決定係数と自由度調整済み決定係数

決定係数と自由度調整済み決定係数の抽出:

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...