quantlib
How do I get coupon payment dates for a simple fixed bond using quantlib, quantlib-swig and python
I am trying yo learn quantlib (1.3) & python bindings using quantlib-swig (1.2) in ubuntu 13.04. As a starter I am trying to determine the payment dates for a very simple bond as given below using 30/360 European day counter 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) Following are my questions: Which method of schedule object will give me the payment dates? Where do I need to specify the dayCounter object so that the dates are appropriately calculated? Using Dimitri Reiswich' Presentation, I tried mimicking C++ code, but schedule.dates() returns an error as no such method. The payment dates for this Fixed Rate bond are, (obtained by using oocalc) Feb 28, 2001; Aug 31, 2001 Feb 28, 2002; Aug 31, 2002 Feb 28, 2003; Aug 31, 2003 Feb 29, 2004; Aug 31, 2004 Feb 28, 2005; Aug 31, 2005 Feb 28, 2006; Aug 31, 2006 Feb 28, 2007; Aug 31, 2007 Feb 29, 2008; Aug 31, 2008 How do I get the payment dates for this simple bond using python & quantlib? Can someone please help? regards K
If you want to look at the schedule you just generated, you can iterate over it: >>> 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 or call list(schedule) if you want to store them. However, are you sure that those are the payment dates? They are the start and end date for accrual calculation; but some of these fall on a Saturday or a Sunday, and the bond will be paying on the next business day. You can see the effect if you instantiate the bond and retrieve the coupons: >>> 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 (that is, unless Saturdays and Sundays shouldn't be holidays for the Indian calendar. If you think they shouldn't, file a bug report with QuantLib).
Related Links
Unhandled exception in Yield Curve Quantlib .exe
How to obtain the “time” values of a schedule
Why did QuantLib introduce the Handle class?
Can't expose monotone convex interpolation in python quantlib
unable to start program QuantLib-vc120-mt-gd.lib
C++: Derive a class template from QuantLib::PiecewiseYieldCurve
clean or dirty price for FixedRateBondHelper
Which version of QuantLib is the basis for QLNet ?
xlquantlib bootstrapping Offshore KRW Curve
“end must be large than start” in Uniform1dMesher
How do I get coupon payment dates for a simple fixed bond using quantlib, quantlib-swig and python
How to calculate the local volatilty surface using QuantLib?