swap-rate helper

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

swap-rate helper

marco.tarenghi@libero.it
Hi,
    I have a question about the SwapRateHelper and the way it computes the final maturity date for a swap.
In the function

   void SwapRateHelper::setTermStructure(YieldTermStructure* t)

initially the maturity date of the swap (stored in the private variable latestDate_) is computed as

   latestDate_ = swap_->maturity();

where the maturity of the swap is found in the usual way, i.e. by shifting the first fixing date by 2 working days and then shifting it again using the swap tenor. For me this is the correct way.
But then, if QL_USE_INDEXED_COUPON is defined, the maturity date is found using the indexed coupon framework.

Practical example: a 5y-swap with respect to the 20 Feb 2006 as fixing date. The start date is 22 Feb 06 which should lead to 22 Feb 11. If QL_USE_INDEXED_COUPON is defined, the swap maturity returned is 23 Feb 11.

What do you think about it?
Thanks,
Marco



Reply | Threaded
Open this post in threaded view
|

Re: swap-rate helper

Luigi Ballabio
On 02/20/2006 04:38:06 PM, [hidden email] wrote:

>     I have a question about the SwapRateHelper and the way it  
> computes the final maturity date for a swap.
> In the function
>
>    void SwapRateHelper::setTermStructure(YieldTermStructure* t)
>
> initially the maturity date of the swap (stored in the private
> variable latestDate_) is computed as
>
>    latestDate_ = swap_->maturity();
>
> where the maturity of the swap is found in the usual way, i.e. by
> shifting the first fixing date by 2 working days and then shifting it
> again using the swap tenor. For me this is the correct way.
> But then, if QL_USE_INDEXED_COUPON is defined, the maturity date is
> found using the indexed coupon framework.

Marco,
        it might be a semantic problem :)
What is (re)computed is not the maturity of the swap---that is always  
swap_->maturity() and is computed as you describe. What the code tries  
to find out is rather the latest date up to which the term structure  
needs to be extended in order to price the swap.

The two things are not the same. Take the example (not implemented, but  
it gives the picture in an extreme case) of a 5-years CMS swap paying  
the 10-years swap rate: the maturity of the swap is at 5 years, but the  
latest date you would need on the curve is at about 15 years.

The same can happen with a swap paying Libor. In your example, the  
maturity of the swap is indeed 22 Feb 11. But due to date adjustments,  
the last coupon is a bit shorter than six months from its beginning; it  
goes from 23 Aug 10 to 22 Feb 11.  On the other hand, the fixing of the  
Libor rate for that coupon is performed over a period of six months  
from 23 Aug 10; therefore, the term structure needs to be extended up  
to 23 Feb 11.

Later,
        Luigi


----------------------------------------

I'd never join any club that would have the likes of me as a member.
-- Groucho Marx