QuantLib: a free/open-source library for quantitative finance
Reference manual - version 1.40
Loading...
Searching...
No Matches
RandomLM< derivedRandomLM, copulaPolicy, USNG > Class Template Reference

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

Inheritance diagram for RandomLM< derivedRandomLM, copulaPolicy, USNG >:

Protected Member Functions

 RandomLM (Size numFactors, Size numLMVars, copulaPolicy copula, Size nSims, BigNatural seed)
void update () override
void performCalculations () const override
void performSimulations () const
const std::vector< simEvent< derivedRandomLM< copulaPolicy, USNG > > > & getSim (const Size iSim) const
Real getEventRecovery (const simEvent< derivedRandomLM< copulaPolicy, USNG > > &evt) const
virtual void calculate () const
virtual Probability probOverLoss (const Date &d, Real lossFraction) const
virtual std::vector< RealsplitESFLevel (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 Real expectedRecovery (const Date &, Size iName, const DefaultProbKey &) const

Statistics, DefaultLossModel interface.

const Size numFactors_
const Size numLMVars_
const Size nSims_
std::vector< std::vector< simEvent< derivedRandomLM< copulaPolicy, USNG > > > > simsBuffer_
copulaPolicy copula_
ext::shared_ptr< copulaRNG_type > copulasRng_
static const Size maxHorizon_ = 4050
Probability probAtLeastNEvents (Size n, const Date &d) const override
std::vector< ProbabilityprobsBeingNthEvent (Size n, const Date &d) const override
Real defaultCorrelation (const Date &d, Size iName, Size jName) const override
 Pearsons' default probability correlation.
Real expectedTrancheLoss (const Date &d) const override
virtual std::pair< Real, RealexpectedTrancheLossInterval (const Date &d, Probability confidencePerc) const
std::map< Real, ProbabilitylossDistribution (const Date &d) const override
 Full loss distribution.
virtual Histogram computeHistogram (const Date &d) const
Real expectedShortfall (const Date &d, Real percent) const override
 Expected shortfall given a default loss percentile.
Real percentile (const Date &d, Real percentile) const override
 Value at Risk given a default loss percentile.
virtual std::tuple< Real, Real, RealpercentileAndInterval (const Date &d, Real percentile) const
std::vector< RealsplitVaRLevel (const Date &date, Real loss) const override
virtual std::vector< std::vector< Real > > splitVaRAndError (const Date &date, Real loss, Probability confInterval) const

Additional Inherited Members

Public Types inherited from Observer
typedef set_type::iterator iterator
Public Member Functions inherited from LazyObject
bool isCalculated () const
void forwardFirstNotificationOnly ()
void alwaysForwardNotifications ()
void recalculate ()
void freeze ()
void unfreeze ()
Public Member Functions inherited from Observable
 Observable (const Observable &)
Observableoperator= (const Observable &)
 Observable (Observable &&)=delete
Observableoperator= (Observable &&)=delete
void notifyObservers ()
Public Member Functions inherited from Observer
 Observer (const Observer &)
Observeroperator= (const Observer &)
std::pair< iterator, bool > registerWith (const ext::shared_ptr< Observable > &)
void registerWithObservables (const ext::shared_ptr< Observer > &)
Size unregisterWith (const ext::shared_ptr< Observable > &)
void unregisterWithAll ()
virtual void deepUpdate ()
bool calculated_ = false
bool frozen_ = false
bool alwaysForward_
Protected Attributes inherited from DefaultLossModel
RelinkableHandle< Basketbasket_

Detailed Description

template<template< class, class > class derivedRandomLM, class copulaPolicy, class USNG = SobolRsg>
class QuantLib::RandomLM< derivedRandomLM, copulaPolicy, USNG >

Base class for latent model monte carlo simulation. Independent of the copula type and the generator. Generates the factors and variable samples and determines event threshold but it is not responsible for actual event specification; thats the derived classes responsibility according to what they model. Derived classes need mainly to implement nextSample (Worker::nextSample in the multithreaded version) to compute the simulation event generated, if any, from the latent variables sample. They also have the accompanying event trait to specify.

Member Function Documentation

◆ update()

template<template< class, class > class derivedRandomLM, class copulaPolicy, class USNG = SobolRsg>
void update ( )
overrideprotectedvirtual

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.

Reimplemented from LazyObject.

◆ performCalculations()

template<template< class, class > class derivedRandomLM, class copulaPolicy, class USNG = SobolRsg>
void performCalculations ( ) const
overrideprotectedvirtual

This method must implement any calculations which must be (re)done in order to calculate the desired results.

Implements LazyObject.

◆ probAtLeastNEvents()

template<template< class, class > class D, class C, class URNG>
Probability probAtLeastNEvents ( Size n,
const Date & d ) const
overrideprotectedvirtual

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

Reimplemented from DefaultLossModel.

◆ probsBeingNthEvent()

template<template< class, class > class D, class C, class URNG>
std::vector< Probability > probsBeingNthEvent ( Size n,
const Date & d ) const
overrideprotectedvirtual

Order of results refers to the simulated (super)pool not the basket's pool. Notice that this statistic suffers from heavy dispersion. To see techniques to improve it (not implemented here) see: Joshi, M., D. Kainth. 2004. Rapid and accurate development of prices and Greeks for nth to default credit swaps in the Li model. Quantitative Finance, Vol. 4. Institute of Physics Publishing, London, UK, 266-275 and: Chen, Z., Glasserman, P. 'Fast pricing of basket default swaps' in Operations Research Vol. 56, No. 2, March/April 2008, pp. 286-303

Reimplemented from DefaultLossModel.

◆ defaultCorrelation()

template<template< class, class > class D, class C, class URNG>
Real defaultCorrelation ( const Date & d,
Size iName,
Size jName ) const
overrideprotectedvirtual

Pearsons' default probability correlation.

Reimplemented from DefaultLossModel.

◆ expectedTrancheLoss()

template<template< class, class > class D, class C, class URNG>
Real expectedTrancheLoss ( const Date & d) const
overrideprotectedvirtual

Reimplemented from DefaultLossModel.

◆ lossDistribution()

template<template< class, class > class D, class C, class URNG>
std::map< Real, Probability > lossDistribution ( const Date & ) const
overrideprotectedvirtual

Full loss distribution.

Reimplemented from DefaultLossModel.

◆ expectedShortfall()

template<template< class, class > class D, class C, class URNG>
Real expectedShortfall ( const Date & d,
Real percentile ) const
overrideprotectedvirtual

Expected shortfall given a default loss percentile.

Reimplemented from DefaultLossModel.

◆ percentile()

template<template< class, class > class D, class C, class URNG>
Real percentile ( const Date & d,
Real percentile ) const
overrideprotectedvirtual

Value at Risk given a default loss percentile.

Reimplemented from DefaultLossModel.

◆ percentileAndInterval()

template<template< class, class > class D, class C, class URNG>
std::tuple< Real, Real, Real > percentileAndInterval ( const Date & d,
Real percentile ) const
protectedvirtual

Returns the VaR value for a given percentile and the 95 confidence interval of that value.

◆ splitVaRLevel()

template<template< class, class > class D, class C, class URNG>
std::vector< Real > splitVaRLevel ( const Date & date,
Real loss ) const
overrideprotectedvirtual

Distributes the total VaR amount along the portfolio counterparties. The passed loss amount is in loss units.

Reimplemented from DefaultLossModel.

◆ splitVaRAndError()

template<template< class, class > class D, class C, class URNG>
std::vector< std::vector< Real > > splitVaRAndError ( const Date & date,
Real loss,
Probability confInterval ) const
protectedvirtual

Distributes the total VaR amount along the portfolio counterparties.

Provides confidence interval for split so that portfolio optimization can be performed outside those limits.

The passed loss amount is in loss units.