Skip to content

Commit

Permalink
Move amortizing bonds from experimental to core (#1488)
Browse files Browse the repository at this point in the history
  • Loading branch information
lballabio committed Sep 23, 2022
2 parents 5517289 + f820442 commit 508cc5d
Show file tree
Hide file tree
Showing 18 changed files with 521 additions and 439 deletions.
9 changes: 6 additions & 3 deletions QuantLib.vcxproj
Expand Up @@ -903,6 +903,9 @@
<ClInclude Include="ql\instruments\bond.hpp" />
<ClInclude Include="ql\instruments\bondforward.hpp" />
<ClInclude Include="ql\instruments\bonds\all.hpp" />
<ClInclude Include="ql\instruments\bonds\amortizingcmsratebond.hpp" />
<ClInclude Include="ql\instruments\bonds\amortizingfixedratebond.hpp" />
<ClInclude Include="ql\instruments\bonds\amortizingfloatingratebond.hpp" />
<ClInclude Include="ql\instruments\bonds\btp.hpp" />
<ClInclude Include="ql\instruments\bonds\cmsratebond.hpp" />
<ClInclude Include="ql\instruments\bonds\convertiblebonds.hpp" />
Expand Down Expand Up @@ -1920,9 +1923,6 @@
<ClCompile Include="ql\currencies\europe.cpp" />
<ClCompile Include="ql\currencies\exchangeratemanager.cpp" />
<ClCompile Include="ql\currencies\oceania.cpp" />
<ClCompile Include="ql\experimental\amortizingbonds\amortizingcmsratebond.cpp" />
<ClCompile Include="ql\experimental\amortizingbonds\amortizingfixedratebond.cpp" />
<ClCompile Include="ql\experimental\amortizingbonds\amortizingfloatingratebond.cpp" />
<ClCompile Include="ql\experimental\asian\analytic_cont_geom_av_price_heston.cpp" />
<ClCompile Include="ql\experimental\asian\analytic_discr_geom_av_price_heston.cpp" />
<ClCompile Include="ql\pricingengines\asian\turnbullwakemanasianengine.cpp" />
Expand Down Expand Up @@ -2158,6 +2158,9 @@
<ClCompile Include="ql\instruments\bmaswap.cpp" />
<ClCompile Include="ql\instruments\bond.cpp" />
<ClCompile Include="ql\instruments\bondforward.cpp" />
<ClCompile Include="ql\instruments\bonds\amortizingcmsratebond.cpp" />
<ClCompile Include="ql\instruments\bonds\amortizingfixedratebond.cpp" />
<ClCompile Include="ql\instruments\bonds\amortizingfloatingratebond.cpp" />
<ClCompile Include="ql\instruments\bonds\btp.cpp" />
<ClCompile Include="ql\instruments\bonds\cmsratebond.cpp" />
<ClCompile Include="ql\instruments\bonds\convertiblebonds.cpp" />
Expand Down
27 changes: 18 additions & 9 deletions QuantLib.vcxproj.filters
Expand Up @@ -915,6 +915,15 @@
<ClInclude Include="ql\instruments\bonds\all.hpp">
<Filter>instruments\bonds</Filter>
</ClInclude>
<ClInclude Include="ql\instruments\bonds\amortizingcmsratebond.hpp">
<Filter>instruments\bonds</Filter>
</ClInclude>
<ClInclude Include="ql\instruments\bonds\amortizingfixedratebond.hpp">
<Filter>instruments\bonds</Filter>
</ClInclude>
<ClInclude Include="ql\instruments\bonds\amortizingfloatingratebond.hpp">
<Filter>instruments\bonds</Filter>
</ClInclude>
<ClInclude Include="ql\instruments\bonds\btp.hpp">
<Filter>instruments\bonds</Filter>
</ClInclude>
Expand Down Expand Up @@ -4718,6 +4727,15 @@
<ClCompile Include="ql\instruments\zerocouponinflationswap.cpp">
<Filter>instruments</Filter>
</ClCompile>
<ClCompile Include="ql\instruments\bonds\amortizingcmsratebond.cpp">
<Filter>instruments\bonds</Filter>
</ClCompile>
<ClCompile Include="ql\instruments\bonds\amortizingfixedratebond.cpp">
<Filter>instruments\bonds</Filter>
</ClCompile>
<ClCompile Include="ql\instruments\bonds\amortizingfloatingratebond.cpp">
<Filter>instruments\bonds</Filter>
</ClCompile>
<ClCompile Include="ql\instruments\bonds\btp.cpp">
<Filter>instruments\bonds</Filter>
</ClCompile>
Expand Down Expand Up @@ -6500,15 +6518,6 @@
<ClCompile Include="ql\experimental\commodities\unitofmeasureconversionmanager.cpp">
<Filter>experimental\commodities</Filter>
</ClCompile>
<ClCompile Include="ql\experimental\amortizingbonds\amortizingcmsratebond.cpp">
<Filter>experimental\amortizingbonds</Filter>
</ClCompile>
<ClCompile Include="ql\experimental\amortizingbonds\amortizingfixedratebond.cpp">
<Filter>experimental\amortizingbonds</Filter>
</ClCompile>
<ClCompile Include="ql\experimental\amortizingbonds\amortizingfloatingratebond.cpp">
<Filter>experimental\amortizingbonds</Filter>
</ClCompile>
<ClCompile Include="ql\experimental\averageois\arithmeticaverageois.cpp">
<Filter>experimental\averageois</Filter>
</ClCompile>
Expand Down
9 changes: 6 additions & 3 deletions ql/CMakeLists.txt
Expand Up @@ -44,9 +44,6 @@ set(QL_SOURCES
event.cpp
exchangerate.cpp
exercise.cpp
experimental/amortizingbonds/amortizingcmsratebond.cpp
experimental/amortizingbonds/amortizingfixedratebond.cpp
experimental/amortizingbonds/amortizingfloatingratebond.cpp
experimental/asian/analytic_cont_geom_av_price_heston.cpp
experimental/asian/analytic_discr_geom_av_price_heston.cpp
experimental/averageois/arithmeticaverageois.cpp
Expand Down Expand Up @@ -282,6 +279,9 @@ set(QL_SOURCES
instruments/bmaswap.cpp
instruments/bond.cpp
instruments/bondforward.cpp
instruments/bonds/amortizingcmsratebond.cpp
instruments/bonds/amortizingfixedratebond.cpp
instruments/bonds/amortizingfloatingratebond.cpp
instruments/bonds/btp.cpp
instruments/bonds/cmsratebond.cpp
instruments/bonds/convertiblebonds.cpp
Expand Down Expand Up @@ -1307,6 +1307,9 @@ set(QL_HEADERS
instruments/bmaswap.hpp
instruments/bond.hpp
instruments/bondforward.hpp
instruments/bonds/amortizingcmsratebond.hpp
instruments/bonds/amortizingfixedratebond.hpp
instruments/bonds/amortizingfloatingratebond.hpp
instruments/bonds/btp.hpp
instruments/bonds/cmsratebond.hpp
instruments/bonds/convertiblebonds.hpp
Expand Down
1 change: 0 additions & 1 deletion ql/experimental/Makefile.am
Expand Up @@ -14,7 +14,6 @@ this_include_HEADERS = \
libExperimental_la_SOURCES =

libExperimental_la_LIBADD = \
amortizingbonds/libAmortizingBonds.la \
asian/libAsian.la \
averageois/libAverageOIS.la \
barrieroption/libBarrierOption.la \
Expand Down
27 changes: 0 additions & 27 deletions ql/experimental/amortizingbonds/Makefile.am
Expand Up @@ -8,33 +8,6 @@ this_include_HEADERS = \
amortizingfixedratebond.hpp \
amortizingfloatingratebond.hpp

cpp_files = \
amortizingcmsratebond.cpp \
amortizingfixedratebond.cpp \
amortizingfloatingratebond.cpp

if UNITY_BUILD

nodist_libAmortizingBonds_la_SOURCES = unity.cpp

unity.cpp: Makefile.am
echo "/* This file is automatically generated; do not edit. */" > $@
echo "/* Add the files to be included into Makefile.am instead. */" >> $@
echo >> $@
for i in $(cpp_files); do \
echo "#include \"${subdir}/$$i\"" >> $@; \
done

EXTRA_DIST = $(cpp_files)

else

libAmortizingBonds_la_SOURCES = $(cpp_files)

endif

noinst_LTLIBRARIES = libAmortizingBonds.la

all.hpp: Makefile.am
echo "/* This file is automatically generated; do not edit. */" > ${srcdir}/$@
echo "/* Add the files to be included into Makefile.am instead. */" >> ${srcdir}/$@
Expand Down
40 changes: 3 additions & 37 deletions ql/experimental/amortizingbonds/amortizingcmsratebond.hpp
Expand Up @@ -17,41 +17,7 @@
FOR A PARTICULAR PURPOSE. See the license for more details.
*/

/*! \file amortizingcmsratebond.hpp
\brief amortizing CMS-rate bond
*/

#ifndef quantlib_amortizing_cms_rate_bond_hpp
#define quantlib_amortizing_cms_rate_bond_hpp

#include <ql/instruments/bond.hpp>

namespace QuantLib {

class Schedule;
class SwapIndex;

//! amortizing CMS-rate bond
class AmortizingCmsRateBond : public Bond {
public:
AmortizingCmsRateBond(
Natural settlementDays,
const std::vector<Real>& notionals,
const Schedule& schedule,
const ext::shared_ptr<SwapIndex>& index,
const DayCounter& paymentDayCounter,
BusinessDayConvention paymentConvention = Following,
Natural fixingDays = Null<Natural>(),
const std::vector<Real>& gearings =
std::vector<Real>(1, 1.0),
const std::vector<Spread>& spreads =
std::vector<Spread>(1, 0.0),
const std::vector<Rate>& caps = std::vector<Rate>(),
const std::vector<Rate>& floors = std::vector<Rate>(),
bool inArrears = false,
const Date& issueDate = Date());
};

}
// Deprecated in version 1.28
#pragma message("Warning: this file will disappear in a future release; include <ql/instruments/bonds/amortizingcmsratebond.hpp instead>.")

#endif
#include <ql/instruments/bonds/amortizingcmsratebond.hpp>
67 changes: 3 additions & 64 deletions ql/experimental/amortizingbonds/amortizingfixedratebond.hpp
Expand Up @@ -17,68 +17,7 @@
FOR A PARTICULAR PURPOSE. See the license for more details.
*/

/*! \file amortizingfixedratebond.hpp
\brief amortizing fixed-rate bond
*/

#ifndef quantlib_amortizing_fixed_rate_bond_hpp
#define quantlib_amortizing_fixed_rate_bond_hpp

#include <ql/instruments/bond.hpp>
#include <ql/time/daycounter.hpp>
#include <ql/interestrate.hpp>

namespace QuantLib {

class Schedule;

//! amortizing fixed-rate bond
class AmortizingFixedRateBond : public Bond {
public:
AmortizingFixedRateBond(Natural settlementDays,
const std::vector<Real>& notionals,
const Schedule& schedule,
const std::vector<Rate>& coupons,
const DayCounter& accrualDayCounter,
BusinessDayConvention paymentConvention = Following,
const Date& issueDate = Date(),
const Period& exCouponPeriod = Period(),
const Calendar& exCouponCalendar = Calendar(),
BusinessDayConvention exCouponConvention = Unadjusted,
bool exCouponEndOfMonth = false);
/*! Automatically generates a set of equal coupons, with an
amortizing bond. The coupons are equal and the accrual
daycount is only used for quoting/settlement purposes -
not for calculating the coupons.
*/
AmortizingFixedRateBond(Natural settlementDays,
const Calendar& calendar,
Real faceAmount,
const Date& startDate,
const Period& bondTenor,
const Frequency& sinkingFrequency,
Rate coupon,
const DayCounter& accrualDayCounter,
BusinessDayConvention paymentConvention = Following,
const Date& issueDate = Date());
AmortizingFixedRateBond(Natural settlementDays,
const std::vector<Real>& notionals,
const Schedule& schedule,
const std::vector<InterestRate>& coupons,
BusinessDayConvention paymentConvention = Following,
const Date& issueDate = Date(),
const Calendar& paymentCalendar = Calendar(),
const Period& exCouponPeriod = Period(),
const Calendar& exCouponCalendar = Calendar(),
BusinessDayConvention exCouponConvention = Unadjusted,
bool exCouponEndOfMonth = false);
Frequency frequency() const { return frequency_; }
const DayCounter& dayCounter() const { return dayCounter_; }
protected:
Frequency frequency_;
DayCounter dayCounter_;
};

}
// Deprecated in version 1.28
#pragma message("Warning: this file will disappear in a future release; include <ql/instruments/bonds/amortizingfixedratebond.hpp instead>.")

#endif
#include <ql/instruments/bonds/amortizingfixedratebond.hpp>
41 changes: 3 additions & 38 deletions ql/experimental/amortizingbonds/amortizingfloatingratebond.hpp
Expand Up @@ -17,42 +17,7 @@
FOR A PARTICULAR PURPOSE. See the license for more details.
*/

/*! \file amortizingfloatingratebond.hpp
\brief amortizing floating-rate bond
*/

#ifndef quantlib_amortizing_floating_rate_bond_hpp
#define quantlib_amortizing_floating_rate_bond_hpp

#include <ql/instruments/bond.hpp>

namespace QuantLib {

class Schedule;
class IborIndex;

//! amortizing floating-rate bond (possibly capped and/or floored)
class AmortizingFloatingRateBond : public Bond {
public:
AmortizingFloatingRateBond(Natural settlementDays,
const std::vector<Real>& notional,
const Schedule& schedule,
const ext::shared_ptr<IborIndex>& index,
const DayCounter& accrualDayCounter,
BusinessDayConvention paymentConvention = Following,
Natural fixingDays = Null<Natural>(),
const std::vector<Real>& gearings = std::vector<Real>(1, 1.0),
const std::vector<Spread>& spreads = std::vector<Spread>(1, 0.0),
const std::vector<Rate>& caps = std::vector<Rate>(),
const std::vector<Rate>& floors = std::vector<Rate>(),
bool inArrears = false,
const Date& issueDate = Date(),
const Period& exCouponPeriod = Period(),
const Calendar& exCouponCalendar = Calendar(),
BusinessDayConvention exCouponConvention = Unadjusted,
bool exCouponEndOfMonth = false);
};

}
// Deprecated in version 1.28
#pragma message("Warning: this file will disappear in a future release; include <ql/instruments/bonds/amortizingfloatingratebond.hpp instead>.")

#endif
#include <ql/instruments/bonds/amortizingfloatingratebond.hpp>
6 changes: 6 additions & 0 deletions ql/instruments/bonds/Makefile.am
Expand Up @@ -4,6 +4,9 @@ AM_CPPFLAGS = -I${top_builddir} -I${top_srcdir}
this_includedir=${includedir}/${subdir}
this_include_HEADERS = \
all.hpp \
amortizingcmsratebond.hpp \
amortizingfixedratebond.hpp \
amortizingfloatingratebond.hpp \
btp.hpp \
cmsratebond.hpp \
convertiblebonds.hpp \
Expand All @@ -13,6 +16,9 @@ this_include_HEADERS = \
zerocouponbond.hpp

cpp_files = \
amortizingcmsratebond.cpp \
amortizingfixedratebond.cpp \
amortizingfloatingratebond.cpp \
btp.cpp \
cmsratebond.cpp \
convertiblebonds.cpp \
Expand Down
3 changes: 3 additions & 0 deletions ql/instruments/bonds/all.hpp
@@ -1,6 +1,9 @@
/* This file is automatically generated; do not edit. */
/* Add the files to be included into Makefile.am instead. */

#include <ql/instruments/bonds/amortizingcmsratebond.hpp>
#include <ql/instruments/bonds/amortizingfixedratebond.hpp>
#include <ql/instruments/bonds/amortizingfloatingratebond.hpp>
#include <ql/instruments/bonds/btp.hpp>
#include <ql/instruments/bonds/cmsratebond.hpp>
#include <ql/instruments/bonds/convertiblebonds.hpp>
Expand Down
Expand Up @@ -17,7 +17,7 @@
FOR A PARTICULAR PURPOSE. See the license for more details.
*/

#include <ql/experimental/amortizingbonds/amortizingcmsratebond.hpp>
#include <ql/instruments/bonds/amortizingcmsratebond.hpp>
#include <ql/cashflows/cmscoupon.hpp>
#include <ql/cashflows/simplecashflow.hpp>
#include <ql/indexes/swapindex.hpp>
Expand Down

0 comments on commit 508cc5d

Please sign in to comment.