ポートフォリオのリスク計算

ポートフォリオ最適化の数学理論

日付:2025年3月12日

ポートフォリオ最適化では、リターンを最大化しつつリスクを最小化することが目的です。本記事では、ポートフォリオ全体のリスク(標準偏差)をどのように計算するのかを詳しく解説します。

目 次

1. はじめに

ポートフォリオ最適化では、リターンを最大化しつつリスクを最小化することが目的です。
前回の記事では、共分散と相関係数について学びました。
本記事では、それを活用してポートフォリオ全体のリスク(標準偏差)をどのように計算するのかを詳しく解説します。

2. ポートフォリオのリスクとは?

ポートフォリオのリスク(分散 σp2\sigma_p^2)は、各資産の分散資産間の共分散の両方を考慮して計算されます。

(1) ポートフォリオの分散の公式

ポートフォリオの分散 σp2\sigma_p^2 は、次の式で表されます。

σp2=iwi2σi2+ijiwiwjσi,j\sigma_p^2 = \sum_{i} w_i^2 \sigma_i^2 + \sum_{i} \sum_{j \neq i} w_i w_j \sigma_{i,j}
  • σp2\sigma_p^2 :ポートフォリオ全体の分散
  • σi2\sigma_i^2 :資産 ii の分散(個々のリスク)
  • σi,j\sigma_{i,j} :資産 iijj の共分散
  • wi,wjw_i, w_j :各資産の投資比率

この式は、

  1. 各資産の分散の影響(第一項)
  2. 資産間の共分散の影響(第二項)
    の 2 つを合計してポートフォリオ全体のリスクを計算しています。

(2) ポートフォリオの標準偏差

ポートフォリオの標準偏差σp\sigma_p)は、分散の平方根で求められます。

σp=σp2\sigma_p = \sqrt{\sigma_p^2}

標準偏差が小さいほど、ポートフォリオのリスクが低いことを意味します。

3. 具体例:2 資産ポートフォリオのリスク計算

(1) データ設定

資産 A と資産 B の過去のリターンデータを使って、ポートフォリオのリスクを計算してみましょう。

項目資産 A資産 B
期待リターン8%12%
標準偏差(σ\sigma10%15%
共分散(σAB\sigma_{AB}0.008
投資比率(ww50%50%

(2) ポートフォリオの分散を計算

まず、各値を公式に代入します。

σp2=(0.5)2×0.01+(0.5)2×0.0225+2×(0.5)×(0.5)×0.008\sigma_p^2 = (0.5)^2 \times 0.01 + (0.5)^2 \times 0.0225 + 2 \times (0.5) \times (0.5) \times 0.008 =0.0025+0.005625+0.004= 0.0025 + 0.005625 + 0.004 =0.012125= 0.012125

(3) ポートフォリオの標準偏差を計算

σp=0.012125=0.11=11%\sigma_p = \sqrt{0.012125} = 0.11 = 11\%

したがって、このポートフォリオのリスク(標準偏差)は 11% となります。

4. 共分散行列を使ったリスク計算(複数資産の場合)

3 つ以上の資産を含むポートフォリオでは、共分散行列(Covariance Matrix) を使ってリスクを計算します。

(1) 共分散行列の定義

共分散行列 Σ\Sigma は、各資産の共分散を行列形式で表したものです。

Σ=[σA2σABσACσBAσB2σBCσCAσCBσC2]\Sigma = \begin{bmatrix} \sigma_A^2 & \sigma_{AB} & \sigma_{AC} \\ \sigma_{BA} & \sigma_B^2 & \sigma_{BC} \\ \sigma_{CA} & \sigma_{CB} & \sigma_C^2 \end{bmatrix}

ポートフォリオの分散は、次の行列式で求められます。

σp2=wTΣw\sigma_p^2 = w^T \Sigma w

ここで、ww は投資比率ベクトルです。

5. Python を使った実践的な計算

Python を使って共分散行列を用いたポートフォリオのリスク計算を行うことができます。

PYTHON
import numpy as np # 資産のリスク・共分散行列 cov_matrix = np.array([ [0.01, 0.008, 0.005], [0.008, 0.0225, 0.007], [0.005, 0.007, 0.015] ]) # 投資比率 weights = np.array([0.4, 0.4, 0.2]) # ポートフォリオの分散計算 portfolio_variance = weights.T @ cov_matrix @ weights # ポートフォリオの標準偏差(リスク) portfolio_stddev = np.sqrt(portfolio_variance) print(f"ポートフォリオのリスク(標準偏差): {portfolio_stddev:.2%}")

(2) 出力結果

ポートフォリオのリスク(標準偏差): 10.54%

このコードを実行すると、ポートフォリオのリスク(標準偏差)が計算されます。

6. まとめ

  • ポートフォリオのリスクは、個々の資産の分散と資産間の共分散を考慮して計算される。
  • 2 資産ポートフォリオでは、公式を使って簡単にリスクを求められる。
  • 複数資産のポートフォリオでは、共分散行列を使ってリスクを計算する。
  • Python を使うと、実際のデータを用いたポートフォリオリスク計算が容易にできる。