QuantLib
A free/open-source library for quantitative finance
Reference manual - version 1.20
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RecursiveLossModel< copulaPolicy > Class Template Reference

#include <ql/experimental/credit/recursivelossmodel.hpp>

+ Inheritance diagram for RecursiveLossModel< copulaPolicy >:

Public Member Functions

 RecursiveLossModel (const ext::shared_ptr< ConstantLossLatentmodel< copulaPolicy > > &m, Size nbuckets=1)
 
Real expectedTrancheLoss (const Date &date) const
 
Disposable< std::vector< Real > > lossProbability (const Date &date) const
 
Disposable< std::map< Real, Probability > > lossDistribution (const Date &d) const
 Full loss distribution.
 
Real percentile (const Date &d, Real percentile) const
 Value at Risk given a default loss percentile.
 
Real expectedShortfall (const Date &d, Real perctl) const
 Expected shortfall given a default loss percentile.
 
- Public Member Functions inherited from Observable
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
void notifyObservers ()
 

Protected Member Functions

void resetModel ()
 Concrete models do now any updates/inits they need on basket reset.
 
- Protected Member Functions inherited from DefaultLossModel
virtual Probability probOverLoss (const Date &d, Real lossFraction) const
 
virtual Disposable< std::vector< Real > > splitVaRLevel (const Date &d, Real loss) const
 Associated VaR fraction to each counterparty.
 
virtual Disposable< std::vector< Real > > splitESFLevel (const Date &d, Real loss) const
 Associated ESF fraction to each counterparty.
 
virtual Real densityTrancheLoss (const Date &d, Real lossFraction) const
 Probability density of a given loss fraction of the basket notional.
 
virtual Disposable< std::vector< Probability > > probsBeingNthEvent (Size n, const Date &d) const
 
virtual Real defaultCorrelation (const Date &d, Size iName, Size jName) const
 Pearsons' default probability correlation.
 
virtual Probability probAtLeastNEvents (Size n, const Date &d) const
 
virtual Real expectedRecovery (const Date &, Size iName, const DefaultProbKey &) const
 

Protected Attributes

const ext::shared_ptr< ConstantLossLatentmodel< copulaPolicy > > copula_
 
- Protected Attributes inherited from DefaultLossModel
RelinkableHandle< Basketbasket_
 

Detailed Description

template<class copulaPolicy>
class QuantLib::RecursiveLossModel< copulaPolicy >

Recursive STCDO default loss model for a heterogeneous pool of names. The pool names are heterogeneous in their default probabilities, notionals and recovery rates. Correlations are given by the latent model. The recursive pricing algorithm used here is described in Andersen, Sidenius and Basu; "All your hedges in one basket", Risk, November 2003, pages 67-72

Notice that using copulas other than Gaussian it is only an
approximation (see remark on p.68).

\todo Make the loss unit equal to some small fraction depending on the
portfolio loss weights (notionals and recoveries). As it is now this
is ok for pricing but not for risk metrics. See the discussion in O'Kane
18.3.2
\todo Intengrands should all use the inverted probabilities for 
performance instead of calling the copula inversion with the same vals.