金融計算程式運用(二)(課程大綱)

教科書:《Financial Instrument Pricing Using C++ (2nd Edition)》
補充教材:QuantLib C++ 1.39 原始碼與官方文件


課程目標

  1. 掌握進階 C++ 程式設計技巧(物件導向、模板、STL、資源管理)
  2. 掌握 現代 C++ (C++11/14/17) 程式設計技巧
  3. 學習數值方法(債券、選擇權、Monte Carlo)並應用於金融評價
  4. 理解 QuantLib 的設計模式與金融模型
  5. 期末透過專題完成一個小型評價或風險管理系統

課程模組

第一單元:進階物件導向程式設計

  • OOP 深入:多重繼承、虛擬函數、抽象類別、介面
  • Modern OOPoverride, final, default, delete
  • 設計模式:Singleton、Observer、Decorator 模式
  • 案例:設計金融產品評價模型
  • 對應教科書:Ch.2 Fundamentals, Ch.7 Low-Level Classes
  • 對應 QuantLib:Bond, CashFlow, Observer Pattern

第二單元:模板與泛型程式設計

  • 模板進階:模板特化、模板元程式設計
  • Modern Templatesauto, 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
  • 對應 QuantLibVanillaOption, 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 強化:隨機數 → 模擬 → 選擇權 → 路徑依賴 → 平行運算
  • 設計模式結合金融:學習軟體架構同時掌握金融模型