Base class for yoy inflation cap-like instruments. More...
#include <ql/instruments/inflationcapfloor.hpp>
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 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) | |
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 | |
Instrument interface | |
bool | isExpired () const |
returns whether the instrument might have value greater than zero. | |
void | setupArguments (PricingEngine::arguments *) const |
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 |
boost::shared_ptr < YoYInflationCoupon > | lastYoYInflationCoupon () const |
boost::shared_ptr < YoYInflationCapFloor > | optionlet (const Size n) const |
Returns the n-th optionlet as a cap/floor with only one cash flow. | |
![]() | |
virtual void | fetchResults (const PricingEngine::results *) const |
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 boost::shared_ptr< PricingEngine > &) |
set the pricing engine to be used. | |
![]() | |
void | update () |
void | recalculate () |
void | freeze () |
void | unfreeze () |
![]() | |
Observable (const Observable &) | |
Observable & | operator= (const Observable &) |
void | notifyObservers () |
![]() | |
Observer (const Observer &) | |
Observer & | operator= (const Observer &) |
std::pair< std::set < boost::shared_ptr < Observable > >::iterator, bool > | registerWith (const boost::shared_ptr< Observable > &) |
Size | unregisterWith (const boost::shared_ptr< Observable > &) |
void | unregisterWithAll () |
Additional Inherited Members | |
![]() | |
void | calculate () const |
virtual void | setupExpired () const |
virtual void | performCalculations () const |
![]() | |
boost::shared_ptr< PricingEngine > | engine_ |
Real | NPV_ |
Real | errorEstimate_ |
Date | valuationDate_ |
std::map< std::string, boost::any > | additionalResults_ |
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.
|
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.