Re: Coupons and Fixed Rate Legs

Posted by FORNAROLA CHIARA on
URL: http://quantlib.414.s1.nabble.com/Coupons-and-Fixed-Rate-Legs-tp1151p1164.html

Hi Toyin

I was answering to John's question....I didn't meant to say anything
about your email..
Anyway John in his email mentioned:
" a 4.75 fixed rate bond that goes from
>>today
>> >(July 19, 2007) to February 1, 2008."
(I'm just quoting his email)
The schedule behaves as I described replying to John's email also for
fixed rate, floating rate, cms rate leg not just for bonds.
FirstDate and Next to last date are optional parameters, you need them
only if the deal you have as an odd coupon.
Now I'm sorry I can't think of a deal which has daily payments (I will
appreciate an input from you since I believe you see different markets).
I always dealt with Euro denominated bonds and Swaps so usually the
period is 3m, 6m and 1y.

Chiara


>-----Original Message-----
>From: Toyin Akin [mailto:[hidden email]]
>Sent: Friday, July 20, 2007 10:52 AM
>To: FORNAROLA CHIARA; [hidden email]; quantlib-
>[hidden email]
>Subject: Re: [Quantlib-users] Coupons and Fixed Rate Legs
>
>
>Hi,
>
>I'm a bit confused.
>
>This does not answer the question of why a daily frequency builds an
output
>of non-daily periods.
>
>Are you saying the schedule constructor used before is incorrect for
daily

>frequencies and that the one you propose with the additional parameters
>does?
>
>Also, John is construting a fixed leg leg object and not a Bond object.
>With
>fixed leg objects, you should be able to construct legs without the
>additional stub dates. These should be considered optional.
>
>Best Regards,
>Toyin Akin.
>
>>From: "FORNAROLA CHIARA" <[hidden email]>
>>To: "John Maiden"
>><[hidden email]>,<[hidden email]>
>>Subject: Re: [Quantlib-users] Coupons and Fixed Rate Legs
>>Date: Fri, 20 Jul 2007 10:06:13 +0200
>>
>>Hi John,
>>
>>In order to correctly reproduce the schedule of: fixed rate bond,
>>floating rate bond, and cms rate bond, you have pass the following
>>parameters to the schedule:
>>
>>datedDate_ i.e. the first interest accrual date of the bond;
>>
>>maturityDate_, i.e. the maturity date of the bond;
>>
>>Period(frequency_), i.e. 3m, 6m, 1y depending on the payment frequency
>>of the bonds (quarterly, semiannual, annual);
>>
>>calendar_, i.e. the calendar quoted in the prospectus of the bond;
>>
>>accrualConvention, i.e. the adjustment applied to accrual start and
end
>>dates of the bond (usually for Euro denominated bonds is
"unadjusted");
>>
>>accrualConventionTermination, i.e. the adjustment applied to the
>>maturity date (usually "unadjusted" if not differently specified in
the
>>prospectus);
>>
>>fromEnd, i.e. TRUE if you want to build the schedule backward, FALSE
if
>>you want to start building the schedule rolling from the first payment
>>date (uasually the schedule is generated BACKWARD unless you have odd
>>last or first coupon).
>>EOM, i.e. TRUE if you have a payment date which falls for example on
the
>>28th of February and, lets say pays semiannually, you want that the
next
>>nominal date is 31st August (i.e. the last day of the month) rather
than

>>the 28th of August. Usually this parameter is equal to FALSE unless
>>differently specified in the bond's prospectus;
>>
>>firstDate, i.e. the nominal date in which the first coupon date is
>>scheduled (unless you have odd cpn you don't need to pass this
>>parameter, but if you input this information you have to input a date
>>without business adjustment);
>>
>>nextToLastDate, i.e. the nominal date in which the next to last coupon
>>date is schedule (unless you have odd cpn you don't need to pass this
>>parameter but if you input this information you have to input a date
>>without business adjustment).
>>
>>So your correct schedule will be:
>>
>>   Schedule schedule(datedDate_, maturityDate_, Period(frequency_),
>>                           calendar_, accrualConvention,
>>accrualConvention,
>>                           fromEnd, EOM, firstDate, nextToLastDate);
>>
>>In the example you mentioned, since the first accrual date of your
bond
>>is 19 july 2007 and the maturity date is February 1, 2008 or February
1,
>>2009 (I don't know which is the actual date), there should be an odd
>>coupon (you should read all the prospectus to see if it occurs at the
>>beginning or at the end), so you have to use the proper schedule
>>generation (backward or forward) and input the correct next to last
date
>>and/or first date.
>>Regarding zero coupon bond, you don't need to generate the schedule,
you

>>can just use zerocouponbond class.
>>
>>Hope this will help.
>>
>>Chiara
>>
>>
>>
>> >-----Original Message-----
>> >From: [hidden email]
>>[mailto:quantlib-users-
>> >[hidden email]] On Behalf Of John Maiden
>> >Sent: Thursday, July 19, 2007 9:37 PM
>> >To: [hidden email]
>> >Subject: [Quantlib-users] Coupons and Fixed Rate Legs
>> >
>> >How exactly does the fixed rate leg work? I'm asking because I'd
like
>>to
>> >know
>> >how it determines a coupon date (and set up my own coupon dates).
For
>> >example, I
>> >get a weird coupon schedule for a 4.75 fixed rate bond that goes
from
>>today
>> >(July 19, 2007) to February 1, 2008. Weird as in I don't understand
the

>> >logic of
>> >how it was set up. Assuming that a zero coupon amount means a coupon
>> >payment,
>> >the code below gives me the following coupon dates:
>> >
>> >Aug 1, 2007
>> >Sept 1, 2007
>> >Nov 1, 2007
>> >Jan 1, 2008
>> >Feb 1, 2008
>> >Apr 1, 2008
>> >Jun 1, 2008
>> >Aug 1, 2008
>> >Sept 1, 2008
>> >Nov 1, 2008
>> >Jan 1, 2009
>> >Feb 1, 2009
>> >
>> >Here's the code:
>> >
>> >// TestQuantLib.cpp : Defines the entry point for the console
>>application.
>> >//
>> >#include "stdafx.h"
>> >#include <ql/quantlib.hpp>
>> >#include <boost/timer.hpp>
>> >
>> >using namespace std;
>> >using namespace QuantLib;
>> >
>> >int _tmain(int argc, _TCHAR* argv[])
>> >{
>> > try{
>> >
>> > std::vector<Real> coupons(1, 0.0475);
>> > std::vector<Real> faceAmount_(1, 100);
>> >
>> > Calendar calendar =
>>UnitedStates(UnitedStates::Market::NYSE);
>> > Date today = calendar.adjust(Date::todaysDate());
>> >
>> > BusinessDayConvention convention = Unadjusted;
>> >
>> > Frequency frequency = Daily;
>> >
>> > Date exerciseDate = Date(2, February, 2009);
>> >
>> > Schedule schedule_(today, exerciseDate,
>>Period(frequency),
>> >calendar,
>> >convention, convention,
>> > true, false);
>> >
>> > DayCounter dayCount = Thirty360();
>> >
>> > Leg cashFlows_ = FixedRateLeg(faceAmount_, schedule_,
>>coupons,
>> >dayCount,
>> > schedule_.businessDayConvention());
>> >
>> > for(int i = 0; i < cashFlows_.size(); i++){
>> > cout << cashFlows_[i]->amount() << endl;
>> > if(i % 10 == 0)
>> > system("PAUSE");
>> > }
>> >
>> > } catch (std::exception& e) {
>> > cout << e.what() << endl;
>> > }
>> >
>> > system("PAUSE");
>> > return 0;
>> >}
>> >
>> >Thanks in advance for any help.
>> >
>> >
>> >
>>
>-----------------------------------------------------------------------
>>--
>> >This SF.net email is sponsored by: Microsoft
>> >Defy all challenges. Microsoft(R) Visual Studio 2005.
>> >http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> >_______________________________________________
>> >QuantLib-users mailing list
>> >[hidden email]
>> >https://lists.sourceforge.net/lists/listinfo/quantlib-users
>>
>>----------------------------------------------------------------------
---

>>This SF.net email is sponsored by: Microsoft
>>Defy all challenges. Microsoft(R) Visual Studio 2005.
>>http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>_______________________________________________
>>QuantLib-users mailing list
>>[hidden email]
>>https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
>_________________________________________________________________
>Tell MSN about your most memorable emails!
http://www.emailbritain.co.uk/


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users