トップこのサイトのタイトルに“実務で使える”という形容詞を付けた以上、金融工学で研究されている様々なデリバティブズの価格計算方法について、実際にコンピュータープログラムに落とし込んで、どのように計算しているかの説明が必要かと思います。最終決済価格の決め方などについても、きちんと対応できている必要があります。市販の金融商品のトレーディングシステムや、リスク管理システムは、そういった計算アルゴリズムが内包されていますが、具体的なプログラムコードはブラックボックスになっており、伺い知る事ができません。そこで、QuantLibと呼ばれているオープンソースを使って、それらについて解説を試みたいと思います。QuantLibとは様々な金融商品の“価格計算アルゴリズム”を、C++言語を使って、オブジェクト指向プログラミングの手法でクラス階層に抽象化した、オープンソースライブラリーです。QuantLib開発のプロジェクトは20年ほど前にスタートし、バージョン1.0が発表されたのは、2010年2月です。現在(2019年4月時点)、Version1.15が公開された所です。Engines”で、それらの機能をサポートする、数10~数100のクラスからなる複数のモジュールが提供されています。メインページのURLを添貼しますので、なによりもまずQuantLibのサイトに行ってみて下さい。デリバティブズ業務を本格的に展開している、欧米の大手金融機関であれば、こういった価格計算アルゴリズムのライブラリーは、独自で開発しているものと思われます。いったライブラリーは、80年代以降、おそらく、通算で数百人単位の専門の開発担当者が、数十万行から数百万行のプログラムコードを、数百万時間から数千万時間かけて構築されたものと推察します。途中で何度も大幅な見直しが行われたであろう事は想像に難くありません。同じ様なものを後発の金融機関が導入しようとする場合、ゼロからのスタートでは膨大なリソースとコストと時間を覚悟する必要があります。QuantLibのようなオープンソースを応用すれば、コストと時間を大幅に節約できる可能性があります。金融工学をアカデミクスで研究されている方にとっても、デリバティブズの価格計算アルゴリズムを実際に走らせる事は重要かと思います。金融工学は、名前の通り理学ではなく“工学”であり、様々なモデル・理論が実際に実務で使えるかどうか確認する事が重要です。理論だけ探求すれば言い訳ではありません。その為には、モデルが、実際にうまく経済現象を記述できているのかを、市場データを使って検証する必要があります。計算時間は実務で使用可能な範囲内でおさまる必要があります。それらをゼロから自分で開発するのは非常に困難です。いった方にとっても、QuantLibのようなオープンソースは便利なはずです。QuantLibを使うのは容易ではありません。“最低限”でも、次の様な知識レベルが要求されます。C++のシンタックス。基本レベルのみならず、オブジェクト指向プログラミングの技法や、デザインパターンの使い方を、ある程度理解しておく必要があります。金融工学に関するハイレベルの知識。それを理解するのに必要な数学の知識。(様々なオプションモデル、有限差分法や数値積分などの数値解析の手法、モンテカルロシミュレーションのテクニック、SolverやOptimizer、高速な行列演算の手法、等々)かなり広範な金融商品および金融実務の知識。(広範なデリバティブズ関連の商品知識と取引慣行)“最低限”と言いながら、そうとうハイレベルな内容です。金融実務に携わっている人で、これらすべてに精通している人は、それほど多くはない無いと思います。逆に、QuantLibを使って、そういった事を学んでいくのも手です。様々なオプションモデルに関する論文や書籍を読んでも、具体的な価格計算アルゴリズムの記述が無いか、あったとしても、プログラム言語での記述方法までは解説されていません。価格計算アルゴリズムのプログラムコードを解説した書籍も、僅かながら存在しますが、実際にコンピューター上で走らせないと意味がありません。書物だけで理解するより、実際にプログラムを走らせ、計算してみる事で、モデルの使用感が実感できます。価格計算アルゴリズムについても、具体的な計算過程が可視化されているので、より理解しやすくなると思います。いう事で、“実務で使える”レベルの金融工学を理解するには、QuantLibの使い方を解説するのが、最も有効ではないかと考えました。このサイトをご覧になられている方は、すでに金融の実務に携わっておられるか、あるいはアカデミクスの世界で学んでいるか研究されている方ではないかと思います。いった方々であっても、C++言語については、あまり馴染みが無いのではないかと推察します。あれば、まずC++について、数週間から数カ月かけて基本的なシンタックスを理解してからここに戻ってきて下さい。それが無いと、プログラムコードの解析は、暗号解読よりも困難です。そこまで時間をかけて学ぶ価値があるのかという疑問があるでしょう。デリバティブズの価格計算を行っていく中で、計算結果が異常値を示す事がしばしばあります。いった場合、その原因を理解するには、どのような計算アルゴリズムが、具体的にどのようにプログラムコードで記述されているかを理解している事が重要です。Bugから発生する場合もありますが、モデルの特性や、計算方法の特性から異常値が出る事もあります。盲目的にプログラムを信じると、間違ったリスク量でポジション管理をしたり、間違った時価評価をしたりするリスクがあります。いった事象を、気付く能力や修正する能力も、実務では非常に重要です。ブラックボックスを盲目的に信じるのは危険です。ひとつ、実利的な意味での学ぶ価値としては、QuantLibが理解できて、使えるレベルまでのスキル・知識あれば、欧米の投資銀行で、クオンツアナリスト、リスクマネージャー、プロダクトコントローラーなどのポストで、数千万円単位の年俸が期待できるかも知れません。QuantLibを使って、“実務で使える金融工学”を解説するなど、少し大風呂敷を広げた感があります。QuantLibが提供しているライブラリーの量は広範かつ膨大で、相当高度なオプションモデルの計算アルゴリズムを含みます。自分自身、それらすべてを理解している訳ではありません。私は、C++のプログラマーではなく、開発されたアルゴリズムを使うユーザー側だったので、C++に関する詳細な知識がある訳ではありません。従って、QuantLibのすべてを解説できる訳では無く(膨大であり、無理です)、私自身が、重要と考える部分について、あくまで、私自身の理解している範囲内での説明になりますので、ご容赦下さい。>まずQuantLibのインストール方法を解説します。QuantLibを使うには、コンパイラーとBoostと呼ばれるオープンソースのテンプレートライブラリーも必要になります。それらのインストール方法も併せて解説します。インストール方法は、それ程難しくありません。次に、QuantLibのクラスライブラリーをどのように使うか、いくつか用意されているExamplesを使って、具体的に解説したいと思います。各Exampleで使われているモデルや計算アルゴリズムについても、簡単な解説を行いたいと思います。日数計算方法や、休日の取扱い方法など、市場慣行にかかるクラスの取扱い方法についても説明していきたいと思います。QuantLib”の訳を載せたいと考えています。この書物は、QuantLibが提供している基本的なモジュールのオブジェクトモデル構造や、その使い方、さらにプログラムの問題点などをまとめたものです。これからQuantLibを使おうとする方が全体の構造を理解する為の一助になると思います。一応、Ballabioしから、翻訳を公開する了解を頂いております。この書物のオリジナルは、LeanPubで購入可能ですし、やや古いバージョンであればBallabio氏自身のBlogでも公開されています。<ライセンス表示>QuantLibのソースコードを使う場合は、以下のようなライセンス表示とDisclaimerの表示が義務付けられているので、添付します。