如何使用quantlib,quantlib-swig和python获得简单固定债券的优惠券支付日期

时间:2014-01-14 11:06:17

标签: quantlib quantlib-swig

我正在尝试你学习quantlib(1.3)&在ubuntu 13.04中使用quantlib-swig(1.2)的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& amp;获取此简单债券的付款日期? quantlib?有人可以帮忙吗?

问候

ķ

1 个答案:

答案 0 :(得分: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提交错误报告)。