債券

彭博債券淨價和應計金額與 Quantlib 不同

  • December 30, 2020

我從 Bloomberg 和 QL 獲得了不同的債券清潔價格,但令人驚訝的是 Bloomberg 價格與 excel price() 函式匹配

我有以下債券:GETC21117030。參數如下:

如果您查看參數,您會注意到到期日只剩下一筆付款。如果我計算 QLXL 的價格和應計利息,我會從彭博得到不同的結果。但令人驚訝的是,如果我使用 excel 原生價格計算功能,彭博數字會匹配。

我查看了 excel 公式,當只剩下一筆付款時,價格計算公式看起來是不同的(見下文)

當 N > 1 時(N 為結算日與贖回日之間的應付票面數),PRICE 計算如下:

在此處輸入圖像描述

當 N = 1 時(N 為結算日和贖回日之間應付的票面數量),PRICE 計算如下:

在此處輸入圖像描述

DSR = 從結算到下一個付息日的天數。

E = 結算日所在的票息期天數。

A = 從息票期開始到結算日的天數。

似乎對於最後一次付款計算,excel 正在從復合收益率轉向簡單收益率。

我用複合收益率和簡單收益率計算了淨價格。雖然簡單收益率的淨價接近彭博/Excel 價格,但仍不匹配。

收益率為 7.95%,結算日期為 2020 年 12 月 30 日:

Bloomberg/Excel 淨價為 99.953226,應計金額 3.270380

QLXL(半年復利)淨價為99.95983172,應計金額3.288251366

QLXL(simple yield)淨價99.95278714,應計金額3.288251366

我不是 C++ 專家,但是當只剩下一筆付款時,我檢查的 QL 程式碼不會改變價格計算算法。

問題是:目前 QuantLib 的實施是否有可能匹配上述債券的價格和應計金額(一般來說,當只剩下一個現金流時,所有息票債券)?

有幾件事可能會影響您的結果。檢查所有約定是否正確,即daycount。

關於上一期的複利,我可以使用SimpleThenCompounded參數在 QuantLib 中複製彭博社對該債券的價格。

import QuantLib as ql

settlementDate = ql.Date(30,12,2020)
issueDate = ql.Date(17,1,2019)
maturityDate = ql.Date(17,1,2021)
coupon = 0.0725
freq = ql.Period('6M')
dayCount = ql.ActualActual(ql.ActualActual.ISMA)
yld = 0.0795

bbgPrice = 99.953226
bond = ql.FixedRateBond(0, ql.TARGET(), 100.0, issueDate, maturityDate, freq, [coupon], dayCount, ql.Unadjusted, ql.Unadjusted)
print(f"BBG Price: {bbgPrice}")

px = bond.cleanPrice(yld, dayCount, ql.SimpleThenCompounded, ql.Annual, settlementDate)
print(f"QuantLib  Price: {px:.6f}\n")

BBG 價格:99.953226

QuantLib 價格:99.953226

引用自:https://quant.stackexchange.com/questions/60241