QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Public Member Functions | List of all members
UltimateForwardTermStructure Class Reference

Ultimate forward term structure. More...

#include <ultimateforwardtermstructure.hpp>

+ Inheritance diagram for UltimateForwardTermStructure:
+ Collaboration diagram for UltimateForwardTermStructure:

Public Member Functions

 UltimateForwardTermStructure (Handle< YieldTermStructure >, Handle< Quote > lastLiquidForwardRate, Handle< Quote > ultimateForwardRate, const Period &firstSmoothingPoint, Real alpha)
 
YieldTermStructure interface
DayCounter dayCounter () const override
 the day counter used for date/time conversion More...
 
Calendar calendar () const override
 the calendar used for reference and/or option date calculation More...
 
Natural settlementDays () const override
 the settlementDays used for reference date calculation More...
 
const DatereferenceDate () const override
 the date at which discount = 1.0 and/or variance = 0.0 More...
 
Date maxDate () const override
 the latest date for which the curve can return values More...
 
- Public Member Functions inherited from ZeroYieldStructure
 ZeroYieldStructure (const DayCounter &dc=DayCounter())
 
 ZeroYieldStructure (const Date &referenceDate, const Calendar &calendar=Calendar(), const DayCounter &dc=DayCounter(), const std::vector< Handle< Quote > > &jumps={}, const std::vector< Date > &jumpDates={})
 
 ZeroYieldStructure (Natural settlementDays, const Calendar &calendar, const DayCounter &dc=DayCounter(), const std::vector< Handle< Quote > > &jumps={}, const std::vector< Date > &jumpDates={})
 
- Public Member Functions inherited from YieldTermStructure
 YieldTermStructure (const DayCounter &dc=DayCounter())
 
 YieldTermStructure (const Date &referenceDate, const Calendar &cal=Calendar(), const DayCounter &dc=DayCounter(), std::vector< Handle< Quote > > jumps={}, const std::vector< Date > &jumpDates={})
 
 YieldTermStructure (Natural settlementDays, const Calendar &cal, const DayCounter &dc=DayCounter(), std::vector< Handle< Quote > > jumps={}, const std::vector< Date > &jumpDates={})
 
DiscountFactor discount (const Date &d, bool extrapolate=false) const
 
DiscountFactor discount (Time t, bool extrapolate=false) const
 
InterestRate zeroRate (const Date &d, const DayCounter &resultDayCounter, Compounding comp, Frequency freq=Annual, bool extrapolate=false) const
 
InterestRate zeroRate (Time t, Compounding comp, Frequency freq=Annual, bool extrapolate=false) const
 
InterestRate forwardRate (const Date &d1, const Date &d2, const DayCounter &resultDayCounter, Compounding comp, Frequency freq=Annual, bool extrapolate=false) const
 
InterestRate forwardRate (const Date &d, const Period &p, const DayCounter &resultDayCounter, Compounding comp, Frequency freq=Annual, bool extrapolate=false) const
 
InterestRate forwardRate (Time t1, Time t2, Compounding comp, Frequency freq=Annual, bool extrapolate=false) const
 
const std::vector< Date > & jumpDates () const
 
const std::vector< Time > & jumpTimes () const
 
void update () override
 
- Public Member Functions inherited from TermStructure
 TermStructure (DayCounter dc=DayCounter())
 default constructor More...
 
 TermStructure (const Date &referenceDate, Calendar calendar=Calendar(), DayCounter dc=DayCounter())
 initialize with a fixed reference date More...
 
 TermStructure (Natural settlementDays, Calendar, DayCounter dc=DayCounter())
 calculate the reference date based on the global evaluation date More...
 
 ~TermStructure () override=default
 
Time timeFromReference (const Date &date) const
 date/time conversion More...
 
virtual Time maxTime () const
 the latest time for which the curve can return values More...
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
- Public Member Functions inherited from Extrapolator
 Extrapolator ()=default
 
virtual ~Extrapolator ()=default
 
void enableExtrapolation (bool b=true)
 enable extrapolation in subsequent calls More...
 
void disableExtrapolation (bool b=true)
 disable extrapolation in subsequent calls More...
 
bool allowsExtrapolation () const
 tells whether extrapolation is enabled More...
 

Observer interface

Handle< YieldTermStructureoriginalCurve_
 
Handle< Quotellfr_
 
Handle< Quoteufr_
 
Period fsp_
 
Real alpha_
 
void update () override
 
Rate zeroYieldImpl (Time) const override
 returns the UFR extended zero yield rate More...
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Member Functions inherited from ZeroYieldStructure
DiscountFactor discountImpl (Time) const override
 
- Protected Member Functions inherited from YieldTermStructure
- Protected Member Functions inherited from TermStructure
void checkRange (const Date &d, bool extrapolate) const
 date-range check More...
 
void checkRange (Time t, bool extrapolate) const
 time-range check More...
 
- Protected Attributes inherited from TermStructure
bool moving_ = false
 
bool updated_ = true
 
Calendar calendar_
 

Detailed Description

Ultimate forward term structure.

Dutch regulatory term structure for pension funds with a parametrized extrapolation mechanism designed for discounting long dated liabilities.

Relevant documentation can be found on the Dutch Central Bank website:

FTK term structure documentation (Financieel toetsingskader): https://www.toezicht.dnb.nl/binaries/50-212329.pdf

UFR 2015 term structure documentation: https://www.toezicht.dnb.nl/binaries/50-234028.pdf

UFR 2019 term structure documentation: https://www.rijksoverheid.nl/documenten/kamerstukken/2019/06/11/advies-commissie-parameters

This term structure will remain linked to the original structure, i.e., any changes in the latter will be reflected in this structure as well.

Tests:
  • the correctness of the returned zero rates is tested by checking them against reference values obtained from the official source.
  • extrapolated forward is validated.
  • rates on the cut-off point are checked against those implied by the base curve.
  • inspectors are tested against the base curve.
  • incorrect input for cut-off point should raise an exception.
  • observability against changes in the underlying term structure and the additional components is checked.

Definition at line 70 of file ultimateforwardtermstructure.hpp.

Constructor & Destructor Documentation

◆ UltimateForwardTermStructure()

UltimateForwardTermStructure ( Handle< YieldTermStructure h,
Handle< Quote lastLiquidForwardRate,
Handle< Quote ultimateForwardRate,
const Period firstSmoothingPoint,
Real  alpha 
)

Definition at line 103 of file ultimateforwardtermstructure.hpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ dayCounter()

DayCounter dayCounter ( ) const
overridevirtual

the day counter used for date/time conversion

Reimplemented from TermStructure.

Definition at line 120 of file ultimateforwardtermstructure.hpp.

◆ calendar()

Calendar calendar ( ) const
overridevirtual

the calendar used for reference and/or option date calculation

Reimplemented from TermStructure.

Definition at line 124 of file ultimateforwardtermstructure.hpp.

◆ settlementDays()

Natural settlementDays ( ) const
overridevirtual

the settlementDays used for reference date calculation

Reimplemented from TermStructure.

Definition at line 128 of file ultimateforwardtermstructure.hpp.

◆ referenceDate()

const Date & referenceDate ( ) const
overridevirtual

the date at which discount = 1.0 and/or variance = 0.0

Reimplemented from TermStructure.

Definition at line 132 of file ultimateforwardtermstructure.hpp.

+ Here is the caller graph for this function:

◆ maxDate()

Date maxDate ( ) const
overridevirtual

the latest date for which the curve can return values

Implements TermStructure.

Definition at line 136 of file ultimateforwardtermstructure.hpp.

+ Here is the call graph for this function:

◆ update()

void update ( )
overridevirtual

This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.

Reimplemented from TermStructure.

Definition at line 138 of file ultimateforwardtermstructure.hpp.

+ Here is the call graph for this function:

◆ zeroYieldImpl()

Rate zeroYieldImpl ( Time  t) const
overrideprotectedvirtual

returns the UFR extended zero yield rate

Implements ZeroYieldStructure.

Definition at line 152 of file ultimateforwardtermstructure.hpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ originalCurve_

Handle<YieldTermStructure> originalCurve_
private

Definition at line 94 of file ultimateforwardtermstructure.hpp.

◆ llfr_

Handle<Quote> llfr_
private

Definition at line 95 of file ultimateforwardtermstructure.hpp.

◆ ufr_

Handle<Quote> ufr_
private

Definition at line 96 of file ultimateforwardtermstructure.hpp.

◆ fsp_

Period fsp_
private

Definition at line 97 of file ultimateforwardtermstructure.hpp.

◆ alpha_

Real alpha_
private

Definition at line 98 of file ultimateforwardtermstructure.hpp.