Bond

為什麼不能使用 Quantlib 計算短期債券的收益率

  • October 7, 2020

我正在嘗試使用 Quantlib for Bond 從乾淨的價格計算收益率。我經常使用 Quantlib 範例(Bonds.java)並成功,但是當我更改為今天接近成熟時,Quantlib 拋出一個異常告訴:

無法在 100 次函式評估中括號根(最後一次括號嘗試:f

$$ -2.2124e+274,5.75224e+274 $$->$$ -nan(ind),105.58 $$)

它似乎恰好發生在今天正好是一個月減去一天的時候。我不知道為什麼,也找不到一個乾淨的解釋。有人可以幫助我或指出我正確的解釋嗎?

聽起來您正在通過 105.58 的(乾淨)價格購買在一個月內支付 100(+ 一些應計利息)的債券。簡單的收益率將在 -50 到 -100 左右,非常荒謬。

我在圖書館看到了兩種解決這種情況的哲學方法。如果程序返回一個沒有經濟意義的大數字,那麼它將主要是數字雜訊。(這是 Bloomberg 主要採用的方法。)然後圖書館的一些使用者會質疑為什麼一個圖書館計算 -100 而其他一些圖書館計算 -110。相反,如果程序拋出,那麼(相同的)使用者會問為什麼這個庫拋出,而例如彭博終端顯示一些沒有經濟意義的巨大數字。庫開發人員是否應該嘗試以與 Bloomberg 完全相同(未記錄)的順序執行所有算術,以匹配一些無意義的數字雜訊?

已編輯:如果我正在編寫另一個庫,我會嘗試的方法可能是這樣的:

  • 模型驗證設置最小產量(以及其他此類事物的最大和有效範圍)
  • 庫計算產量,可能低至-inf.
  • 圖書館查看經過驗證的範圍(理想情況下 - 在執行時間動態)
  • 根據使用者指定的設置,庫要麼拋出,要麼返回“標記”的最佳估計值,並警告該數字超出了已驗證的範圍。
  • 如果下游/呼叫者遇到被此類標籤污染的號碼,則根據使用者指定的設置,呼叫者要麼拋出,要麼標記其他受污染的號碼,或腳註報告等。

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