24#ifndef quantlib_ultimate_forward_term_structure_hpp
25#define quantlib_ultimate_forward_term_structure_hpp
27#include <ql/quote.hpp>
28#include <ql/termstructures/yield/zeroyieldstructure.hpp>
75 const Period& firstSmoothingPoint,
107 const Period& firstSmoothingPoint,
109 : originalCurve_(
std::move(h)), llfr_(
std::move(lastLiquidForwardRate)),
110 ufr_(
std::move(ultimateForwardRate)), fsp_(firstSmoothingPoint), alpha_(alpha) {
112 "first smoothing point must be a period with positive length");
154 Time deltaT = t - cutOffTime;
169 Rate extrapolatedForward =
ufr_->value() + (
llfr_->value() -
ufr_->value()) * beta;
170 return (cutOffTime * baseRate + deltaT * extrapolatedForward) / t;
static Date maxDate()
latest allowed date
Shared handle to an observable.
Concrete interest rate class.
std::pair< iterator, bool > registerWith(const ext::shared_ptr< Observable > &)
Ultimate forward term structure.
Calendar calendar() const override
the calendar used for reference and/or option date calculation
Rate zeroYieldImpl(Time) const override
returns the UFR extended zero yield rate
const Date & referenceDate() const override
the date at which discount = 1.0 and/or variance = 0.0
Handle< YieldTermStructure > originalCurve_
Natural settlementDays() const override
the settlementDays used for reference date calculation
DayCounter dayCounter() const override
the day counter used for date/time conversion
Date maxDate() const override
the latest date for which the curve can return values
UltimateForwardTermStructure(Handle< YieldTermStructure >, Handle< Quote > lastLiquidForwardRate, Handle< Quote > ultimateForwardRate, const Period &firstSmoothingPoint, Real alpha)
Zero-yield term structure.
@ NoFrequency
null frequency
Real Time
continuous quantity with 1-year units
unsigned QL_INTEGER Natural
positive integer