はじめに
1Introduction
2Financial instruments and pricing engines
- 2.1The Instrument class
- 2.1.1インターフェースと要件
- 2.1.2実装
- Aside: const にすべきか否か?
- 2.1.3例:金利スワップ
- Aside: Handleと共有ポインター
- 2.1.4今後の開発予定
- 2.2価格計算エンジン
- Aside: 純粋でない仮想関数
- 2.2.1例: シンプルなオプション
3Term Structures
- 3.1The
TermStructureClass - 3.1.1インターフェースと要件
- 3.1.2実装
- Aside: Evaluation Dateに関する工夫
- 3.2金利の期間構造
- 3.2.1インターフェースと実装
- 3.2.2ディスカウントカーブ、フォワード金利カーブ、ゼロ金利カーブ
- Aside: 対称性の破れ
- Aside: 双子のクラス
- 3.2.3例:InterpolationされたカーブのBootstrapping
- Aside: 必要な時の友
- 3.2.4例:イールドカーブにz-スプレッドを追加:
- 3.3その他の期間構造クラス
- 3.3.1デフォールト確率の期間構造
- Aside: シンデレラ法
- 3.3.2インフレ率の期間構造
- 3.3.3ボラティリティの期間構造
- 3.3.4株式ボラティリティの期間構造
- Aside: InterpolationとExtrapolation
- 3.3.5金利ボラティリティの期間構造
4Cash Flows and Coupons
- 4.1The
CashFlowClass - Aside: 支払い遅延の取扱い
- 4.2Interest-Rate Coupons
- 4.2.1固定金利クーポン
- 4.2.2変動金利クーポン
- Aside: 汎用性と実用性のバランス
- 4.2.3例:LIBORクーポン
- Aside: 約束違反
- 4.2.4例: Cap・Floor付きのクーポン
- 4.2.5キャッシュフロー配列の生成
- 4.2.6他の種類のCouponと今後の開発
- 4.3キャッシュフローの分析
- 4.3.1例:固定金利債券
5Parameterized Models and Calibration
- 5.1CalibrationHelper クラス
- 5.1.1例: Hestonモデル
- Aside: 前提が崩れた場合
- 5.2モデルのパラメータ
- 5.3CalibratedModel クラス
- 5.3.1例:Hestonモデル(続き)
6The Monte Carlo Framework
- 6.1Pathの生成
- 6.1.1乱数の生成
- Aside: より通行量の多い道
- 6.1.2確率過程
- 6.1.3Pathの生成装置
- Aside: アクセスパターン
- Aside: 自分のつま先を踏んでしまう
- 6.2Path上での価格計算
- 6.3すべての部品を使って組み立てる
- 6.3.1Monte Carlo traits クラス
- 6.3.2モンテカルロモデル
- 6.3.3モンテカルロシミュレーション
- Aside: シンクロナイズドウォーキング
- 6.3.4例: バスケットオプション
- Aside: “知る必要のある人にしか伝えない”の原則
7Tree を使った価格モデルのフレームワーク
- 7.1格子クラス および 離散化資産クラス
- 7.1.1例:Discretized Bond (離散モデルで表現された債券)
- 7.1.2例:DiscretizedOptionクラス(離散モデルで表現されたオプションクラス)
- 7.2Tree および Tree-Based Lattice
- 7.2.1Treeクラスのテンプレート
- Aside: Curiouser and Curiouser「ますますおかしな事になってきたわ!」不思議の国のアリス
- 7.2.22項Treeおよび3項Treeクラス
- 7.2.3TreeLatticeクラステンプレート
- 7.3Tree をベースにした価格エンジン
- 7.3.1例: コールオプション付き固定金利債
8有限差分法のフレームワーク
- 8.1古いフレームワーク
- 8.1.1微分演算子
- 8.1.2時間軸方向の差分スキーム
- 8.1.3境界条件
- 8.1.4Step Condition: 時間ステップ遷移時の条件
- Aside: お母さん見て、手を離してるよ!
- 8.1.5有限差分モデルクラス
- 8.1.6例:アメリカンオプション
- 8.1.7時間に依存する差分演算子
- 8.2新しいフレームワーク
- 8.2.1メッシャー(離散化した確率変数の格子)
- 8.2.2差分演算子
- 8.2.3例:Black-Scholesモデル用の差分演算子
- 8.2.4初期条件、境界条件 および 時間ステップ条件
- Aside: 魔法をどうやって取り除けばよいか?
- 8.2.5時間軸方向の差分スキームとソルバー
9おわりに
Appendix A: 周辺の話題
- 基本的なデータ型
- Date Calculations: 日数計算方法
- 日数と期間を扱うクラス
- カレンダークラス
- Day Count Conventions: 日数計算方法
- Schedules: クーポンスケジュール
- 金融に関連する概念を対象とするクラス
- Market Quotes: 市場データ
- 金利
- Index: インデックスクラス
- Aside: どの程度まで汎用化する必要があるのか?
- ExerciseクラスとPayoffクラス
- 数値計算関連のクラス群
- Interpolation:補間関数
- Aside: ゴルディオスの結び目(一見複雑に見える問題をいとも簡単に解く方法)
- One-dimensional Solvers: 1次元ソルバー
- Optimizers: 多次元関数の最小値問題
- Statistics: 統計値
- Aside: 極端な期待
- Linear Algebra: 線形代数(ベクトルと行列)
- Global Settings: ライブラリー全体の変数と定数の設定
- Aside: B級映画以上にmutationが登場
- Utilities: ユーティリティークラス
- Smart Pointers and Handles: スマートポ インターとハンドル
- Aside: ポインターに関するC++構文上の決まり
- Error Reporting: 例外処理
- Disposable Objects (move semantics の代用)
- Designe Patterns: デザインパターン
- The Observer Pattern: オブザーバーパターン
- The Singleton Pattern: シングルトンパターン
- The Visitor Pattern: ビジターパターン