Table of Contents

Class SaddlePointTailLossModel<TCopula, TInitTraits>

Namespace
NanoQL.Experimental
Assembly
NanoQL.dll

The saddle-point loss model with its expected tranche loss read from its own tail: the probability of losing each amount in the tranche or more, ProbOverPortfLoss(Date, double), integrated over the tranche, where the base reads the tranche of the conditional expected loss, a large-pool reading.

[Experimental("NQL0001")]
public class SaddlePointTailLossModel<TCopula, TInitTraits> : SaddlePointLossModel<TCopula, TInitTraits>, IDefaultLossModel where TCopula : struct, ICopulaPolicy<TCopula, TInitTraits> where TInitTraits : struct

Type Parameters

TCopula

The copula policy.

TInitTraits

The copula's initialization traits.

Inheritance
SaddlePointLossModel<TCopula, TInitTraits>
SaddlePointTailLossModel<TCopula, TInitTraits>
Implements
Inherited Members

Remarks

For a tranche [A, D] with A above 0 the expected loss is ∫_A^D P(L > y) dy, by 24-node Gauss-Legendre over the tranche. For the equity tranche it is E[L] − ∫_D^N P(L > y) dy: E[L] the live portfolio's conditional expected loss integrated over the factor, and the upper tail over [D, D + 5%], [D + 5%, D + 20%] and [D + 20%, 100%] of the live notional N. So the equity tranche never reads the tail near zero loss, where the pool's loss is a lattice of single-name losses the expansion follows coarsely and its tail exceeds 1 at high correlation; a tranche attaching close above zero does, its integral starting below the pool's smallest single-name loss. The attachment that counts is the live one, which a seasoned tranche's realized losses write down (Basket's restated tranche). Every other member is the base's.

The check is the recursive model on the same latent model. On 100 names (notional 100, hazard 1%, recovery 40%), at one and five years, the variant is within 2% of it on the tranches from 3% to 22% at correlations from 0.3 to 0.9, and on the equity tranche within 0.6% to 0.75. Attaching closer to zero it errs more: [2%, 5%] by up to +2.5% at a year, [1%, 3%] by up to +7.5%, [0.5%, 3%] by +13% to +21%, and [0.1%, 3%] is refused from correlation 0.6 (the base's refusal of a tail outside [0, 1]); after four defaults a 3–6% tranche of that pool attaches at 0.625% of the live notional, one default's loss. At 0.9 the equity tranche reads +9.1% at five years; and a tranche whose integral reaches the pool's largest loss meets the expansion's other weak region there, where its tail can read below 0: senior tranches err by −2.6% to −4.4% at five years, and [22%, 60%] is refused at both horizons, its nodes crowding the largest loss (the base's refusal of a tail outside [0, 1]); the equity tranche's upper pieces cross it too. At low correlation the pool's loss is a binomial lattice, which a continuous expansion follows coarsely: at 0.1 a small tranche reads +9% at a year. Both models read the latent model's quadrature, its default QuantLib's 25-node Gauss-Hermite, which itself errs by up to 30% on 3% tranches at correlation 0.9 against its trapezoid integration.

Constructors

SaddlePointTailLossModel(ConstantLossLatentModel<TCopula, TInitTraits>)

Initializes a new instance of the SaddlePointTailLossModel<TCopula, TInitTraits> class.

public SaddlePointTailLossModel(ConstantLossLatentModel<TCopula, TInitTraits> m)

Parameters

m ConstantLossLatentModel<TCopula, TInitTraits>

The constant-loss latent model.

Exceptions

ArgumentNullException

m is null.

Methods

ExpectedTrancheLoss(Date)

The live tranche's expected loss by a date, from the model's own tail.

public override double ExpectedTrancheLoss(Date d)

Parameters

d Date

The date.

Returns

double

The expected loss, an amount.

Exceptions

NanoQLException

The model isn't bound to a basket, or the expansion refuses (a tail outside [0, 1], an unresolvable loss).