DefaultLatentModel< copulaPolicy > Class Template Reference

Default event Latent Model. More...

`#include <ql/experimental/credit/defaultprobabilitylatentmodel.hpp>`

Inheritance diagram for DefaultLatentModel< copulaPolicy >:
[legend]

## Public Member Functions

| DefaultLatentModel (const std::vector< std::vector< Real > > &factorWeights, LatentModelIntegrationType::LatentModelIntegrationType integralType, const initTraits &ini=initTraits())
| DefaultLatentModel (const Handle< Quote > &mktCorrel, Size nVariables, LatentModelIntegrationType::LatentModelIntegrationType integralType, const initTraits &ini=initTraits())
void | resetBasket (const boost::shared_ptr< Basket > basket) const
Probability | conditionalDefaultProbability (Probability prob, Size iName, const std::vector< Real > &mktFactors) const
Probability | conditionalDefaultProbabilityInvP (Real invCumYProb, Size iName, const std::vector< Real > &m) const
Probability | probOfDefault (Size iName, const Date &d) const
Real | defaultCorrelation (const Date &d, Size iNamei, Size iNamej) const
Probability | probAtLeastNEvents (Size n, const Date &date) const
Public Member Functions inherited from LatentModel< copulaPolicy >
void | update ()
Real | latentVarValue (const std::vector< Real > &allFactors, Size iVar) const
const copulaType & | copula () const
Size | size () const
Size | numFactors () const
| Number of systemic factors.
Size | numTotalFactors () const
| Number of total free random factors; systemic and idiosyncratic.
| LatentModel (const std::vector< std::vector< Real > > &factorsWeights, const typename copulaType::initTraits &ini=copulaType::initTraits())
| LatentModel (const std::vector< Real > &factorsWeight, const typename copulaType::initTraits &ini=copulaType::initTraits())
| LatentModel (const Real correlSqr, Size nVariables, const typename copulaType::initTraits &ini=copulaType::initTraits())
| LatentModel (const Handle< Quote > &singleFactorCorrel, Size nVariables, const typename copulaType::initTraits &ini=copulaType::initTraits())
const std::vector< std::vector< Real > > & | factorWeights () const
| Provides values of the factors \( a_{i,k} \).
const std::vector< Real > & | idiosyncFctrs () const
| Provides values of the normalized idiosyncratic factors \( Z_i \).
Real | latentVariableCorrel (Size iVar1, Size iVar2) const
| Latent variable correlations:
Probability | cumulativeY (Real val, Size iVariable) const
Probability | cumulativeZ (Real z) const
| Cumulative distribution of Z, the idiosyncratic/error factors.
Probability | density (const std::vector< Real > &m) const
| Density function of M, the market/systemic factors.
Real | inverseCumulativeDensity (Probability p, Size iFactor) const
| Inverse cumulative distribution of the systemic factor iFactor.
Real | inverseCumulativeY (Probability p, Size iVariable) const
Real | inverseCumulativeZ (Probability p) const
Disposable< std::vector< Real > > | allFactorCumulInverter (const std::vector< Real > &probs) const
Real | integratedExpectedValue (const boost::function< Real(const std::vector< Real > &v1)> &f) const
Disposable< std::vector< Real > > | integratedExpectedValue (const boost::function< Disposable< std::vector< Real > >(const std::vector< Real > &v1)> &f) const
Public Member Functions inherited from Observer
| Observer (const Observer &)
Observer & | operator= (const Observer &)
std::pair< std::set< boost::shared_ptr< Observable > >::iterator, bool > | registerWith (const boost::shared_ptr< Observable > &)
void | registerWithObservables (const boost::shared_ptr< Observer > &)
Size | unregisterWith (const boost::shared_ptr< Observable > &)
void | unregisterWithAll ()
Public Member Functions inherited from Observable
| Observable (const Observable &)
Observable & | operator= (const Observable &)
void | notifyObservers ()

## Protected Member Functions

void | update ()
Probability | conditionalDefaultProbability (const Date &date, Size iName, const std::vector< Real > &mktFactors) const
Probability | condProbProduct (Real invCumYProb1, Real invCumYProb2, Size iName1, Size iName2, const std::vector< Real > &mktFactors) const
Real | conditionalProbAtLeastNEvents (Size n, const Date &date, const std::vector< Real > &mktFactors) const
| Conditional probability of n default events or more.
const boost::shared_ptr< LMIntegration > & | integration () const
| access to integration:
Protected Member Functions inherited from LatentModel< copulaPolicy >

## Protected Attributes

boost::shared_ptr< Basket > | basket_
boost::shared_ptr< LMIntegration > | integration_
Protected Attributes inherited from LatentModel< copulaPolicy >
std::vector< std::vector< Real > > | factorWeights_
Handle< Quote > | cachedMktFactor_
std::vector< Real > | idiosyncFctrs_
Size | nFactors_
| Number of systemic factors.
Size | nVariables_
| Number of latent model variables, idiosyncratic terms or model dim.
copulaType | copula_

## Additional Inherited Members

Public Types inherited from LatentModel< copulaPolicy >
typedef copulaPolicy | copulaType

## Detailed Description

### template<class copulaPolicy>
class QuantLib::DefaultLatentModel< copulaPolicy >

Default event Latent Model.

This is a model for joint default events based on a generic Latent Model. It models solely the default events in a portfolio, not making any reference to severities, exposures, etc... An implicit correspondence is stablished between the variables modelled and the names in the basket given by the basket and model variable access indices. The class is parametric on the Latent Model copula.

## Constructor & Destructor Documentation

DefaultLatentModel | ( | const std::vector< std::vector< Real > > & | factorWeights,
|  | LatentModelIntegrationType::LatentModelIntegrationType | integralType,
|  | const initTraits & | ini = `initTraits()`
| ) |  |

Parameters

  factorWeights | Latent model independent factors weights for each variable.
  ini | Copula initialization if any.

Warning:
  Baskets with realized defaults not tested/WIP.

## Member Function Documentation

Probability conditionalDefaultProbability | ( | Probability | prob,
|  | Size | iName,
|  | const std::vector< Real > & | mktFactors
| ) |  | const

Returns the probability of default of a given name conditional on the realization of a given set of values of the model independent factors. The date at which the probability is given is implicit in the probability since theres not other time dependence in this model.

Parameters

  prob | Unconditional probability of default.
  iName | desired name.
  mktFactors | Value of LM independent factors.

Warning:
  Most often it is preferred to use the method below avoiding the cumulative inversion.

void update | ( |  | ) |

protected virtual

This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.

Implements Observer.

Probability conditionalDefaultProbabilityInvP | ( | Real | invCumYProb,
|  | Size | iName,
|  | const std::vector< Real > & | m
| ) |  | const

Returns the probability of default of a given name conditional on the realization of a given set of values of the model independent factors. The date at which the probability is given is implicit in the probability since theres not other time dependent in this model. Same intention as above but provides a performance opportunity, if the integration is along the market factors (as usually is) avoids computing the inverse of the probability on each call.

Parameters

  invCumYProb | Inverse cumul of the unconditional probability of default, has to follow the same copula law for results to be coherent
  iName | desired name.
  m | Value of LM independent factors.

Probability conditionalDefaultProbability | ( | const Date & | date,
|  | Size | iName,
|  | const std::vector< Real > & | mktFactors
| ) |  | const

protected

Returns the probability of default of a given name conditional on the realization of a given set of values of the model independent factors.

Parameters

  date | The date for the probability of default.
  iName | desired name.
  mktFactors | Value of LM independent factors.

Same intention as the above methods. Usage of this one is typically more expensive because most often the date we call this method with repeats itself and with this one the probability can not be cached outside the call.

Probability condProbProduct | ( | Real | invCumYProb1,
|  | Real | invCumYProb2,
|  | Size | iName1,
|  | Size | iName2,
|  | const std::vector< Real > & | mktFactors
| ) |  | const

protected

Conditional default probability product, intermediate step in the correlation calculation.

Probability probOfDefault | ( | Size | iName,
|  | const Date & | d
| ) |  | const

Computes the unconditional probability of default of a given name. Trivial method for testing

Real defaultCorrelation | ( | const Date & | d,
|  | Size | iNamei,
|  | Size | iNamej
| ) |  | const

Pearsons' default probability correlation. Users should consider specialization on the copula type for specific distributions since that might simplify the integrations, most importantly if this is to be used in calibration of observations for factor coefficients as it is expensive to integrate directly.

Probability probAtLeastNEvents | ( | Size | n,
|  | const Date & | date
| ) |  | const

Returns the probaility of having a given or larger number of defaults in the basket portfolio at a given time.