2. "Implementing QuantLib"の和訳
Chapter-V Parameterized Models and Calibration
< はじめに >
キャリブレーションに批判的な人たちは、それをしなければならない事自体が、問題がある事の証であると主張しています。もし物理学者が重力に関する宇宙定数を毎年キャリブレートしていたら、その式はもはや有効ではない事を意味しているかもしれません。(さもなければ、自然法則の方に何かおかしいところがあるという事になり、その方が恐ろしい事です。物理学の世界では、それは無いでしょうが、金融工学の世界では、どちらに問題があるのか、まだ判決は出ていません)
良くも悪くも、QuantLibは市場データにフィットさせるキャリブレーション・メカニズムに対応しています。結局のところ、それが必要とされているからです。C++やSmith & Wesson(訳注:米国の銃器の製造業者)と同じように、プログラムに何等かの安全装置を付けた方がいいかもしれませんが、我々としては、たとえそれで自分自身の足を撃ってしまう可能性があったとしても、ユーザー自身がその使い方を理解していると想定しています。
キャリブレーションのオブジェクトモデルの枠組みは、QuantLibライブラリの中では最も古いパーツのひとつで、この数年はあまり注目を集めていませんでした。従って、このChapterを書くにあたって、いくつか修正をした方がよさそうな部分が見つかるかも知れません。その際は、過去のコードとの互換性を犠牲にするかも知れないので、少し待ってもらう必要があるかもしれません。それまでの間、皆さんは、我々の失敗からも学ぶことがあるでしょう。
前に進めましょう。キャリブレーションの枠組みは、以下のようなプログラムコードを作ることを可能にします。
HullWhite model(termStructure);
Simplex optimizer(0.01);
model.calibrate(marketSwaptions,
optimizer,
EndCriteria(maxIterations, ...));
check(model.endCriteria());
// go on using the model
上記のプログラムコードは、CalibratedModelクラスとCalibrationHelperクラスの2つのクラスがお互いに作用する事によって、作動します。HullWhiteクラスは、前者のクラスから派生し、一方(calibrate( )の引数にある)marketSwaptons(配列)の各要素は、後者から派生したクラスのインスタンスです。(ここでは、それ以外にOptimizationメソッド(最小値問題の計算ロジック)を実装しているSimplexといったアクセサリークラスを使っています。その内容の説明はAppendix Aで行います。) これらのクラスは互いに協力しあいながら動作するので、どちらを先に説明しても、あいまいな点が出たり、身振り手振りの説明になったりします。少し我慢して下さい。できるだけ不便を最小化したいと思います(Optimizerからの洒落を意図したものではありません)。
<ライセンス表示>
QuantLibのソースコードを使う場合は、ライセンス表示とDisclaimerの表示が義務付けられているので、添付します。 ライセンス