Skip to content

Commit

Permalink
Merge c513db5 into 2decbbb
Browse files Browse the repository at this point in the history
  • Loading branch information
lballabio committed Jun 5, 2020
2 parents 2decbbb + c513db5 commit 3190d49
Show file tree
Hide file tree
Showing 10 changed files with 295 additions and 59 deletions.
53 changes: 47 additions & 6 deletions ql/termstructures/yield/discountcurve.hpp
Expand Up @@ -73,11 +73,10 @@ namespace QuantLib {
const std::vector<DiscountFactor>& discounts() const;
std::vector<std::pair<Date, Real> > nodes() const;
//@}

protected:
InterpolatedDiscountCurve(
explicit InterpolatedDiscountCurve(
const DayCounter&,
const std::vector<Handle<Quote> >& jumps = std::vector<Handle<Quote> >(),
const std::vector<Date>& jumpDates = std::vector<Date>(),
const Interpolator& interpolator = Interpolator());
InterpolatedDiscountCurve(
const Date& referenceDate,
Expand All @@ -92,6 +91,18 @@ namespace QuantLib {
const std::vector<Handle<Quote> >& jumps = std::vector<Handle<Quote> >(),
const std::vector<Date>& jumpDates = std::vector<Date>(),
const Interpolator& interpolator = Interpolator());

/*! \deprecated Passing jumps without a reference date never worked correctly.
Use one of the other constructors instead.
Deprecated in version 1.19.
*/
QL_DEPRECATED
InterpolatedDiscountCurve(
const DayCounter&,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates = std::vector<Date>(),
const Interpolator& interpolator = Interpolator());

//! \name YieldTermStructure implementation
//@{
DiscountFactor discountImpl(Time) const;
Expand Down Expand Up @@ -171,10 +182,8 @@ namespace QuantLib {
template <class T>
InterpolatedDiscountCurve<T>::InterpolatedDiscountCurve(
const DayCounter& dayCounter,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates,
const T& interpolator)
: YieldTermStructure(dayCounter, jumps, jumpDates),
: YieldTermStructure(dayCounter),
InterpolatedCurve<T>(interpolator) {}

template <class T>
Expand All @@ -198,6 +207,38 @@ namespace QuantLib {
: YieldTermStructure(settlementDays, calendar, dayCounter, jumps, jumpDates),
InterpolatedCurve<T>(interpolator) {}

#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(QL_PATCH_MSVC)
#pragma warning(push)
#pragma warning(disable:4996)
#endif

template <class T>
InterpolatedDiscountCurve<T>::InterpolatedDiscountCurve(
const DayCounter& dayCounter,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates,
const T& interpolator)
: YieldTermStructure(dayCounter, jumps, jumpDates),
InterpolatedCurve<T>(interpolator) {}

#if defined(QL_PATCH_MSVC)
#pragma warning(pop)
#endif
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif

template <class T>
InterpolatedDiscountCurve<T>::InterpolatedDiscountCurve(
const std::vector<Date>& dates,
Expand Down
54 changes: 47 additions & 7 deletions ql/termstructures/yield/forwardcurve.hpp
Expand Up @@ -73,11 +73,10 @@ namespace QuantLib {
const std::vector<Rate>& forwards() const;
std::vector<std::pair<Date, Real> > nodes() const;
//@}

protected:
InterpolatedForwardCurve(
explicit InterpolatedForwardCurve(
const DayCounter&,
const std::vector<Handle<Quote> >& jumps = std::vector<Handle<Quote> >(),
const std::vector<Date>& jumpDates = std::vector<Date>(),
const Interpolator& interpolator = Interpolator());
InterpolatedForwardCurve(
const Date& referenceDate,
Expand All @@ -92,6 +91,18 @@ namespace QuantLib {
const std::vector<Handle<Quote> >& jumps = std::vector<Handle<Quote> >(),
const std::vector<Date>& jumpDates = std::vector<Date>(),
const Interpolator& interpolator = Interpolator());

/*! \deprecated Passing jumps without a reference date never worked correctly.
Use one of the other constructors instead.
Deprecated in version 1.19.
*/
QL_DEPRECATED
InterpolatedForwardCurve(
const DayCounter&,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates = std::vector<Date>(),
const Interpolator& interpolator = Interpolator());

//! \name ForwardRateStructure implementation
//@{
Rate forwardImpl(Time t) const;
Expand Down Expand Up @@ -182,11 +193,8 @@ namespace QuantLib {
template <class T>
InterpolatedForwardCurve<T>::InterpolatedForwardCurve(
const DayCounter& dayCounter,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates,
const T& interpolator)
: ForwardRateStructure(dayCounter, jumps, jumpDates),
InterpolatedCurve<T>(interpolator) {}
: ForwardRateStructure(dayCounter), InterpolatedCurve<T>(interpolator) {}

template <class T>
InterpolatedForwardCurve<T>::InterpolatedForwardCurve(
Expand All @@ -209,6 +217,38 @@ namespace QuantLib {
: ForwardRateStructure(settlementDays, calendar, dayCounter, jumps, jumpDates),
InterpolatedCurve<T>(interpolator) {}

#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(QL_PATCH_MSVC)
#pragma warning(push)
#pragma warning(disable:4996)
#endif

template <class T>
InterpolatedForwardCurve<T>::InterpolatedForwardCurve(
const DayCounter& dayCounter,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates,
const T& interpolator)
: ForwardRateStructure(dayCounter, jumps, jumpDates),
InterpolatedCurve<T>(interpolator) {}

#if defined(QL_PATCH_MSVC)
#pragma warning(pop)
#endif
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif

template <class T>
InterpolatedForwardCurve<T>::InterpolatedForwardCurve(
const std::vector<Date>& dates,
Expand Down
37 changes: 32 additions & 5 deletions ql/termstructures/yield/forwardstructure.cpp
Expand Up @@ -23,11 +23,8 @@

namespace QuantLib {

ForwardRateStructure::ForwardRateStructure(
const DayCounter& dc,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates)
: YieldTermStructure(dc, jumps, jumpDates) {}
ForwardRateStructure::ForwardRateStructure(const DayCounter& dc)
: YieldTermStructure(dc) {}

ForwardRateStructure::ForwardRateStructure(
const Date& refDate,
Expand All @@ -45,6 +42,36 @@ namespace QuantLib {
const std::vector<Date>& jumpDates)
: YieldTermStructure(settlDays, cal, dc, jumps, jumpDates) {}


#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(QL_PATCH_MSVC)
#pragma warning(push)
#pragma warning(disable:4996)
#endif

ForwardRateStructure::ForwardRateStructure(
const DayCounter& dc,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates)
: YieldTermStructure(dc, jumps, jumpDates) {}

#if defined(QL_PATCH_MSVC)
#pragma warning(pop)
#endif
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif

Rate ForwardRateStructure::zeroYieldImpl(Time t) const {
if (t == 0.0)
return forwardImpl(0.0);
Expand Down
18 changes: 13 additions & 5 deletions ql/termstructures/yield/forwardstructure.hpp
Expand Up @@ -48,11 +48,9 @@ namespace QuantLib {
constructors.
*/
//@{
ForwardRateStructure(
const DayCounter& dayCounter = DayCounter(),
const std::vector<Handle<Quote> >& jumps = std::vector<Handle<Quote> >(),
const std::vector<Date>& jumpDates = std::vector<Date>());
ForwardRateStructure(
explicit ForwardRateStructure(
const DayCounter& dayCounter = DayCounter());
explicit ForwardRateStructure(
const Date& referenceDate,
const Calendar& cal = Calendar(),
const DayCounter& dayCounter = DayCounter(),
Expand All @@ -64,6 +62,16 @@ namespace QuantLib {
const DayCounter& dayCounter = DayCounter(),
const std::vector<Handle<Quote> >& jumps = std::vector<Handle<Quote> >(),
const std::vector<Date>& jumpDates = std::vector<Date>());

/*! \deprecated Passing jumps without a reference date never worked correctly.
Use one of the other constructors instead.
Deprecated in version 1.19.
*/
QL_DEPRECATED
ForwardRateStructure(
const DayCounter& dayCounter,
const std::vector<Handle<Quote> >& jumps,
const std::vector<Date>& jumpDates = std::vector<Date>());
//@}
protected:
/*! \name Calculations
Expand Down
50 changes: 43 additions & 7 deletions ql/termstructures/yield/interpolatedsimplezerocurve.hpp
Expand Up @@ -65,9 +65,7 @@ class InterpolatedSimpleZeroCurve : public YieldTermStructure, protected Interpo
//@}
protected:
explicit InterpolatedSimpleZeroCurve(const DayCounter &,
const std::vector<Handle<Quote> > &jumps = std::vector<Handle<Quote> >(),
const std::vector<Date> &jumpDates = std::vector<Date>(),
const Interpolator &interpolator = Interpolator());
const Interpolator &interpolator = Interpolator());
InterpolatedSimpleZeroCurve(const Date &referenceDate, const DayCounter &,
const std::vector<Handle<Quote> > &jumps = std::vector<Handle<Quote> >(),
const std::vector<Date> &jumpDates = std::vector<Date>(),
Expand All @@ -76,6 +74,16 @@ class InterpolatedSimpleZeroCurve : public YieldTermStructure, protected Interpo
const std::vector<Handle<Quote> > &jumps = std::vector<Handle<Quote> >(),
const std::vector<Date> &jumpDates = std::vector<Date>(),
const Interpolator &interpolator = Interpolator());

/*! \deprecated Passing jumps without a reference date never worked correctly.
Use one of the other constructors instead.
Deprecated in version 1.19.
*/
QL_DEPRECATED
explicit InterpolatedSimpleZeroCurve(const DayCounter &,
const std::vector<Handle<Quote> > &jumps,
const std::vector<Date> &jumpDates = std::vector<Date>(),
const Interpolator &interpolator = Interpolator());
//! \name YieldTermStructure implementation
//@{
DiscountFactor discountImpl(Time t) const;
Expand Down Expand Up @@ -131,10 +139,8 @@ template <class T> DiscountFactor InterpolatedSimpleZeroCurve<T>::discountImpl(T
}

template <class T>
InterpolatedSimpleZeroCurve<T>::InterpolatedSimpleZeroCurve(const DayCounter &dayCounter,
const std::vector<Handle<Quote> > &jumps,
const std::vector<Date> &jumpDates, const T &interpolator)
: YieldTermStructure(dayCounter, jumps, jumpDates), InterpolatedCurve<T>(interpolator) {}
InterpolatedSimpleZeroCurve<T>::InterpolatedSimpleZeroCurve(const DayCounter &dayCounter, const T &interpolator)
: YieldTermStructure(dayCounter), InterpolatedCurve<T>(interpolator) {}

template <class T>
InterpolatedSimpleZeroCurve<T>::InterpolatedSimpleZeroCurve(const Date &referenceDate, const DayCounter &dayCounter,
Expand All @@ -149,6 +155,36 @@ InterpolatedSimpleZeroCurve<T>::InterpolatedSimpleZeroCurve(Natural settlementDa
const std::vector<Date> &jumpDates, const T &interpolator)
: YieldTermStructure(settlementDays, calendar, dayCounter, jumps, jumpDates), InterpolatedCurve<T>(interpolator) {}

#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#endif
#if defined(QL_PATCH_MSVC)
#pragma warning(push)
#pragma warning(disable:4996)
#endif

template <class T>
InterpolatedSimpleZeroCurve<T>::InterpolatedSimpleZeroCurve(const DayCounter &dayCounter,
const std::vector<Handle<Quote> > &jumps,
const std::vector<Date> &jumpDates,
const T &interpolator)
: YieldTermStructure(dayCounter, jumps, jumpDates), InterpolatedCurve<T>(interpolator) {}

#if defined(QL_PATCH_MSVC)
#pragma warning(pop)
#endif
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif

template <class T>
InterpolatedSimpleZeroCurve<T>::InterpolatedSimpleZeroCurve(const std::vector<Date> &dates,
const std::vector<Rate> &yields,
Expand Down

0 comments on commit 3190d49

Please sign in to comment.