「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

ファイナンス練習(2021年08月26日)

 業務でC#を用いることになったので、最近勉強していなくて朧気になってきた知識をReviseする意味でも、以下の書籍を読みながらC#で実装してみる。今日はP.18。

2. グリークス(続き)

 オプションは、理論価格があるために、入力パラメータが明示的にわかっている。あらためて挙げるとこのとおり:

  • 原資産価格:S
  • 行使価格:K
  • (初期時点を0としたときの)将来時点(ここでは単位:年):T
  • リスクフリーレート:r
  • 原資産価格のボラティリティ(リスク・標準偏差):\sigma

このため、この5つの変化がオプション価格に影響を与える。そこでリスク(価格変化)を管理するには、それらが変化したときにオプション価格がどの程度動くかを評価する。各パラメータに対する価格変化の指標をまとめてグリークス(Greeks)という。
 なお行使価格Kは契約で決まっている(定数である)ため、リスク管理には用いない。

2. 8 ベガ

 ボラティリティ\sigmaの変化に対するオプション価格の変化をベガという。


\begin{aligned}
\upsilon_{c}&=-\displaystyle{\frac{\partial c}{\partial \sigma}}\,\\
\upsilon_{p}&=-\displaystyle{\frac{\partial p}{\partial \sigma}}\
\end{aligned}

プット・オプションのベガは、プット・コール・パリティを用いれば*1


\begin{aligned}
\upsilon_{p}&=-\displaystyle{\frac{\partial}{\partial \sigma}(c-S+Ke^{-rT})}\,\\
&=\upsilon_{c}
\end{aligned}

と同値である。
 さらに展開してみよう。


\begin{aligned}
\upsilon_{c}&=\displaystyle{\frac{\partial c}{\partial \sigma}}\,\\
&=\displaystyle{\frac{\partial}{\partial \sigma}(S\Phi (d)-Ke^{-rT}\Phi(d-\sigma \sqrt{T}))}\,\\
&=\displaystyle{S\phi(d)\frac{\partial d}{\partial \sigma}-Ke^{-rT}\phi(d-\sigma \sqrt{T})\frac{\partial (d-\sigma \sqrt{T})}{\partial \sigma}}
\end{aligned}

である。ここで


\begin{aligned}
\phi(d-\sigma \sqrt{T})&=\displaystyle{\phi(d)\frac{S}{K}e^{rT}}\
\end{aligned}

および


\begin{aligned}
\frac{\partial d}{\partial \sigma}&=\displaystyle{\frac{\partial}{\partial \sigma}
\{(\log{(\frac{S}{K})}+rT)T^{-\frac{1}{2}}\sigma^{-1}+\frac{1}{2}\sqrt{T}\sigma\}}\\\
&=\displaystyle{-(\log{\frac{S}{K}}+rT)T^{-\frac{1}{2}}\sigma^{-2}+\frac{1}{2}\sqrt{T}}\
\end{aligned}

および


\begin{aligned}
\frac{\partial (d-\sigma \sqrt{T})}{\partial T}&=\displaystyle{-(\log{\frac{S}{K}}+rT)T^{-\frac{1}{2}}\sigma^{-2}-\frac{1}{2}\sqrt{T}}\
\end{aligned}

を代入することで


\begin{aligned}
\upsilon_{c}&=\displaystyle{S\phi(d)\frac{\partial d}{\partial \sigma}-S\phi(d)\frac{\partial (d-\sigma \sqrt{T})}{\partial \sigma}}\\
&=\displaystyle{S\phi(d)(\frac{\partial d}{\partial \sigma}-\frac{\partial (d-\sigma \sqrt{T})}{\partial \sigma})}\\
&=\displaystyle{S\sqrt{T}\phi(d)}
\end{aligned}

である。
 プット・オプションの場合、


\begin{aligned}
\upsilon_{p}&=\upsilon_{c}
\end{aligned}

まとめよう:

  • コール・オプションのベガ\upsilon_{c}=\displaystyle{S\sqrt{T}\phi(d)}
  • プット・オプションのベガ\upsilon_{p}=\displaystyle{S\sqrt{T}\phi(d)}

2.9 C#での実装

 前回と同様に、理論値および数値解それぞれのメソッドを実装した:

using System;
using MathNet.Numerics;

/// <summary>
/// ベガの理論値を返す。
/// </summary>
/// <param name="S">原資産価格</param>
/// <param name="K">行使価格</param>
/// <param name="r">リスクフリーレート</param>
/// <param name="sigma">原資産価格のボラティリティ</param>
/// <param name="T">満期までの期間</param>
/// <returns>ヨーロピアン・コール・オプションまたはプット・オプションのベガ。</returns>
public static double Vega(double S, double K, double r, double sigma, double T)
{
    double d = Math.Log(S / K) + (r + 0.5 * Math.Pow(sigma, 2.0)) * T;
    d /= (sigma * Math.Sqrt(T));

    double Vega = S * Math.Sqrt(T) * MathNet.Numerics.Distributions.Normal.PDF(0.0,1.0,d);

    return Vega;
}

/// <summary>
/// ベガの数値微分による値を返す。
/// </summary>
/// <param name="S">原資産価格</param>
/// <param name="K">行使価格</param>
/// <param name="r">リスクフリーレート</param>
/// <param name="sigma">原資産価格のボラティリティ</param>
/// <param name="T">満期までの期間</param>
/// <param name="CallPutFlg">コール・プットを表すフラグ。0ならばコール・オプション、1ならばプット・オプションの価格を返す。</param>
/// <returns>コール・オプションまたはプット・オプションのベガ。</returns>
public static double VegaByNumericalDifferential(double S, double K, double r, double sigma, double T, int CallPutFlg)
{
    double Bin = 0.00001;

    double sign = -2.0 * CallPutFlg + 1.0;

    double vega = OptionPricing(S, K, r, sigma + Bin, T, CallPutFlg);
    vega -= OptionPricing(S, K, r, sigma - Bin, T, CallPutFlg);
    vega /= (2.0 * Bin);

    return vega;
}
プライバシーポリシー お問い合わせ