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
CapFloor Class Reference

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

#include <capfloor.hpp>

+ Inheritance diagram for CapFloor:
+ Collaboration diagram for CapFloor:

Classes

class  arguments
 Arguments for 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

 CapFloor (Type type, Leg floatingLeg, std::vector< Rate > capRates, std::vector< Rate > floorRates)
 
 CapFloor (Type type, Leg floatingLeg, const std::vector< Rate > &strikes)
 
Observable interface
void deepUpdate () override
 
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 floatingLeg_
 
std::vector< RatecapRates_
 
std::vector< RatefloorRates_
 
Type type () const
 
const std::vector< Rate > & capRates () const
 
const std::vector< Rate > & floorRates () const
 
const LegfloatingLeg () const
 
Date startDate () const
 
Date maturityDate () const
 
ext::shared_ptr< FloatingRateCouponlastFloatingRateCoupon () const
 
ext::shared_ptr< CapFlooroptionlet (Size n) const
 Returns the n-th optionlet as a new CapFloor with only one cash flow. More...
 
Rate atmRate (const YieldTermStructure &discountCurve) const
 
Volatility impliedVolatility (Real price, const Handle< YieldTermStructure > &disc, Volatility guess, Real accuracy=1.0e-4, Natural maxEvaluations=100, Volatility minVol=1.0e-7, Volatility maxVol=4.0, VolatilityType type=ShiftedLognormal, Real displacement=0.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 cap-like instruments.

Tests:
  • the correctness of the returned value is tested by checking that the price of a cap (resp. floor) decreases (resp. increases) with the strike rate.
  • 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 implied volatility is tested by using it for reproducing the target value.
  • the correctness of the returned value is tested by checking it against a known good value.

Definition at line 55 of file capfloor.hpp.

Member Enumeration Documentation

◆ Type

enum Type
Enumerator
Cap 
Floor 
Collar 

Definition at line 57 of file capfloor.hpp.

Constructor & Destructor Documentation

◆ CapFloor() [1/2]

CapFloor ( CapFloor::Type  type,
Leg  floatingLeg,
std::vector< Rate capRates,
std::vector< Rate floorRates 
)

Definition at line 124 of file capfloor.cpp.

+ Here is the call graph for this function:

◆ CapFloor() [2/2]

CapFloor ( CapFloor::Type  type,
Leg  floatingLeg,
const std::vector< Rate > &  strikes 
)

Definition at line 149 of file capfloor.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ deepUpdate()

void deepUpdate ( )
overridevirtual

This method allows to explicitly update the instance itself and nested observers. If notifications are disabled a call to this method ensures an update of such nested observers. It should be implemented in derived classes whenever applicable

Reimplemented from Observer.

Definition at line 271 of file capfloor.cpp.

+ Here is the call graph for this function:

◆ isExpired()

bool isExpired ( ) const
overridevirtual

returns whether the instrument might have value greater than zero.

Implements Instrument.

Definition at line 172 of file capfloor.cpp.

+ Here is the caller graph for this function:

◆ 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 210 of file capfloor.cpp.

+ Here is the call graph for this function:

◆ type()

Type type ( ) const

Definition at line 76 of file capfloor.hpp.

+ Here is the caller graph for this function:

◆ capRates()

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

Definition at line 77 of file capfloor.hpp.

+ Here is the caller graph for this function:

◆ floorRates()

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

Definition at line 78 of file capfloor.hpp.

+ Here is the caller graph for this function:

◆ floatingLeg()

const Leg & floatingLeg ( ) const

Definition at line 79 of file capfloor.hpp.

+ Here is the caller graph for this function:

◆ startDate()

Date startDate ( ) const

Definition at line 179 of file capfloor.cpp.

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

◆ maturityDate()

Date maturityDate ( ) const

Definition at line 183 of file capfloor.cpp.

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

◆ lastFloatingRateCoupon()

ext::shared_ptr< FloatingRateCoupon > lastFloatingRateCoupon ( ) const

Definition at line 188 of file capfloor.cpp.

+ Here is the caller graph for this function:

◆ optionlet()

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

Returns the n-th optionlet as a new CapFloor with only one cash flow.

Definition at line 195 of file capfloor.cpp.

+ Here is the call graph for this function:

◆ atmRate()

Rate atmRate ( const YieldTermStructure discountCurve) const

Definition at line 315 of file capfloor.cpp.

+ Here is the call graph for this function:

◆ impliedVolatility()

Volatility impliedVolatility ( Real  price,
const Handle< YieldTermStructure > &  disc,
Volatility  guess,
Real  accuracy = 1.0e-4,
Natural  maxEvaluations = 100,
Volatility  minVol = 1.0e-7,
Volatility  maxVol = 4.0,
VolatilityType  type = ShiftedLognormal,
Real  displacement = 0.0 
) const

implied term volatility

Definition at line 323 of file capfloor.cpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ type_

Type type_
private

Definition at line 100 of file capfloor.hpp.

◆ floatingLeg_

Leg floatingLeg_
private

Definition at line 101 of file capfloor.hpp.

◆ capRates_

std::vector<Rate> capRates_
private

Definition at line 102 of file capfloor.hpp.

◆ floorRates_

std::vector<Rate> floorRates_
private

Definition at line 103 of file capfloor.hpp.