26#ifndef quantlib_piecewise_yoy_inflation_curve_hpp
27#define quantlib_piecewise_yoy_inflation_curve_hpp
29#include <ql/patterns/lazyobject.hpp>
30#include <ql/termstructures/inflation/inflationtraits.hpp>
31#include <ql/termstructures/iterativebootstrap.hpp>
37 template <
class Interpolator,
38 template <
class>
class Bootstrap = IterativeBootstrap,
39 class Traits = YoYInflationTraits>
60 std::vector<ext::shared_ptr<typename Traits::helper> > instruments,
61 Real accuracy = 1.0e-12,
62 const Interpolator& i = Interpolator())
83 const std::vector<Time>&
times()
const;
84 const std::vector<Date>&
dates()
const;
85 const std::vector<Real>&
data()
const;
86 std::vector<std::pair<Date, Real> >
nodes()
const;
96 std::vector<ext::shared_ptr<typename Traits::helper> >
instruments_;
107 template <
class I,
template <
class>
class B,
class T>
110 return base_curve::baseDate();
113 template <
class I,
template <
class>
class B,
class T>
116 return base_curve::maxDate();
119 template <
class I,
template <
class>
class B,
class T>
122 return base_curve::times();
125 template <
class I,
template <
class>
class B,
class T>
128 return base_curve::dates();
131 template <
class I,
template <
class>
class B,
class T>
134 return base_curve::data();
137 template <
class I,
template <
class>
class B,
class T>
138 std::vector<std::pair<Date, Real> >
141 return base_curve::nodes();
144 template <
class I,
template <
class>
class B,
class T>
146 bootstrap_.calculate();
149 template <
class I,
template <
class>
class B,
class T>
151 base_curve::update();
virtual Frequency frequency() const
Inflation term structure based on interpolated year-on-year rates.
Framework for calculation on demand and result caching.
Piecewise year-on-year inflation term structure.
void performCalculations() const override
PiecewiseYoYInflationCurve(const Date &referenceDate, const Calendar &calendar, const DayCounter &dayCounter, const Period &lag, Frequency frequency, bool indexIsInterpolated, Rate baseYoYRate, std::vector< ext::shared_ptr< typename Traits::helper > > instruments, Real accuracy=1.0e-12, const Interpolator &i=Interpolator())
Bootstrap< this_curve > bootstrap_
Date baseDate() const override
minimum (base) date
const std::vector< Date > & dates() const
const std::vector< Real > & data() const
std::vector< std::pair< Date, Real > > nodes() const
Interpolator interpolator_type
const std::vector< Time > & times() const
std::vector< ext::shared_ptr< typename Traits::helper > > instruments_
Date maxDate() const override
the latest date for which the curve can return values
PiecewiseYoYInflationCurve< Interpolator, Bootstrap, Traits > this_curve
InterpolatedYoYInflationCurve< Interpolator > base_curve
friend class Bootstrap< this_curve >
virtual const Date & referenceDate() const
the date at which discount = 1.0 and/or variance = 0.0
virtual Calendar calendar() const
the calendar used for reference and/or option date calculation
virtual DayCounter dayCounter() const
the day counter used for date/time conversion
virtual bool indexIsInterpolated() const
Frequency
Frequency of events.