σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
SciPy スキル›モジュール 3 · 行列・信号・構造›トピック 3.2·~55 分中級

コレスキー分解による相関モンテカルロとVaR

スキル上の位置モジュール 3/3 · トピック 2/10
3.2 コレスキー分解による相関モンテカルロとVaR
—ラボスコア— / 100合計XP—連続日数—

独立なノイズから相関する資産へ

乱数生成器は独立な乱数を返します。資産は相関しているので、ポートフォリオのシミュレーションには正しい共分散行列 Σ をもつ乱数が必要です。コレスキー分解は LLᵀ=Σ を満たす下三角行列 L を見つけます。独立な標準正規乱数のベクトルを z とすると、Lz の共分散はちょうど L I Lᵀ=Σ です。NumPyでは乱数が行で届くので、形 (n, d) の配列 z に対して z @ L.T を計算します。scipy.linalg.cholesky(cov, lower=True) は分解を行い、行列が正定値でなければエラーを出します。これは共分散行列に問題があるという警報として役立ちます。np.random.default_rng(seed) でシードを与えれば実験は再現できます。

シミュレータがあればリスク数値を計算できます。各乱数のポートフォリオリターンは draws @ w、水準 α の1日VaRはそのリターンの α 分位点(np.quantile)にマイナスを付けたものです。正規乱数なら分散共分散法の式 -(wᵀμ+z_α√(wᵀΣw)) と一致するはずで、12資産ではその通り、シミュレーションで 2.07%、式で 2.08% です。一方、過去データでは 2.33% で、実際のリターンはどの正規モデルより裾が厚いのです。推定した共分散行列が使えなくなることもあります。2資産の相関を不可能な 1.2 にすると最小固有値が負(約 -6×10⁻⁵)になり、コレスキーは行列を拒否します。標準的な修復は scipy.linalg.eigh を使い、小さな下限未満の固有値を下限まで引き上げ、行列を再構成して対称化します。結果は正定値で、元との差は約 3×10⁻⁵ にすぎません。

  • コレスキーはノイズを相関に変える:cov = L @ L.T のとき z @ L.T の共分散は cov。
  • 正規乱数ならシミュレーションと式は一致するはず:履歴との差は厚い裾のコスト。
  • 分解の失敗は情報:正定値でない行列は、小さいまたは負の固有値を引き上げて直す。

ラボ:採点される内容

  • コレスキー因子10点
  • 相関する乱数20点
  • モンテカルロVaR25点
  • パラメトリックVaR15点
  • 共分散行列の修復15点
  • 12資産の研究15点
エクスプローラー · lab-sp-19
▾ lab-sp-19
▾ data
…
bash · ブラウザ内
learner@quantcraft:~/lab-sp-19$
Pythonは未読み込みPythonLn 1, Col 1Spaces: 4UTF-8

このトピックをリセットしますか?

lab-sp-19 の内容はすべてスターターファイルに戻り、ターミナルも消去されます。現在の解答は失われ、元に戻せません。

リセットされるもの
  • main.py → スターターコード
  • ターミナル履歴とテスト出力
  • 未提出の変更
保持されるもの
  • ラボの最高スコア
  • XPと連続日数
  • 講義の進捗とメモ

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、スキルでの現在地
アカウントを作成ログイン
または
GitHubで続ける