QuantLib_OneFactorCopula man page

OneFactorCopula — Abstract base class for one-factor copula models.

Synopsis

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

Inherits LazyObject.

Inherited by OneFactorGaussianCopula, OneFactorGaussianStudentCopula, OneFactorStudentCopula, and OneFactorStudentGaussianCopula.

Public Member Functions

OneFactorCopula (const Handle< Quote > &correlation, Real maximum=5.0, Size integrationSteps=50, Real minimum=-5.0)

virtual Real density (Real m) const =0
Density function of M.
virtual Real cumulativeZ (Real z) const =0
Cumulative distribution of Z.
virtual Real cumulativeY (Real y) const
Cumulative distribution of Y.
virtual Real inverseCumulativeY (Real p) const
Inverse cumulative distribution of Y.
Real correlation () const
Single correlation parameter.
Real conditionalProbability (Real prob, Real m) const
Conditional probability.
std::vector< Real > conditionalProbability (const std::vector< Real > &prob, Real m) const
Vector of conditional probabilities.
Real integral (Real p) const

template<class F > Real integral (const F &f, std::vector< Real > &probabilities) const

template<class F > Distribution integral (const F &f, const std::vector< Real > &nominals, const std::vector< Real > &probabilities) const

int checkMoments (Real tolerance) const

Protected Member Functions

Size steps () const

Real dm (Size i) const

Real m (Size i) const

Real densitydm (Size i) const

Protected Attributes

Handle< Quote > correlation_

Real max_

Size steps_

Real min_

std::vector< Real > y_

std::vector< Real > cumulativeY_

Additional Inherited Members

Detailed Description

Abstract base class for one-factor copula models.

Reference: John Hull and Alan White, The Perfect Copula, June 2006

Let $Q_i(t)$ be the cumulative probability of default of counterparty i before time t.

In a one-factor model, consider random variables [ Y_i = a_iM+sqrt{1-a_i^2}Z_i ] where $M$ and $Z_i$ have independent zero-mean unit-variance distributions and $-1leq a_i leq 1$. The correlation between $Y_i$ and $Y_j$ is then $a_i a_j$.

Let $F_Y(y)$ be the cumulative distribution function of $Y_i$. $y$ is mapped to $t$ such that percentiles match, i.e. $F_Y(y)=Q_i(t)$ or $y=F_Y^{-1}(Q_i(t))$.

Now let $F_Z(z)$ be the cumulated distribution function of $Z_i$. For given realization of $M$, this determines the distribution of $y$: [ Prob (Y_i < y|M) = F_Z left( ac{y-a_iM}{sqrt{1-a_i^2}}right) qquad mbox{or} qquad Prob (t_i < t|M) = F_Z left( ac{F_Y^{-1}(Q_i(t))-a_iM} {sqrt{1-a_i^2}} right) ]

The distribution functions of $ M, Z_i $ are specified in derived classes. The distribution function of $ Y $ is then given by the convolution [ F_Y(y) = Prob(Y<y) = int_{-infty}^inftyint_{-infty}^{infty} D_Z(z)D_M(m) quad Theta left(y - am - sqrt{1-a^2}zright)dmdz, qquad Theta (x) = left begin{array}{ll} 1 & x geq 0 \ 0 & x < 0 \nd{array}right. ] where $ D_Z(z) $ and $ D_M(m) $ are the probability densities of $ Z$ and $ M, $ respectively.

This convolution can also be written [ F(y) = Prob (Y < y) = int_{-infty}^infty D_M(m)dm int_{-infty}^{g(y,a,m)} D_Z(z)dz, qquad g(y,a,m) = ac{y - acdot m}{sqrt{1-a^2}}, qquad a < 1 ]

or

[ F(y) = Prob (Y < y) = int_{-infty}^infty D_Z(z)dz int_{-infty}^{h(y,a,z)} D_M(m)dm, qquad h(y,a,z) = ac{y - sqrt{1 - a^2}cdot z}{a}, qquad a > 0. ].PP In general, $ F_Y(y) $ needs to be computed numerically.

Member Function Documentation

virtual Real density (Real m) const [pure virtual]

Density function of M. Derived classes must override this method and ensure zero mean and unit variance.

Implemented in OneFactorStudentGaussianCopula, OneFactorGaussianStudentCopula, OneFactorStudentCopula, and OneFactorGaussianCopula.

virtual Real cumulativeZ (Real z) const [pure virtual]

Cumulative distribution of Z. Derived classes must override this method and ensure zero mean and unit variance.

Implemented in OneFactorStudentGaussianCopula, OneFactorGaussianStudentCopula, OneFactorStudentCopula, and OneFactorGaussianCopula.

virtual Real cumulativeY (Real y) const [virtual]

Cumulative distribution of Y. This is the default implementation based on tabulated data. The table needs to be filled by derived classes. If analytic calculation is feasible, this method can also be overridden.

Reimplemented in OneFactorGaussianCopula.

virtual Real inverseCumulativeY (Real p) const [virtual]

Inverse cumulative distribution of Y. This is the default implementation based on tabulated data. The table needs to be filled by derived classes. If analytic calculation is feasible, this method can also be overridden.

Reimplemented in OneFactorGaussianCopula.

Real conditionalProbability (Real prob, Real m) const

Conditional probability. [ hat p(m) = F_Z left( ac{F_Y^{-1}(p)-am}{sqrt{1-a^2}}right) ]

std::vector<Real> conditionalProbability (const std::vector< Real > & prob, Real m) const

Vector of conditional probabilities. [ hat p_i(m) = F_Z left( ac{F_Y^{-1}(p_i)-am}{sqrt{1-a^2}} right) ]

Real integral (Real p) const

Integral over the density $ rho(m) $ of M and the conditional probability related to p:

[ int_{-infty}^inftydmrho(m) F_Z left( ac{F_Y^{-1}(p)-am}{sqrt{1-a^2}}right) ]

Real integral (const F & f, std::vector< Real > & probabilities) const

Integral over the density $ rho(m) $ of M and a one-dimensional function $ f $ of conditional probabilities related to the input vector of probabilities p:

[ int_{-infty}^inftydmrho(m) f (hat p_1, hat p_2, ots, hat p_N), qquad hat p_i (m) = F_Z left( ac{F_Y^{-1}(p_i)-am}{sqrt{1-a^2}} right) ]

Distribution integral (const F & f, const std::vector< Real > & nominals, const std::vector< Real > & probabilities) const

Integral over the density $ rho(m) $ of M and a multi-dimensional function $ f $ of conditional probabilities related to the input vector of probabilities p:

[ int_{-infty}^inftydmrho(m) f (hat p_1, hat p_2, ots, hat p_N), qquad hat p_i = F_Z left( ac{F_Y^{-1}(p_i)-am}{sqrt{1-a^2}}right) ]

int checkMoments (Real tolerance) const

Check moments (unit norm, zero mean and unit variance) of the distributions of M, Z, and Y by numerically integrating the respective density. Parameter tolerance is the maximum tolerable absolute error.

Author

Generated automatically by Doxygen for QuantLib from the source code.

Referenced By

keyrings(7).

checkMoments(3), conditionalProbability(3), correlation_(3), cumulativeY_(3), densitydm(3), dm(3), integral(3), m(3), max_(3), min_(3), OneFactorCopula(3), steps(3), steps_(3) and y_(3) are aliases of QuantLib_OneFactorCopula(3).

Fri Sep 23 2016 Version 1.8.1 QuantLib