σμ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 スキル›モジュール 2 · 曲線と積分›トピック 2.3·~40 分中級

オプション価格付けの特殊関数

スキル上の位置モジュール 2/3 · トピック 3/3
2.3 オプション価格付けの特殊関数
—ラボスコア— / 100合計XP—連続日数—

公式の裏にある関数

scipy.special は、公式に何度も現れる名前付き関数を集めています。金融で最も役立つのは正規分布の累積分布関数 Φ(x)\Phi(x)Φ(x) で、special.ndtr として使えます。誤差関数とは Φ(x)=12(1+erf⁡(x/2))\Phi(x)=\tfrac12\big(1+\operatorname{erf}(x/\sqrt2)\big)Φ(x)=21​(1+erf(x/2​)) で結ばれています。原資産価格 SSS、権利行使価格 KKK、金利 rrr、ボラティリティ σ\sigmaσ、期間 TTT のコールのブラック・ショールズ価格はこれを2回使います:C=S Φ(d1)−Ke−rTΦ(d2)C=S\,\Phi(d_1)-K e^{-rT}\Phi(d_2)C=SΦ(d1​)−Ke−rTΦ(d2​)、ここで d1=ln⁡(S/K)+(r+σ2/2)TσTd_1=\dfrac{\ln(S/K)+(r+\sigma^2/2)T}{\sigma\sqrt T}d1​=σT​ln(S/K)+(r+σ2/2)T​、d2=d1−σTd_2=d_1-\sigma\sqrt Td2​=d1​−σT​ です。価格のボラティリティに対する感応度はベガと呼ばれ、S φ(d1)TS\,\varphi(d_1)\sqrt TSφ(d1​)T​(φ\varphiφ は正規分布の密度)に等しく、インプライド・ボラティリティをニュートン法で求めるときに必要です。

特殊関数のもう1つのグループは、大きすぎる数や小さすぎる数を扱います。階乗は非常に速く増え、171!171!171! はコンピュータの通常の小数ではすでにあふれますが、ln⁡n!\ln n!lnn! は簡単です:special.gammaln(n+1)。special.comb(n, k) は nnn ステップの木で上昇が kkk 回の経路の数を数えます。special.logsumexp は最大の xxx をくくり出して ln⁡∑exi\ln\sum e^{x_i}ln∑exi​ を安全に計算し、ln⁡(e1000+e1000)=1000+ln⁡2\ln(e^{1000}+e^{1000})=1000+\ln2ln(e1000+e1000)=1000+ln2 をあふれさせません。special.expit(x)=1/(1+e^{-x}) は、ロジスティックモデルのように、任意のスコアを0から1の確率に変えます。規則は、数が巨大にも微小にもなりうるときは対数で計算し、指数をとるのは最後だけ、です。

Φ(x)=12(1+erf⁡(x2)),C=SΦ(d1)−Ke−rTΦ(d2),vega=S φ(d1)T,ln⁡∑exi=m+ln⁡∑exi−m\Phi(x)=\tfrac12\Big(1+\operatorname{erf}\Big(\frac{x}{\sqrt2}\Big)\Big),\qquad C=S\Phi(d_1)-Ke^{-rT}\Phi(d_2),\qquad \text{vega}=S\,\varphi(d_1)\sqrt T,\qquad \ln\sum e^{x_i}=m+\ln\sum e^{x_i-m}Φ(x)=21​(1+erf(2​x​)),C=SΦ(d1​)−Ke−rTΦ(d2​),vega=Sφ(d1​)T​,ln∑exi​=m+ln∑exi​−m(1)
コール価格とインプライド・ボラティリティの1歩S=K=100S=K=100S=K=100、r=0r=0r=0、σ=0.2\sigma=0.2σ=0.2、T=1T=1T=1 とします。d1=0.1d_1=0.1d1​=0.1、d2=−0.1d_2=-0.1d2​=−0.1 で、Φ(0.1)=0.5398\Phi(0.1)=0.5398Φ(0.1)=0.5398、Φ(−0.1)=0.4602\Phi(-0.1)=0.4602Φ(−0.1)=0.4602 なので C=100⋅(0.5398−0.4602)=7.97C=100\cdot(0.5398-0.4602)=7.97C=100⋅(0.5398−0.4602)=7.97 です。0.10.10.1 での正規分布の密度は 0.39700.39700.3970 なので、ベガは 100⋅0.3970⋅1=39.70100\cdot0.3970\cdot1=39.70100⋅0.3970⋅1=39.70 です。市場価格が 9.009.009.00 なら価格は 1.031.031.03 低すぎ、ニュートン法の1歩でボラティリティは 0.2+1.03/39.70=0.22610.2+1.03/39.70=0.22610.2+1.03/39.70=0.2261 に上がります。Φ(1)\Phi(1)Φ(1) は erf⁡(0.7071)=0.6827\operatorname{erf}(0.7071)=0.6827erf(0.7071)=0.6827 を使って Φ(1)=12(1+0.6827)=0.8413\Phi(1)=\tfrac12(1+0.6827)=0.8413Φ(1)=21​(1+0.6827)=0.8413 です。小さな道具では、expit⁡(2)=0.8808\operatorname{expit}(2)=0.8808expit(2)=0.8808、ln⁡4!=3.178\ln 4!=3.178ln4!=3.178、(103)=120\binom{10}{3}=120(310​)=120 です。実データでは、SPYの日次リターンの標準偏差は 1.196%1.196\%1.196% です。5%5\%5% の下落は標準偏差 z=−4.21z=-4.21z=−4.21 個分で、Φ(−4.21)=1.26⋅10−5\Phi(-4.21)=1.26\cdot10^{-5}Φ(−4.21)=1.26⋅10−5、正規モデルでは約 315315315 年に1度しか起きないはずですが、5,4035{,}4035,403 日のデータでは 202020 日起きました。
  • 関数に名前を使う:ndtr、erf、expit、gammaln、comb、logsumexp は手書きの数式何ページ分にも相当する。
  • 極端な値は対数で計算する:階乗や巨大な指数の和の代わりに gammaln と logsumexp を使う。
  • ベガがソルバーを動かす:インプライド・ボラティリティのニュートン法の1歩は、価格の差をベガで割ったもの。

ラボ:採点される内容

  • erfから求める正規分布関数10点
  • ブラック・ショールズのコール20点
  • ベガ10点
  • インプライド・ボラティリティの1歩15点
  • 各関数の用途15点
  • 安全な足し方10点
  • なぜ階乗を対数で計算するか20点
0/ 7問回答済み
問題
1数値で答える10点未回答

erf⁡(0.7071)=0.6827\operatorname{erf}(0.7071)=0.6827erf(0.7071)=0.6827 として、Φ(1)=12(1+erf⁡(1/2))\Phi(1)=\tfrac12\big(1+\operatorname{erf}(1/\sqrt2)\big)Φ(1)=21​(1+erf(1/2​)) を計算してください。小数第4位まで答えてください。

p=p =p=許容:± 0.0005
2数値で答える20点未回答

S=K=100S=K=100S=K=100、r=0r=0r=0、σ=0.2\sigma=0.2σ=0.2、T=1T=1T=1 のとき d1=0.1d_1=0.1d1​=0.1、d2=−0.1d_2=-0.1d2​=−0.1、Φ(0.1)=0.5398\Phi(0.1)=0.5398Φ(0.1)=0.5398、Φ(−0.1)=0.4602\Phi(-0.1)=0.4602Φ(−0.1)=0.4602 です。C=SΦ(d1)−KΦ(d2)C=S\Phi(d_1)-K\Phi(d_2)C=SΦ(d1​)−KΦ(d2​) はいくつですか。小数第2位まで答えてください。

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

d1=0.1d_1=0.1d1​=0.1 での正規分布の密度は φ(0.1)=0.3970\varphi(0.1)=0.3970φ(0.1)=0.3970 です。S=100S=100S=100、T=1T=1T=1 のとき、ベガ =S φ(d1)T=S\,\varphi(d_1)\sqrt T=Sφ(d1​)T​ はいくつですか。小数第2位まで答えてください。

v=v =v=許容:± 0.1
4数値で答える15点未回答

市場価格は 9.009.009.00、σ=0.2\sigma=0.2σ=0.2 でのモデル価格は 7.96567.96567.9656、ベガは 39.7039.7039.70 です。新しいボラティリティ σ+(市場−モデル)/ベガ\sigma+(\text{市場}-\text{モデル})/\text{ベガ}σ+(市場−モデル)/ベガ はいくつですか。小数第4位まで答えてください。

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

scipy.specialの各関数を、その役割に結び付けてください。

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

ndtr
expit
gammaln
logsumexp
comb
6選択10点未回答

コンピュータで ln⁡(e1000+e1002)\ln(e^{1000}+e^{1002})ln(e1000+e1002) が必要です。安全な方法はどれですか。

7言葉で説明する20点未回答

200ステップの木の二項確率には 200!200!200! が含まれます。gammaln と対数で計算すべき理由を1〜2文で説明してください。

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

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

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

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