金融計算程式運用(二)(課程大綱)
教科書:《Financial Instrument Pricing Using C++
(2nd Edition)》
補充教材:QuantLib C++ 1.39 原始碼與官方文件
課程目標
- 掌握進階 C++ 程式設計技巧(物件導向、模板、STL、資源管理)
- 掌握 現代 C++ (C++11/14/17) 程式設計技巧
- 學習數值方法(債券、選擇權、Monte Carlo)並應用於金融評價
- 理解 QuantLib 的設計模式與金融模型
- 期末透過專題完成一個小型評價或風險管理系統
課程模組
第一單元:進階物件導向程式設計
- OOP 深入:多重繼承、虛擬函數、抽象類別、介面
- Modern OOP:
override,
final, default, delete
- 設計模式:Singleton、Observer、Decorator 模式
- 案例:設計金融產品評價模型
- 對應教科書:Ch.2 Fundamentals, Ch.7 Low-Level
Classes
- 對應 QuantLib:Bond, CashFlow, Observer
Pattern
第二單元:模板與泛型程式設計
- 模板進階:模板特化、模板元程式設計
- Modern Templates:
auto,
decltype, constexpr if
- STL
深入應用:自定義容器與演算法,處理金融數據
- 案例:基於模板的金融數據分析工具
- 對應教科書:Ch.8 Numerics, Ch.13 Linear
Algebra
- 對應 QuantLib:Handle, Generic Instruments
第三單元:C++ 標準程式庫與資源管理
- Modern STL:lambda, range-based for, structured
bindings
- 資源管理:move semantics, rvalue references,
RAII
- 智慧指標:
unique_ptr,
shared_ptr, weak_ptr
- 案例:管理大型金融模型的資源
- 對應教科書:Ch.26 RNG & Distributions
- 對應 QuantLib:智能指標應用
第四單元:金融工具與數值方法(Monte Carlo 為核心)
- 固定收益:Bond, YTM, Duration, Convexity
- 選擇權評價基礎:Binomial/Trinomial Models
- 風險敏感度:Δ, Γ, Vega, DV01
- Monte Carlo 模擬:
- 隨機數生成與分布
- GBM 資產價格路徑
- Monte Carlo 選擇權評價(歐式、亞洲、Barrier Options)
- 平行運算加速(
std::thread,
std::async)
- 對應教科書:Ch.12, Ch.26, Ch.31–32
- 對應 QuantLib:
VanillaOption,
AsianOption, BarrierOption,
MCPricingEngine
第五單元:QuantLib 程式庫深入應用
- QuantLib 金融模型:風險計量模型、評價引擎
- QuantLib 設計模式:
- Factory
- Bridge
- Strategy
- Singleton
- Observer
- QuantLib 擴展:如何客製化模型
- 案例研究:修改並應用一個 QuantLib 模型
課程進度(18 週)
第一部分:基礎篇(Week 1–4)
| 1 |
課程導論 & 環境設置 |
Ch.1 |
安裝環境,Hello World |
| 2 |
Modern OOP I |
Ch.2, Ch.7 |
建立 Bond 類別(使用 override,
final) |
| 3 |
Modern OOP II + 設計模式 |
Ch.7 |
Observer Pattern 實作(CashFlow 更新) |
| 4 |
債券評價基礎 |
Ch.12 (前置) |
現金流折現,計算債券價格 |
第二部分:模板與數值方法(Week 5–9)
| 5 |
模板進階 |
Ch.8 |
建立 Instrument<T> 類別 |
| 6 |
Modern Templates |
Ch.8, Ch.13 |
使用 constexpr if, decltype
建立數值工具 |
| 7 |
STL 與收益率曲線 |
Ch.13 |
用 std::map 建立收益率曲線 |
| 8 |
RNG 入門 |
Ch.26 |
Box–Muller 常態亂數生成 |
| 9 |
Monte Carlo 基礎 |
Ch.31 |
模擬 GBM 路徑 |
第三部分:Monte Carlo 模擬進階(Week 10–14)
| 10 |
MC 選擇權評價 |
Ch.31 (延伸) |
用 MC 計算歐式選擇權 |
| 11 |
Asian Option |
Ch.32 |
用 MC 模擬 Asian Option |
| 12 |
Barrier Option |
Ch.32 |
用 MC 模擬 Barrier Option |
| 13 |
平行 MC I |
Ch.32 |
使用 std::thread 加速 MC |
| 14 |
平行 MC II |
Ch.32 |
使用 std::async / future |
第四部分:QuantLib 應用(Week 15–18)
| 15 |
固定收益風險管理 |
Ch.13 + 講義 |
計算 Duration、DV01 |
| 16 |
QuantLib 設計模式 I |
自編補充 |
分析 Factory, Observer |
| 17 |
QuantLib 設計模式 II |
自編補充 |
分析 Strategy, Singleton, Bridge |
| 18 |
QuantLib 擴展案例 |
自編補充 |
修改 QuantLib Bond/Option 模型並應用 |
課程重點
- QuantLib 相容:以 C++17 為核心標準
- Modern C++:涵蓋 C++11/14/17 語法(lambda,
constexpr, smart pointers, structured bindings 等)
- Monte Carlo 強化:隨機數 → 模擬 → 選擇權 → 路徑依賴
→ 平行運算
- 設計模式結合金融:學習軟體架構同時掌握金融模型