Mímisbrunnr知恵の泉

← 金融工学 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:効率的フロンティア | 数理:単回帰分析(統計・最小二乗とベータ推定)

要点(BLUF)

1. システマティックリスクと固有リスク

効率的フロンティア の分離定理から、全投資家は同じ危険資産ポートフォリオ(接点)を持ちます。これを市場全体に広げると、接点ポートフォリオは市場ポートフォリオMM(すべての資産を時価総額比で持つもの)に一致します。

ここで各資産のリスクを2つに分けます。

σi2総リスク=βi2σm2システマティック(市場)リスク+σεi2固有(分散可能)リスク\underbrace{\sigma_i^2}_{\text{総リスク}} = \underbrace{\beta_i^2\,\sigma_m^2}_{\text{システマティック(市場)リスク}} + \underbrace{\sigma_{\varepsilon_i}^2}_{\text{固有(分散可能)リスク}}

固有リスク σεi2\sigma_{\varepsilon_i}^2 は、多数の資産を持てば打ち消し合って消えます(リスクの測り方 の分散投資)。投資家は努力なしに消せるリスクには対価を払いません。だから報われるのは、分散しても消えないシステマティックリスク(ベータ)だけ。これが CAPM の経済的な心臓部です。

2. CAPMの式とベータ

市場ポートフォリオへの資産 ii の限界的なリスク寄与は、その資産と市場の共分散に比例します。均衡では、どの資産も「リスク1単位あたりの超過リターン」が等しくならねばならず、整理すると次のシンプルな式に行き着きます。

E[Ri]Rf=βi(E[Rm]Rf),βi=Cov(Ri,Rm)Var(Rm)E[R_i] - R_f = \beta_i\,\bigl(E[R_m] - R_f\bigr), \qquad \beta_i = \frac{\mathrm{Cov}(R_i, R_m)}{\mathrm{Var}(R_m)}

ベータの読み方は明快です。β=1\beta=1 なら市場と同じだけ動く(市場ポートフォリオ自身)。β=1.5\beta=1.5 なら市場が1%上がると平均1.5%上がる(攻撃的)。β=0.5\beta=0.5 なら0.5%(守備的)。β=0\beta=0 なら市場と無相関で、要求リターンはリスクフリーに等しくなります。

3. ベータの推定(回帰)

ベータは、資産の超過リターンを市場の超過リターンに回帰した傾きとして推定できます(単回帰分析(統計))。

RiRf=αi+βi(RmRf)+εiR_i - R_f = \alpha_i + \beta_i\,(R_m - R_f) + \varepsilon_i

真のベータが分かっている合成データを作り、回帰で復元できるか確かめます。

import numpy as np
from scipy import stats

rng = np.random.default_rng(0)
n_months = 120
rf_m = 0.03/12                                     # 月次リスクフリー
market_excess = rng.normal(0.005, 0.04, n_months)  # 市場の超過リターン(月次)

true_betas = [0.5, 1.0, 1.5]
print("資産  真のβ   推定β    推定α(月次)")
for i, beta in enumerate(true_betas):
    idio = rng.normal(0, 0.02, n_months)           # 固有リスク(市場と無相関)
    asset_excess = beta*market_excess + idio       # CAPM: 超過 = β×市場超過 + 固有
    reg = stats.linregress(market_excess, asset_excess)
    print(f"{i+1}      {beta:.2f}    {reg.slope:.4f}   {reg.intercept:+.5f}")

出力:

資産  真のβ   推定β    推定α(月次)
1      0.50    0.4621   -0.00221
2      1.00    1.0063   -0.00109
3      1.50    1.4389   +0.00054

出力の意味:回帰の傾きが推定ベータで、真の値(0.5・1.0・1.5)をおおむね復元できています(0.46・1.01・1.44)。ぴたり一致しないのは、120ヶ月という有限サンプルと固有リスクのノイズのためです。切片(推定アルファ)はどれも 0 に近い——合成データを「アルファ無し(CAPM が正しい)」で作ったので当然です。実データでベータを測るときは、このように市場超過リターンへの回帰を使います

4. 証券市場線とアルファ

CAPM の式 E[Ri]=Rf+βi(E[Rm]Rf)E[R_i]=R_f+\beta_i(E[R_m]-R_f) を、横軸ベータ・縦軸期待リターンの平面に描いた直線が**証券市場線(SML: Security Market Line)**です。切片が RfR_f、傾きが市場リスクプレミアム E[Rm]RfE[R_m]-R_f

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

rf = 0.03            # 年率リスクフリー
mkt_prem = 0.06      # 市場リスクプレミアム E[Rm]-Rf

betas = np.linspace(0, 2, 100)
sml = rf + betas*mkt_prem

plt.figure(figsize=(7, 4))
plt.plot(betas, sml, lw=2, label="証券市場線 SML")
plt.scatter(1.0, rf + mkt_prem, color="black", zorder=6, label="市場ポートフォリオ (β=1)")
plt.xlabel("ベータ β"); plt.ylabel("要求期待リターン")
plt.title("証券市場線(SML)")
plt.legend(); plt.grid(alpha=0.3); plt.tight_layout(); plt.show()

for beta in [0.0, 0.5, 1.0, 1.5]:
    print(f"β={beta:.1f}: 要求リターン = {rf + beta*mkt_prem:.2%}")

出力:

β=0.0: 要求リターン = 3.00%
β=0.5: 要求リターン = 6.00%
β=1.0: 要求リターン = 9.00%
β=1.5: 要求リターン = 12.00%

出力の意味:ベータが大きいほど、SML 上の要求リターンも直線的に上がります(β=1\beta=1 で市場と同じ 9%)。実際の資産が SML よりにあれば、ベータで説明される以上に儲かっている=プラスのアルファ(割安・運用の付加価値)。下なら割高です。アルファ(CAPM 回帰の切片=ジェンセンのアルファ)はファンドの実力を測る基本指標になります。次の シャープレシオとパフォーマンス評価 で、こうした評価指標を整理します。

⚠️ よくある誤解

関連ノート