|
From: Chris H. <chr...@ya...> - 2013-11-01 07:55:57
|
ate =EffDate = 20090827 MatDate = 20220829 Frequency = Semi-Annual Payment day of month = 29 Payment Date rule = Modified Following Payment Holiday Calendar = EUR Resulting payment dates (according to Summit): 20100226 20100830 20110228 20110829 20120229 20120829 20130228 20130829 20140228 20140829 20150227 20150831 20160229 20160829 20170228 20170829 20180228 20180829 20190228 20190829 20200228 20200831 20210226 20210830 20220228 20220829 I am guessing in this particular case that just setting the Schedule to generate backwards from 20220829 and not setting firstDateor nextToLastDatemight produce the correct result? However I could produce other test cases where it would not work, for example EffDate = 20090228 MatDate = 20220228 Payment Frequency = Annual Payment day of month = 29 I believe that adding an extra optional parameter to the Schedule constructor would allow this case to be internally handled but not break any existing code: Schedule(Date effectiveDate, const Date& terminationDate, const Period& tenor, const Calendar& calendar, BusinessDayConvention convention, BusinessDayConvention terminationDateConvention, DateGeneration::Rule rule, bool endOfMonth, const Date& firstDate = Date(), constDate& nextToLastDate = Date() int annDayOfMonth = 0); Setting annDayOfMonth=31 is then the same as setting endOfMonth=true. Setting annDayOfMonth=29 or 30 will then trigger new functionality to generate schedules as above. Chris On Thursday, 31 October 2013, 22:12, Ferdinando M. Ametrano <fer...@am...> wrote: may you please post target vector of dates to be reproduced? On Thu, Oct 31, 2013 at 6:19 PM, Chris Higgs <chr...@ya...> wrote: I am building a bridge between Summit and QuantLib and have come across a payment schedule which I believe cannot currently be generated in QuantLib. Basically it has payments to be made on the 29th of each month, but with a settlement/start date not on the 29th. Normally I am passing the firstDate parameter to the Schedule class as the 29th of the relevant month of the first payment. However in my case the first date is in February 2009, so I cannot do this as 29th Feb 2009 is an invalid date. If I pass the 28th Feb, then most of my payments come out on the 28th, and if I set the end of month flag I get typically the 30th/31st, neither of which is correct I believe the same issue arise if payments are supposed to happen on the 30th of the month. > >If someone can confirm this is indeed a case not currently handled, then I happy to take a look at the code to see if I can work out a solution which caters for this case, and which would be backwards compatible. > >Chris Higgs > > > >------------------------------------------------------------------------------ >Android is increasing in popularity, but the open development platform that >developers love is also attractive to malware creators. Download this white >paper to learn more about secure code signing practices that can help keep >Android apps secure. >http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk >_______________________________________________ >QuantLib-dev mailing list >Qua...@li... >https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > |