Logo
Reference manual - version qle_version
BlackIndexCdsOptionEngine Class Reference

#include <qle/pricingengines/blackindexcdsoptionengine.hpp>

Inheritance diagram for BlackIndexCdsOptionEngine:

Public Member Functions

 IndexCdsOptionBaseEngine (const QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > &probability, QuantLib::Real recovery, const Handle< YieldTermStructure > &discountSwapCurrency, const Handle< YieldTermStructure > &discountTradeCollateral, const QuantLib::Handle< QuantExt::CreditVolCurve > &volatility, const bool generateAdditionalResults=true)
 Constructor taking a default probability term structure bootstrapped from the index spreads.
 IndexCdsOptionBaseEngine (const std::vector< QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > > &probabilities, const std::vector< QuantLib::Real > &recoveries, const Handle< YieldTermStructure > &discountSwapCurrency, const Handle< YieldTermStructure > &discountTradeCollateral, const QuantLib::Handle< QuantExt::CreditVolCurve > &volatility, QuantLib::Real indexRecovery=QuantLib::Null< QuantLib::Real >(), const bool generateAdditionalResults=true)
Public Member Functions inherited from IndexCdsOptionBaseEngine
 IndexCdsOptionBaseEngine (const QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > &probability, QuantLib::Real recovery, const Handle< YieldTermStructure > &discountSwapCurrency, const Handle< YieldTermStructure > &discountTradeCollateral, const QuantLib::Handle< QuantExt::CreditVolCurve > &volatility, const bool generateAdditionalResults=true)
 Constructor taking a default probability term structure bootstrapped from the index spreads.
 IndexCdsOptionBaseEngine (const std::vector< QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > > &probabilities, const std::vector< QuantLib::Real > &recoveries, const Handle< YieldTermStructure > &discountSwapCurrency, const Handle< YieldTermStructure > &discountTradeCollateral, const QuantLib::Handle< QuantExt::CreditVolCurve > &volatility, QuantLib::Real indexRecovery=QuantLib::Null< QuantLib::Real >(), const bool generateAdditionalResults=true)
const std::vector< QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > > & probabilities () const
const std::vector< QuantLib::Real > & recoveries () const
const QuantLib::Handle< QuantLib::YieldTermStructure > discountSwapCurrency () const
const QuantLib::Handle< QuantLib::YieldTermStructure > discountTradeCollateral () const
const QuantLib::Handle< QuantExt::CreditVolCurvevolatility () const
void calculate () const override

Additional Inherited Members

void registerWithMarket ()
 Register with market data.
QuantLib::Real fep () const
 Calculate the discounted value of the front end protection.
QuantLib::Real unrealizedFep () const
QuantLib::Real realizedFep () const
std::vector< QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > > probabilities_
 Store inputs.
std::vector< QuantLib::Real > recoveries_
QuantLib::Handle< QuantLib::YieldTermStructure > discountSwapCurrency_
QuantLib::Handle< QuantLib::YieldTermStructure > discountTradeCollateral_
QuantLib::Handle< QuantExt::CreditVolCurvevolatility_
QuantLib::Real indexRecovery_
 Assumed index recovery used in the flat strike spread curve calculation if provided.
bool generateAdditionalResults_
std::vector< QuantLib::Real > notionals_
 Store the underlying index CDS notional(s) during calculation.
QuantLib::Real unrealizedFep_
QuantLib::Real realizedFep_
QuantLib::Real totalFep_

Detailed Description

Black index CDS option engine

Prices index CDS option instruments quoted in terms of strike spread or strike price. If the strike is in terms of spread, it is assumed that the volatility structure's strike dimension, if there is one, is in terms of spread also. This is the standard quotation convention for investment grade index families like CDX IG and ITraxx Europe. If the strike is in terms of price, it is assumed that the volatility structure's strike dimension, if there is one, is in terms of price also. This is the standard quotation convention for high yield index families like CDX HY and CDX EM.

The valuation of the index CDS options with strike price is a reasonably straightforward application of Black's formula. The approach is outlined for example in Mark-to-market Credit Index Option Pricing and Credit Volatility Index, John Yang and Lukasz Dobrek, 23 June 2015, Section 1.1. Here, we calculate the front end protection (FEP) adjusted forward price as opposed to deriving it from the market quotes of payer and receiver CDS options with the same strike.

The valuation of the index CDS options with strike spread follows the approach outlined in Modelling Single-name and Multi-name Credit Derivatives, Dominic O'Kane, 2008, Section 11.7. This is also the approach outlined in Credit Index Option, ICE, 2018.

Member Function Documentation

◆ IndexCdsOptionBaseEngine()

IndexCdsOptionBaseEngine ( const std::vector< QuantLib::Handle< QuantLib::DefaultProbabilityTermStructure > > & probabilities,
const std::vector< QuantLib::Real > & recoveries,
const Handle< YieldTermStructure > & discountSwapCurrency,
const Handle< YieldTermStructure > & discountTradeCollateral,
const QuantLib::Handle< QuantExt::CreditVolCurve > & volatility,
QuantLib::Real indexRecovery = QuantLib::Null<QuantLib::Real>(),
const bool generateAdditionalResults = true )

Constructor taking a vector of default probability term structures bootstrapped from the index constituent spread curves and a vector of associated recovery rates.