Public Member Functions | |
SwaptionVolCube2 (const Handle< SwaptionVolatilityStructure > &atmVolStructure, const std::vector< Period > &optionTenors, const std::vector< Period > &swapTenors, const std::vector< Spread > &strikeSpreads, const std::vector< std::vector< Handle< Quote > > > &volSpreads, const boost::shared_ptr< SwapIndex > &swapIndexBase, const boost::shared_ptr< SwapIndex > &shortSwapIndexBase, bool vegaWeightedSmileFit, bool flatExtrapolation, bool volsAreSpreads=true) | |
LazyObject interface | |
void | performCalculations () const override |
SwaptionVolCube2 | ( | const Handle< SwaptionVolatilityStructure > & | atmVolStructure, |
const std::vector< Period > & | optionTenors, | ||
const std::vector< Period > & | swapTenors, | ||
const std::vector< Spread > & | strikeSpreads, | ||
const std::vector< std::vector< Handle< Quote > > > & | volSpreads, | ||
const boost::shared_ptr< SwapIndex > & | swapIndexBase, | ||
const boost::shared_ptr< SwapIndex > & | shortSwapIndexBase, | ||
bool | vegaWeightedSmileFit, | ||
bool | flatExtrapolation, | ||
bool | volsAreSpreads = true |
||
) |
The swaption vol cube is made up of ordered swaption vol surface layers, each layer referring to a swap index of a given length (in years), all indexes belonging to the same family. In order to identify the family (and its market conventions) an index of whatever length from that family must be passed in as swapIndexBase.
Often for short swap length the swap index family is different, e.g. the EUR case: swap vs 6M Euribor is used for length>1Y, while swap vs 3M Euribor is used for the 1Y length. The shortSwapIndexBase is used to identify this second family.
If flatExtrapolation is true the implied volatility is extrapolated flat in strike direction.
in case volsAreSpreads is false the given volSpreads are interpreted as absolute vols, in this case the volSpreads inspectors also return absolute vols