3

我正在尝试在 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 获取这个简单债券的付款日期?有人可以帮忙吗?

问候

ķ

4

1 回答 1

3

如果要查看刚刚生成的计划,可以对其进行迭代:

>>> 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 提交错误报告)。

于 2014-01-15T13:37:50.603 回答