1. QuantLibを使ってみる
1.2 Example を試す
1.2.7 Gaussian1dModels : Gaussian Short Rate Model と Markov Functional Model
1.2.7.2 プロジェクトのビルド
これまでのプロジェクトと同様、まず "Guassian1dModels" プロジェクトのソースコードをビルドします。
- まず、QuantLib のディレクトリ下にあるソリューションファイル QuantLib.sln を開けます。すると、Visual Studio が起動され、このソリューションファイル下にあるプロジェクトが開かれます。ソリューションエクスプローラー画面にある 21個のプロジェクトファイルの中から、Gaussian1dModels プロジェクトを選択します。
- Guassian1dModels プロジェクトのディレクトリを展開し、SourceFiles のフォルダーにある Guassian1dModels.cpp をクリックすると、約 660 行あるソースコードが開かれます。
- メニューバーから “プロジェクト(P)” → “スタートアッププロジェクトに設定(A)” を選択します。これで、QuantLib.sln の中で、最初に Gaussian1dModels プロジェクトのメイン関数が呼び出されます。
- 同じくメニューバーから、 “プロジェクト(P)” → “プロパティ(P)” を選択し、これまでのプロジェクトと同様、boost ライブラリへのパスを設定します。( “QuantLibソリューションのビルド”を参照)
- メニューバーから "ビルド(B)" → "Gaussian1dModelsのビルド" を選択するとビルドが開始されます。エラー無くビルドが正常終了すれば、試しにプログラムを走らせてみます。
メニューバーの "デバック" → "デバックの開始" を選択し、下記の Console 画面が出力されれば成功です。
(注 : プログラムが終了すると同時に Console 画面も消えてしまうようであれば、"ツール(T)" → "オプション(O)..." → "デバック" → "全般" とし、「デバックの停止時に自動的にコンソールを閉じる」のチェックボックスをはずす。)
出力結果の表示は、下記の通りです。かなり長いアウトプットになっており、読みづらいですが、以下のソースコードの解説の中で、パートに分けて解説していきます。
1.2.7.3 ソースコードの全体像
このプロジェクトのソースコードは、Guassian1dModels.cpp になります。この解説はそのソースコードを見ながら読み進めてください。それをブラウザーでも見れるように、htmlファイルに変換したソースコード(Gaussian1DModels.cpp ソースコードファイル)を載せておきます。
さて、ソースコードは見ての通り、約660行あります。その構成は、
― | プリプロセッサ | (1~47行目) |
― | ローカル関数の定義 | (53~116行目) |
― | メイン関数 | (121~660行目) |
・本体 | (123~649行目 try{ } で囲まれた部分) | |
・例外処理 | (651~659行目 catch { } で囲まれた部分) |
と成っています。
また、本体部分は、以下のような構成になっています。
― | 商品オブジェクト(スワップションとその対象スワップ)の組立 |
― | モデルの組立と、それを使った価格エンジンの組立 |
― | モデルパラメータの calibrationと、金融商品の価格計算 |
・GSRモデルの calibrationと、それを使ったバーミューダン・スワップションの価格計算(2通り) | |
・みなし元本が逓減する形のバーミューダン・スワップション用に、GSRモデルの CalibrationHelper を作成 | |
・GSRモデルの calibrationと、それを使った、Call Option付き債券の価格計算(2通り) | |
・GSRモデルを使った、Constant Maturity Swap の価格計算。さらに、それを対象にしたバーミューダン・スワップションの価格計算 | |
・MFM を使った、Constant Maturity Swap の価格計算。さらに、それを対象にしたバーミューダン・スワップションの価格計算 |
これまでのプログラム例が、商品オブジェクトと価格エンジンの組立方法を中心に作られていたのに対し、このプログラム例では、モデルのパラメータの calibration 方法のテストを中心に作られています。以下の、ソースコードの解析で、その辺の所を中心に解説したいと思います。
<ライセンス表示>
QuantLibのソースコードを使う場合は、ライセンス表示とDisclaimerの表示が義務付けられているので、添付します。 ライセンス