実践オプション(4) -オプションの価格公式
この先の記事で何回でも読むことになる記事なので丁寧に書こうと思う。
そういえば、マイナス金利が終わったので金利について気にする必要がなくなりましたね!
まずはブラックショールズ公式から。
ブラックショールズ公式
$${C=e^{r_f t} S N(d1) - e^{r_d t} K N(d2)\\
d1=\frac{ln(\frac{S}{K}+(r_d-r_f+\frac{\delta^2}{2})t}{\delta \sqrt{t}}\\
d2=d1-\delta \sqrt{t}\\}$$
K:権利行使価格
t:契約期間
rd:自国通貨のリスクフリーレート
rf:外国通貨のリスクフリーレート
$${\sigma}$$:標準偏差
S:現在株価
リスクフリーレートですが、ここではドル円を扱うので、
自国はTONAR,外国はSOFRを用います。
パラメータを意識しやすいので、今回はMMAの内蔵関数を使おうと思う。
環境を用意して欲しい。
こちらから登録すれば無料で使える。
とりあえず、デルタとガンマをプロットしてみよう。
call[k_, tau_, rd_, rf_, sigma_, x_] :=
FinancialDerivative[{"European", "Call"}, {"StrikePrice" -> k,
"Expiration" -> tau}, {"InterestRate" -> rd,
"Volatility" -> sigma, "CurrentPrice" -> x, "Dividend" -> rf}]
これでいい。
ちなみにモンテカルロアプローチでは次のようになる。
(次回以降で使うのでここで紹介する)
call[k_, tau_, rd_, rf_, sigma_, x_] :=
Block[{w},
w = Normal[
RandomFunction[
GeometricBrownianMotionProcess[rd, sigma, x], {0, 1, 0.001},
10000]][[;; , ;; , 2]];
Exp[-rd*tau]*Mean@Table[Max[v[[-1]]*Exp[-rf] - k, 0], {v, w}]]
以下、デルタとガンマを導出する
value = Table[{x, call[120, 0.7, 0.01, 0.04, 0.3, x]}, {x, 80, 200}] //
Interpolation;
delta = D[value[x], x];
gamma = D[value[x], {x, 2}];
Plot[delta, {x, 80, 200}, PlotLegends -> "Delta"]
Plot[gamma, {x, 80, 200}, PlotLegends -> "gamma"]
ちなみに、ブラックショールズ方程式の元である微分方程式は理解する上でほぼ使わないのでそちらに注力しないように。これは知らないと陥る落とし罠です。
次回はボラティリティスマイルを扱う
この記事が気に入ったらサポートをしてみませんか?