金融 > Implementing_QuantLib日本語訳 > 1章


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Implementing QuantLib日本語訳 1章


これは、Luigi Ballabio氏が書かれているImplementing QuantLibの翻訳です。氏の許可を得て、翻訳・公開しています。
日本語訳の情報は、こちらを参照してください(日本語訳に関する質問等もここのフォームにお願いします)。
The content of this page is licensed under Creative Commons.



1. まえがき

どんな理由が

若気のいたりからQuantLibのウェブサイトには、QuantLibは「標準のフリーかつオープンソースの金融ライブラリ」になることを目指すと書いてありました。その記述を少しゆるく解釈すると、最初である(そのためしばらくの間唯一のオープンソース金融ライブラリであった)と多少素直でないトリックを取り入れた結果ではありますが、いくらか成功したと人は言うかもしれません。

標準であるかないかにかかわらず、プロジェクトは繁栄しています。これを書いているときでは、それぞれの新しいリリースは数千回ダウンロードされ、ユーザからの貢献の定常流があり、そして、金融世界で使われる通常の秘密のベールを通して想像する限りでは、ライブラリは実際の現場で使われているようです。全体としては、プロジェクト管理者として私は自分自身を幸せなキャンプ人と宣言できます。

しかしひとしお、適切な文書の不足が目立ち始めています。詳細なクラスリファレンス(自動的に生成されるため簡単な仕事でした)が入手可能にもかかわらず、それは人に木を見せましたが森を見せることはありませんでした。そのため新しいユーザは、QuantLib開発者がルイス・キャロル著のスナーク狩りのベルマンの視点を共有するという感じを得る必要があります。

「メルカトルの北極点と赤道、熱帯地方、帯と子午線って何だい?」
ベルマンが泣いており、クルーが答えただろう。
「それらは単に定式記号です!」

この本の目的は、その存在する隙間の部分を埋めることです。それはQuantLibの設計と実装に関するレポートですが、気持ちの中では、メル・ブルックス作のヤング・フランケンシュタインに著しく影響を受けた(しかし願わくばあまり怖くない結果となるような)「どうやって私がそれをやったの」本に近いです。あなたがQuantLibユーザであるもしくはユーザになりたいなら、コードを読むだけでは簡単にはわからないライブラリの設計に関する役立つ情報をここで見つけられるでしょう。あなたが計量ファイナンスの分野で働いているならたとえQuantLibを使わなくても、金融ライブラリ設計の現地報告として読むことができます。それはあなたも直面するかもしれない問題に加え、可能な解決法とその理由付けをカバーしていることに気づくでしょう。あなたの制約に基づいて、他の解決法を選択するということもあるかもしれません、いやあるでしょう。しかしここでの議論から利益をえるかもしれません。

記述中、私は現在の実装の短所を指摘します。ライブラリをけなす目的ではありません(私はかなりライブラリに夢中になっています)し、より役立つ目的のためです。一方存在する危険性を述べることは、開発者がそれを避けることを手助けします。他方ではライブラリを改善する方法を示すかもしれません。実際にこの本のためにコードをレビューしたことで、引き返しそして改善のために修正を入れるということがありました。

空間と時間の理由のため、私はライブラリのすべての特徴をカバーすることはできないでしょう。この本の前半では、金融商品をモデル化するものや期間構造のような2、3の最重要クラスを述べます。これはライブラリのより大きいアーキテクチャの眺めを与えるでしょう。後半では、モンテカルロや有限差分モデルを生成するために使われるもののような2、3の特殊なフレームワークを述べます。それらのいくつかは、他よりも洗練されています。現在の短所が長所と同じくらい興味深いということを望んでいます。

この本は主として、自分自身の商品やモデルでライブラリを拡張したいユーザを対象としています。もしあなたがそうなら、入手可能なクラス階層とフレームワークは、あなたのコードをQuantLibに組み込み便利さを活用するために必要な第一歩に関する情報を提供するでしょう。もしあなたがこの種のユーザでなくても、本をまだ閉じないでください。あなたに役立つ情報も見つけるでしょう。しかしながら私はここにヒントを書いておきます。もう一人のQuantLib管理者が、QuantLib手引書を書こうという意図を繰り返し述べています。なんとしてでも、本が書かれるまで彼のところに行って催促してください。

それでは、伝統通りにこの本のスタイルと要求を少し書きます。

C++と計量ファイナンスの両方の知識が仮定されます。私はどちからをあなたに教えることができる見栄がありませんし、この本はすでに十分に厚いです。私は単にQuantLibの実装と設計を述べます。他のよりよい著者が片手で問題領域を、もう片方で言語のシンタックスとトリックを教えるようにまかせます。

あなたがすでに気づいたとおり、私は一人称単数で書きます。本当に自己中心的に見えるかもしれません(実はあなたがまだいらだちで本を下に置いていないことを願っています)。しかし一人称複数を使っていたらかなり大げさに感じられたでしょう。この本の著者は、三人称を使うことも同様であると感じています。少しの考慮の後、私はフォーマルではありませんが心地の良いスタイルを選択しました(またあなたが気にとめたように縮小形の惜しみない使用を含んでいます)。同様の理由で私は、有名で鋭い読者に向けてでなくあなたに向けて話しかけます。これは混乱を防ぐためにも役立ちます。私が複数形を使ったとき、グループとしてのQuantLib開発陣でなされた仕事を述べています。

それ自身が興味深いか最終結果に関連があるときに、私は設計の発展を述べます。明快さのためにほとんどの場合、私は袋小路と間違った角を飛ばすつもりです。異なる時間で作られた設計決定をまとめます。そして最終設計のみを示します。時より簡単化されます。

私が述べるコード中にデザインパターンの使用を指摘するつもりです。念のために言っておきますが、あなたのコードをそうしろと主張しているわけではありません。自分自信の利益ではなく、役立つ時だけデザインパターンが適用されます。しかしながら、今QuantLibは数年間のコーディングとリファクタリングの結果であり、両方が長い時間のユーザのフィードバックと追加された新しい要求に基づいています。設計がデザインパターンに向けて発展することは、単に自然なことです。

ライブラリで使われ付録Bで概説したのと同様のコンベンションがこの本のコードリストに適用されます。一つの観点でそれらから外れます(行幅の制限のため、型名からstdとboost名前空間を取り除きます)。リストが図によって補足される際、UMLを使います(この言語になじみのない人のために例題による短い入門が、付録Cで与えられます)。

これで全部です。さあダイブしましょう。

2章へ続く