### A free/open-source library for quantitative finance

Public Member Functions | Protected Member Functions | Protected Attributes
OneFactorCopula Class Reference

Abstract base class for one-factor copula models. More...

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

Inheritance diagram for OneFactorCopula:
[legend]

List of all members.

## 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_

## Detailed Description

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.

In a one-factor model, consider random variables

where and have independent zero-mean unit-variance distributions and . The correlation between and is then .

Let be the cumulative distribution function of . is mapped to such that percentiles match, i.e. or .

Now let be the cumulated distribution function of . For given realization of , this determines the distribution of :

The distribution functions of are specified in derived classes. The distribution function of is then given by the convolution

where and are the probability densities of and respectively.

This convolution can also be written

or

In general, needs to be computed numerically.

Possible enhancements:
  Improve on simple Euler integration

## 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.

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

Vector of conditional probabilities.

Real integral | ( | Real | p | ) | const

Integral over the density of M and the conditional probability related to p:

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

Integral over the density of M and a one-dimensional function of conditional probabilities related to the input vector of probabilities p:

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 conditional probabilities related to the input vector of probabilities p:

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.