- QuantLib
- OneFactorCopula
 
Abstract base class for one-factor copula models. More...
#include <ql/experimental/credit/onefactorcopula.hpp>

| 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_ | 
Abstract base class for one-factor copula models.
Reference: John Hull and Alan White, The Perfect Copula, June 2006
Let  be the cumulative probability of default of counterparty i before time t.
 be the cumulative probability of default of counterparty i before time t.
In a one-factor model, consider random variables
![\[ Y_i = a_i\,M+\sqrt{1-a_i^2}\:Z_i \]](form_88.png) 
 where  and
 and  have independent zero-mean unit-variance distributions and
 have independent zero-mean unit-variance distributions and  . The correlation between
. The correlation between  and
 and  is then
 is then  .
.
Let  be the cumulative distribution function of
 be the cumulative distribution function of  .
.  is mapped to
 is mapped to  such that percentiles match, i.e.
 such that percentiles match, i.e.  or
 or  .
.
Now let  be the cumulated distribution function of
 be the cumulated distribution function of  . For given realization of
. For given realization of  , this determines the distribution of
, this determines the distribution of  :
: 
![\[ Prob \,(Y_i < y|M) = F_Z \left( \frac{y-a_i\,M}{\sqrt{1-a_i^2}}\right) \qquad \mbox{or} \qquad Prob \,(t_i < t|M) = F_Z \left( \frac{F_Y^{-1}(Q_i(t))-a_i\,M} {\sqrt{1-a_i^2}} \right) \]](form_101.png) 
The distribution functions of  are specified in derived classes. The distribution function of
 are specified in derived classes. The distribution function of  is then given by the convolution
 is then given by the convolution 
![\[ F_Y(y) = Prob\,(Y<y) = \int_{-\infty}^\infty\,\int_{-\infty}^{\infty}\: D_Z(z)\,D_M(m) \quad \Theta \left(y - a\,m - \sqrt{1-a^2}\,z\right)\,dm\,dz, \qquad \Theta (x) = \left\{ \begin{array}{ll} 1 & x \geq 0 \\ 0 & x < 0 \end{array}\right. \]](form_104.png) 
 where  and
 and  are the probability densities of
 are the probability densities of  and
 and  respectively.
 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) = \frac{y - a\cdot m}{\sqrt{1-a^2}}, \qquad a < 1 \]](form_109.png) 
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) = \frac{y - \sqrt{1 - a^2}\cdot z}{a}, \qquad a > 0. \]](form_110.png) 
In general,  needs to be computed numerically.
 needs to be computed numerically.
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( \frac{F_Y^{-1}(p)-a\,m}{\sqrt{1-a^2}}\right) \]](form_112.png) 
| std::vector<Real> conditionalProbability | ( | const std::vector< Real > & | prob, | 
| Real | m | ||
| ) | const | 
Vector of conditional probabilities.
![\[ \hat p_i(m) = F_Z \left( \frac{F_Y^{-1}(p_i)-a\,m}{\sqrt{1-a^2}} \right) \]](form_113.png) 
Integral over the density  of M and the conditional probability related to p:
 of M and the conditional probability related to p:
![\[ \int_{-\infty}^\infty\,dm\,\rho(m)\, F_Z \left( \frac{F_Y^{-1}(p)-a\,m}{\sqrt{1-a^2}}\right) \]](form_115.png) 
Integral over the density  of M and a one-dimensional function
 of M and a one-dimensional function  of conditional probabilities related to the input vector of probabilities p:
 of conditional probabilities related to the input vector of probabilities p:
![\[ \int_{-\infty}^\infty\,dm\,\rho(m)\, f (\hat p_1, \hat p_2, \dots, \hat p_N), \qquad \hat p_i (m) = F_Z \left( \frac{F_Y^{-1}(p_i)-a\,m}{\sqrt{1-a^2}} \right) \]](form_116.png) 
| Distribution integral | ( | const F & | f, | 
| const std::vector< Real > & | nominals, | ||
| const std::vector< Real > & | probabilities | ||
| ) | const | 
Integral over the density  of M and a multi-dimensional function
 of M and a multi-dimensional function  of conditional probabilities related to the input vector of probabilities p:
 of conditional probabilities related to the input vector of probabilities p:
![\[ \int_{-\infty}^\infty\,dm\,\rho(m)\, f (\hat p_1, \hat p_2, \dots, \hat p_N), \qquad \hat p_i = F_Z \left( \frac{F_Y^{-1}(p_i)-a\,m}{\sqrt{1-a^2}}\right) \]](form_117.png) 
| 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.