YoYInflationCapFloor Class Reference
Financial instruments

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

`#include <ql/instruments/inflationcapfloor.hpp>`

Inheritance diagram for YoYInflationCapFloor:
[legend]

## 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 boost::unordered_set< ext::shared_ptr< Observable > > | set_type
typedef set_type::iterator | iterator

## Public Member Functions

| YoYInflationCapFloor (Type type, const Leg &yoyLeg, const std::vector< Rate > &capRates, const std::vector< Rate > &floorRates)
| YoYInflationCapFloor (Type type, const Leg &yoyLeg, const std::vector< Rate > &strikes)
Instrument interface
bool | isExpired () const
| returns whether the instrument might have value greater than zero.
void | setupArguments (PricingEngine::arguments *) const
Public Member Functions inherited from Instrument
Real | NPV () const
| returns the net present value of the instrument.
Real | errorEstimate () const
| returns the error estimate on the NPV when available.
const Date & | valuationDate () const
| returns the date the net present value refers to.
template<typename T >
T | result (const std::string &tag) const
| returns any additional result returned by the pricing engine.
const std::map< std::string, boost::any > & | additionalResults () const
| returns all additional result returned by the pricing engine.
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
void | update ()
void | recalculate ()
void | freeze ()
void | unfreeze ()
void | alwaysForwardNotifications ()
Public Member Functions inherited from Observable
| Observable (const Observable &)
Observable & | operator= (const Observable &)
void | notifyObservers ()
Public Member Functions inherited from Observer
| Observer (const Observer &)
Observer & | operator= (const Observer &)
std::pair< iterator, bool > | registerWith (const ext::shared_ptr< Observable > &)
void | registerWithObservables (const ext::shared_ptr< Observer > &)
Size | unregisterWith (const ext::shared_ptr< Observable > &)
void | unregisterWithAll ()
virtual void | deepUpdate ()

## Inspectors

Type | type () const
const std::vector< Rate > & | capRates () const
const std::vector< Rate > & | floorRates () const
const Leg & | yoyLeg () const
Date | startDate () const
Date | maturityDate () const
ext::shared_ptr< YoYInflationCoupon > | lastYoYInflationCoupon () const
ext::shared_ptr< YoYInflationCapFloor > | optionlet (Size n) const
| Returns the n-th optionlet as a cap/floor with only one cash flow.
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

## Additional Inherited Members

Protected Member Functions inherited from Instrument
void | calculate () const
virtual void | setupExpired () const
virtual void | performCalculations () const
Protected Member Functions inherited from LazyObject
Protected Attributes inherited from Instrument
Real | NPV_
Real | errorEstimate_
Date | valuationDate_
std::map< std::string, boost::any > | additionalResults_
ext::shared_ptr< PricingEngine > | engine_
Protected Attributes inherited from LazyObject
bool | calculated_
bool | frozen_
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.

## Member Function Documentation

## setupArguments()

void setupArguments | ( | PricingEngine::arguments * |  | ) | const

virtual

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.