[ quantlib-Feature Requests-804600 ] Getting maturity date for a swap

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ quantlib-Feature Requests-804600 ] Getting maturity date for a swap

SourceForge.net
Feature Requests item #804600, was opened at 2003-09-11 17:49
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=362740&aid=804600&group_id=12740

Category: None
Group: None
Status: Open
Priority: 5
Submitted By: navin mehta (navin_mehta)
Assigned to: Nobody/Anonymous (nobody)
Summary: Getting maturity date for a swap

Initial Comment:
There is not an easy way to get the start date of a

swap,given a swap object.



It will be highly appreciated if you can please provide a

public method for the same in the Swap/Simpleswap

object.



Thanks!



BTW, I use a temporary workaround macro for this:

#define SWAPSTARTDATE(swap) ((const

CashFlows::Coupon*)&(*(swap->fixedLeg())[0]))-

>accrualStartDate()



where swap is a Swap object.





Other method as suggested by Luigi:

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



#include <ql/Instruments/swap.hpp>

#include <ql/CashFlows/coupon.hpp>



namespace QuantLib {



     namespace Instruments {



         /* This class below inherits from Swap in order to

gain access

            to its protected members.

            Don't try this kind of hacks at home.



            Oh, and did I mention this isn't tested?

         */

         class SwapInspector : public Swap {

           private:

             // we don't really want to instantiate this

             SwapInspector()

             : Swap(std::vector<Handle<CashFlow> >(),

                    std::vector<Handle<CashFlow> >(),

                    RelinkableHandle<TermStructure>()) {}

           public:

             // return the start date of the first coupon

             static Date startDate(const Swap& swap) {

                 // get the first cash flow

                 Handle<CashFlow> firstCF =

swap.firstLeg_.front();

                 try {

                     // is this a coupon?

                     Handle<CashFlows::Coupon> coupon =

firstCF;

                     // ok, return its start date

                     return coupon.accrualStartDate();

                 } catch (Error&) {

                     // it was not a coupon. We'll doctor the

                     // error message to make it more

readable.

                     throw Error("The swap coupons did not

provide "

                                 "enough information");

                 }

             }

             // return the end date of the last coupon

             static Date endDate(const Swap& swap) {

                 Handle<CashFlow> lastCF =

swap.firstLeg_.back();

                 try {

                     Handle<CashFlows::Coupon> coupon =

lastCF;

                     return coupon.accrualEndDate();

                 } catch (Error&) {

                     throw Error("The swap coupons did not

provide "

                                 "enough information");

                 }

             }

         };



     }



}











Given a swap object, how can I get the start date and

length

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

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=362740&aid=804600&group_id=12740