上級編 トップページ
上級編というタイトルをつけたトピックについて、自分程度の知識の人間が解説するのはおこがましい、という気持ちが強いのですが、実際にここで紹介するトピックを理解するには、相当程度の金融商品と数学の知識を必要とするので、あえて上級編としました。実際の所、Quants FinanceやMathematical Financeの分野で必要とされる数学の知識は、理学部の数学科あるいは物理学科の大学院レベルと言われています。ところが、自分のアカデミックバックグラウンドは、そこから大きく離れた文科系です。数学については、とりあえず、独学で何とか理解している程度であり、確率微分方程式から、オプション価格を導出するまでの解析の手順などの解説は、その分野の専門の方の解説をお読み頂いた方が良いと思います。
一方で、そういったオプションモデルをベースに、様々なデリバティブズ商品のトレーディングやリスク管理を、現場で長く経験したので、モデルの使用感は、肌身で感じてきました。基礎編で、モデルの優劣の話をしましたが、多くのファクターを使って、経済現象をより正確に再現できるモデルが、必ずしも優秀なモデルでは無いと述べました。シングルファクターのBlack-Scholesモデルが、使える範囲は限られるものの、実務の世界ではいまだに最もポピュラーなモデルです。一方で、マルチファクターモデルや確率変動モデルが、Volatility SmileやSkewをより正確に表現できるものの、実務家からは、それ程信頼されていないという事などは、確率微分方程式を解析するだけでは伺い知る事ができない事かと思います。従って、上級編とは言っても、数学的な説明は、出来る範囲で最小限にして、実務家から見たモデルの優劣や使用感などにフォーカスして説明して行きたいと思います。
金融工学のジャンルでQuants FinanceあるいはMathematical Financeと呼ばれる分野は、端的に言えば、ミクロ的な金融商品の価格計算方法を探求する分野です。この分野に関する膨大な書籍や論文が出ていますが、その大半が、Discount Factorを導出する為のイールドカーブ構築方法や、オプション価格を求める為に必要な、確率過程モデルに関するものです。リスク量の計測も、基本的には、価格計算のアルゴリズムがベースになります。従って、そこで使われている数学は相当難解ですが、やろうとしている事は、価格計算の方法を探求しているだけで、極めてシンプルです。そして、価格計算の方法に関するベースの考え方もシンプルです。
基礎編の冒頭で述べた通り、すべての金融商品は、将来発生するキャッシュフローの集合と見做せ、そしてその価格は、そのキャッシュフローの発生確率をかけた期待値を、現在価値に換算したものです。式で表現すると、
\[ \begin{align} PV\ of\ & Financial\ Instruments\ \\ & =\sum CashFlow_i (T_i)\ \times \ Probability(CashFlow_i)\ \times \ DiscountFactor(r(T_i)) \end{align} \]となります。
市場価格が存在する現物証券や、上場デリバティブズは、その市場価格自体を時価評価に使いますが、OTC(店頭)デリバティブズの価格は、シンプルな商品から複雑な商品まで、ほぼすべてこの式を使って価格を計算しているといって過言ではありません。式自体は極めてシンプルですが、この式にある3つのファクターをそれぞれ具体的に定義、特定していくのは簡単ではありません。
まず、\(CashFlow_i (T_i)\) すなわちキャッシュフローの額とタイミングは、契約や取引慣行や取引所規則などによって決まります。それらは、国、市場、金融商品の種類などによって、千差万別です。具体的な商品のキャッシュフロー額を確定する作業は、そういった情報を正確に把握しておく必要があります。具体的には、キャッシュフローの発生日の確定、日数計算方法、休日の取扱い、休日の情報、経過利息の計算方法、などについて、様々な契約形態、ルール、規則が存在しており、それらすべてを正確に理解し正しいアルゴリズムで計算するのは一筋縄では行きません。実務では、システムにキャッシュフロー計算アルゴリズムをプログラム化して計算させる訳ですが、その開発者にとって、それらを正確に把握し、システムに落とし込む作業は、かなり困難な作業になります。モデルを研究しているアカデミクスの世界では、殆ど気にする事は無いでしょうが、実務では疎かにできません。“実務で使える”という事を標榜したので、これについては、別のどこかで説明したいと思います。(実践編の中で、折に触れ解説するつもりです。)
\(DiscountFactor(r(T_i))\) は、基本的にリスクフリー金利で構築されたイールドカーブから導出されます。基礎編の金利の期間構造のセクションで、Bootstrapping + Interpolation法によるイールドカーブ構築方法を説明しました。そこでは、一般的にBootstrappingと呼ばれているイールドカーブ構築アルゴリズムが、実はInterpolationのアルゴリズムと密接に連携しながら、イールドカーブ構築を行っている事を説明しました。そこでは最もシンプルな方法のひとつ(Linear on Log of Discount Factor法)を使って説明しましたが、実際にどのようなInterpolationの方法を使うかは、非常に難しい問題です。上級編では、様々なInterpolationの方法について、具体的な補間関数の(係数の)求め方と、それぞれの利点と弱点について解説してみます。
また、イールドカーブについては、基礎編で、かつてリスクフリー金利と見做されていたLIBORが、サブプライムショックとそれに続くリーマンショック以降、もはやリスクフリー金利と見做されなくなった事を紹介しました。OISスプレッドが拡大し、それが恒常化した事がきっかけです。そうすると、将来の変動金利を予想する為に使うイールドカーブ(Index Curve、Forecasting Curve、あるいはForwarding Curveと呼ばれています)と、現在価値に割引く為に使うイールドカーブ(Discounting Curve)を別々にしないと、OISスワップを取引きした瞬間にアービトラージ収益が発生してしまいます。それを回避するには、Index CurveとDiscounting Curveを別々に作らないといけませんが、そのアルゴリズムは、既に複雑なBootstrapping + Interpolationのアルゴリズムより、さらに複雑になります。それについても、上級編のイールドカーブの所で説明したいと思います。
オプション性のない、シンプルな金利スワップなどの商品の時価評価や、リスク量の計測は、そこまでで十分です。一方で、オプションやCredit Default Swapの現在価値計算では、3つ目のファクターである \(Probability(CashFlow_i)\) すなわちキャッシュフローの発生確率を推定する必要があります。ここが金融工学の最も難解な部分かと思います。
基礎編では、確率分布さえ特定できれば、どんなオプションでも価格は簡単に求まると述べました。やや極論ですが、それ程間違ってはいないと思います。実際には、確率分布を特定するのは、それ程簡単ではありません。Black-Scholesの後に発表された様々なオプションモデルは、実際に観測される確率測度では無く、測度変換された後のリスク中立測度を使って、確率分布を推定しています。すべてのオプションモデルの入り口に、この考え方があります。おそらく、Quants Financeを理解する上で、これが最初の大きな難関ではないでしょうか。オプションのトレーディング経験があれば、デルタヘッジにより対象資産の変動リスクを大きく軽減できる事は理解できると思います。リスク中立測度を使ってオプション価値を計算する手法は、この考え方がベースになっています。そこの部分がよく理解できない方は、基礎編の<デルタヘッジ戦略のセクション>を参考にして下さい。この考え方を一般化・抽象化したHarrison-KrepsあるいはHarrison-Pliskaの論文で提唱されているFundamental Theory of Asset Pricingは、なかなか理解は容易ではありません。さらには、ニュメレールの変換により、リスク中立測度の代わりに、フォワード測度を使った方法でも、同様にオプション価格が計算できます(計算結果は同じになります)。何等かのニュメレール(基準財)を決めて、その価格との相対価格は、マルチンゲールになるという考え方ですが、これもすんなり理解するのは困難ではないでしょうか。これらについて、自分自身もきちんと理解できているのか自信ありませんが、自分なりの解釈をベースに、直感で理解できるような説明を、上級編の中で試みたいと思います。
一応、その前提の上で、様々なオプションモデルが提案されてきました。オプションモデルとは、端的には、証券の市場価格や金利など、不確実に変動する変数の確率過程を、ブラウン運動を使って記述した数式です。従って、殆どのオプションモデルは、下記のような式で記述されます。
\[ dX=\mu (t,X,,,)dt+\sigma (t,X,,,)dW \]但し
- X: 株価、為替レート、金利などの確率変数
- \(\mu (t,X,,,)\)\ :ドリフト項の係数。確率変数が微小時間に変動する際の期待値
- \(\sigma (t,X,,,)\) :拡散係数すなわちVolatility。
- \(dW\) :ブラウン運動の微小変化
ここから、計算時間さえ気にしなければ、Monte Carlo Simulationを使って、どのようなオプションであっても価格計算は可能です。アメリカンオプションなどは、Monte Carlo Simulationで計算すると膨大な時間がかかるので、通常やりませんが、出来ない訳ではありません。そういう意味で、オプション価格の計算は難しくないと述べました。
しかし、それでは実務では使えません。天気予報では、スーパーコンピューターを使って膨大なシミュレーションを行うようですが、明日の天気を予想するのに、3日かかるようでは意味がありません。デリバティブズの価格計算でも、1件あたりの計算に1分以上かかると、やや問題で、10分以上かかるようでは、おそらく使い物になりません。大手の金融機関では、膨大な数のデリバティブズ取引をブックしています。そのすべてで複雑な計算アルゴリズムを使っている訳ではありませんが、それでも数百件から数万件の複雑なデリバティブズをブックしています。Sensitivitiesといったリスク量の計算には、複数回の価格計算が必要になります。さらにシナリオ分析やVARの計測には、数十回から数百回の価格計算が必要になります。例えば、1件あたり1分かかる計算を、1000件のポジションで200回行うとすると、トータルで200,000分(約3300時間=約139日)かかります。実務では最大でも数時間以内で処理する必要があるので、当然、多数のCPU-Coreを並べた並列処理を、Grid-Computingで行う事になります。しかし、その為にコストを無限にかけて言い訳ではありません。
そこで、上記の確率過程の式から、解析的にオプション価格が導出できればベストです。Black-Scholesのヨーロピアンオプションの価格公式がそれです。解析解であれば、計算は一瞬で済みます。しかし、その解析のプロセスは難解で解析解が求まるケースは、ごく一部です。
解析解が求まらない場合は、なんらかのテクニックを使って数値解を求めていくことになりますが、これも難解です。数値解を求める方法は、数値積分、有限差分法、モンテカルロシミュレーション等々あります。2項モデルや3項モデルも数値解を求める方法のひとつと言えるかも知れません。それぞれの方法において、計算速度を向上させる為の様々なテクニックがあり、さらに理解を難しくしています。
要は、Quants Financeの難解な部分の中心は、確率過程を記述したオプションモデルから、オプション価格の計算式やアルゴリズムを導出していく過程にあると思います。そういった部分について、私自身の説明能力は限られています。そこについては、考え方の道筋だけを示して、結論として出されたオプション価格式やアルゴリズムの使用感を中心に解説したいと思います。解析の過程等については、極力、論文などの原典をリンクするので、そこで確認頂きたいと思います。
最後に、こういった、オプションを含めた複雑なデリバティブズの価格計算は、最終的にC++のようなプログラム言語で記述し、それをアプリケーションに実装して具体的な計算ができるようになって初めて“実務で使える”ようになったと言えるでしょう。その部分については、“実践編 QuantLibを使ってみる”で解説しようと考えています。