QuantLib 金融計算——原理之利率互換的分析


以下文字源自我對源代碼的理解,如有不同意見,歡迎留言討論或發郵件(xuruilong100@163.com

QuantLib 金融計算——原理之利率互換的分析

兩類分析

利率互換的分析分為兩大類:

  • 正向分析:對存續合約估值、計算敏感性等;
  • 逆向分析:根據最新合約的報價推算利率期限結構。

在 QuantLib 中,正向分析的功能由若干具體的利率互換類提供,例如 VanillaSwapOvernightIndexedSwap,他們都是 Swap 的派生類。通常來說,根據某個期限結構構造一個定價引擎,再將引擎配置到互換對象上就可以進行正向分析了。

逆向分析的本質其實是 Bootstrap,這部分功能則需要借助由特定的“輔助類”實現,這些輔助類通常以 XXXRateHelper 的形式命名,例如 SwapRateHelper(對應 VanillaSwap)和 OISRateHelper(對應 OvernightIndexedSwap)。互換的輔助類通常會持有一個對應類型的互換對象,以此來擁有定價的功能,進而測算出理論報價與市場報價的差距。

互換分析的計算任務

從業務的角度看,利率互換的分析可以被分解為若干計算任務(特別是在正向分析中),而從程序涉及的角度看,這些計算任務可以抽象成為特定的類,這些類以組件的形式相互協作,共同完成分析計算。

逆向分析所涉及的計算任務較少,因為關鍵計算可以委派給所持有的互換對象。

正向分析所設涉及的計算任務主要有如下兩個:

  • 推算出固定端的現金流,通常也是最簡單的任務,僅需要一個日期列表和一個期限結構(貼現用)即可。
  • 推算出浮動端的現金流,這項任務稍微復雜一些,需要一個日期列表和一或兩個期限結構(用於推算浮動端利率和貼現因子),而確定浮動端利率的過程本身可能較復雜(例如在 OIS 或 FR007 互換中),可以視為一個子任務。

在 QuantLib 中,推算固定端現金流的功能由 FixedRateLeg 類提供。

推算浮動端現金流的功能則因具體的利率互換而不同,例如,對 VanillaSwap 來說要用 IborLeg,對 OvernightIndexedSwap 來說要用 OvernightLeg。這些 XXXLeg 的內部結構大同小異,他們通常會先根據日期列表生成出現金流列表,每一期的現金流由一個 XXXCoupon 對象表示,XXXCoupon 對象會配置一個 XXXCouponPricer 對象,用來最終確定浮動端的利率。

OvernightIndexedSwap 為例,OvernightLeg 會根據日期列表生成一個向量表示浮動端現金流,向量中的每個元素都是一個 OvernightIndexedCoupon 對象,OvernightIndexedCoupon 對象會自動為自己配置一個 OvernightIndexedCouponPricer 對象。OvernightIndexedCouponPricerswapLetRate 方法最終確定浮動端的利率。

不同 XXXCouponPricerswapLetRate 方法略有不同,OvernightIndexedCouponPricer 會計算計息區間內所有隔夜利率的復利利率,而 ArithmeticAveragedOvernightIndexedCouponPricer 則會計算隔夜利率的算數平均。

開放問題:如何實現 FR007 互換的相關分析?

搞懂了 QuantLib 如何處理利率互換之后,實現 FR007 互換的思路也就清晰了,就是要實現若干基本組件,例如 ChinaFixingRepoCouponChinaFixingRepoCouponPricer 等等,具體的代碼編寫可以參考 OvernightIndexedSwap 相關組件的實現。

擴展閱讀

《QuantLib 金融計算》系列合集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM