【问题标题】:How do I get coupon payment dates for a simple fixed bond using quantlib, quantlib-swig and python如何使用 quantlib、quantlib-swig 和 python 获取简单固定债券的息票支付日期
【发布时间】:2014-01-14 11:06:17
【问题描述】:

我正在尝试在 ubuntu 13.04 中使用 quantlib-swig (1.2) 学习 quantlib (1.3) 和 python 绑定。作为初学者,我正在尝试使用 30/360 欧洲日计数器确定下面给出的非常简单债券的付款日期

from QuantLib import *

faceValue = 100.0
doi = Date(31, August, 2000)
dom = Date(31, August, 2008)
coupons = [0.05]

dayCounter = Thirty360(Thirty360.European)

schedule = Schedule(doi, dom, Period(Semiannual),
    India(),
    Unadjusted, Unadjusted,
    DateGeneration.Backward, False)

以下是我的问题:

计划对象的哪种方法会给我付款日期?
我需要在哪里指定 dayCounter 对象以便正确计算日期?

使用 Dimitri Reiswich 的演示文稿,我尝试模仿 C++ 代码,但 schedule.dates() 由于没有这种方法而返回错误。

此固定利率债券的付款日期为(通过使用 oocalc 获得)

2001 年 2 月 28 日; 2001 年 8 月 31 日
2002 年 2 月 28 日; 2002 年 8 月 31 日
2003 年 2 月 28 日; 2003 年 8 月 31 日
2004 年 2 月 29 日; 2004 年 8 月 31 日
2005 年 2 月 28 日; 2005 年 8 月 31 日
2006 年 2 月 28 日; 2006 年 8 月 31 日
2007 年 2 月 28 日; 2007 年 8 月 31 日
2008 年 2 月 29 日; 2008 年 8 月 31 日

如何使用 python 和 quantlib 获取这个简单债券的付款日期?有人可以帮忙吗?

问候

K

【问题讨论】:

    标签: quantlib quantlib-swig


    【解决方案1】:

    如果要查看刚刚生成的时间表,可以对其进行迭代:

    >>> for d in schedule: print d
    ... 
    August 31st, 2000
    February 28th, 2001
    August 31st, 2001
    February 28th, 2002
    August 31st, 2002
    February 28th, 2003
    August 31st, 2003
    February 29th, 2004
    August 31st, 2004
    February 28th, 2005
    August 31st, 2005
    February 28th, 2006
    August 31st, 2006
    February 28th, 2007
    August 31st, 2007
    February 29th, 2008
    August 31st, 2008
    

    如果您想存储它们,请致电list(schedule)。但是,您确定这些是付款日期吗?它们是应计计算的开始和结束日期;但其中一些是在周六或周日,债券将在下一个工作日支付。如果实例化债券并检索优惠券,您可以看到效果:

    >>> settlement_days = 3
    >>> bond = FixedRateBond(settlement_days, faceValue, schedule, coupons, dayCounter)
    >>> for c in bond.cashflows():
    ...     print c.date()
    ...
    February 28th, 2001
    August 31st, 2001
    February 28th, 2002
    September 2nd, 2002
    February 28th, 2003
    September 1st, 2003
    March 1st, 2004
    August 31st, 2004
    February 28th, 2005
    August 31st, 2005
    February 28th, 2006
    August 31st, 2006
    February 28th, 2007
    August 31st, 2007
    February 29th, 2008
    September 1st, 2008
    September 1st, 2008
    

    (也就是说,除非星期六和星期日不应该是印度日历的假期。如果您认为不应该,请向 QuantLib 提交错误报告)。

    【讨论】:

    • 非常感谢您的回答。我今天从 QuantLib 的角度学到了一些新东西。 dayCounter 用于优惠券支付时间表,它是现金流的一部分,而不是时间表!!!精彩
    • 实际上,日期计数器是在您构建时间表之后使用的。获得优惠券的开始和结束日期后,日计数器会告诉您相应的累积时间(以年为单位)(在您的情况下约为 0.5)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多