26#ifndef quantlib_interpolated_yoy_inflationcurve_hpp
27#define quantlib_interpolated_yoy_inflationcurve_hpp
42 template<
class Interpolator>
48 std::vector<Date>
dates,
49 const std::vector<Rate>&
rates,
52 const ext::shared_ptr<Seasonality>&
seasonality = {},
53 const Interpolator& interpolator = Interpolator());
58 [[deprecated(
"Use the overload without indexIsInterpolated")]]
60 std::vector<Date>
dates,
61 const std::vector<Rate>&
rates,
65 const ext::shared_ptr<Seasonality>&
seasonality = {},
66 const Interpolator& interpolator = Interpolator());
75 const std::vector<Date>&
dates()
const;
76 const std::vector<Time>&
times()
const;
77 const std::vector<Real>&
data()
const;
78 const std::vector<Rate>&
rates()
const;
79 std::vector<std::pair<Date,Rate> >
nodes()
const;
98 const ext::shared_ptr<Seasonality>&
seasonality = {},
99 const Interpolator& interpolator = Interpolator());
104 [[deprecated(
"Use the overload without indexIsInterpolated")]]
111 const ext::shared_ptr<Seasonality>&
seasonality = {},
112 const Interpolator& interpolator = Interpolator());
121 template <
class Interpolator>
123 const Date& referenceDate,
124 std::vector<Date> dates,
125 const std::vector<Rate>& rates,
128 const ext::shared_ptr<Seasonality>& seasonality,
129 const Interpolator& interpolator)
131 frequency, dayCounter, seasonality),
133 dates_(
std::move(dates)) {
138 "indices/dates count mismatch: "
139 << this->data_.size() <<
" vs " <<
dates_.size());
145 "year-on-year inflation data < -100 %");
153 template <
class Interpolator>
155 const Date& referenceDate,
156 std::vector<Date> dates,
157 const std::vector<Rate>& rates,
159 bool indexIsInterpolated,
161 const ext::shared_ptr<Seasonality>& seasonality,
162 const Interpolator& interpolator)
164 dayCounter, seasonality, interpolator) {
170 template <
class Interpolator>
177 const ext::shared_ptr<Seasonality>& seasonality,
178 const Interpolator& interpolator)
180 frequency, dayCounter, seasonality),
183 template <
class Interpolator>
189 bool indexIsInterpolated,
191 const ext::shared_ptr<Seasonality>& seasonality,
192 const Interpolator& interpolator)
194 dayCounter, seasonality, interpolator) {
203 return dates_.back();
209 return this->interpolation_(
t,
true);
213 inline const std::vector<Time>&
219 inline const std::vector<Date>&
225 inline const std::vector<Rate>&
231 inline const std::vector<Real>&
237 inline std::vector<std::pair<Date,Rate> >
239 std::vector<std::pair<Date,Rate> >
results(dates_.size());
240 for (
Size i=0; i<dates_.size(); ++i)
241 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 interpolated year-on-year rates.
Rate yoyRateImpl(Time t) const override
to be defined in derived classes
const std::vector< Rate > & rates() const
std::vector< Date > dates_
InterpolatedYoYInflationCurve(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< Date > & dates() const
const std::vector< Real > & data() const
std::vector< std::pair< Date, Rate > > nodes() const
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
Base class for year-on-year inflation term structures.
virtual bool indexIsInterpolated() const
bool indexIsInterpolated_
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
InterpolatedYoYInflationCurve< Linear > YoYInflationCurve
#define QL_DEPRECATED_DISABLE_WARNING
#define QL_DEPRECATED_ENABLE_WARNING