上級編 5. マルコフ汎関数モデル
5.1 はじめに
5.1.1 異色なオプションモデル
これまで、基本的な金利オプションモデルとして Black モデルや、金利の期間構造(Term-Structure)の変動を取り扱う Short Rate Modelのグループを紹介してきました。Term-Structure モデルについては、他に実務で広く使われている LIBOR Market Model のグループがあります。早く、そちらの説明に移りたいのですが、その前に、1990年代の終わり頃から、Markov Functional Model(マルコフ汎関数モデル。以下“MFM”)と呼ばれるグループが登場し、まずこのモデルについて触れたいと思います。MFM は、Arbitrage Free な Term-Structure モデルですが、市場の Volatility Smile カーブにフィットするようにモデルを Calibration できる上、比較的高速に、Bermudan Swaption や、Constant Maturity Swap などのエキゾチック商品の価格計算が行える事から、実務でも、比較的よく使われているようになりました。そこで LIBOR Market Model の説明に進む前に、このモデルについて説明をしたいと思います。
Functional (汎関数)とは、関数の説明変数の領域(定義域)として、ベクトル空間や関数空間を取り、スカラーあるいはベクトルの関数値を返す写像です。関数の関数とも呼ばれています。例えば定積分は、被積分関数を説明変数とみなせば、様々な被積分関数に対応する関数値を返す汎関数とみなせます。また、値が確定していない確率変数を定義域に取る関数もそうで、例えば Short Rate Model から導出されるゼロクーポン債価格式も汎関数と言えるでしょう。条件付き期待値演算も、条件として与える確率変数を説明変数と考えれば、汎関数と言えるでしょう。
マルコフ汎関数モデルは、ニュメレールとなるゼロクーポン債価格を、マルコフ過程をとる確率変数の汎関数(写像)と定義します。また将来の時点における、任意の満期のゼロクーポン債価格も、ニュメレールとの相対価格の条件付き期待値(汎関数)として導出されます。ここからマルコフ汎関数モデルという名前が付けられたのでしょう。しかし、Short Rate Model をはじめ、オプションの価格計算モデル(アルゴリズム)は、あえて汎関数とは呼んでいないものの、オプション行使時における、不確実な確率変数の関数(期待値演算)として、汎関数の範疇に入ると言えるでしょう。
ところで、MFMは、これまで説明してきたモデル群や、今後説明予定の LIBOR Market Model 群と比べると、全く異色のモデルです。私見では、そもそもこれを“モデル”と呼んでいいのか疑問です。様々な文献では、Markov Functional Model と"Model"をつけているので、以下でもMarkov Functional Model “マルコフ汎関数モデル”という呼び方を使いますが、“モデル”と考えて理解しようとすると混乱するので、注意してください。
まったく異色と言ったので、どういった点が異色なのか、始めに説明しておきます。
これまで、様々な“モデル”から、金融商品や、そのデリバティブズの価格評価の方法を導出してきました。そのプロセスをかいつまんで言うと
- 金融商品の価格や金利の、将来に渡る確率変動を、“モデル”として確率微分方程式の形で特定し、
- モデルから、将来の価格や金利の確率分布を導出し、
- さらにそこから、将来のCash Flow(オプションの場合は行使時のPayoff関数)の期待値を求め、
- それを現在価値に換算する
というプロセスになります。これまで説明した、株式や為替オプション用の Black-Scholes Model、先物オプションやシンプルな金利オプション用の Black Model、エキゾチックな金利オプション用の Short Rate Model群、さらに、まだ説明していない、LIBOR Market Modelなどもすべてそうです。期待値を求める為の数学的なテクニックやその難易度は、モデルによって様々ですが、考え方のベースは、すべてこのようなものです。
それに対し、マルコフ汎関数モデルは、
- デリバティブズの対象商品の価格(あるいは金利)の確率分布を求めるのではなく、ニュメレールとなる、最も期間の長いゼロクーポン債価格の確率分布を求める。(ニュメレールの役割については後述)
- ニュメレールの確率分布は、モデルを解析(確率微分方程式を積分)して求めるのではなく、CapやSwaptionといった、市場で取引されているシンプルなオプション価格に内包している、フォワード金利の確率分布から求める。
- 求まったニュメレールの確率分布から、将来の特定の時点における、ゼロクーポン債価格(すなわちイールドカーブ)を、期待値演算を使って導出する。この時、それぞれのゼロクーポン債価格のニュメレールとの相対価格がニュメレール測度下でマルチンゲールになるという性質を使う。
- そのイールドカーブに依存する金利オプションの価格も、ニュメレールとの相対価格を期待値演算で求める。
というものです。ニュメレールの確率分布を求める際に、モデル(確率微分方程式)から確率分布を解析するのではなく、シンプルなオプションの市場価格に内包する確率分布を、そのまま使うことから、“モデル”と呼べないのではないかと述べた次第です。
この方法は、市場で観測される LIBOR-Swap カーブから、Bootstrapping-Interpolation法を使って、それに内包するゼロクーポン債価格のカーブ(Discount Curve)や、フォワード金利カーブを導出する方法に似ています(“基礎編:イールドカーブの構築方法(2)”参照)。MFMでは、CAPやSwaptionの市場価格が内包しているフォワード金利の確率分布から、ゼロクーポン債価格の確率分布を、Bootstrapping-Interpolationと似たようなアルゴリズムで導出しているという事です。イールドカーブの場合は、時間軸と金利軸の2次元空間にカーブを描くのに対し、マルコフ汎関数モデルでは、時間軸と、各時点における金利のストライク軸におけるゼロクーポン債価格を導出するので、3次元空間でのBootstrapping-Interpolationアルゴリズムになります。従って、イールドカーブ構築のアルゴリズム(これも相当複雑ですが)より、遥かに複雑になります。イールドカーブ構築のアルゴリズムを、誰も“モデル”とは呼んでいませんよね。
この通り、マルコフ汎関数モデルは、
- デリバティブズの対象商品の確率分布ではなく、ニュメレールの確率分布からデリバティブズ価格の期待値を導出する
- ニュメレールの確率分布を、モデルの解析ではなく、市場データが内包している分布を使う
という2点で、通常のモデルとは、全く異なるアプローチになります。また、ニュメレールの確率分布を導出するアルゴリズムも複雑で、理解するのは簡単ではありません。それを、直観でも理解できるような解説に努めますが、きちんとオリジナルの文献を読まれる事をお勧めします。まず、マルコフ汎関数モデルを、最初に詳しく紹介した文献として、Hunt-Kennedy-Pelsserによる “Markov-Functional Interest Rate Models” があります。また、LIBOR Market Modelに、この考え方を応用して導入した Balland-Hughstonによる“Markov Market Model Consistent with Caplet Smile”があります。さらに、日本語で、Bootstrapping-Interpolationに相当するアルゴリズムを詳細に解説した、村上秀記氏の”Markov Functional Interest Rate Modelの解明”があります。これはPower-Pointによるプレゼンテーション資料ですが、アルゴリズムを詳細に解説しており、非常に参考になります。
MFMのアルゴリズムを、C++のソースコードに落とし込んだものが、QuantLibライブラリーのExampleコードの中にあり、これを実践編の中で解説する予定です。そのコードの開発者であるPeter Casper氏の“Markov Functional Model Implementation in QuantLib”も非常に参考になります。
いずれの文献も、「ゼロクーポン債価格の確率分布を、CAPやSwaption価格に内包されているフォワード金利の確率分布から、Bootstrapping-Interpolation法により導出する。」という言い方はしていません。しかし、どの文献もよく読めば、結局やろうとしていう事はそういう事だというのが判ります。
という事で、モデル(というよりアプローチまたはフレームワーク?)の説明に入ります。