σμ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.1·~45 分中級

scipy.linalgの線形代数の基本

スキル上の位置モジュール 3/3 · トピック 1/5
3.1 scipy.linalgの線形代数の基本
—ラボスコア— / 100合計XP—連続日数—

ポートフォリオの仕組みとしての行列

ポートフォリオの問題は行列の問題です。共分散行列 Σ\SigmaΣ には各資産の分散と連動の仕方が入っており、ほとんどの作業はこれを使って何かをします。scipy.linalg.solve(A, b) は Ax=bA\mathbf x=\mathbf bAx=b を未知数 x\mathbf xx について解きます。逆行列 inv(A) を求めてから掛けてはいけません。直接解く方が計算が少なく、精度の損失も小さいからです。コレスキー分解 linalg.cholesky(S, lower=True) は共分散行列を Σ=LL⊤\Sigma=LL^{\top}Σ=LL⊤ に分け、LLL は下三角行列(対角より上がゼロ)です。z\mathbf zz が独立な標準正規乱数のベクトルなら、LzL\mathbf zLz の共分散は Σ\SigmaΣ になり、これが相関のあるリターンを作る方法です。

Σ\SigmaΣ の固有値は、独立なリスク源が実際にいくつあるかを教えてくれます。linalg.eigvalsh(S) は対称行列の固有値を小さい順に返します。相関 ρ\rhoρ の2資産では、相関行列の固有値は 1+ρ1+\rho1+ρ と 1−ρ1-\rho1−ρ なので、相関の高い資産は大きな固有値と極小の固有値を1つずつ持ちます。最大固有値と最小固有値の比が条件数です。条件数が大きいと行列はほぼ特異、つまりほとんど逆行列が取れず、データの小さな変化で解が大きく振れます。Σ\SigmaΣ の逆行列を使う最適化は、まさにこの点に敏感です。

Ax=b ⇒ x=solve(A,b),Σ=LL⊤,r=Lz,κ(Σ)=λmax⁡λmin⁡A\mathbf x=\mathbf b\ \Rightarrow\ \mathbf x=\text{solve}(A,\mathbf b),\qquad \Sigma=LL^{\top},\quad \mathbf r=L\mathbf z,\qquad \kappa(\Sigma)=\frac{\lambda_{\max}}{\lambda_{\min}}Ax=b ⇒ x=solve(A,b),Σ=LL⊤,r=Lz,κ(Σ)=λmin​λmax​​(1)
2資産の手計算Σ=(4223)\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}Σ=(42​23​) とします。そのコレスキー因子は L=(2012)L=\begin{pmatrix}2&0\\1&\sqrt2\end{pmatrix}L=(21​02​​) で、LL⊤LL^{\top}LL⊤ は 444、222、222、1+2=31+2=31+2=3 になります。独立な乱数 z=(1,1)z=(1,1)z=(1,1) から作る相関付きの値は Lz=(2, 1+2)=(2, 2.414)Lz=(2,\,1+\sqrt2)=(2,\,2.414)Lz=(2,1+2​)=(2,2.414) です。(2113)x=(35)\begin{pmatrix}2&1\\1&3\end{pmatrix}\mathbf x=\begin{pmatrix}3\\5\end{pmatrix}(21​13​)x=(35​) は消去して x=(0.8, 1.4)\mathbf x=(0.8,\,1.4)x=(0.8,1.4) と求まります。ρ=0.9\rho=0.9ρ=0.9 の相関行列の固有値は 1.91.91.9 と 0.10.10.1 で、第1因子が全分散の 1.9/2=95%1.9/2=95\%1.9/2=95% を担います。固有値が 111 と 333 の行列の条件数は 333 です。実データでは、5,4045{,}4045,404 日のSPY・QQQ・TLTで、SPYとQQQの相関は 0.920.920.92、それぞれとTLTの相関は約 −0.3-0.3−0.3 です。相関行列の固有値は 0.080.080.08、0.860.860.86、2.062.062.06 で、1つの因子が分散の 69%69\%69% を担い、条件数は 262626 です。
  • 逆行列ではなく解く:solve(A, b) は inv(A) @ b より速く正確。
  • コレスキーで相関を作る:独立な正規乱数に LLL を掛けると、共分散 Σ\SigmaΣ のリターンになる。
  • 条件数に注意:相関の高い資産は Σ\SigmaΣ をほぼ特異にし、解を不安定にする。

ラボ:採点される内容

  • コレスキー因子20点
  • 連立方程式を解く10点
  • 条件数10点
  • 因子の分散の割合10点
  • 各ルーチンの用途15点
  • 相関付きリターンのシミュレーション10点
  • なぜ逆行列を使わないか25点
0/ 7問回答済み
問題
1行列・ベクトル20点未回答

LL⊤=Σ=(4223)LL^{\top}=\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}LL⊤=Σ=(42​23​) となる下三角行列 LLL を求めて入力してください(2\sqrt22​ は 1.41421.41421.4142)。

L=L =L=
2数値で答える10点未回答

2x1+x2=32x_1+x_2=32x1​+x2​=3 と x1+3x2=5x_1+3x_2=5x1​+3x2​=5 を解いてください。x2x_2x2​ はいくつですか。小数第1位まで答えてください。

x=x =x=許容:± 0.02
3数値で答える10点未回答

対称行列の固有値が 111 と 333 です。条件数(最大固有値を最小固有値で割ったもの)はいくつですか。

k=k =k=許容:± 0.01
4数値で答える10点未回答

相関 0.90.90.9 の2資産の相関行列の固有値は 1.91.91.9 と 0.10.10.1 です。第1因子は全分散の何%を担いますか。

s=s =s=許容:± 0.5
5対応づけ15点未回答

scipy.linalgの各ルーチンを、ポートフォリオ作業での役割に結び付けてください。

左の各項目に対応するものを選んでください。

solve
cholesky
eigvalsh
lstsq
6手順を並べ替える10点未回答

相関付きの日次リターンを作る手順を並べ替えてください。

ドラッグして並べ替えます。または項目にフォーカスし、スペースで持ち上げ、矢印キーで移動、スペースで置きます。

  1. 1標本共分散が目標に近いか確認する
  2. 2正規乱数にLを掛ける
  3. 3履歴から共分散行列を推定する
  4. 4独立な標準正規乱数を引く
  5. 5コレスキー分解する
7言葉で説明する25点未回答

solve(A, b) が inv(A) @ b より好まれる理由と、大きな条件数が何を警告するかを1〜2文で説明してください。

数学モードキーボードまたは LaTeX で入力問題1/7 · Ctrl ⏎ で確認

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

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

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