Mímisbrunnr知恵の泉

← シミュレーション 一覧

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

📎 前提:推定量の信頼区間 | 金融:VaR(バリュー・アット・リスク)CVaR(期待ショートフォール)

要点(BLUF)

1. VaR と CVaR

モンテカルロ法の手順は単純:(1) 資産リターンを同時分布から多数生成、(2) ポートフォリオ損益を計算、(3) その分布の分位点・条件付き平均で VaR・CVaR を推定。線形・正規なら解析解がありますが、オプションや非正規リターンが入ると解析解が崩れ、ここでモンテカルロが効きます。

2. 実装:2資産ポートフォリオ

相関のある2資産(多変量正規)のリターンを生成し、VaR・CVaR を推定して解析解と照合します。

import numpy as np
from scipy import stats

# 乱数シードを固定
rng = np.random.default_rng(60)

mu = np.array([0.0008, 0.0005])               # 日次期待リターン
cov = np.array([[0.0004, 0.0001],
                [0.0001, 0.0009]])            # 共分散
w = np.array([0.6, 0.4])                       # ポートフォリオ比率

n = 1_000_000
chol = np.linalg.cholesky(cov)                 # 相関を入れる
z = rng.standard_normal((n, 2))
returns = mu + z @ chol.T                       # 多変量正規リターン
port = returns @ w                              # ポートフォリオ損益

alpha = 0.01
VaR_mc = -np.percentile(port, alpha*100)        # 99% VaR(損失として正)
CVaR_mc = -port[port <= -VaR_mc].mean()         # 99% CVaR

port_mu = w @ mu; port_sd = np.sqrt(w @ cov @ w)
VaR_analytic = -(port_mu + stats.norm.ppf(alpha)*port_sd)   # 正規解析解

print(f"ポートフォリオ 平均={port_mu:.5f}  標準偏差={port_sd:.5f}")
print(f"99% VaR   MC={VaR_mc:.5f}  解析={VaR_analytic:.5f}")
print(f"99% CVaR  MC={CVaR_mc:.5f}")

出力:

ポートフォリオ 平均=0.00068  標準偏差=0.01833
99% VaR   MC=0.04207  解析=0.04196
99% CVaR  MC=0.04833

出力の意味:モンテカルロの 99% VaR 0.04207 が、正規解析解 0.04196 とよく一致——手法が正しく動いている検証です(検証と妥当性確認(V&V))。つまり「明日、99%の確からしさで損失は資産の約4.2%以内」。CVaR は 0.0483 で VaR より大きく、「最悪1%の日に陥ったら平均4.8%失う」を表します。ここで解析解と照合できたのは正規・線形だから。現実の非線形・非正規ポートフォリオでは解析解がなく、モンテカルロが事実上唯一の手段になります。

3. 精度と効率

VaR は分位点なので、推定誤差は[[03-02_収束率と誤差|1/n1/\sqrt{n}]]で縮みますが、裾(α\alpha が小さい)ほど該当サンプルが少なく不安定。99.9% VaR を精密に出すには、素朴な生成では膨大なサンプルが要ります。そこで裾を厚く引く重点サンプリングや、極端な損失を稀少事象として扱う手法(信頼性・稀少事象シミュレーション)が活きます。VaR 推定に信頼区間を添えるのも実務の作法です。

境界:VaR・CVaR の定義・性質・規制上の使われ方(バックテスト等)は金融VaR(バリュー・アット・リスク)CVaR(期待ショートフォール))の本拠。ここは「損益を生成し分位点を取る」というシミュレーション手法に徹します。

数式の直観的意味

モンテカルロ VaR は「ありうる明日を100万通りシミュレートして、損の悪い方から1%目を見る」操作です。解析的 VaR が「リターンは正規」という仮定で分位点を μ+zασ\mu + z_\alpha\sigma と計算するのに対し、モンテカルロは分布を仮定せず実際に損益を並べて分位点を数える。だからオプションのような非線形ペイオフ(損益がリターンの曲がった関数)でも、各シナリオで価値を評価して並べるだけで正しい分位点が出る。CVaR が VaR より頑健なのは「閾値そのもの」でなく「閾値を超えた領域の平均」を見るから——裾の一点でなく裾全体の重さを捉えます。1/n1/\sqrt{n} 則ゆえ、深い裾(99.9%)の推定には分散減少が不可欠、という構図は収束率の議論そのものです。

⚠️ よくある誤解・落とし穴

対応シミュレーション参照

本文の2資産 VaR・CVaR モンテカルロ(default_rng(60)、解析解と一致)。応用はVaR(バリュー・アット・リスク)へ。

関連ノート