26#ifndef quantlib_piecewise_zero_inflation_curve_hpp
27#define quantlib_piecewise_zero_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 = ZeroInflationTraits>
60 std::vector<ext::shared_ptr<typename Traits::helper> > instruments,
61 Real accuracy = 1.0e-12,
62 const Interpolator& i = Interpolator())
82 const std::vector<Time>&
times()
const;
83 const std::vector<Date>&
dates()
const;
84 const std::vector<Real>&
data()
const;
85 std::vector<std::pair<Date, Real> >
nodes()
const;
95 std::vector<ext::shared_ptr<typename Traits::helper> >
instruments_;
106 template <
class I,
template <
class>
class B,
class T>
109 return base_curve::baseDate();
112 template <
class I,
template <
class>
class B,
class T>
115 return base_curve::maxDate();
118 template <
class I,
template <
class>
class B,
class T>
121 return base_curve::times();
124 template <
class I,
template <
class>
class B,
class T>
127 return base_curve::dates();
130 template <
class I,
template <
class>
class B,
class T>
133 return base_curve::rates();
136 template <
class I,
template <
class>
class B,
class T>
137 std::vector<std::pair<Date, Real> >
140 return base_curve::nodes();
143 template <
class I,
template <
class>
class B,
class T>
145 bootstrap_.calculate();
148 template <
class I,
template<
class>
class B,
class T>
150 base_curve::update();
virtual Frequency frequency() const
Inflation term structure based on the interpolation of zero rates.
Framework for calculation on demand and result caching.
Piecewise zero-inflation term structure.
PiecewiseZeroInflationCurve(const Date &referenceDate, const Calendar &calendar, const DayCounter &dayCounter, const Period &lag, Frequency frequency, Rate baseZeroRate, std::vector< ext::shared_ptr< typename Traits::helper > > instruments, Real accuracy=1.0e-12, const Interpolator &i=Interpolator())
void performCalculations() const override
Bootstrap< this_curve > bootstrap_
InterpolatedZeroInflationCurve< Interpolator > base_curve
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
friend class Bootstrap< this_curve >
PiecewiseZeroInflationCurve< Interpolator, Bootstrap, Traits > 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
Frequency
Frequency of events.