金融

天數慣例 實際/實際 AFB;Date1 = 2004-02-28 和 Date2 = 2008-02-28 的因子

  • October 16, 2017

實際/實際 AFB 天數約定在此處的 Wikipedia 上進行了解釋。我會按照我理解的方式來濃縮這裡的規則。

  • 因子 = 天數(日期 1,日期 2)/DiY
  • 如果 2 月 29 日在 Date1(含)到 Date2(不含)的日期範圍內,則 DiY=366 否則 DiY=365
  • 如果從 Date1 到 Date2 的日期範圍跨越多年,則計算分為兩部分:

+ 從該期間的最後一天算起的完整年數 + 剩餘的初始存根,使用基本規則計算 + ISDA 附加規則:如果倒數多年,如果相關期間的最後一天是 2 月 28 日,則全年應倒數至 2 月 28 日,除非存在 2 月 29 日,在這種情況下應使用 2 月 29 日。

現在考慮情況Date1 = 2004-02-28Date2 = 2008-02-28。應用規則給出:

  • 整整4年
  • 日期 2’ = 2004-02-29$$ rebased Date2 by counting back + ISDA additional rule $$
  • DiY = 365,因為:Date1 = 2004-02-28,Date2’ = 2004-02-29;2 月 29 日不在 Date1(含)和 Date2’(不含)的日期範圍內,即剩餘的初始存根
  • 係數 = 4 + 1/365

但是,在我連結到頂部的 Wikipedia 頁面上的範例中,它顯示了相同的兩個日期Factor = 4 + 1/366。哪個因素是正確的?如果維基百科頁面的結果是正確的,我的推理哪裡出錯了?

查看Helin Gai在評論中發布的QuantLib 執行 Act/Act AFB的連結,這將是確定 DiY(變數)的部分:den

Real den = 365.0; // the DiY

if (Date::isLeap(newD2.year())) {
   temp = Date(29, February, newD2.year());
   if (newD2>temp && d1<=temp)
       den += 1.0;
} else if (Date::isLeap(d1.year())) {
   temp = Date(29, February, d1.year());
   if (newD2>temp && d1<=temp)
       den += 1.0;
}

d1將在 2004-02-28 和newD22004-02-29 倒數完整年份並應用 ISDA 附加規則後。應用這段程式碼:

  • if (Date::isLeap(newD2.year()))> 真
  • temp = Date(29, February, newD2.year());> 溫度 = ‘2004-02-29’
  • if (newD2>temp && d1<=temp)> 錯誤,因為newD2>temp不成立
  • den不增加,保持 365;

所以根據 QuantLib 的實現,Factor 將是 4 + 1/365。看來我的懷疑是正確的,維基百科上的例子是不正確的。

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