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

Base class for yoy inflation cap-like instruments. More...

#include <inflationcapfloor.hpp>

+ Inheritance diagram for YoYInflationCapFloor:
+ Collaboration diagram for YoYInflationCapFloor:

Classes

class  arguments
 Arguments for YoY Inflation cap/floor calculation More...
 
class  engine
 base class for cap/floor engines More...
 

Public Types

enum  Type { Cap , Floor , Collar }
 
- Public Types inherited from Observer
typedef set_type::iterator iterator
 

Public Member Functions

 YoYInflationCapFloor (Type type, Leg yoyLeg, std::vector< Rate > capRates, std::vector< Rate > floorRates)
 
 YoYInflationCapFloor (Type type, Leg yoyLeg, const std::vector< Rate > &strikes)
 
Instrument interface
bool isExpired () const override
 returns whether the instrument might have value greater than zero. More...
 
void setupArguments (PricingEngine::arguments *) const override
 
- Public Member Functions inherited from Instrument
 Instrument ()
 
Real NPV () const
 returns the net present value of the instrument. More...
 
Real errorEstimate () const
 returns the error estimate on the NPV when available. More...
 
const DatevaluationDate () const
 returns the date the net present value refers to. More...
 
template<typename T >
T result (const std::string &tag) const
 returns any additional result returned by the pricing engine. More...
 
const std::map< std::string, ext::any > & additionalResults () const
 returns all additional result returned by the pricing engine. More...
 
void setPricingEngine (const ext::shared_ptr< PricingEngine > &)
 set the pricing engine to be used. More...
 
virtual void fetchResults (const PricingEngine::results *) const
 
- Public Member Functions inherited from LazyObject
 LazyObject ()
 
 ~LazyObject () override=default
 
void update () override
 
bool isCalculated () const
 
void forwardFirstNotificationOnly ()
 
void alwaysForwardNotifications ()
 
void recalculate ()
 
void freeze ()
 
void unfreeze ()
 
- 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 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 ()
 

Inspectors

Type type_
 
Leg yoyLeg_
 
std::vector< RatecapRates_
 
std::vector< RatefloorRates_
 
Type type () const
 
const std::vector< Rate > & capRates () const
 
const std::vector< Rate > & floorRates () const
 
const LegyoyLeg () const
 
Date startDate () const
 
Date maturityDate () const
 
ext::shared_ptr< YoYInflationCouponlastYoYInflationCoupon () const
 
ext::shared_ptr< YoYInflationCapFlooroptionlet (Size n) const
 Returns the n-th optionlet as a cap/floor with only one cash flow. More...
 
virtual Rate atmRate (const YieldTermStructure &discountCurve) const
 
virtual Volatility impliedVolatility (Real price, const Handle< YoYInflationTermStructure > &yoyCurve, Volatility guess, Real accuracy=1.0e-4, Natural maxEvaluations=100, Volatility minVol=1.0e-7, Volatility maxVol=4.0) const
 implied term volatility More...
 

Additional Inherited Members

- Protected Member Functions inherited from Instrument
void calculate () const override
 
virtual void setupExpired () const
 
void performCalculations () const override
 
- Protected Member Functions inherited from LazyObject
- Protected Attributes inherited from Instrument
Real NPV_
 
Real errorEstimate_
 
Date valuationDate_
 
std::map< std::string, ext::any > additionalResults_
 
ext::shared_ptr< PricingEngineengine_
 
- Protected Attributes inherited from LazyObject
bool calculated_ = false
 
bool frozen_ = false
 
bool alwaysForward_
 

Detailed Description

Base class for yoy inflation cap-like instruments.

Note that the standard YoY inflation cap/floor defined here is different from nominal, because in nominal world standard cap/floors do not have the first optionlet. This is because they set in advance so there is no point. However, yoy inflation generally sets (effectively) in arrears, (actually in arrears vs lag of a few months) thus the first optionlet is relevant. Hence we can do a parity test without a special definition of the YoY cap/floor instrument.

Tests:
  • the relationship between the values of caps, floors and the resulting collars is checked.
  • the put-call parity between the values of caps, floors and swaps is checked.
  • the correctness of the returned value is tested by checking it against a known good value.

Definition at line 55 of file inflationcapfloor.hpp.

Member Enumeration Documentation

◆ Type

enum Type
Enumerator
Cap 
Floor 
Collar 

Definition at line 57 of file inflationcapfloor.hpp.

Constructor & Destructor Documentation

◆ YoYInflationCapFloor() [1/2]

YoYInflationCapFloor ( YoYInflationCapFloor::Type  type,
Leg  yoyLeg,
std::vector< Rate capRates,
std::vector< Rate floorRates 
)

Definition at line 44 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:

◆ YoYInflationCapFloor() [2/2]

YoYInflationCapFloor ( YoYInflationCapFloor::Type  type,
Leg  yoyLeg,
const std::vector< Rate > &  strikes 
)

Definition at line 69 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ isExpired()

bool isExpired ( ) const
overridevirtual

returns whether the instrument might have value greater than zero.

Implements Instrument.

Definition at line 94 of file inflationcapfloor.cpp.

◆ setupArguments()

void setupArguments ( PricingEngine::arguments ) const
overridevirtual

When a derived argument structure is defined for an instrument, this method should be overridden to fill it. This is mandatory in case a pricing engine is used.

Reimplemented from Instrument.

Definition at line 133 of file inflationcapfloor.cpp.

◆ type()

Type type ( ) const

Definition at line 72 of file inflationcapfloor.hpp.

+ Here is the caller graph for this function:

◆ capRates()

const std::vector< Rate > & capRates ( ) const

Definition at line 73 of file inflationcapfloor.hpp.

+ Here is the caller graph for this function:

◆ floorRates()

const std::vector< Rate > & floorRates ( ) const

Definition at line 74 of file inflationcapfloor.hpp.

+ Here is the caller graph for this function:

◆ yoyLeg()

const Leg & yoyLeg ( ) const

Definition at line 75 of file inflationcapfloor.hpp.

+ Here is the caller graph for this function:

◆ startDate()

Date startDate ( ) const

Definition at line 101 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:

◆ maturityDate()

Date maturityDate ( ) const

Definition at line 105 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:

◆ lastYoYInflationCoupon()

ext::shared_ptr< YoYInflationCoupon > lastYoYInflationCoupon ( ) const

Definition at line 110 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ optionlet()

ext::shared_ptr< YoYInflationCapFloor > optionlet ( Size  n) const

Returns the n-th optionlet as a cap/floor with only one cash flow.

Definition at line 117 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:

◆ atmRate()

Rate atmRate ( const YieldTermStructure discountCurve) const
virtual

Definition at line 214 of file inflationcapfloor.cpp.

+ Here is the call graph for this function:

◆ impliedVolatility()

Volatility impliedVolatility ( Real  price,
const Handle< YoYInflationTermStructure > &  yoyCurve,
Volatility  guess,
Real  accuracy = 1.0e-4,
Natural  maxEvaluations = 100,
Volatility  minVol = 1.0e-7,
Volatility  maxVol = 4.0 
) const
virtual

implied term volatility

Definition at line 161 of file inflationcapfloor.hpp.

Member Data Documentation

◆ type_

Type type_
private

Definition at line 94 of file inflationcapfloor.hpp.

◆ yoyLeg_

Leg yoyLeg_
private

Definition at line 95 of file inflationcapfloor.hpp.

◆ capRates_

std::vector<Rate> capRates_
private

Definition at line 96 of file inflationcapfloor.hpp.

◆ floorRates_

std::vector<Rate> floorRates_
private

Definition at line 97 of file inflationcapfloor.hpp.