Introduction若さゆえの情熱から、かつてQuantLibのWebサイトにおいて、“標準的で、かつ無料で開放された金融モデルのライブラリー”を目指すと宣言していました。そのような宣言を若干甘めに解釈すれば、ある程度は成功したと言えるかも知れません。言う為に、“最初で、(暫くの間かもしれませんが)唯一のオープンソースの金融モデルライブラリー”の定義を都合よく解釈したかも知れませんが。QuantLib”と呼んでいただきました。光栄な呼称ですが、私としては謙遜して、今の所そう呼ぶのは控えています。標準的とかどうかに関わらず、少なくともこれを書いている時点では、新しいバージョンのリリースがあると、毎回、数千件のダウンロードが行われているようです。ユーザーからの寄与も定常的に行われていますし、実務の世界でも使われているようです(金融の世界における秘密主義にもかかわらず、漏れてくる話からの推察ですが)。このプロジェクトの管理者として、全体を総合的に見ると、私は幸せ者であると言っていいかも知れません。それが故に、適切な解説書が無いという問題が、より明白になりました。詳細なクラスの解説は提供されていますが(この部分は、自動的に作成する事ができるので、実は簡単でした)、それを読んでも、木を見て森を見ず、の状況に陥るだけで、新しくこれを使ってモデル開発を行おうとするユーザーにとっては、まさにルイス・キャロルの「スナーク狩り」の中でBellmanが述べた言葉に同意をするかもしれません。何の役に立つのだ?”とBellmanは叫んだ。それに対し、隊員たちは答えた。“単なる地図記号ですよ”この本の目的は、その足りない所を埋める事です。Frankenstein”で極めて特徴的な、“どうやって作ったのか”的な本にも、心情的にはよく似ています(その映画の驚くような成功には及びませんが)。読者の方が、既にQuantLibライブラリーのユーザーであるか、あるいはこれからユーザーになろうとしているのであれば、プログラムコードを読むだけでは解らないような、ライブラリーのデザインについての有用な情報が、この本から得られるでしょう。読者がユーザーではないものの、金融工学の世界で働いているのであれば、金融モデルライブラリーのデザインに関する現場報告書として読んで頂いてもかまいません。あなたが今直面しているような問題に対して、その解決策と、その理屈も含めて、この本がカバーしている部分がある事に気づくでしょう。読者の方の制約条件によっては、別の解決策を選択するかもしれませんし、あるいはその可能性の方が高いかもしれませんが、この本の中での論点整理から、そういった場合でも得るものがあるかも知れません。説明の中で、現時点の実装方法の欠点も指摘しようと思います。それは、このライブラリーを蔑む為では無く(私自身もライブラリーの開発に深く関わっていました)、より有用な目的の為です。一つには、既存の弱点を説明する事によって、これから(このライブラリーを使って)モデル開発しようとする人が同じ失敗をする事を避けられます。一方で、このライブラリーをこれからどう向上させていくか道筋を見せてくれるかも知れません。実際にも、すでにそれは起こっており、この本を書く為にプログラムコードを見直していく中で、いくつか弱点の改善を行ってきました。本のスペースと私の時間の制約から、QuantLibライブラリーのすべての機能をカバーすることはできません。この本の前半部分は、金融商品や期間構造のオブジェクトモデルといった2~3種類の最も重要なクラスについて説明します。それによって、このライブラリーのより大きな構造に対する俯瞰が出来るでしょう。後半部分では、モンテカルロ法や有限差分法モデルを構築する為に使われている、いくつかの特別なフレームワークについて説明します。その内のいくつかは、それ以外のものより、より洗練されています。このフレームワークの現時点での弱い部分は、強い部分と同じ位、興味深いものだと思います。この本の読者としては、QuantLibライブラリーを使って自ら金融商品や価格モデルを開発しようとしているユーザーを想定しています。あなたが、それに該当するなら、ライブラリーが提供するクラス階層やフレームワークに関する説明を読んで頂けると、ご自身のプログラムコードをQuantLibライブラリーのそれと統合する為に必要な鈎について、何等かの情報を得られるでしょうし、提供されている機能を活用する助けになるでしょう。いった類の読者でないとしても、本を閉じないで下さい。無い方にとっても、何等かの役に立つ情報を得られると思います。ここでひとつ、あるヒントを残します。QuantLib”を書くつもりであると繰り返し述べています。それが出来上がるまで、皆さんも、全力で彼を急かして下さい。*********************************慣習に従って、この本についていくつかの注意点を述べておきます。金融工学に関する一定の知識がある事を前提にしています。私自身が、これらについて、この本で改めて教える事が出来るとは思っていません。この本は既に相当ぶ厚くなっており、その余裕もありません。ここでは、QuantLibライブラリーの実装方法とデザインについての説明だけに留めます。金融工学における方程式が前提とする空間の説明や、C++の文法や躓き易い点などの説明は、別のより詳しい方にお任せします。読者の方は既に気づかれたかも知れませんが、書き手の主語に単数(“I”)を使っています。はい、確かに自己中心的ですが、それが不快な為に本を閉じないで下さい。書き手の主語を複数(“We”)としたら、それはそれで尊大です。書き手に第3者を使っても同じでしょう。考えた結果、私としては、あまり格式ばっていない居心地にいい方法を取る事にしました(従って、いろんな省略形も使っています)。同じ理由から、読者の方も、固い言い方の読者(”reader”)とせずにあなた(“you”)を使う事にします。単数のIを使うのは、混乱を避ける為でもあります。複数のWeを使った場合、QuantLibライブラリーの開発者全体を指すものと理解して下さい。この本の中では、デザインの変遷についても、それ自体が興味を引くものであったり、最終形に影響するものであったりすれば、説明して行きます。論点を明確にする為、ほとんどの場合、行き止りや、道を間違えたケースは飛ばして、時と共に変遷していったデザインについては、一纏めにして、最終的に決定したデザインについてのみ、時には簡略化して、説明します。それでも、述べないといけない事はたくさんあります。Shakes(アメリカのロックバンド。Girlsの歌詞参照)の言葉を借りれば、”why”には、恐るべき多くの数の質問が含まれています。プログラムコードの説明の中で、そこで使われているデザインパターンについても説明します。注意しておきますが、読者が開発されるコードの中にそれを使うように勧めるものではありません。デザインパターンは、利用価値がある時にだけ使うべきであり、デザインパターンの為に使うべきではありません。QuantLibライブラリーは何年にも渡るプログラミングとその修正の歴史を経ており、ユーザーからのフィードバックや新しい要求への対応をしてきました。その結果、デザインがデザインパターンに収束していくのは自然な事でもあります。B参照)を使っています。一つだけ、その作法からはずれている部分があります。boostのnamespaceを外している所があります。プログラムコードのListingをチャートで補完する必要がある場合は、UMLを使っています。UMLに馴染みのない方は、その詳しいガイドは下記[2]の文献を参照して下さい。イントロダクションは以上です。2003.<ライセンス表示>QuantLibのソースコードを使う場合は、ライセンス表示とDisclaimerの表示が義務付けられているので、添付します。