bonds.hpp
Go to the documentation of this file.
1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 
3 /*
4  Copyright (C) 2006, 2007 Chiara Fornarola
5  Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Ferdinando Ametrano
6  Copyright (C) 2005, 2006 Eric Ehlers
7  Copyright (C) 2005 Plamen Neykov
8  Copyright (C) 2005 Walter Penschke
9  Copyright (C) 2009 Piter Dias
10 
11  This file is part of QuantLib, a free-software/open-source library
12  for financial quantitative analysts and developers - http://quantlib.org/
13 
14  QuantLib is free software: you can redistribute it and/or modify it
15  under the terms of the QuantLib license. You should have received a
16  copy of the license along with this program; if not, please email
17  <quantlib-dev@lists.sf.net>. The license is also available online at
18  <http://quantlib.org/license.shtml>.
19 
20  This program is distributed in the hope that it will be useful, but WITHOUT
21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22  FOR A PARTICULAR PURPOSE. See the license for more details.
23 */
24 
25 #ifndef qla_bonds_hpp
26 #define qla_bonds_hpp
27 
28 #include <qlo/baseinstruments.hpp>
29 #include <qlo/leg.hpp>
30 
31 #include <ql/currency.hpp>
32 #include <ql/instruments/bond.hpp>
33 
34 #include <string>
35 
36 namespace QuantLib {
37  class FloatingRateCouponPricer;
38  class SwapIndex;
39  class IborIndex;
40  class Schedule;
41  class Calendar;
42  class Date;
43  class DayCounter;
44  class YieldTermStructure;
45 }
46 
47 namespace QuantLibAddin {
48 
49  class Bond : public Instrument {
50  public:
51  const std::string& description();
52  std::string currency() { return currency_.code(); }
53  //QuantLib::Currency currency();
54  QuantLib::Real redemptionAmount();
55  QuantLib::Date redemptionDate();
56  void setCouponPricer(
57  const boost::shared_ptr<QuantLib::FloatingRateCouponPricer>&);
58  void setCouponPricers(
59  const std::vector<boost::shared_ptr<QuantLib::FloatingRateCouponPricer> >&);
60  std::vector<std::vector<ObjectHandler::property_t> > flowAnalysis(
61  const QuantLib::Date& d);
62  Bond(const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
63  const std::string& description,
64  const QuantLib::Currency& currency,
65  QuantLib::Natural settlementDays,
66  const QuantLib::Calendar& calendar,
67  QuantLib::Real faceAmount,
68  const QuantLib::Date& maturityDate,
69  const QuantLib::Date& issueDate,
70  const QuantLib::Leg& leg,
71  bool permanent);
72  protected:
73  Bond(const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
74  const std::string& description,
75  const QuantLib::Currency& currency,
76  bool permanent);
77  std::string description_;
78  QuantLib::Currency currency_;
79  boost::shared_ptr<QuantLib::Bond> qlBondObject_;
80  };
81 
82  class ZeroCouponBond : public Bond {
83  public:
85  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
86  const std::string& des,
87  const QuantLib::Currency& cur,
88  QuantLib::Natural settlementDays,
89  const QuantLib::Calendar& calendar,
90  QuantLib::Real faceAmount,
91  const QuantLib::Date& maturityDate,
92  QuantLib::BusinessDayConvention paymentConvention,
93  QuantLib::Real redemption,
94  const QuantLib::Date& issueDate,
95  bool permanent);
96  };
97 
98  class FixedRateBond : public Bond {
99  public:
101  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
102  const std::string& des,
103  const QuantLib::Currency& cur,
104  QuantLib::Natural settlementDays,
105  QuantLib::Real faceAmount,
106  const boost::shared_ptr<QuantLib::Schedule>& schedule,
107  const std::vector<QuantLib::Rate>& coupons,
108  const QuantLib::DayCounter& accrualDayCounter,
109  QuantLib::BusinessDayConvention paymentConvention,
110  QuantLib::Real redemption,
111  const QuantLib::Date& issueDate,
112  const QuantLib::Calendar& paymentCalendar,
113  bool permanent);
115  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
116  const std::string& des,
117  const QuantLib::Currency& cur,
118  QuantLib::Natural settlementDays,
119  QuantLib::Real faceAmount,
120  const boost::shared_ptr<QuantLib::Schedule>& schedule,
121  const std::vector<boost::shared_ptr<QuantLib::InterestRate> >& coupons,
122  QuantLib::BusinessDayConvention paymentConvention,
123  QuantLib::Real redemption,
124  const QuantLib::Date& issueDate,
125  const QuantLib::Calendar& paymentCalendar,
126  bool permanent);
127  protected:
129  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
130  const std::string& description,
131  const QuantLib::Currency& currency,
132  bool permanent);
133  };
134 
135  class FloatingRateBond : public Bond {
136  public:
138  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
139  const std::string& des,
140  const QuantLib::Currency& cur,
141  QuantLib::Natural settlementDays,
142  QuantLib::BusinessDayConvention paymentConvention,
143  QuantLib::Real faceAmount,
144  const boost::shared_ptr<QuantLib::Schedule>& schedule,
145  QuantLib::Natural fixingDays,
146  bool inArrears,
147  const QuantLib::DayCounter& paymentDayCounter,
148  const std::vector<QuantLib::Rate>& floors,
149  const std::vector<QuantLib::Real>& gearings,
150  const boost::shared_ptr<QuantLib::IborIndex>& index,
151  const std::vector<QuantLib::Spread>& spreads,
152  const std::vector<QuantLib::Rate>& caps,
153  QuantLib::Real redemption,
154  const QuantLib::Date& issueDate,
155  bool permanent);
156  // add constructor without schedule
157  protected:
159  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
160  const std::string& description,
161  const QuantLib::Currency& currency,
162  bool permanent);
163  };
164 
165  class CmsRateBond : public Bond {
166  public:
167  CmsRateBond(
168  const boost::shared_ptr<ObjectHandler::ValueObject>& properties,
169  const std::string& des,
170  const QuantLib::Currency& cur,
171  QuantLib::Natural settlementDays,
172  QuantLib::BusinessDayConvention paymentConvention,
173  QuantLib::Real faceAmount,
174  const boost::shared_ptr<QuantLib::Schedule>& schedule,
175  QuantLib::Natural fixingDays,
176  bool inArrears,
177  const QuantLib::DayCounter& paymentDayCounter,
178  const std::vector<QuantLib::Rate>& floors,
179  const std::vector<QuantLib::Real>& gearings,
180  const boost::shared_ptr<QuantLib::SwapIndex>& index,
181  const std::vector<QuantLib::Spread>& spreads,
182  const std::vector<QuantLib::Rate>& caps,
183  QuantLib::Real redemption,
184  const QuantLib::Date& issueDate,
185  bool permanent);
186  // add constructor without schedule
187  };
188 
189  std::vector<std::string> qlBondAlive(
190  const std::vector<boost::shared_ptr<Bond> >& bonds,
191  QuantLib::Date& refDate);
192 
193  std::string qlBondMaturityLookup(
194  const std::vector<boost::shared_ptr<Bond> >& bonds,
195  const QuantLib::Date& maturity);
196 
197  std::vector<std::string> qlBondMaturitySort(
198  const std::vector<boost::shared_ptr<Bond> >& bonds);
199 
200 }
201 
202 #endif
const std::string & description()
std::string currency()
Definition: bonds.hpp:52
std::vector< boost::shared_ptr< CashFlow > > Leg
Definition: flowanalysis.hpp:30
boost::shared_ptr< QuantLib::Bond > qlBondObject_
Definition: bonds.hpp:79
Bond(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::string &description, const QuantLib::Currency &currency, QuantLib::Natural settlementDays, const QuantLib::Calendar &calendar, QuantLib::Real faceAmount, const QuantLib::Date &maturityDate, const QuantLib::Date &issueDate, const QuantLib::Leg &leg, bool permanent)
QuantLib::Date redemptionDate()
FloatingRateBond(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::string &des, const QuantLib::Currency &cur, QuantLib::Natural settlementDays, QuantLib::BusinessDayConvention paymentConvention, QuantLib::Real faceAmount, const boost::shared_ptr< QuantLib::Schedule > &schedule, QuantLib::Natural fixingDays, bool inArrears, const QuantLib::DayCounter &paymentDayCounter, const std::vector< QuantLib::Rate > &floors, const std::vector< QuantLib::Real > &gearings, const boost::shared_ptr< QuantLib::IborIndex > &index, const std::vector< QuantLib::Spread > &spreads, const std::vector< QuantLib::Rate > &caps, QuantLib::Real redemption, const QuantLib::Date &issueDate, bool permanent)
std::string description_
Definition: bonds.hpp:77
Definition: bonds.hpp:165
Definition: bonds.hpp:82
CmsRateBond(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::string &des, const QuantLib::Currency &cur, QuantLib::Natural settlementDays, QuantLib::BusinessDayConvention paymentConvention, QuantLib::Real faceAmount, const boost::shared_ptr< QuantLib::Schedule > &schedule, QuantLib::Natural fixingDays, bool inArrears, const QuantLib::DayCounter &paymentDayCounter, const std::vector< QuantLib::Rate > &floors, const std::vector< QuantLib::Real > &gearings, const boost::shared_ptr< QuantLib::SwapIndex > &index, const std::vector< QuantLib::Spread > &spreads, const std::vector< QuantLib::Rate > &caps, QuantLib::Real redemption, const QuantLib::Date &issueDate, bool permanent)
Definition: baseinstruments.hpp:34
void setCouponPricer(const boost::shared_ptr< QuantLib::FloatingRateCouponPricer > &)
Definition: bonds.hpp:135
Definition: abcd.hpp:38
FixedRateBond(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::string &des, const QuantLib::Currency &cur, QuantLib::Natural settlementDays, QuantLib::Real faceAmount, const boost::shared_ptr< QuantLib::Schedule > &schedule, const std::vector< QuantLib::Rate > &coupons, const QuantLib::DayCounter &accrualDayCounter, QuantLib::BusinessDayConvention paymentConvention, QuantLib::Real redemption, const QuantLib::Date &issueDate, const QuantLib::Calendar &paymentCalendar, bool permanent)
Definition: bonds.hpp:98
std::vector< std::vector< ObjectHandler::property_t > > flowAnalysis(const QuantLib::Date &d)
Definition: abcd.hpp:30
std::vector< std::string > qlBondMaturitySort(const std::vector< boost::shared_ptr< Bond > > &bonds)
std::vector< std::string > qlBondAlive(const std::vector< boost::shared_ptr< Bond > > &bonds, QuantLib::Date &refDate)
Definition: bonds.hpp:49
std::string qlBondMaturityLookup(const std::vector< boost::shared_ptr< Bond > > &bonds, const QuantLib::Date &maturity)
ZeroCouponBond(const boost::shared_ptr< ObjectHandler::ValueObject > &properties, const std::string &des, const QuantLib::Currency &cur, QuantLib::Natural settlementDays, const QuantLib::Calendar &calendar, QuantLib::Real faceAmount, const QuantLib::Date &maturityDate, QuantLib::BusinessDayConvention paymentConvention, QuantLib::Real redemption, const QuantLib::Date &issueDate, bool permanent)
void setCouponPricers(const std::vector< boost::shared_ptr< QuantLib::FloatingRateCouponPricer > > &)
QuantLib::Currency currency_
Definition: bonds.hpp:78
QuantLib::Real redemptionAmount()