25#ifndef quantlib_interpolated_zeroinflationcurve_hpp
26#define quantlib_interpolated_zeroinflationcurve_hpp
38 template<
class Interpolator>
44 std::vector<Date>
dates,
45 const std::vector<Rate>&
rates,
48 const ext::shared_ptr<Seasonality>&
seasonality = {},
49 const Interpolator& interpolator = Interpolator());
58 const std::vector<Date>&
dates()
const;
59 const std::vector<Time>&
times()
const;
60 const std::vector<Real>&
data()
const;
61 const std::vector<Rate>&
rates()
const;
62 std::vector<std::pair<Date,Rate> >
nodes()
const;
80 const ext::shared_ptr<Seasonality>&
seasonality = {},
81 const Interpolator &interpolator = Interpolator());
90 template <
class Interpolator>
92 const Date& referenceDate,
93 std::vector<Date> dates,
94 const std::vector<Rate>& rates,
97 const ext::shared_ptr<Seasonality>& seasonality,
98 const Interpolator& interpolator)
101 dates_(
std::move(dates)) {
106 "indices/dates count mismatch: " << this->data_.size() <<
" vs "
118 template <
class Interpolator>
124 const ext::shared_ptr<Seasonality>& seasonality,
125 const Interpolator& interpolator)
132 return dates_.back();
137 return this->interpolation_(
t,
true);
141 inline const std::vector<Time>&
147 inline const std::vector<Date>&
153 inline const std::vector<Rate>&
159 inline const std::vector<Real>&
165 inline std::vector<std::pair<Date,Rate> >
167 std::vector<std::pair<Date,Rate> >
results(dates_.size());
168 for (
Size i=0; i<dates_.size(); ++i)
169 results[i] = std::make_pair(dates_[i],this->data_[i]);
ext::shared_ptr< Seasonality > seasonality() const
virtual Date baseDate() const
minimum (base) date
virtual Frequency frequency() const
Helper class to build interpolated term structures.
Interpolation interpolation_
void setupTimes(const std::vector< Date > &dates, Date referenceDate, const DayCounter &dayCounter)
void setupInterpolation()
std::vector< Real > data_
Inflation term structure based on the interpolation of zero rates.
const std::vector< Rate > & rates() const
Rate zeroRateImpl(Time t) const override
to be defined in derived classes
std::vector< Date > dates_
const std::vector< Date > & dates() const
const std::vector< Real > & data() const
std::vector< std::pair< Date, Rate > > nodes() const
InterpolatedZeroInflationCurve(const Date &referenceDate, std::vector< Date > dates, const std::vector< Rate > &rates, Frequency frequency, const DayCounter &dayCounter, const ext::shared_ptr< Seasonality > &seasonality={}, const Interpolator &interpolator=Interpolator())
const std::vector< Time > & times() const
Date maxDate() const override
the latest date for which the curve can return values
virtual const Date & referenceDate() const
the date at which discount = 1.0 and/or variance = 0.0
virtual DayCounter dayCounter() const
the day counter used for date/time conversion
Interface for zero inflation term structures.
floating-point comparisons
#define QL_REQUIRE(condition, message)
throw an error if the given pre-condition is not verified
Frequency
Frequency of events.
Real Time
continuous quantity with 1-year units
std::size_t Size
size of a container
Base classes for inflation term structures.
Helper class to build interpolated term structures.
linear interpolation between discrete points
InterpolatedZeroInflationCurve< Linear > ZeroInflationCurve