QuantLib_SaddlePointLossModel man page

SaddlePointLossModel< CP > — Saddle point portfolio credit default loss model.

Synopsis

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

Inherits DefaultLossModel.

Public Member Functions

SaddlePointLossModel (const boost::shared_ptr< ConstantLossLatentmodel< CP > > &m)

Real percentile (const Date &d, Probability percentile) const

Probability probOverLoss (const Date &d, Real trancheLossFract) const

Disposable< std::map< Real, Probability > > lossDistribution (const Date &d) const
Full loss distribution.
Probability probOverPortfLoss (const Date &d, Real loss) const

Real expectedTrancheLoss (const Date &d) const

Probability probDensity (const Date &d, Real loss) const

Disposable< std::vector< Real > > splitVaRLevel (const Date &date, Real loss) const

Real expectedShortfall (const Date &d, Probability percentile) const
Expected shortfall given a default loss percentile.

Protected Member Functions

Real CumulantGeneratingCond (const std::vector< Real > &invUncondProbs, Real lossFraction, const std::vector< Real > &mktFactor) const

Real CumGen1stDerivativeCond (const std::vector< Real > &invUncondProbs, Real saddle, const std::vector< Real > &mktFactor) const

Real CumGen2ndDerivativeCond (const std::vector< Real > &invUncondProbs, Real saddle, const std::vector< Real > &mktFactor) const

Real CumGen3rdDerivativeCond (const std::vector< Real > &invUncondProbs, Real saddle, const std::vector< Real > &mktFactor) const

Real CumGen4thDerivativeCond (const std::vector< Real > &invUncondProbs, Real saddle, const std::vector< Real > &mktFactor) const

boost::tuples::tuple< Real, Real, Real, Real > CumGen0234DerivCond (const std::vector< Real > &invUncondProbs, Real saddle, const std::vector< Real > &mktFactor) const
DISPOSABLE????
boost::tuples::tuple< Real, Real > CumGen02DerivCond (const std::vector< Real > &invUncondProbs, Real saddle, const std::vector< Real > &mktFactor) const
DISPOSABLE????
Real CumulantGenerating (const Date &date, Real s) const

Real CumGen1stDerivative (const Date &date, Real s) const

Real CumGen2ndDerivative (const Date &date, Real s) const

Real CumGen3rdDerivative (const Date &date, Real s) const

Real CumGen4thDerivative (const Date &date, Real s) const

Real findSaddle (const std::vector< Real > &invUncondProbs, Real lossLevel, const std::vector< Real > &mktFactor, Real accuracy=1.0e-3, Natural maxEvaluations=50) const

Probability probOverLossCond (const std::vector< Real > &invUncondProbs, Real trancheLossFract, const std::vector< Real > &mktFactor) const

Probability probOverLossPortfCond1stOrder (const std::vector< Real > &invUncondProbs, Real loss, const std::vector< Real > &mktFactor) const

Probability probOverLossPortfCond (const std::vector< Real > &invUncondProbs, Real loss, const std::vector< Real > &mktFactor) const

Probability probDensityCond (const std::vector< Real > &invUncondProbs, Real loss, const std::vector< Real > &mktFactor) const

Disposable< std::vector< Real > > splitLossCond (const std::vector< Real > &invUncondProbs, Real loss, std::vector< Real > mktFactor) const

Real expectedShortfallFullPortfolioCond (const std::vector< Real > &invUncondProbs, Real lossPerc, const std::vector< Real > &mktFactor) const

Real expectedShortfallTrancheCond (const std::vector< Real > &invUncondProbs, Real lossPerc, Probability percentile, const std::vector< Real > &mktFactor) const

Disposable< std::vector< Real > > expectedShortfallSplitCond (const std::vector< Real > &invUncondProbs, Real lossPerc, const std::vector< Real > &mktFactor) const

Real conditionalExpectedLoss (const std::vector< Real > &invUncondProbs, const std::vector< Real > &mktFactor) const

Real conditionalExpectedTrancheLoss (const std::vector< Real > &invUncondProbs, const std::vector< Real > &mktFactor) const

void resetModel ()
Concrete models do now any updates/inits they need on basket reset.

Protected Attributes

const boost::shared_ptr< ConstantLossLatentmodel< CP > > copula_

Size remainingSize_

std::vector< Real > remainingNotionals_

Real remainingNotional_

Real attachRatio_

Real detachRatio_

Detailed Description

template<class CP>

class QuantLib::SaddlePointLossModel< CP >" Saddle point portfolio credit default loss model.

Default Loss model implementing the Saddle point expansion integrations on several default risk metrics. Codepence is dealt through a latent model making the integrals conditional to the latent model factor. Latent variables are integrated indirectly.

See:

Taking to the saddle by R.Martin, K.Thompson and C.Browne; RISK JUNE 2001; p.91

The saddlepoint method and portfolio optionalities R.Martin in Risk December 2006

VAR: who contributes and how much? R.Martin, K.Thompson and C.Browne RISK AUGUST 2001

Shortfall: Who contributes and how much? R. J. Martin, Credit Suisse January 3, 2007

Don't Fall from the Saddle: the Importance of Higher Moments of Credit Loss Distributions J.Annaert, C.Garcia Joao Batista, J.Lamoot, G.Lanine February 2006, Gent University

Analytical techniques for synthetic CDOs and credit default risk measures A. Antonov, S. Mechkovy, and T. Misirpashaevz; NumeriX May 23, 2005

Computation of VaR and VaR contribution in the Vasicek portfolio credit loss model: a comparative study X.Huang, C.W.Oosterlee, M.Mesters Journal of Credit Risk (75-96) Volume 3/ Number 3, Fall 2007

Higher-order saddlepoint approximations in the Vasicek portfolio credit loss model X.Huang, C.W.Oosterlee, M.Mesters Journal of Computational Finance (93-113) Volume 11/Number 1, Fall 2007

While more expensive, a high order expansion is used here; see the paper by Antonov et al for the terms retained.

For a discussion of an alternative to fix the error at low loss levels (more relevant to pricing than risk metrics) see:

The hybrid saddlepoint method for credit portfolios by A.Owen, A.McLeod and K.Thompson; in Risk, August 2009. This is not implemented here though (yet?...)

For the more general context mathematical theory see: Saddlepoint approximations with applications by R.W. Butler, Cambridge series in statistical and probabilistic mathematics. 2007

Member Function Documentation

Real CumulantGeneratingCond (const std::vector< Real > & invUncondProbs, Real lossFraction, const std::vector< Real > & mktFactor) const [protected]

Returns the cumulant generating function (zero-th order expansion term) conditional to the mkt factor: $ K = sum_j ln(1-p_j + p_j e^{N_j imes lgd_j imes s}) $

Real CumGen1stDerivativeCond (const std::vector< Real > & invUncondProbs, Real saddle, const std::vector< Real > & mktFactor) const [protected]

Returns the first derivative of the cumulant generating function (first order expansion term) conditional to the mkt factor: $ K1 = sum_j ac{p_j imes N_j imes LGD_j imes e^{N_j imes LGD_j imes s}}  {1-p_j + p_j e^{N_j imes LGD_j imes s}} $ One of its properties is that its value at zero is the portfolio expected loss (in fractional units). Its value at infinity is the max attainable portfolio loss. To be understood conditional to the market factor.

Real CumGen2ndDerivativeCond (const std::vector< Real > & invUncondProbs, Real saddle, const std::vector< Real > & mktFactor) const [protected]

Returns the second derivative of the cumulant generating function (first order expansion term) conditional to the mkt factor: $ K2 = sum_j ac{p_j imes (N_j imes LGD_j)^2 imes e^{N_j imes LGD_j imes s}} {1-p_j + p_j e^{N_j imes LGD_j imes s}} - (ac{p_j imes N_j imes LGD_j imes e^{N_j imes LGD_j imes s}} {1-p_j + p_j e^{N_j imes LGD_j imes s}})^2 $

boost::tuples::tuple< Real, Real, Real, Real > CumGen0234DerivCond (const std::vector< Real > & invUncondProbs, Real saddle, const std::vector< Real > & mktFactor) const [protected]

DISPOSABLE???? Returns the cumulant and second to fourth derivatives together. Included for optimization, most methods work on expansion of these terms. Alternatively use a local private buffer member?

Real CumulantGenerating (const Date & date, Real s) const [protected]

Returns the cumulant generating function (zero-th order expansion term) weighting the conditional value by the prob density of the market factor, called by integrations

Real findSaddle (const std::vector< Real > & invUncondProbs, Real lossLevel, const std::vector< Real > & mktFactor, Real accuracy = 1.0e-3, Natural maxEvaluations = 50) const [protected]

Calculates the mkt-fct-conditional saddle point for the loss level given and the probability passed. The date is implicitly given through the probability. Performance requires to pass the probabilities for that date. Otherwise once we integrate this over the market factor we would be computing the same probabilities over and over. While this works fine here some models of the recovery rate might require the date.

Parameters:

lossLevel in total portfolio loss fractional unit

Real percentile (const Date & d, Probability percentile) const [virtual]

Returns the loss amount at the requested date for which the probability of lossing that amount or less is equal to the value passed.

Reimplemented from DefaultLossModel.

Probability probOverLossCond (const std::vector< Real > & invUncondProbs, Real trancheLossFract, const std::vector< Real > & mktFactor) const [protected]

Conditional (on the mkt factor) prob of a loss fraction of the the tranched portfolio.

Parameters:

trancheLossFract Fraction over the tranche notional. In [0,1]

Probability probOverLoss (const Date & d, Real lossFraction) const [virtual]

Probability of the tranche losing the same or more than the fractional amount given.

Parameters:

lossFraction A fraction of losses over the tranche notional (not the portfolio)

Reimplemented from DefaultLossModel.

Probability probOverLossPortfCond (const std::vector< Real > & invUncondProbs, Real loss, const std::vector< Real > & mktFactor) const [protected]

Probability of having losses in the portfolio due to default events equal or larger than a given absolute loss value on a given date conditional to the latent model factor. The integral expression on the expansion is the first order integration as presented in several references, see for instance; equation 8 in R.Martin, K.Thompson, and C. Browne 's 'Taking to the Saddle', Risk Magazine, June 2001, page 91

Parameters:

loss loss in absolute value

Probability probDensityCond (const std::vector< Real > & invUncondPs, Real loss, const std::vector< Real > & mktFactor) const [protected]

Probability density of having losses in the total portfolio (untranched) due to default events equal to a given value on a given date conditional to the latent model factor. Based on the integrals of the expected shortfall.

NOTICE THIS IS ON THE TOTAL PORTFOLIO ---- UNTRANCHED Probability density of having losses in the portfolio due to default events equal to a given value on a given date conditional to the w latent model factor. Based on the integrals of the expected shortfall. See......refernce.

Disposable< std::vector< Real > > splitVaRLevel (const Date & date, Real loss) const [virtual]

Sensitivities of the individual names to a given portfolio loss value due to defaults. It returns ratios to the total structure notional, which aggregated add up to the requested loss value. Notice then that it refers to the total portfolio, not the tranched basket.

see equation 8 in VAR: who contributes and how much? by R.Martin, K.Thompson, and C. Browne in Risk Magazine, August 2001

Parameters:

loss Loss amount level at which we want to request the sensitivity. Equivalent to a percentile.

Reimplemented from DefaultLossModel.

Author

Generated automatically by Doxygen for QuantLib from the source code.

Referenced By

attachRatio_(3), conditionalExpectedLoss(3), conditionalExpectedTrancheLoss(3), CumGen0234DerivCond(3), CumGen02DerivCond(3), CumGen1stDerivative(3), CumGen1stDerivativeCond(3), CumGen2ndDerivative(3), CumGen2ndDerivativeCond(3), CumGen3rdDerivative(3), CumGen3rdDerivativeCond(3), CumGen4thDerivative(3), CumGen4thDerivativeCond(3), CumulantGenerating(3), CumulantGeneratingCond(3), detachRatio_(3), expectedShortfallFullPortfolioCond(3), expectedShortfallSplitCond(3), expectedShortfallTrancheCond(3), findSaddle(3), probDensity(3), probDensityCond(3), probOverLossCond(3), probOverLossPortfCond(3), probOverLossPortfCond1stOrder(3), probOverPortfLoss(3), remainingNotional_(3), remainingNotionals_(3), remainingSize_(3), SaddlePointLossModel(3) and splitLossCond(3) are aliases of QuantLib_SaddlePointLossModel(3).

Fri Sep 23 2016 Version 1.8.1 QuantLib