Credit default swap. More...
#include <ql/instruments/creditdefaultswap.hpp>
 Inheritance diagram for CreditDefaultSwap:
 Inheritance diagram for CreditDefaultSwap:| Public Types | |
| enum | PricingModel { Midpoint, ISDA } | 
|  Public Types inherited from Observer | |
| typedef std::set< boost::shared_ptr< Observable > > | set_type | 
| typedef set_type::iterator | iterator | 
| Public Member Functions | |
| Constructors | |
| CreditDefaultSwap (Protection::Side side, Real notional, Rate spread, const Schedule &schedule, BusinessDayConvention paymentConvention, const DayCounter &dayCounter, bool settlesAccrual=true, bool paysAtDefaultTime=true, const Date &protectionStart=Date(), const boost::shared_ptr< Claim > &=boost::shared_ptr< Claim >(), const DayCounter &lastPeriodDayCounter=DayCounter(), const bool rebatesAccrual=true) | |
| CDS quoted as running-spread only.  More... | |
| CreditDefaultSwap (Protection::Side side, Real notional, Rate upfront, Rate spread, const Schedule &schedule, BusinessDayConvention paymentConvention, const DayCounter &dayCounter, bool settlesAccrual=true, bool paysAtDefaultTime=true, const Date &protectionStart=Date(), const Date &upfrontDate=Date(), const boost::shared_ptr< Claim > &=boost::shared_ptr< Claim >(), const DayCounter &lastPeriodDayCounter=DayCounter(), const bool rebatesAccrual=true) | |
| CDS quoted as upfront and running spread.  More... | |
| Inspectors | |
| Protection::Side | side () const | 
| Real | notional () const | 
| Rate | runningSpread () const | 
| boost::optional< Rate > | upfront () const | 
| bool | settlesAccrual () const | 
| bool | paysAtDefaultTime () const | 
| const Leg & | coupons () const | 
| const Date & | protectionStartDate () const | 
| The first date for which defaults will trigger the contract. | |
| const Date & | protectionEndDate () const | 
| The last date for which defaults will trigger the contract. | |
| bool | rebatesAccrual () const | 
| Results | |
| Rate | fairUpfront () const | 
| Rate | fairSpread () const | 
| Real | couponLegBPS () const | 
| Real | upfrontBPS () const | 
| Real | couponLegNPV () const | 
| Real | defaultLegNPV () const | 
| Real | upfrontNPV () const | 
| Real | accrualRebateNPV () const | 
| Rate | impliedHazardRate (Real targetNPV, const Handle< YieldTermStructure > &discountCurve, const DayCounter &dayCounter, Real recoveryRate=0.4, Real accuracy=1.0e-8, PricingModel model=Midpoint) const | 
| Implied hazard rate calculation.  More... | |
| Rate | conventionalSpread (Real conventionalRecovery, const Handle< YieldTermStructure > &discountCurve, const DayCounter &dayCounter, PricingModel model=Midpoint) const | 
| Conventional/standard upfront-to-spread conversion.  More... | |
|  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 boost::shared_ptr< PricingEngine > &) | 
| set the pricing engine to be used.  More... | |
|  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 boost::shared_ptr< Observable > &) | 
| void | registerWithObservables (const boost::shared_ptr< Observer > &) | 
| Size | unregisterWith (const boost::shared_ptr< Observable > &) | 
| void | unregisterWithAll () | 
| virtual void | deepUpdate () | 
| Protected Attributes | |
| Protection::Side | side_ | 
| Real | notional_ | 
| boost::optional< Rate > | upfront_ | 
| Rate | runningSpread_ | 
| bool | settlesAccrual_ | 
| bool | paysAtDefaultTime_ | 
| boost::shared_ptr< Claim > | claim_ | 
| Leg | leg_ | 
| boost::shared_ptr< CashFlow > | upfrontPayment_ | 
| boost::shared_ptr< CashFlow > | accrualRebate_ | 
| Date | protectionStart_ | 
| Date | maturity_ | 
| Rate | fairUpfront_ | 
| Rate | fairSpread_ | 
| Real | couponLegBPS_ | 
| Real | couponLegNPV_ | 
| Real | upfrontBPS_ | 
| Real | upfrontNPV_ | 
| Real | defaultLegNPV_ | 
| Real | accrualRebateNPV_ | 
|  Protected Attributes inherited from Instrument | |
| boost::shared_ptr< PricingEngine > | engine_ | 
| Real | NPV_ | 
| Real | errorEstimate_ | 
| Date | valuationDate_ | 
| std::map< std::string, boost::any > | additionalResults_ | 
|  Protected Attributes inherited from LazyObject | |
| bool | calculated_ | 
| bool | frozen_ | 
| bool | alwaysForward_ | 
| Instrument interface | |
| bool | isExpired () const | 
| returns whether the instrument might have value greater than zero. | |
| void | setupArguments (PricingEngine::arguments *) const | 
| void | fetchResults (const PricingEngine::results *) const | 
| void | setupExpired () const | 
| Additional Inherited Members | |
|  Protected Member Functions inherited from Instrument | |
| void | calculate () const | 
| virtual void | performCalculations () const | 
|  Protected Member Functions inherited from LazyObject | |
Credit default swap.
Settings::includeReferenceDateCashFlows() is set to true, payments occurring at the settlement date of the swap might be included in the NPV and therefore affect the fair-spread calculation. This might not be what you want.| CreditDefaultSwap | ( | Protection::Side | side, | 
| Real | notional, | ||
| Rate | spread, | ||
| const Schedule & | schedule, | ||
| BusinessDayConvention | paymentConvention, | ||
| const DayCounter & | dayCounter, | ||
| bool | settlesAccrual = true, | ||
| bool | paysAtDefaultTime = true, | ||
| const Date & | protectionStart = Date(), | ||
| const boost::shared_ptr< Claim > & | = boost::shared_ptr< Claim >(), | ||
| const DayCounter & | lastPeriodDayCounter = DayCounter(), | ||
| const bool | rebatesAccrual = true | ||
| ) | 
CDS quoted as running-spread only.
| side | Whether the protection is bought or sold. | 
| notional | Notional value | 
| spread | Running spread in fractional units. | 
| schedule | Coupon schedule. | 
| paymentConvention | Business-day convention for payment-date adjustment. | 
| dayCounter | Day-count convention for accrual. | 
| settlesAccrual | Whether or not the accrued coupon is due in the event of a default. | 
| paysAtDefaultTime | If set to true, any payments triggered by a default event are due at default time. If set to false, they are due at the end of the accrual period. | 
| protectionStart | The first date where a default event will trigger the contract. Typically T+1 Notice there is no default lookback period and protection start here. In the way it determines the dirty amount it is more like the trade execution date. | 
| lastPeriodDayCounter | Day-count convention for accrual in last period | 
| rebatesAccrual | The protection seller pays the accrued scheduled current coupon at the start of the contract. The rebate date is not provided but computed to be two days after protection start. | 
| CreditDefaultSwap | ( | Protection::Side | side, | 
| Real | notional, | ||
| Rate | upfront, | ||
| Rate | spread, | ||
| const Schedule & | schedule, | ||
| BusinessDayConvention | paymentConvention, | ||
| const DayCounter & | dayCounter, | ||
| bool | settlesAccrual = true, | ||
| bool | paysAtDefaultTime = true, | ||
| const Date & | protectionStart = Date(), | ||
| const Date & | upfrontDate = Date(), | ||
| const boost::shared_ptr< Claim > & | = boost::shared_ptr< Claim >(), | ||
| const DayCounter & | lastPeriodDayCounter = DayCounter(), | ||
| const bool | rebatesAccrual = true | ||
| ) | 
CDS quoted as upfront and running spread.
| side | Whether the protection is bought or sold. | 
| notional | Notional value | 
| upfront | Upfront in fractional units. | 
| spread | Running spread in fractional units. | 
| schedule | Coupon schedule. | 
| paymentConvention | Business-day convention for payment-date adjustment. | 
| dayCounter | Day-count convention for accrual. | 
| settlesAccrual | Whether or not the accrued coupon is due in the event of a default. | 
| paysAtDefaultTime | If set to true, any payments triggered by a default event are due at default time. If set to false, they are due at the end of the accrual period. | 
| protectionStart | The first date where a default event will trigger the contract. Typically T+1 Notice there is no default lookback period and protection start here. In the way it determines the dirty amount it is more like the trade execution date. | 
| upfrontDate | Settlement date for the upfront and accrual rebate (if any) payments. Typically T+3, this is also the default value. | 
| lastPeriodDayCounter | Day-count convention for accrual in last period | 
| rebatesAccrual | The protection seller pays the accrued scheduled current coupon at the start of the contract. The rebate date is not provided but computed to be two days after protection start. | 
| 
 | 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.
| 
 | virtual | 
When a derived result structure is defined for an instrument, this method should be overridden to read from it. This is mandatory in case a pricing engine is used.
Reimplemented from Instrument.
| Rate fairUpfront | ( | ) | const | 
Returns the upfront spread that, given the running spread and the quoted recovery rate, will make the instrument have an NPV of 0.
| Rate fairSpread | ( | ) | const | 
Returns the running spread that, given the quoted recovery rate, will make the running-only CDS have an NPV of 0.
| Real couponLegBPS | ( | ) | const | 
Returns the variation of the fixed-leg value given a one-basis-point change in the running spread.
| Rate impliedHazardRate | ( | Real | targetNPV, | 
| const Handle< YieldTermStructure > & | discountCurve, | ||
| const DayCounter & | dayCounter, | ||
| Real | recoveryRate = 0.4, | ||
| Real | accuracy = 1.0e-8, | ||
| PricingModel | model = Midpoint | ||
| ) | const | 
Implied hazard rate calculation.
| Rate conventionalSpread | ( | Real | conventionalRecovery, | 
| const Handle< YieldTermStructure > & | discountCurve, | ||
| const DayCounter & | dayCounter, | ||
| PricingModel | model = Midpoint | ||
| ) | const | 
Conventional/standard upfront-to-spread conversion.
Under a standard ISDA model and a set of standardised instrument characteristics, it is the running only quoted spread that will make a CDS contract have an NPV of 0 when quoted for that running only spread. Refer to: "ISDA Standard CDS converter specification." May 2009.
The conventional recovery rate to apply in the calculation is as specified by ISDA, not necessarily equal to the market-quoted one. It is typically 0.4 for SeniorSec and 0.2 for subordinate.
| 
 | protectedvirtual | 
This method must leave the instrument in a consistent state when the expiration condition is met.
Reimplemented from Instrument.