Mímisbrunnr知恵の泉

← 金融工学 一覧

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

📎 前提:リスクの測り方 | 数理:正規分布(標準正規・標準化)(統計)・関連:CVaR(期待ショートフォール)

要点(BLUF)

1. VaRとは

VaR は損失分布の分位点です。信頼水準 α\alpha(例:99%)のもとでの VaR は、「損失がこれを超える確率が 1α1-\alpha(例:1%)しかない」という損失額。

VaRα=inf{x:P(Rx)1α}\mathrm{VaR}_\alpha = -\,\inf\{\,x : P(R \le x) \ge 1-\alpha\,\}

要するに、リターン分布の下位 1α1-\alpha 分位点(の符号を反転した損失)です。「99%の確信で、明日の損失はこの額以内」と、リスクを1つの金額に圧縮できるのが普及した理由です。

2. ヒストリカル法とパラメトリック法

代表的な2法を比べます。ヒストリカル法は過去のリターン分布の分位点をそのまま使う(分布の形を仮定しない)。パラメトリック法はリターンが正規分布に従うと仮定し、VaR=(μ+σz1α)\mathrm{VaR}=-(\mu + \sigma\,z_{1-\alpha}) で計算します(z0.012.33z_{0.01}\approx-2.33)。リターンが裾の厚い(正規より暴落しやすい)t分布に従う場合で、両者の差を見ます。

import numpy as np
from scipy import stats

rng = np.random.default_rng(0)
n = 200000
mu, sigma, df = 0.0005, 0.015, 5
# 裾の厚い t分布リターン(標準偏差が sigma になるよう標準化)
t_raw = stats.t(df).rvs(n, random_state=rng)
returns = mu + sigma*t_raw/np.sqrt(df/(df-2))
alpha = 0.99

# ヒストリカル法:経験分位点
var_hist = -np.percentile(returns, (1-alpha)*100)

# パラメトリック法:正規分布を仮定
var_param = -(returns.mean() + returns.std()*stats.norm.ppf(1-alpha))

print(f"信頼水準 {alpha:.0%} の1日VaR(リターン比)")
print(f"ヒストリカル法         = {var_hist:.4f}")
print(f"パラメトリック法(正規) = {var_param:.4f}")
print(f"実現ボラ = {returns.std():.4f}")

出力:

信頼水準 99% の1日VaR(リターン比)
ヒストリカル法         = 0.0385
パラメトリック法(正規) = 0.0344
実現ボラ = 0.0150

出力の意味:同じデータでも、ヒストリカル法の VaR 0.0385 はパラメトリック法 0.0344 より大きい。リターンが正規より裾が厚い(t分布)ため、正規を仮定するパラメトリック法は「めったに無いはずの大損失」を実際より小さく見積もるからです。正規分布の油断——2008年の金融危機で、正規前提の VaR が現実の損失を大幅に下回ったのはこの構造です。分布の形を仮定しないヒストリカル法のほうが、テールを正直に拾います。

3. リスクを見える化する

リターンの分布と VaR の位置を重ねて描くと、正規仮定がどこで裾を取りこぼすかが分かります。

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from scipy import stats

rng = np.random.default_rng(0)
n = 200000
mu, sigma, df = 0.0005, 0.015, 5
t_raw = stats.t(df).rvs(n, random_state=rng)
returns = mu + sigma*t_raw/np.sqrt(df/(df-2))
alpha = 0.99

var_hist = -np.percentile(returns, (1-alpha)*100)
var_param = -(returns.mean() + returns.std()*stats.norm.ppf(1-alpha))

plt.figure(figsize=(8, 5))
plt.hist(returns, bins=200, density=True, alpha=0.4, label="リターン分布(裾が厚い)")
x = np.linspace(returns.min(), returns.max(), 400)
plt.plot(x, stats.norm.pdf(x, returns.mean(), returns.std()), "g-", lw=1.5, label="正規分布の当てはめ")
plt.axvline(-var_hist, color="crimson", ls="--", label=f"ヒストリカルVaR {var_hist:.3f}")
plt.axvline(-var_param, color="darkgreen", ls=":", label=f"パラメトリックVaR {var_param:.3f}")
plt.xlim(-0.08, 0.08)
plt.xlabel("日次リターン"); plt.ylabel("密度")
plt.title("VaR:リターン分布の下側分位点")
plt.legend(); plt.tight_layout(); plt.show()

出力の意味:実際の分布(ヒストグラム)は、当てはめた正規分布(緑線)より中央が尖り裾が厚い。VaR の位置(左側の縦線)は、ヒストリカル(赤破線)のほうが正規(緑点線)より左(損失が大きい側)にあります。正規分布は中央付近をよく合わせる代わりに、肝心のテールを薄く見積もる——リスク管理で最も知りたい「めったに無い大損失」を取りこぼすのです。モンテカルロ法は、このヒストグラムをモデル(GBM や多資産シミュレーション)から生成して同じ分位点を取る方法で、複雑なポートフォリオに使えます。

4. 解釈と限界

VaR は便利ですが、読み方に注意が要ります。

⚠️ よくある誤解

関連ノート