エクセルVBAでオプション・プレミアムの計算(ブラック・ショールズ式による解析解)

本記事の目的と対象

本記事の目的は、オプションの価格を計算する公式であるブラック・ショールズ式を、エクセルVBAを用いてコーディングする方法について述べることである。

対象者は以下の条件を満たす読者である。
  • オプションとはなにかを知っている人
  • VBAを使う環境が整っている人
  • エクセルでオプションの価格を計算したい人
  • オプション価格と変数の関係(Greeks)をビジュアルで捉えたい人
また、以下の記事の内容を前提とする。

なお、本記事の内容は下記書籍の内容を参考にしているため、合わせて参照してほしい。

目次

ブラック・ショールズ式(ブラック・ショールズモデル)とはなにか

ブラック・ショールズモデルとは、株価の変動に対数正規分布を仮定した数理モデルのことであり、そのモデルから導出されるオプション価格の公式を、ブラック・ショールズ式(以下BS式)という。

ブラック・ショールズモデルにおいては、オプションの価格はいくつかのパラメタとよく知られた関数の組み合わせ、すなわち解析解(かいせき-かい)で表現することが可能であり、その解析解のことをBS式と呼ぶ。

原資産が配当を生む場合のBS式を修正BS式といい、以下の公式で与えられる[1]。
\[ \begin{split} C&=S_0e^{-qT}N(d_1)-Ke^{-rT}N(d_2)\\ P&=Ke^{-rT}N(-d_2)-S_0e^{-qT}N(-d_1) \end{split} \] ただし
\[ \begin{split} d_1&=\frac{log(S_0/K)+(r-q)T}{\sigma \sqrt{T}}+\frac{1}{2}\sigma\sqrt{T}\\ d_2&=\frac{log(S_0/K)+(r-q)T}{\sigma \sqrt{T}}-\frac{1}{2}\sigma\sqrt{T} \end{split} \] である。

以下では修正BS式を簡潔にVBAで記述する方法を示す。

BS式(解析解)のエクセルVBAでのコード例

修正BS式をVBAで表現するためにはBS式通りにコーディングすればよい。

ここではBS式をエクセル上で利用可能な関数として定義する。

VBAのエディタ(入力画面)を開いたら、Moduleを挿入し、以下のコードを入力する。

関数の引数として、株価\( S_0\)、ボラティリティ\( \sigma\)、無リスク金利\( r\)、配当率\( q\)、満期\( T\)、権利行使価格\( K\)と、コールかプットかの文字列変数を指定する。

また、正規分布の累積密度関数\( N(\cdot)\)は、エクセルでNormSDistという関数がすでに用意されており、これをVBAでも使えるように、Application.NormSDistという名前で呼び出す。

コールとプットの別は、引数に合わせて分けて計算されるよう、if文で条件分岐させている。
Function BS(ByVal S0 As Double, _
                    ByVal sigma As Double, _
                    ByVal r As Double, _
                    ByVal q As Double, _
                    ByVal T As Double, _
                    ByVal K As Double, _
                    ByVal CorP As String) As Double
    Dim d1 As Double, d2 As Double
    d1 = (Log(S0 / K) + (r - q + sigma ^ 2 / 2) * T) / (sigma * Sqr(T))
    d2 = d1 - sigma * Sqr(T)
    If CorP = "Call" Then
        BS = S0 * Exp(-q * T) * Application.NormSDist(d1) _
        - K * Exp(-r * T) * Application.NormSDist(d2)
    ElseIf CorP = "Put" Then
        BS = K * Exp(-r * T) * Application.NormSDist(-d2) _
        - S0 * Exp(-q * T) * Application.NormSDist(-d1)
    Else
        MsgBox ("Please select Call or Put")
    End If
End Function

計算結果

エクセルシート上にあらかじめインプットデータを入力しておき、定義したBS関数でそれらを参照することで、オプション価格が計算できる。

コールオプションの価格が14.23125、プットオプションの価格が9.354197と計算できた。

オプション価格と各変数・パラメタの関係(グリークスGreeks)

本節では、各変数・パラメタが変化したとき、オプション価格がどのように変化するかを、定義したVBA関数を使って確かめる。

オプション価格に影響する変数・パラメタが変化したとき、オプション価格がどれだけ変化するかの割合を表したものを、グリークス(Greeks)という。

つまり、オプションの各パラメータ変化に対する感応度である。

以下では各変数・パラメタに対応するグリークスと、実際の変数・パラメタの変化でオプション価格がどれほど変化するかを、グラフにして示す。

  1. 株価とオプション価格の関係
    (デルタ\( \Delta=\partial C/\partial S\))

    原資産価格(株価)の変化に対するオプション価格の変化の割合を、デルタ\( \Delta\)という。

    コールオプションのデルタは正であり、プットオプションのデルタは負である。

    つまり、株価が上がればコールオプションの価格は上昇し、プットオプションの価格は下落する。 \begin{eqnarray*} \Delta_C&=&\partial C/\partial S\\ &=&e^{-qT}N(d_1)\geq0\\ \Delta_P&=&\partial P/\partial S\\ &=&-e^{-qT}N(-d_1)\leq0 \end{eqnarray*} この関係をグラフから読み取ってみよう。

    以下のようなインプットデータから表を作成し、図示する。


    グラフから、株価が大きくなれば、コールオプションの価値は大きく、プットオプションの価値は小さくなることが読み取れる。
  2. ボラティリティとオプション価格の関係
    (ベガ\( V=\partial C/\partial\sigma\))

    ボラティリティの変化に対するオプション価格の変化の割合を、ベガ\( V\)という。

    ブラック・ショールズモデルではボラティリティは一定と仮定されているが、実際にはボラティリティは変動しているため、ベガが意味を持つ。

    コールオプション、プットオプションのベガは一致し、ともに正である。

    つまり、ボラティリティが上がればオプションの価格は上昇する。 \begin{eqnarray*} V_C&=&V_P\\ &=&Se^{-qT}\sqrt{T}N(d_1) \end{eqnarray*} この関係をグラフから読み取ってみよう。

    以下のようなインプットデータから表を作成し、図示する。

    グラフから、\( \sigma\)が大きくなれば、コールオプション・プットオプションの価値はともに大きくなることが読み取れる。
  3. 無リスク金利とオプション価格の関係
    (ロー\( \rho=\partial C/\partial r\))

    無リスク金利の変化に対するオプション価格の変化の割合を、ロー\( \rho\)という。

    ブラック・ショールズモデルでは無リスク金利は一定と仮定されているが、実際には金利は変動しているため、ローが意味を持つ。
     
    コールオプションのローは正、プットオプションのローは負である。

    つまり、無リスク金利が上がればコールオプションの価格は上昇し、プットオプションの価格は下落する。 \begin{eqnarray*} \rho_C&=&\partial C/\partial r\\ &=&KTe^{-rT}N(d_2)\geq0\\ \rho_P&=&\partial P/\partial r\\ &=&-KTe^{-rT}N(-d_2)\leq0 \end{eqnarray*} この関係をグラフから読み取ってみよう。

    以下のようなインプットデータから表を作成し、図示する。

    グラフから、無リスク金利が大きくなれば、コールオプションの価値は大きく、プットオプションの価値は小さくなることが読み取れる。
  4. 配当率とオプション価格の関係

    配当率の変化に対するオプション価格の変化の割合に、特別な名前はない。

    ブラック・ショールズモデルでは配当率は一定と仮定されているが、そもそも将来の配当には不確実性を伴い、実務上配当率を精緻に予測することは不可能であるうえ、便益が少ない。

    したがって、オプション価格の配当率感応度はあまり重視されない。

    しかし、概念上はこれを考えることが可能であり、コールオプションの配当率感応度は負、プットオプションの配当率感応度は正である。

    つまり、配当率が上がればコールオプションの価格は下落し、プットオプションの価格は上昇する。 \begin{eqnarray*} \partial C/\partial q&=&-STe^{-qT}N(d_1)\leq0\\ \partial P/\partial q&=&STe^{-qT}N(-d_1)\geq0 \end{eqnarray*} この関係をグラフから読み取ってみよう。

    以下のようなインプットデータから表を作成し、図示する。

    グラフから、配当率が大きくなれば、コールオプションの価値は小さく、プットオプションの価値は大きくなることが読み取れる。
  5. 満期とオプション価格の関係
    (セータ\( \Theta=\partial C/\partial T\))

    満期までの期間(残存期間)の変化に対するオプション価格の変化の割合を、セータ\( \Theta\)という。

    オプションのセータは他の変数・パラメタの値によって正負のどちらも取りうる。

    つまり、残存期間が短くなれば(満期に近づくほど)オプションの価格は下落することもあれば、逆に上昇することもある。 \begin{eqnarray*} \partial C/\partial T&=&-{\frac {SN'(d_{1})\sigma }{2{\sqrt {T }}}}-rKe^{-rT }N(d_{2})+qSe^{-qT }N (d_{1})\\ \partial P/\partial T&=&-{\frac {SN'(d_{1})\sigma }{2{\sqrt {T }}}}+rKe^{-rT }N(-d_{2})-qSe^{-qT }N(-d_{1}) \end{eqnarray*} 参考のため、特定のインプットのもと計算した満期とオプション価格の関係を確かめる。

    この例では、満期が長くなるにしたがってオプションの価値は上がっていることが読み取れる。
  6. 権利行使価格とオプション価格の関係

    権利行使価格の変化に対するオプション価格の変化の割合に、特別な名前はない。

    オプション契約では権利行使価格があらかじめ決められているため、そこに不確実性はなく、したがって、オプション価格の権利行使価格感応度はあまり重視されない。

    しかし、概念上はこれを考えることが可能であり、また同一の原資産に対するオプションで、権利行使価格が異なる場合に、どういう関係になるかを考えることには意義がある。

    コールオプションの権利行使価格感応度は負、プットオプションの権利行使価格感応度は正である。

    つまり、権利行使価格が高いほど、コールオプションの価格は低く、プットオプションの価格は高い。 \begin{eqnarray*} \partial C/\partial K&=&-Ke^{-rT}N(d_1)\leq0\\ \partial P/\partial K&=&Ke^{-rT}N(-d_1)\geq0 \end{eqnarray*} この関係をグラフから読み取ってみよう。

    以下のようなインプットデータから表を作成し、図示する。

    グラフから、権利行使価格が大きければ、コールオプションの価値は小さく、プットオプションの価値は大きくなることが読み取れる。

まとめ

本記事では、BS式をVBAで実装するソースコード例を提供し、インプットデータを与え実際に価格の計算を行った。

また、その関数を用いて、オプションの各変数・パラメタの変化に対するオプション価格の感応度、つまりグリークスを、グラフによって確かめた。

いずれも理論通りのグラフが得られた。

参考文献

[1]ジョン ハル (2016), フィナンシャルエンジニアリング〔第9版〕 ―デリバティブ取引とリスク管理の総体系, きんざい
[2]大野(2012),モンテカルロ法によるリアル・オプション分析, きんざ
[3]https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
[4]http://mathfin.web.fc2.com/deriv2/imi_deriv209.html

スポンサードリンク