A collateralized debt obligation (CDO) is a security that is
backed by or linked to a diversified pool of credits. The credits can be
assets, such as bonds or loans, or simply defaultable names, such as companies or
countries. In general, there are two types of CDOs: cash CDOs and synthetic
CDOs. A cash CDO is backed by “true” assets, such as bonds or loans. Its
payoffs, either coupons or principals, come from the actual cash flows of the
assets in the pool. Synthetic CDOs are not backed by cash flows of assets. Instead,
they are linked to their reference entities by credit derivatives, such as
credit default swaps. The payoffs of most synthetic CDOs are only affected by
credit events, e.g., defaults, of the reference entities and are not related to
the actual cash flows of the pool.
A common structure of CDOs involves slicing the credit
risk of the reference pool into a few different risk levels. A “slice” of
credit risk, the credit risk between two risk levels, is called a tranche. The
tranche that absorbs the first loss piece is often called an equity tranche. The
remaining tranches are called mezzanine or senior tranches. Tranches with higher
credit risks support the tranches with lower credit risks.
A typical feature of a cash CDO is the so-called cash flow
waterfall structure where a tranche is paid for its coupon and/or principal
only if all the tranches with lower credit risk have been paid off. Such a
feature requires a match between the incoming coupons and principals of the
pool and the payouts of the tranches. Most
synthetic CDOs don’t have a cash flow waterfall structure. Synthetic CDOs are only
concerned with the default loss. This simplified structure makes structuring,
managing and valuing synthetic CDOs easier than cash CDOs. The important
implication of such a simplified CDO structure is that tranche customization is
possible. Since the payoffs of one tranche don’t depend on the payoffs of other
tranches, it is easy to structure CDOs with any types of tranches, based on an investor’s
risk appetite. This makes synthetic CDOs attractive to both CDO investors and managers
and has helped the rapid development of the CDO market.
Synthetic CDOs without a cash flow waterfall structure are
sometimes called single tranche CDOs. In the rest of this document all CDOs
discussed are single tranche CDOs.
The risk levels of a synthetic CDO are determined by the
total accumulated loss of the reference pool. A tranche is defined as a certain
loss range. The lower bound of the range is called an attachment point and the
upper bound a detachment point. For example, a 5-10% tranche has an attachment
point of 5% and a detachment point of 10%. When the accumulated loss of the
reference pool is no more than 5% of the total initial notional of the pool,
the tranche will not be affected. However, when the loss has exceeded 5%, any
further loss will be deducted from the tranche’s notional until the detachment
point, 10%, is reached. At this point, the tranche is wiped out.
The most common credit derivatives of synthetic CDOs are credit
default swaps (CDS) and credit-linked notes on CDO tranches. A CDS on a CDO
tranche is, to a certain extent, similar to a single-entity credit default swap
(for single entity CDSs, see the Credit Default Swaps FINCAD Math Reference document). It has a
payoff leg and a premium leg. The buyer of a CDS on a tranche will be
compensated by the seller for any loss to the tranche and in return the buyer
pays a periodic premium to the seller. While the basic structure is similar,
there are two fundamental differences between a tranche CDS and single entity
CDS:
1. In
a single-entity CDS the seller will take the full loss of the reference credit
while in a CDS on a CDO tranche the seller is protected by the tranches with
higher credit risk. In more detail, as
long as the total loss of the reference pool does not exceed the attachment
point of a tranche, the tranche is not affected. Moreover, the loss to a tranche is limited to
its notional, not the total loss of any of the credits in the pool.
2. In
a single-entity CDS the premium notional is fixed during the life of the CDS
while in a CDS on a CDO tranche the premium notional changes. When a tranche suffers a loss, the buyer will
be paid up to the notional of the tranche and at the same time, for most CDOs, the
lost amount will be subtracted from the tranche’s notional. Thus the premium
payment reduces, until the notional reaches 0 when the CDS ends.
A similar comparison can be made between a
tranche CDS and a basket CDS, such as a first-to-default CDS (for details on
basket CDSs see the Basket Default Swaps FINCAD Math Reference document). Like a single entity CDS, a basket CDS allows
only a single credit event and the investor will suffer the full loss if a
credit event occurs. The only difference
between a basket CDS and a single-entity CDS is that in a basket CDS the credit
risk to the investor is from multiple entities. We can say that basket CDSs are more like
single-entity CDSs than tranche CDSs. Particularly,
one should not confuse a first-loss CDS with a first-to-default CDS. A first-loss CDS is a CDS on the equity
tranche of a CDO and, as is pointed out above, it is significantly different
from a first-to-default CDS.
It should be to be pointed out that a first loss CDS is a
CDS on the loss of a portfolio of entities up to a certain level. It doesn’t have to be associated with a formal
CDO structure, although it can always be viewed as a CDS on the equity tranche
of a CDO, i.e., a CDO that has only one tranche, the equity tranche.
Synthetic CDOs consisting only of credit default swaps are
unfunded CDOs. Some synthetic CDOs issue
notes linked to CDO tranches. These CDOs
are funded or partially funded. The buyer of a CDO note pays a certain amount,
the note’s principal, upfront and receives periodic coupon payments from the
CDO that are based on the principal and a fixed coupon rate. If the tranche doesn’t suffer any loss during
the life of the note, the investor will receive a full repayment of the amount
invested at the beginning. However, if
there are defaults in the reference pool and the pool’s accumulated loss
exceeds the attachment point of the linked tranche, the principal will be
reduced and thus the future coupon and the principal repayment will be reduced.
A similar comparison to the above can be made between a CDO
note (also known as a credit-linked note or a tranche-linked note) and a
single-entity credit-linked note. For
details on single entity credit-linked notes see the Credit-Linked Notes and Rating Sensitive Notes
FINCAD Math Reference document.
Some CDO products, such as CDOs on the CDS indices CDX
and ITraxx,
are exchange traded and are standardized. For a standardized CDO, each entity in the
reference pool has the same notional and the same recovery rate. While standardized CDOs are a special class of
CDOs, the homogeneity of their reference pools greatly simplifies their valuation,
and more importantly, speeds up their calculation.
A typical CDO has a reference pool of more than 100
reference entities. Valuation of a CDO
with such a large reference pool is a challenging task.
FINCAD provides tools to value both CDSs on tranches and CDO
notes. CDSs on tranches are valued with both
Monte Carlo and quasi-analytic methods. CDO
notes are valued with Monte-Carlo simulation. This document mainly discusses quasi-analytic
methods. For discussions on the
application of
Consider a CDO tranche with attachment and detachment points, respectively. Let
denote the accumulated
loss of the pool at time
(the current time is 0).
Let
denote the (full) notional
of the tranche at time
. Then:
Consider a CDS on a tranche with its notional being the
tranche’s size. Let be the time
value of the premium leg (also called a fixed leg or a fee
leg) of a credit default swap on the tranche. Let
be the annual premium
coupon rate and
the premium coupon
payment time points. The premium payment amount at a premium payment date is
the product of the premium rate and the current notional of the tranche. For
most synthetic CDO deals, when an entity defaults prior to payment date, the
accrued interest must be paid at the default time. For other less common
synthetic CDOs there is no such accrued premium payment. Accordingly, the
present value of the premium payments can be calculated as
where: is a risk-free
discount factor curve and the constant
if the accrued premium
is paid when an entity defaults prior to a premium payment date; and
, otherwise.
Let be the time t value of
the payoff leg (also called a default leg or a floating leg or an asset leg) of
the CDS. Then:
If we assume that compensation is made at the next premium
coupon payment date when default occurs, then the above formula can be detailed
as:
The par CDS spread is then:
For a tranche-linked note, at any coupon payment date, if
the pool loss hasn’t eaten into the tranche yet, the investor will receive a
predetermined coupon based on the initial principal. However, when the tranche suffers a loss, the
note’s notional will be reduced and therefore both the future coupon payments
and the redemption will be reduced.
Consider a tranche-linked note with a principal equal to
the tranche’s size. Let be the time
value of the note. Suppose the annual coupon rate of the note is
. Then the present
value of the note is:
Default times of different reference entities are
correlated. Ideally, a full correlation
matrix should be used in modeling the correlation between reference entities of
a reference pool. Unfortunately, this is
difficult due to computational intensity, calibration complexity and rarity of
default data. The current popular model
on default correlation is the so-called one-factor Gaussian (normal) copula
model. Under this model the credit
quality of entity is represented by a
Gaussian random variable:
where
are independent
Gaussian random variables with mean 0 and standard deviation 1 (N(0, 1)) and
is a constant between
0 and 1. The constant
is called the factor
loading of entity
. A higher value of
represents a higher credit
quality of the entity. Given a default
probability
of the entity one can
then find a threshold value
of
such that:
Since is an N(0,1) variable,
, where
is the cumulative
distribution function of an N(0,1) variable.
With the Gaussian copula model we can determine the credit correlation
easily by simply using the joint probability:
where
is the correlation of
and
is the cumulative
standard bivariate normal distribution function.
A special case of the Gaussian copula model is the
one for which all factor loadings are equal. For this case each pair of the reference
entities has the same correlation, and the factor loading is the square root of the
correlation:
In the valuation of a CDO, the key is to calculate the
loss distribution of the reference pool. Let be the default time of
entity
and
the loss amount when the
entity defaults. Then the total loss of
the reference pool up to a given time horizon
is:
where
is the number of
entities in the pool and
is the indicator
function of
When the reference entities are homogeneous, i.e.,
all entities have the same notional and the same recovery rate, the estimation
of is relatively simple:
the loss distribution can be determined by the number of defaults. However, for a more general case, to
determine the loss amount at a default time we have to trace down the defaulted
entity and hence the simple counting method no longer works. For this case, a more general method is
required.
Note that to calculate the distribution of we only need to
determine its characteristic function:
.
For this a natural choice is the FFT. When the characteristic function has been
determined, the reverse FFT can be used to back out the loss distribution. For details on calculating loss distributions
using FFT see the paper by A. Debuysscher and M. Szego [5].
The FFT discussed above is general and convenient for
extension, e.g., to the case of random recovery rates. The downside of an FFT
for CDO valuation is its resource intensity in computation, particularly, when
the losses given default of the CDO’s reference entities vary significantly
from entity to entity.
More recently, another type of methods, the so-called
recursion or convolutional methods, have been proposed (for details see
Andersen [1] (2003) and Luo [7] (2006)). Research has shown that the recursion method
is significantly faster than the FFT. For a comparison of computational speed
of the FFT and the recursion see Luo [7] (2006).
The main idea of a recursion method is that when the loss
from default of each entity in a pool is an integer and if the defaults of all
entities are independent, then the loss distribution of an -entity pool can be derived from the loss distribution of a
sub-pool with
entities and the default probability of the
entity convolutionally. Under a factor copula model the
defaults of the reference entities in a pool are conditionally independent
given the common factor. Thus the recursion method can be used to calculate the
conditional loss distribution of the reference pool. When all the conditional
loss probabilities are known, integrating over the common factor one can obtain
the absolute loss distribution of the reference pool.
In general, losses from defaults are not integers. The
first step in using a recursion method is to approximate non-integer losses
points by integer loss points. Such an algorithm is proposed in Andersen [1] (2003).It is slightly modified in FINCAD
implementation to improve accuracy.
Remark 1: The computational speed of a synthetic CDO depends
heavily on the homogeneity of its reference pool for either a FFT method or a
recursion method. If a reference pool is homogeneous, i.e., the loss given
default of all entities in the pool is the same, both methods are fast, although
the recursion method is even faster than the FFT. For a generic pool, the
computational speed varies significantly with the level of homogeneity of the
pool. The lesser the loss given default varies from entity to entity, the
faster the calculation. In FINCAD implementation the so-called grouped recursion
method is used. In this method a reference pool is approximated by homogeneous
subgroups (see Luo (2006) for details).
Remark 2: In the calculation of risk statistic DVOX (see
the section Calculation of Risk Statistics for its definition) on individual
entities a general method is to shift the CDS spread curve X basis points of
the entity first and then revalue the CDO with the shifted default curve. A
tranche’s DVOX of the entity is calculated as the difference of the bumped fair
value and the original fair value. When the number of entities is large,
revaluation needs to be done for each entity and therefore for a large CDO it can
be very time consuming to calculate all the DVOXs. For the FFT method FINCAD uses this generic method
for DVOX calculation. For the recursion method, a smarter algorithm proposed by
Brasch (2004) is adapted. This method avoids revaluing the CDO by using the
results that are already been calculated during the calculation of the CDO’s fair
value to derive the DVOXs of individual entities directly. This makes the DVOX
calculation of individual entities almost costless.
CDO tranches are actively traded in the market and, especially
for standardized tranches, market quotes are available for par CDO tranche
spreads. A natural question to ask is:
based on a one-factor Gaussian copula model, can we back out correlations from
quoted tranche spreads? In more detail,
given the spread of a CDO tranche is there a correlation that gives the tranche
a par spread equal to the given spread? Such
a correlation is known as a tranche correlation. Research shows that such a correlation does
exist for reasonable par CDS spreads, but, in general, is not unique except the
equity tranche. For the equity tranche (the
tranche with an attachment of 0), the implied correlation is unique (for a
proof see the paper by Burtschell et al [4]). The implied correlation
of an equity tranche is referred to as a base correlation. For a non-equity tranche its base correlation can
also be defined. It is the correlation that
applies to the tranche that has an attachment point of 0 and the same detachment
point of the given tranche. It should be
pointed out that a tranche correlation and a base correlation are tranche
dependent. For different tranches their
correlations can be different.
For a non-equity tranche, the tranche that has an
attachment point of 0 and a detachment point equal to that of the given tranche
is called in this document a base tranche of the given tranche. CDO quotes are
available for regular tranches, but not for base tranches other than the equity
tranche. Hence only for the equity
tranche its base correlation can be calculated directly from the market quotes.
For other tranches their base correlations
cannot be calculated directly and a so-called bootstrapping algorithm must be
used.
To explain the idea of bootstrapping base correlations, consider
the second tranche of a CDO, i.e. the tranche that is beside the equity
tranche. Suppose the base correlation of
the equity tranche has been determined (with a root finding method, e.g., the bisection
method), and we want to determine the base correlation of the second tranche. Note that the loss to the second tranche is
the difference of the loss to its base tranche and the loss to the first
(equity) tranche. Thus the payoff and
premium of the second tranche can also be expressed as the differences of the
base tranche and the equity tranche. Since
the payoff and premium of the equity tranche can be determined from its base
correlation, by matching the calculated par spread and the quoted par spread of
the second tranche, we can solve for the base correlation of the second base
tranche using a root finding procedure. For more details on bootstrapping, the reader
is referred to the paper by McGinty et al [9].
Remark: Although
theoretically the base correlations of a CDO can be uniquely determined from
tranche par spreads, in implementation, this may not be possible when some
tranche values are not sensitive to a change in correlation. A simple example is a CDO that has a single
tranche with its detachment point to be close to 100%. In this case the tranche loss is essentially
the total loss of the reference pool and thus the correlation of the reference
entities has little effect on the value of the tranche. For this case any number between 0 and 1 can
be a candidate of the base correlation.
Base correlations are quoted for standardized tranches.
Rigorously speaking, such correlations can only be used to value CDOs that have
the same reference baskets and the same tranche structure. However, since the
value of a CDO tranche is determined by the loss distribution of the reference
portfolio, through proper loss profile matching one can reasonably make use the
quoted base correlations by mapping correlations of standardized tranches to
bespoke tranches. More generally, one can map base correlations of different
CDOs through loss profile matching.
There can be many different ways of matching loss profiles
of CDOs. Here are the two most commonly used ones in the industry.
1.
Match expected loss ratio. For a given base correlation define the expected
loss ratio of a portfolio as:
where
is the portfolio loss
for a certain time horizon,
is the indicator of
and
stands for the
expectation with respect to the risk-neutral probability measure.
Suppose and
are two credit portfolios and the base correlation of
portfolio
corresponding to detachment
is
. Then there is a unique point
such that:
where
and
are the expected loss
ratios of portfolios
and
, respectively. For this loss profile matching an obvious
choice is to select
as the base
correlation of portfolio
at the detachment
. For more details see
the paper of Pugachevsky [10].
This way given a base correlation curve of a benchmark
synthetic CDO, a bespoke base correlation curve can be built. If the bespoke
base correlations at certain detachment points need to be decided,
interpolation can be used. The most popular interpolation method is the
quadratic method. Note that in FINCAD no extrapolation is allowed. In the
interpolation when a detachment point of a bespoke CDO is beyond the base
correlation curve range mapped through the above process, the base correlation
at the closest end point of the curve will be picked.
2. Shift
the base correlation curve. Suppose the
base correlation curve (as a function of its detachment point) of portfolio
is known. To determine the base correlation curve
one possibility is simply by shifting:
where
is the expected loss of portfolio
and
is a scaling factor.
aaCDO_ST_DS_std_p(d_v,
contra_d, npa_ini, num_ref_ini, num_dflt, tranche_type, tranche_corr, corr_type,
freq_pr, acc, d_rul, dp_type, dp_bskt, intrp_tb, rate_recover, hl, dfstd, intrp,
accu_level, calc_para, stat, tranche_list):
Calculates the fair values and other statistics of a
credit default swap on standardized CDO tranches using a one-factor Gaussian
copula model. The correlation can be either a tranche or a base correlation. Multiple tranches can be valued simultaneously.
Two calculation methods, a fast Fourier transform and a recursion method, are provided.
aaCDO_ST_DS2_std_prem_cf(d_v,
contra_d, npa_ini, num_ref_ini, num_dflt, tranche_type, tranche_corr, corr_type,
freq_pr, acc, d_rul, dp_type, dp_bskt, intrp_tb, rate_recover, hl, dfstd, intrp,
accu_level, calc_para, output_type, tranche_list):
Calculates expected cash flows and their present values of
a credit default swap on standardized CDO tranches using a one-factor Gaussian
copula model. The correlation can be either a tranche or a base correlation.
Two calculation methods, a fast Fourier transform and a recursion method, are
provided.
aaCDO_ST_DS_p(d_v,
contra_d, ref_bskt, tranche_type, tranche_corr, corr_type, freq_pr, acc, d_rul,
dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para, stat, tranche_list):
Calculates the fair values and other statistics of a
credit default swap on synthetic CDO tranches using a one-factor Gaussian
copula model. The correlation can be
either a tranche or a base correlation. Multiple
tranches can be valued simultaneously. Two calculation methods, a fast Fourier
transform and a recursion method, are provided.
aaCDO_ST_DS2_prem_cf(d_v, contra_d, ref_bskt, tranche_type, tranche_cpn,
corr_type, freq_pr, acc, d_rul, dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level,
calc_para, output_type, tranche_list):
Calculates expected cash flows and their present values of
a credit default swap on synthetic CDO tranches using a one-factor Gaussian
copula model. The correlation can be either a tranche or a base correlation.
Two calculation methods, a fast Fourier transform and a recursion method, are
provided.
aaCDO_ST_DS_fl_p(d_v,
contra_d, ref_bskt, tranche_type, tranche_cpn, freq_pr, acc, d_rul, modl_type, modl_para,
dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para, stat, tranche_list):
Calculates the fair values and other statistics of a
credit default swap on synthetic CDO tranches using a one-factor copula model.
Different reference entities can have different factor loadings. Multiple tranches can be valued simultaneously.
Two calculation methods, a fast Fourier transform and a recursion method, are
provided.
aaCDO_ST_DS2_fl_prem_cf(d_v,
contra_d, ref_bskt, tranche_type, tranche_cpn, freq_pr, acc, d_rul, modl_type, modl_para,
dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para, output_type,
tranche_list):
Calculates expected cash flows and their present values of
a credit default swap on synthetic CDO tranches using a one-factor Gaussian
copula model. Different reference entities can have different factor loadings.
Two calculation methods, a fast Fourier transform and a recursion method, are
provided.
aaCDO_ST_DS_dgen_fl_p(d_v,
contra_d, ref_bskt, tranche_type, tranche_dgen, cpn_tbl_tran, pr_fix, freq_pr, acc,
d_rul, modl_type, modl_para, dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level,
calc_para, stat, tranche_list):
Calculates the fair values and other statistics of a
credit default swap on synthetic CDO tranches using a one-factor Gaussian
copula model. Different reference
entities can have different factor loadings and the premium leg can have
variable notionals and coupons. Multiple
tranches can be valued simultaneously. Two calculation methods, a fast Fourier
transform and a recursion method, are provided.
aaCDO_ST_DS2_dgen_fl_prem_cf(d_v,
contra_d, ref_bskt, tranche_type, tranche_dgen, cpn_tbl_tran, pr_fix, freq_pr, acc,
d_rul, modl_type, modl_para, dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para,output_type,
tranche_list):
Calculates expected premium cash flows and their present
values of synthetic CDO tranches using a one-factor Gaussian copula model. Different reference entities can have
different factor loadings and a premium leg can have variable notionals and
coupons. Two calculation methods, a fast Fourier transform and a recursion
method, are provided.
aaCDO_ST_DS_risk(d_v,
contra_d, ref_bskt, tranche_type, tranche_corr, corr_type, freq_pr, acc, d_rul,
dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para, tranche_list,
out_type, entity_list):
Calculates for each entity the credit spread and other
sensitivities of credit default swaps on synthetic CDO tranches. A one-factor Gaussian copula model with either
a tranche or a base correlation is used in CDO modeling. Two calculation
methods, a fast Fourier transform and a recursion method, are provided.
aaCDO_ST_DS_fl_risk(d_v,
contra_d, ref_bskt, tranche_type, tranche_cpn, freq_pr, acc, d_rul, modl_type, modl_para,
dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para, tranche_list,
out_type, entity_list):
Calculates for each name the credit spread and other
sensitivities of credit default swaps on synthetic CDO tranches. A one-factor Gaussian copula model with
variable factor loadings is used in CDO modeling. Two calculation methods, a
fast Fourier transform and a recursion method, are provided.
aaCDO_ST_DS_dgen_fl_risk(d_v,
contra_d, ref_bskt, tranche_type, tranche_dgen, cpn_tbl_tran, pr_fix, freq_pr, acc,
d_rul, modl_type, modl_para, dp_type, dp_bskt, intrp_tb, hl, dfstd, intrp, accu_level, calc_para, tranche_list,
out_type, entity_list):
Calculates for each name the credit spread and other
sensitivities of credit default swaps on synthetic CDO tranches that have
variable notionals and coupons. A
one-factor Gaussian copula model with variable factor loadings is used in CDO
modeling. Two calculation methods, a fast Fourier transform and a recursion
method, are provided.
aaCDO_ST_DS2_base_ic(d_v,
contra_d, ref_bskt, tranche_sprd, freq_pr, acc, d_rul, dp_type, dp_bskt, intrp_tb,
hl, dfstd, intrp, accu_level, calc_para, tranche_list):
Given par spreads of a credit default swap on synthetic
CDO tranches, calculates the base correlations of the tranches. Two calculation methods, a fast Fourier
transform and a recursion method, are provided.
aaCDO_ST_DS2_std_base_ic(d_v,
contra_d, num_ref_ini, num_dflt, tranche_sprd, freq_pr, acc, d_rul, dp_type, dp_bskt,
intrp_tb, rate_recover, hl, dfstd, intrp,
accu_level, calc_para, tranche_list):
Given par spreads of a credit default swap on standardized
CDO tranches calculates the base correlations of the tranches. Two calculation
methods, a fast Fourier transform and a
recursion method, are provided.
aaCredit_loss_prob2_cum(ref_bskt,
prob_bskt, intrp_prob, modl_type, modl_para, low_bound, up_bound, unit_type, time_points,
accu_level, calc_method).
Calculates the cumulative loss distribution of a basket of
defaultable entities using a one-factor Gaussian copula model. Two calculation
methods, a fast Fourier transform and a recursion method, are provided.
aaCredit_loss_prob2_disc(ref_bskt,
prob_bskt, intrp_prob, modl_type, modl_para, time_points, accu_level, calc_method, output_type):
Calculates the loss distribution at discrete loss points
of a basket of defaultable entities using a one-factor Gaussian copula model.
Two calculation methods, a fast Fourier transform and a recursion method, are
provided.
aaCredit_tranche_loss_prob_cum(ref_bskt,
prob_bskt, intrp_prob, tranche_bound, tranche_type, modl_type, modl_para,
time_pts, accu_level, calc_method, output_type):
Given a basket of defaultable entities and tranches of
credit losses, calculate cumulative loss distributions and expected loses of
the tranches using a one-factor Gaussian copula model. Two calculation methods,
a fast Fourier transform and a recursion method, are provided.
aaCDO_ST_baseCorr_map(base_corr,
intrp_gen, ref_bmark, ref_custom, intrp_prob, time_m, detach_custom, map_type,
rescale, accu_level, calc_method):
Map a benchmark base correlation curve to a bespoke base
correlation curve.
aaCDO_ST_DS_std_p
aaCDO_ST_DS2_std_prem_cf
aaCDO_ST_DS_p
aaCDO_ST_DS2_prem_cf
Input Argument |
Description |
d_v |
Valuation date |
contra_d |
The array contra_d is a table of default swap date(s). It
can have 2 to 7 entries. The first four entries hold in sequence the
terminating date, effective date, odd first coupon date and
next-to-terminating coupon date for premium payments. The last three entries
hold switch values in sequence: the effective date adjustment method 1.
adjust effective date, 2. do
not adjust effective date terminating date adjustment method 1.
adjust terminating date, 2. do
not adjust terminating date) and date generation method 1.
backward, 2.
forward, 3.
IMM dates for premium payments. An IMM date is
the 20th of a month. For example, if the coupon frequency is
quarterly, the IMM dates are: March 20, June 20, Sept. 20 and Dec. 20. In the table only the
terminating date and the effective date are required. The default values of
the third and fourth entries are 0 and that of the last three entries are 1. |
ref_npa |
Notional of a reference entity. It is used in the standardized tranche
functions only. |
num_ref_ini |
Initial number of reference entities. It is used in the standardized tranche
functions only. |
num_dflt |
Number of defaulted entities up to the valuation date,
inclusive. Used in the standardized
tranche functions only. |
tranche_type |
Type of tranche (or loss layer) definition - a switch: 1.
proportional (to the initial pool principal), 2.
actual dollar amount. These two types are mutually convertible. For example, when a proportional tranche
boundary value is converted to an actual dollar amount, the initial tranche
notional is multiplied by the boundary value. |
tranche_corr |
A 5- to 9-column tranche data table. The required columns are (attachment point,
detachment point, correlation, notional, coupon). The correlation can either be a tranche
correlation or a base correlation, which is determined by the parameter
corr_type. The notional can be any
number between 0 and the size of the tranche. If it is 0, it will be calculated as the
size of the tranche. When a portion of
a tranche, instead of the whole tranche, is traded, the actual traded initial
notional should be entered here. For
the optional columns 6 - 9, their default values are 1 (buy protection), 1
(premium notional is adjusted for loss), 0 and 0, respectively. . The upfront
fee in column 8 is the ratio of the upfront payment amount to the outstanding
notional of a tranche. An upfront payment is a premium that is paid from the
protection buyer to the protection seller at the valuation date. if
contra_d(2) < = d_v or at the effective date if contra_d(2) > d_v,
i.e., if the CDO is forward-start. If
a CDO is not forward-start, an upfront
fee is only used in the par or implied spread calculation and is not included
in the premium valuation. For a forward-start CDO the upfront payment is included
in the premium value of the CDO. Column 9 holds tranche prices, which are
used only for the calculation of implied tranche spreads. |
corr_type |
Correlation type - a switch: 1.
tranche correlation; 2.
base correlation. The tranche correlation of a tranche is a
correlation that can be applied to this tranche. A base correlation of a tranche is a
correlation that can be applied to its base tranche, the tranche having an
attachment point of 0 and a detachment point being the same as that of the
given tranche. |
freq_pr |
Premium payment frequency, a switch. |
acc |
Accrual method - a switch. |
d_rul |
Business day convention - a switch. |
dp_type |
Default curve type – a switch: 1.
a CDS spread curve, 2.
a default probability curve |
dp_bskt |
A default curve, either a default probability or a CDS
spread curve, can be time-based (the first column >0 and <1000) or
date-based (the first column >=1000). If it is a default probability curve or a
time-based CDS spread curve, the first column has time (in years) or dates. If it is a date-based CDS spread curve, the first two columns have the effective and
terminating dates of the CDS spreads. The
next m columns have default probabilities/CDS spreads, where m is the number
of reference entities. These columns
must be ordered in the same way as in the reference data table. Times and dates (the terminating dates for a
CDS spread curve) must be increasing. For
a time-based curve, the time-accrual method can be put in the third entry of
the table intrp_tb. Probabilities must
be nonnegative, <=1 and nondecreasing. CDS spreads must be nonnegative. For a date-based default probability curve,
the probabilities in the first row must be 0 and the first date must be the
valuation date if there is one. Excel
users may pass term strings to represent time intervals. Term strings must be in the format kB, kD,
kW, kM, or kY where k is an integer and B, D, W, M and Y stands for market
day, calendar day, week, month and year respectively, e.g., 3M = 3 months. |
intrp_tb |
A default curve parameter table. The array intrp_tb can
have one to six entries. The first entry has the default probability curve
interpolation method. The second entry has the default probability curve
bootstrapping method (see switch sw_1040 in aaCredit_dfltprob_DSSpred2). It
is used only if the default curve type is "par CDS spread curve" (
dp_type =1). If this entry is missing and dp_type=1, the bootstrapping method
will be set to method 1 (assuming constant density). The third entry stores
the time accrual (day counting) method if the default curve is time-based. If
this entry is missing and the default curve is time-based, the time accrual
method will be set to 30/360. If the default curve is not time based, this
entry will be ignored. The fourth to sixth entries store the effective and
terminating date adjustment types and the date generation method of a CDS
curve, respectively. These entries are used only when dp_type = 1. Their
default values are 1. |
rate_recover |
Recovery rate of all the credits in the credit pool. Used in the standardized tranche functions
only. |
hl |
|
dfstd |
Discount factor curve.
It may be input as a 2-column, multi-row table (column 1 = date,
column 2 = discount factor), or as a single cell containing a rate. If input
as a single rate, there are three format choices: 1.
a rate (1 row, 1 column); or 2. a
rate and a rate quotation basis (1 row, 2 columns); or 3. a
rate, a rate quotation basis, and an accrual method (1 row, 3 columns). If the basis or accrual is not provided, they
are assumed to be annual, actual/365. A
2-column flat-rate discount factor curve is constructed internally using the
rate, basis, and accrual method. The last date in the discount factor curve
>= last "date" in the default curve and the terminating date of
the swap |
intrp |
Interpolation method of the discount factor curve, a
switch. |
accu_level |
Level of accuracy, a switch. There are four levels of accuracy. For valuation functions the accuracy levels
are determined according to the levels of accuracy in integration. The four accuracy levels correspond to four
different numbers of points, 10, 30, 50 and 100, respectively, that are used
in the Gaussian quadrature of integration.
For base correlation calibration, they are determined according to
accuracy in integration and levels of tolerance in convergence. The four levels correspond to the above numbers
of Gaussian quadrature points and the four tolerance levels, 0.01, 0.001,
0.0001 and 0.00001, respectively. |
calc_para |
In a fair value calculation function it is a calculation
parameters and premium accrual type table. It can have one or three entries. The first entry has the calculation method
(1 = FFT, 2 = a recursion method). The
second entry is the bump size (in basis points) for DVOX and/or delta
calculation. The third entry has the premium accrual type (1 = pay accrued
premium upon default, 2 = pay no accrual premium upon default). The default
value of the second entry is 1 (basis point) and that of the third entry is 2. In a cash flow function it is a one or two entry table. It
is similar to above but without the second entry, the entry of a DVOX bump
size. |
stat |
A list of indicators for fair value and other statistics. It can be any subset of {1,…23}. |
tranche_list |
List of tranche indicators. It can be any (ascending) subset of {1, 2,
the number of rows of the tranche table}. |
ref_bskt |
Reference data table. It can have 2 or 3 columns. The first two columns have the notional and
recovery rate of a reference entity. The
optional third column has the default status of an entity (0 = alive, 1 =
defaulted). When the column is
missing, its default value is 0. |
output_type |
Output type of a premium cash flow table, a switch, 1.
a 6-column table of no-default cash flow table
(tranche ID, date, notional, coupon, no-default interest, accrued interest); 2. a
6-column cash flow table (tranche ID, date, no-default interest, expected
interest, present value, accrued interest); 3. a
16-column extended cash flow table (tranche ID, effective date, terminating
date, notional, coupon, no-default int., no-default fixed premium, total
no-default cash flow, accrued interest, expected interest., expected fixed
premium, total expected cash flow, present value of interest, present value
of fixed premium, total present value,
discount factor). The fixed premium
column has a non-zero value only if the effective date > the valuation
date and the upfront column of the tranche table has a positive value. 4. a
default probability curve |
For other functions, the definitions for most of
their input parameters are the same as those given in the above table. In the
following, descriptions will only be given for those parameters that don’t
appear in the above table or have different meanings.
aaCDO_ST_DS_fl_p
aaCDO_ST_DS2_fl_prem_cf
aaCDO_ST_DS_dgen_fl_p
aaCDO_ST_DS2_dgen_fl_prem_cf
Input Argument |
Description |
tranche_cpn |
A 4- to 8-column tranche data table. It is similar to the table tranche_corr (see
the input parameter table above) except that it doesn’t have a correlation
column |
modl_type |
Model type. There
is only one selection in this release: normal (Gaussian) copula model. |
modl_para |
An array of factor loading(s). It can have up to N (the number of reference
entities, i.e., rows of ref_bskt) elements. The ith element is the factor loading of the
ith entity. If the table has m< N
elements, the factor loading of any jth (j>=m+1) element is set to the
value of the mth element. Note that if all the pairs of the entities in the
basket have the same correlation, the factor loading of all the entities is
the same, which is the square root of the absolute value of the correlation. |
tranche_dgen |
A tranche table. The
required columns are (attachment point, detachment point). The columns 3 - 5 are optional. Their
default values are 1 (buy protection), 1 (premium notional is adjusted for
loss) and 0% (no upfront fee), respectively. See tranche_cpn above for the
description of an upfront fee in column 5. |
cpn_tbl_tran |
A notional and coupon table. It has 2N+2 columns (effective date, terminating
date, notional of tranche 1, coupon of tranche 1, notional of tranche N,
coupon of tranche N), where N is the number of tranches. The terminating date must be ascending and
the terminating date of the ith row must be the same as the effective date in
the (i+1)th row. The notional of a
tranche cannot be larger than the tranche size. |
pr_fix |
A fixed premium payment table. It can be a single entry
table or an N+1-column table, where N is the number of tranches. If it is single entry table, all tranches
have no fixed premium payments. If it is an N+1-column table, the first
column has payment dates and the (i+1)th column the fixed premium payment of
the ith tranche, i=1...N. Dates must be ascending and fixed premium
payments must be nonnegative. Note
also that an upfront payment of a tranche can be treated as a fixed payment,
but will be used in valuation only if its payment date is later than d_v. |
stat |
A list of indicators for fair value and other statistics. It can be any subset of {1, 2,…21}. |
output_type |
Output type of a premium cash flow table, a switch, 1.
an 8-column table of no-default cash flow
table (tranche ID, date, notional, coupon, no-default interest, no-default
fixed payment, total cash flow, accrued interest); 2.
a 5-column expected cash flow table (tranche
ID, date, expected interest, expected fixed payment, total expected cash
flow). 3.
a 5-column present value cash flow table
(tranche ID, date, present value of interest, present value of fixed payment,
total present value); 4.
a 6-column interest cash flow table (tranche
ID, date, no-default interest, expected interest, present value, accrued
interest); 5.
a 16-column extended cash flow table (tranche
ID, effective date, terminating date, notional, coupon, no-default interest,
no-default fixed payment, total no-default cash flow, accrued interest,
expected interest, expected fixed payment, total expected cash flow, present
value of interest, present value of fixed payment, total present value,
discount factor). 6.
a default probability curve |
aaCDO_ST_DS_std_risk
aaCDO_ST_DS_risk
aaCDO_ST_DS_fl_risk
aaCDO_ST_DS_dgen_fl_risk
Input Argument |
Description |
out_type |
An output type. In aaCDO_ST_DS_std_risk,
it is a switch with three values: 1.
delta of CDS spread; 2. DVOX
of CDS spread. 3. Jump-to-default
value (value of default), in aaCDO_ST_DS_risk,
it has four values: 1.
delta of CDS spread; 2. DVOX
of CDS spread; 3. rho
of correlation; 4. Jump-to-default
value (value of default) and in aaCDO_ST_DS_fl_risk
and aaCDO_ST_DS_dgen_fl_risk,
it has five values: 1.
delta of CDS spread; 2. DVOX
of CDS spread; 3. rho
of correlation; 4. rho
of factor loading; 5. Jump-to-default
value (value of default) |
entity_list |
A list of entities of the reference pool. In aaCDO_ST_DS_std_risk,
the entity list is any subset of {1…, number of entities minus number of
defaulted entities}, noting that in this case no reference table is given and
only the information on the survived references is available. In other functions the list can be any
subset of {1, 2,...number of entities}. |
aaCDO_ST_DS2_std_base_ic
aaCDO_ST_DS2_base_ic
Input Argument |
Description |
tranche_sprd |
A tranche table with par spreads or implied spreads given
prices. It can have 3 to 5 columns.
The required columns are (attachment point, detachment point, par/implied CDS
spread). For the optional forth and
fifth columns (trading position, upfront payment) their default values are 1
(buy protection), 1 (premium notional is adjusted for loss) and 0%, respectively.
The upfront payment in column 5 is a
fee that is paid from the protection buyer to the protection seller at the
valuation date. An upfront fee, a
number between 0 and 1, is the ratio of the upfront fee amount to the
outstanding notional of the tranche. |
accu_level |
Level of accuracy, a switch. There are four levels of accuracy. They are determined according to the levels
of accuracy in integration and accuracy of convergence in root finding. |
calc_para |
It is the same as that of a cash flow function. See the
input parameter description of the function aaCDO_ST_DS2_prem_cf
for details |
aaCredit_loss_prob2_cum
aaCredit_loss_prob2_disc
aaCredit_tranche_loss_prob_cum
Input Argument |
Description |
ref_bskt |
A two-column reference entity data table (notional, recovery
rate) |
intrp_prob |
The interpolation method of a probability curve; a switch:
1.
linear, 2. exponential For both interpolation methods, if the default
probability curve is not long enough, the exponential extrapolation method is
always used to extend the curve. |
prob_bskt |
A basket default probability curve. It is a time-based default probability curve
(time in years, default probability of entity i, i=1, 2 to N), where N is the number of entities
(rows) in the reference entity table ref_bskt. |
low_bound |
The lower bound of loss range |
up_bound |
The upper bound of loss range |
unit_type |
Unit type of loss bounds, a switch: 1.
the lower and upper bounds are proportional to
the total notional of the reference entity pool; 2. the
bounds are in dollar amount. |
time_points |
Time points (in years) at which loss probabilities are to
be calculated |
calc_method |
Calculation method. a switch 1.
a fast Fourier transform 2. a
recursion method |
output_type |
Output type, a switch (used in aaCredit_loss_prob2_disc
only) 1.
remove negligible loss points 2. keep
all loss points
|
tranche_bound |
A tranche definition and loss range table. It has four
columns. The first two columns have the tranche attachment point and
detachment point. The third and fourth columns have the lower bound and upper
bound of the tranche loss. The two bounds are the range of the loss for which
the probability is calculated. |
aaCDO_ST_baseCorr_map
Input Argument |
Description |
base_corr |
A base correlation table (detachment point, base
correlation). Note that a detachment point must be >0 and rigorously
increasing, and a base correlation must be >=0 and <1. |
intrp_gen |
Interpolation method of a base correlation curve – a
switch. |
ref_bMark |
The reference data table of the benchmark CDO. It can be a
two-column reference entity data table (notional, recovery rate) or a three column and one row table where
the third column has the number of entities in the basket. Note that for a
three column table, all the reference entities must have the same notional
and the same recovery rate. |
ref_custom |
Similar to ref_bMark, but
it is the reference table for the bespoke CDO. |
prob_bmark |
Default probability curve of the benchmark reference
basket. It can be an N+1 column table with N the number of entities, where
the first column has the time horizon and column i+1 has the default
probability of entity i. or a two-column table where the second column has
the default probabilities of each entity in the basket. Note that for t he
second type of table all the entities must have the same default
probabilities. |
intrp_prob |
See above |
time_m |
Time to maturity of the CDOs |
detach_custom |
Detachment points of the custom CDO at which base
correlations are to be calculated. |
map_type |
Correlation mapping type, a switch. See the section Base
correlation mapping for details. |
accu_level |
See above |
calc_method |
See above |
aaCDO_ST_DS_std_p
aaCDO_ST_DS_p
aaCDO_ST_DS_fl_p
Output Statistics |
Description |
1 |
Fair value |
2 |
Value of payoff |
3 |
Value of premium |
4 |
Accrued interest of premium |
5 |
fair value minus accrued interest |
6 |
Implied spread given price. Case 1: The input tranche data
table does not have a column of quoted prices. For this case when the effective date <= the
valuation date, the implied spread of a tranche is the (par) CDS spread that
makes the fair value minus the accrued interest equal the amount of the
tranche’s upfront payment; otherwise, it is the CDS spread that makes the
fair value minus the accrued interest equal 0. Case 2. The input tranche data
table has a column of tranche prices. For this case when the effective date <= the
valuation date, the implied spread of a tranche is the CDS spread that makes
the fair value minus the accrued interest equal the amount of the tranche’s
upfront payment plus the given tranche price; otherwise, it is the CDS spread
that makes the fair value minus the accrued interest equal the tranche price.
|
7 |
Ratio of par or implied spread and reference credit spread
aggregate. This is the ration of the par spread of a tranche and the sum of
the par CDS spreads of reference entities at maturity. |
8 |
Attachment point |
9 |
Detachment point |
10 |
Tranche size |
11 |
Tranche notional |
12 |
Tranche loss up to the valuation date, inclusive |
13 |
Outstanding tranche notional. This is the difference of the initial
tranche notional and the accumulated loss to the tranche. |
14 |
DVOX of credit default spreads |
15 |
|
16 |
|
17 |
BPV of risk-free rate |
18 |
Theta |
19 |
Number of days that premium accrues |
20 |
Next coupon date |
21 |
Previous coupon date |
22 |
Number of remaining cash flows |
23 |
Implied upfront fee given premium coupon rate. If the CDO
is not forward-start, it is the upfront fee per one unit notional of a
tranche that makes the upfront payment amount, the fee times the outstanding
notional of a tranche, equal the tranche’s fair value minus its accrued
interest; otherwise it is the upfront fee that makes the fair value of the
tranche minus its accrued interest have a value of 0. If the trading position
of a tranche is selling protection, the upfront payment must be multiplied by
-1 in the calculation. |
The function aaCDO_ST_DS_dgen_fl_p has
all the above outputs except the statistics 6 and 7.
The outputs are arranged in a two-dimensional array. Different rows correspond to different statistics.
The columns correspond to the tranches in the tranche list tranche_list. The
order of the tranches remains the same as in the list.
aaCDO_ST_DS2_std_prem_cf
aaCDO_ST_DS2_prem_cf
aaCDO_ST_DS2_fl_prem_cf
table_type |
Switch |
Description |
|
1 |
No-default cash flow table |
A six column table of cash flows (tranche ID, date, notional,
coupon, no-default interest, accrued interest) given that no default occurs
during the life of the CDO. |
|
2 |
Expected cash flow table |
A six-column expected and present value cash flow table
(tranche ID, date, no-default interest, expected interest, present value, accrued
interest) |
|
3 |
Extended cash flow table |
A 16-column extended cash flow table (tranche ID, effective
date, terminating date, notional, coupon, no-default interest, no-default
fixed payment, total no-default cash flow, accrued interest, expected
interest, expected fixed payment, total expected cash flow, present value of
interest, present value of fixed payment, total present value, discount
factor). The columns corresponding to
fixed cash flows store the upfront fee payment only. These columns have zero values unless the
CDO is forward-start, i.e., contra_d(2)>d_v. |
|
4 |
Default probability curve |
If the input default curve is a CDS spread curve, it is
the default probability curve generated from the spread curve. Otherwise, it
is simply the default probability curve standardized from the input curve. |
For aaCDO_ST_DS2_dgen_fl_prem_cf, its output table has the
following six types
table_type |
Switch |
Description |
1 |
No-default cash flow table |
An 8-column table of no-default cash flow table (tranche
ID, date, notional, coupon, no-default interest, no-default fixed payment,
total cash flow, accrued interest) |
2 |
Expected cash flow table |
A 5-column expected cash flow table (tranche ID, date,
expected interest, expected fixed payment, total expected cash flow). |
3 |
Cash flow present value table |
A 5-column cash flow present value table (tranche ID,
date, present value of interest, present value of fixed payment, total
present value); |
4 |
Interest cash flow table |
A 6-column interest cash flow table (tranche ID, date,
no-default interest, expected interest, present value, accrued interest |
5 |
Extended cash flow table |
A 16-column extended cash flow table (tranche ID,
effective date, terminating date, notional, coupon, no-default interest, no-default
fixed payment, total no-default cash flow, accrued interest, expected
interest, expected fixed payment, total expected cash flow, present value of
interest, present value of fixed payment, total present value, discount
factor). The columns corresponding to
fixed cash flows store the upfront fee payment only. These columns have zero values unless the
CDO is forward-start, i.e., contra_d(2)>d_v. |
6 |
Default probability curve |
See the above table for descriptions. |
aaCDO_ST_DS_std_risk
aaCDO_ST_DS_risk
aaCDO_ST_DS_fl_risk
aaCDO_ST_DS_dgen_fl_risk
These functions calculate sensitivity statistics with
respect to individual entities. Their
outputs are two-dimensional arrays. The
rows correspond to the entities given in entity_list and
the columns to entity IDs (the first column) and tranche IDs given in the table
tranche_list.
The tranche order is the
same as that in the input array tranche_list.
aaCDO_ST_DS2_std_ic
aaCDO_ST_DS2_ic
The outputs of these base correlation calibration
functions are two dimensional arrays. The
rows correspond to the entities and the columns to tranche IDs given in the
table tranche_list.
The tranche order is the same as that in
the input array tranche_list.
aaCredit_loss_prob2_cum
aaCredit_loss_prob2_disc
aaCredit_tranche_loss_prob_cum
For aaCredit_loss_prob2_cum, its output table, a 1
by N table with N being the number of points in the input array time_points,
gives for any time point in this array the probability that the total
accumulated loss from time 0 to this time point will fall between the range
low_bound and up_bound.
For aaCredit_loss_prob2_dis, the loss
probabilities are calculated for a set of loss units. It is an M by N table,
where M is the number of loss units and N is the number of points in the input
array time_points . Note that M depends on the reference data table ref_bskt.
If this table is far from being homogeneous, M can be very large. If the output
type is set to “remove negligible loss points”, the extra loss points, which are
not the “true” loss points of the reference pool, will not be included in the
output table. See more details on the input parameters table of these
functions.
For aaCredit_tranche_loss_prob_cum, its outputs
are similar to those of the function aaCredit_loss_prob2_cum
except that the loss probabilities are for losses of tranches instead of losses
of the whole reference portfolio.
aaCDO_ST_baseCorr_map
The output of this function is a base correlation
curve for the bespoke CDO tranches.
1.
DVOX on all credit spread curves
of the entities in the reference pool.
This statistic is an output of a fair value
calculation function, e.g., aaCDO_ST_DS_std_p. It is defined as the change in the fair value
per X basis point shift in all the par CDS spread curves of the entities in the
reference pool. In more detail, let be the fair value of a
CDO derivative. For every entity in the
reference pool, add X basis points to its default curve (if the default curve
is a default probability curve derive a par spread curve first) and build a new
default curve. Then combine these
default curves together to form a basket default curve and use this basket
default curve as an input to revalue the derivative. Let
be the new fair value.
The DVOX is then calculated as follows:
2. DVOX on
a single reference entity.
This statistic is calculated in functions, that
calculate risk statistics exclusively, e.g., aaCDO_ST_DS_std_risk.
It is defined similarly as above, but
only the default curve of the specified entity is shifted X basis point.
See Remark 2 in the section Recursion Method on fast
calculation of DVOXs on individual reference entities.
Deltas are calculated in functions that output risk statistics
exclusively. The delta on the par CDS
spread of a reference entity is defined as:
where DVOX at par of a CDS is the DVOX of a CDS with
its premium rate being the par premium rate of the CDS.
1.
This statistic is calculated in fair value calculation
functions only. It is the change in the
fair value of a CDO derivative per 1% change in the recovery rate. In more
detail, let be the fair value of
the derivative at a recovery rate
. Then:
If the recovery rates of the reference entities differ,
the recovery in the above formula
should be replaced with a vector of recovery rates and to bump it simply add
0.01 to every component of the vector.
2.
This statistic is calculated in functions that only calculate
risk statistics. It is defined similarly
as above, but only the recovery rate of the specified entity is bumped 1%. If a
function, e.g., aaCDO_ST_DS_std_risk, has only one recovery
rate as an input for all the reference entities, such a risk statistic is not
calculated.
This statistic is an output of functions that take in
a correlation and calculate fair values. It is the change in the fair value of a CDO
derivative per 1% change in the correlation. In more detail, let be the fair value of
the CDO derivative at the correlation
Then:
1.
This statistic is an output of functions that take in
factor loadings and calculate fair values. It is the change in the fair value of the CDO
derivative per 10% increase in the factor loadings of all the reference
entities. In more detail, let be the fair value of
the CDO derivative. For all the entities
in the reference pool add 0.1 to their factor loadings. Then revalue the derivative to get a new fair
value
. The rho of factor
loading is then calculated as follows:
2.
This statistic is an output of functions that have a
factor loading table as an input and calculate risk statistics only. It is defined similarly as above, but only the
factor loading of a specified entity is bumped 10%.
The theta of a CDO derivative is the change in the
fair value of the derivative per one day increase of the valuation date. Let be the fair value of
the derivative. Then:
The BPV (basis point value) of a risk free discount
factor curve is the change in the fair value of a CDO derivative when the
risk-free discount factor curve is shifted up one basis point. To shift up a discount factor curve simply add
one basis point to every point of the corresponding spot rate curve of the
discount factor curve.
The jump-to-default value, also known as the value on
default (VOD), of a tranche position of a synthetic CDO is the sensitivity of
the CDO resulting from an instant default of an entity in the reference basket,
keeping all other credit spreads in the reference basket unchanged. It is
calculated as the sum of the loss amount of the entity which is assumed to
default instantly and the change of the CDO’s fair value after and before the
default of the entity. For example, for a protect seller position the loss
amount is the negative of the loss given default of the reference entity. For
the second part, calculate the fair value of the tranche and then recalculate
it with the default status to default of the entity for which its VOD is to be
calculated. The second part is simply the difference of the tranche’s value of
the second and the first calculation.
Context examples are given below for various types of CDOs
on valuation, calibration of implied base correlations and delta hedging.
Consider a standardized synthetic CDO with three tranches,
0%-3%, 3%-10% and 10%-15%. The reference
pool has 125 names and each has a notional of 1000000. An investor bought the whole equity tranche and
to hedge it he sold the whole mezzanine tranche 3-10%. For the equity tranche, whenever a reference
name defaults he will be compensated for the loss and at the same time the
notional of his premium payment will be reduced by the lost amount. For the mezzanine tranche, when the
accumulated loss reaches 3% of the total notional of the pool, he has to pay to
the buyer of the tranche any loss to the tranche and at the same time he will
receive less premium payment: the
premium notional of the mezzanine tranche will be reduced by the loss to this
tranche. Suppose all the reference names
have the same flat CDS spread, 0.5% and the same recovery rate, 40%. Other details of the CDO and the required data
are shown in the following six tables.
aaCDO_ST_DS_std_p
Argument |
Description |
Example Data |
Switch |
d_v |
Valuation date |
1-Dec-2006 |
|
contra_d |
CDS date table |
see below |
|
ref_npa |
Notional of a reference entity |
1000000 |
|
num_ref_ini |
Initial number of reference entities |
125 |
|
num_dflt |
Number of defaulted entities up to the valuation date |
0 |
|
tranche_type |
Type of a tranche (or loss layer) definition |
1 |
proportional |
tranche_corr |
Tranche table |
see below |
|
corr_type |
Correlation type |
2 |
base correlation |
freq_pr |
Premium payment frequency |
3 |
quarterly |
acc |
Accrual method |
2 |
act./360 |
d_rul |
Business day convention |
2 |
next business day |
dp_type |
Default curve type |
1 |
par CDS spread curve |
dp_bskt |
Par CDS spread curve |
see below |
|
intrp_tb |
Default curve parameter table |
see below |
|
rate_recover |
Recovery rate |
0.4 |
|
hl |
A holiday list |
0 |
|
dfstd |
The discount factor curve |
see below |
|
Intrp |
Interpolation method of the discount factor curve, a
switch. |
1 |
linear |
accu_level |
Level of accuracy |
2 |
accuracy level 2 |
calc_para |
Calculation parameter table |
see below |
|
stat |
List of statistics |
{1, 2,…,23} |
|
tranche_list |
Tranche list |
see below |
|
CDS Date Table
Terminating date |
Effective date |
First coupon date |
Next to last coupon date |
Effective date adjustment |
Terminating date adjustment |
Date generation method |
1-Dec-2005 |
0 |
0 |
2 |
2 |
3 |
|
|
|
|
|
Switch: no adjustment |
Switch: no adjustment |
Switch: IMM date generation |
Tranche Table
Attachment |
Detachment |
Base Correlation |
Notional |
Coupon |
Position |
Switch |
0 |
0.03 |
0.35 |
0 |
0.1 |
1 |
Buy protection |
0.03 |
0.1 |
0.38 |
0 |
0.02 |
2 |
Sell protection |
0.1 |
0.15 |
0 |
0 |
0 |
1 |
Buy protection |
Reference Entity CDS Spread Table
Effective Date |
Terminating Date |
CDS Spread of Entity 1 |
CDS Spread of Entity 2 |
CDS Spread of Entity 3 |
CDS Spread of Entity … |
1-Oct-2006 |
1-Oct-2010 |
0.005 |
0.005 |
0.005 |
… |
Default Curve Parameter Table
interpolation of
default probability curve |
bootstrapping method |
accrual method of
time-based default curve |
effective date
adjustment |
maturity date
adjustment |
date generation
method |
1 |
4 |
2 |
2 |
3 |
Risk-free Discount Factor Curve
Date |
Discount factor |
1 |
|
1-Jun-2007 |
0.971285862 |
1-Dec-2007 |
0.943396226 |
1-Dec-2008 |
0.88999644 |
1-Dec-2009 |
0.839619283 |
1-Dec-2011 |
0.747258173 |
1-Dec-2016 |
0.558394777 |
1-Dec-2020 |
0.417265061 |
Calculation Parameters and Premium Accrual Type Table
Calculation method |
Bump size |
Premium accrual type |
1 |
1 |
Tranche List
2 |
To value the tranche portfolio call the function aaCDO_ST_DS_std_p,
Results
Output Statistics |
Description |
Tranche 1 |
Tranche 2 |
1 |
Fair value |
125825.44 |
-30885.52 |
2 |
Value of payoff |
1278041.58 |
-679223.77 |
3 |
Value of premium |
-1152216.14 |
648338.25 |
4 |
Accrued interest of premium |
-75000.00 |
35000.00 |
5 |
Fair value minus accrued interest |
200825.44 |
-65885.52 |
6 |
Par spread |
11.86% |
2.21% |
7 |
Ratio of par spread and reference credit spread aggregate |
18.98% |
3.54% |
8 |
Attachment point |
0.00 |
3750000 |
9 |
Detachment point |
3750000.00 |
12500000 |
10 |
Tranche size |
3750000.00 |
8750000 |
11 |
Tranche notional |
3750000.00 |
8750000 |
12 |
Tranche loss up to the valuation date, inclusive |
0.00 |
0 |
13 |
Outstanding tranche notional |
3750000.00 |
8750000 |
14 |
DVOX of credit default spreads |
21067.43 |
-17928.86 |
15 |
|
4453.10 |
60.88 |
16 |
|
-22976.17 |
-4168.75 |
17 |
BPV of risk-free rate |
-18.02 |
34.01 |
18 |
Theta |
-1030.13 |
660.26 |
19 |
Number of days that premium accrues |
72.00 |
72.00 |
20 |
Next coupon date |
20-Dec-2006 |
20-Dec-2006 |
21 |
Previous coupon date |
20-Sep-2006 |
20-Sep-2006 |
22 |
Number of remaining cash flows |
17.00 |
17.00 |
23 |
Implied upfront fee given coupon |
5.355345% |
0.752977% |
To round check par spreads simply replace the coupons
of tranches 1 and 2 in the input tranche data table with the output par spreads
and set the statistic list to the single number 5 (the statistic fair value
minus accrued interest) and then rerun the function. The outputs for both tranche
1 and 2 should be 0.
To round check the implied upfront fee, simply
multiply the size and the implied upfront fee of a tranche. For example for
tranche 1 this is:
which equals the fair value minus accrued interest of
tranche 1. To round check tranche 2 a negative sign should be applied to the
result since the tranche has a position of selling protection.
To view the cash flows of the premium legs call the
function aaCDO_ST_DS2_std_prem_cf
with table_type = 3. Here is the output premium cash flow table:
Results
ID |
Date |
No-default Interest |
Expected Interest |
Present Value |
Accrued Interest |
1 |
20-Dec-2006 |
-94791.67 |
-94708.61 |
-94424.71 |
-75000.00 |
1 |
20-Mar-2007 |
-93750.00 |
-91271.52 |
-89701.93 |
0.00 |
1 |
20-Jun-2007 |
-95833.33 |
-89988.17 |
-87143.66 |
0.00 |
1 |
20-Sep-2007 |
-95833.33 |
-86953.60 |
-82985.84 |
0.00 |
1 |
20-Dec-2007 |
-94791.67 |
-83251.38 |
-78308.26 |
0.00 |
1 |
20-Mar-2008 |
-94791.67 |
-80692.29 |
-74829.76 |
0.00 |
1 |
20-Jun-2008 |
-95833.33 |
-79133.92 |
-72322.41 |
0.00 |
1 |
22-Sep-2008 |
-97916.67 |
-78457.84 |
-70628.49 |
0.00 |
1 |
22-Dec-2008 |
-94791.67 |
-73766.69 |
-65438.28 |
0.00 |
1 |
20-Mar-2009 |
-91666.67 |
-69387.95 |
-60711.15 |
0.00 |
1 |
22-Jun-2009 |
-97916.67 |
-72103.14 |
-62151.35 |
0.00 |
1 |
21-Sep-2009 |
-94791.67 |
-67904.06 |
-57678.98 |
0.00 |
1 |
21-Dec-2009 |
-94791.67 |
-66117.40 |
-55346.14 |
0.00 |
1 |
22-Mar-2010 |
-94791.67 |
-64404.07 |
-53170.42 |
0.00 |
1 |
21-Jun-2010 |
-94791.67 |
-62758.82 |
-51089.56 |
0.00 |
1 |
20-Sep-2010 |
-94791.67 |
-61176.74 |
-49097.29 |
0.00 |
1 |
20-Dec-2010 |
-94791.67 |
-59653.40 |
-47187.91 |
0.00 |
2 |
20-Dec-2006 |
44236.11 |
44235.64 |
44103.03 |
35000.00 |
2 |
20-Mar-2007 |
43750.00 |
43705.37 |
42953.77 |
0.00 |
2 |
20-Jun-2007 |
44722.22 |
44564.33 |
43155.66 |
0.00 |
2 |
20-Sep-2007 |
44722.22 |
44403.63 |
42377.45 |
0.00 |
2 |
20-Dec-2007 |
44236.11 |
43731.00 |
41134.44 |
0.00 |
2 |
20-Mar-2008 |
44236.11 |
43517.73 |
40356.04 |
0.00 |
2 |
20-Jun-2008 |
44722.22 |
43761.20 |
39994.42 |
0.00 |
2 |
22-Sep-2008 |
45694.44 |
44453.69 |
40017.63 |
0.00 |
2 |
22-Dec-2008 |
44236.11 |
42772.14 |
37943.08 |
0.00 |
2 |
20-Mar-2009 |
42777.78 |
41104.96 |
35964.88 |
0.00 |
2 |
22-Jun-2009 |
45694.44 |
43619.11 |
37598.74 |
0.00 |
2 |
21-Sep-2009 |
44236.11 |
41937.13 |
35622.19 |
0.00 |
2 |
21-Dec-2009 |
44236.11 |
41647.29 |
34862.48 |
0.00 |
2 |
22-Mar-2010 |
44236.11 |
41353.03 |
34140.04 |
0.00 |
2 |
21-Jun-2010 |
44236.11 |
41053.95 |
33420.45 |
0.00 |
2 |
20-Sep-2010 |
44236.11 |
40749.82 |
32703.70 |
0.00 |
2 |
20-Dec-2010 |
44236.11 |
40441.00 |
31990.24 |
0.00 |
Note that in the call to the above cash flow
function, the parameter table calc_para must be
replaced with the following table
Calculation Parameters and Premium Accrual Type Table
Calculation method |
Premium accrual type |
2 |
1 |
Suppose in Example 1 the tranches are to be traded and the
equity tranche has a 5% upfront fee, a fee that is paid to the protection
seller at the valuation date. Then the tranche table should be modified as follows:
Tranche Table
Attachment |
Detachment |
Correlation |
Notional |
Coupon |
Position |
Notional Adjustment Method |
Upfront Fee |
0.03 |
0.35 |
0 |
0.1 |
1 |
1 |
5% |
|
0.03 |
0.1 |
0.38 |
0 |
0.02 |
2 |
1 |
0 |
0.1 |
0.15 |
0 |
0 |
0 |
1 |
1 |
0 |
Since for a non-forward-start CDO an upfront payment
of a tranche is not counted as part of the fair value in a FINCAD CDO function,
the outputs are the same as those of example 1 except for the par CDS spreads
and the ratios of par spread aggregate which are given below:
Results
Output Statistics |
Description |
Tranche 1 |
Tranche 2 |
6 |
Par spread |
10.12% |
2.21% |
7 |
Ratio of par spread and reference credit spread aggregate |
16.20% |
3.54% |
Note that the outputs of tranche 2 are the same
as those in example 1. This is obvious since tranche 2 doesn’t have an upfront fee.
Suppose in Example 2 quoted prices of tranche 1 and
tranche 2 are 140000 and -250000, respectively To calculate the implied spreads
that values the two tranches to these quotes. We can call the same function
with the input tranche table being replaced with the following tranche table:
Tranche Table
Attachment |
Detachment |
Base Correlation |
Notional |
Coupon |
Position |
Notional adjustment method |
Upfront fee |
Quoted price |
0.03 |
0.35 |
0 |
0.1 |
1 |
1 |
0.05 |
140000 |
|
0.03 |
0.1 |
0.38 |
0 |
0.02 |
2 |
1 |
0 |
-250000 |
0.1 |
0.15 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
and the statistics list being replaced with the
single number 6. The results are shown below
Results
Output Statistic |
Description |
Tranche 1 |
Tranche 2 |
6 |
implied spread given price quote |
8.82% |
1.40% |
Suppose in Example 1 five of the reference entities have
defaulted. To value the CDO, in the
input parameter table of Example 1 set the number of defaults to 5 and replace
the default curve with a curve of 120 entities. Suppose the CDS contract dates
are given as follows
CDS Dates Table
Terminating date |
Effective date |
First coupon date |
Next to last coupon date |
Effective date adjustment |
Terminating date adjustment |
Date generation method |
1-Sep-2010 |
1-Sep-2004 |
0 |
0 |
1 |
1 |
3 |
Then call the same function to get the
following results:
Results
Output Statistics |
Description |
Tranche 1 |
Tranche 2 |
1 |
Fair value |
229881.17 |
-685813.37 |
2 |
Value of payoff |
406159.91 |
-1275745.18 |
3 |
Value of premium |
-176278.74 |
589931.81 |
4 |
Accrued interest of premium |
-15000.00 |
35000.00 |
5 |
Fair value minus accrued interest |
244881.17 |
-720813.37 |
6 |
Par spread |
0.2518 |
0.0460 |
7 |
Ratio of par spread and reference credit spread aggregate |
0.4197 |
0.0766 |
8 |
Attachment point |
0.00 |
3750000.00 |
9 |
Detachment point |
3750000 |
12500000 |
10 |
Tranche size |
3750000 |
8750000 |
11 |
Tranche notional |
3750000 |
8750000 |
12 |
Tranche loss up to the valuation date, inclusive |
3000000 |
0 |
13 |
Outstanding tranche notional |
750000 |
8750000 |
14 |
DVOX of credit default spreads |
4560.18789 |
-25625.675 |
15 |
|
9039.54836 |
16855.5286 |
16 |
|
-8428.8721 |
9191.3896 |
17 |
BPV of risk-free rate |
-26.877809 |
141.064217 |
18 |
Theta |
-253.6743 |
952.160623 |
19 |
Number of days that premium accrues |
72 |
72 |
20 |
Next coupon date |
20-Dec-2006 |
20-Dec-2006 |
21 |
Previous coupon date |
20-Sep-2006 |
20-Sep-2006 |
22 |
Number of remaining cash flows |
16 |
16 |
23 |
Par upfront fee ratio |
0.32650823 |
0.08237867 |
Suppose in example 1 the par spreads of tranches 1 and 2
are 12% and 2%, respectively, but the base correlations are unknown. To
calculate the base correlations that are implied from the par spreads, we can
call the function aaCDO_ST_DS2_std_base_ic. The input tables are given in the following
three tables.
aaCDO_ST_DS_std_base_ic
Argument |
Description |
Example Data |
Switch |
d_v |
Valuation date |
1-Dec-2006 |
|
contra_d |
CDS date table |
see example 1 |
|
num_ref_ini |
Initial number of reference entities. |
125 |
|
num_dflt |
Number of defaulted entities up to the valuation date |
0 |
|
tranche_sprd |
Tranche table |
see below |
|
freq_pr |
Premium payment frequency |
3 |
Quarterly |
acc |
Accrual method |
2 |
act./360 |
d_rul |
Business day convention |
2 |
next business day |
dp_type |
Default curve type |
1 |
par CDS spread curve |
dp_bskt |
Par CDS spread curve |
see example 1 |
|
intrp_tb |
Default curve parameter table |
see example 1 |
|
rate_recover |
Recovery rate |
0.4 |
|
hl |
|
0 |
|
dfstd |
The discount factor curve |
see example 1 |
|
intrp |
Interpolation method of the discount factor curve, a
switch. |
1 |
Linear |
accu_level |
Level of accuracy |
2 |
accuracy level 2 |
calc_para |
Calculation method and premium accrual type table |
See below |
|
tranche_list |
Tranche list |
see example 1 |
|
Tranche Table
Attachment |
Detachment |
Spread |
0.03 |
0.12 |
|
0.03 |
0.1 |
0.02 |
Calculation Method and Premium Accrual Type Table
Calculation method |
Premium accrual type |
1 |
Other input tables are the same as those in example
1. The results are shown below:
Output Table Results
Tranche ID |
Base Correlation |
Number of Internal Function
Calls |
Convergence |
1 |
0.3442 |
13 |
0 |
2 |
0.4145 |
26 |
0 |
Note that the calibrated base correlations are
slightly different from those in the input tranche table in example 1. This is
because the spreads in the tranche table of this example are slightly different
from the par spreads of the tranches (see the outputs of example 1 corresponding
to the statistic 6).
Suppose in example 1 the CDO is not standardized and its
reference entity pool has 10 names with their notionals and recovery rates
given as in the following table:
Notional and Recovery Rate Table
Notional |
Recovery Rate |
1000000 |
0.4 |
1000000 |
0.4 |
1000000 |
0.4 |
2000000 |
0.4 |
2000000 |
0.4 |
2000000 |
0.3 |
2000000 |
0.3 |
3000000 |
0.3 |
3000000 |
0.3 |
3000000 |
0.3 |
Suppose also that CDS spread curves of the entities
are:
Par CDS Spread Curve
|
Names |
||||||||||
Dates |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
Effective Date |
Maturity Date |
|
|
|
|
|
|
|
|
|
|
1-Dec-2010 |
0.02 |
0.02 |
0.01 |
0.03 |
0.04 |
0.02 |
0.05 |
0.03 |
0.02 |
0.02 |
Moreover, the coupon rates of tranche 1 and tranche 2
are 5% and 2%, their tranche correlations are 0.35 and 0.38, and their upfront
fees are 30% and 10%, respectively. To value the CDO, call the function aaCDO_ST_DS_p
with the following input tables:
aaCDO_ST_DS_p
Argument |
Description |
Example Data |
Switch |
d_v |
Valuation date |
1-Dec-2006 |
|
contra_d |
CDS date table |
see example 1 |
|
ref_bskt |
Reference notional and recovery rate table |
see above |
|
tranche_type |
Type of a tranche (or loss layer) definition |
1 |
proportional |
tranche_corr |
Tranche table |
see below |
|
corr_type |
Correlation type |
1 |
tranche correlation |
freq_pr |
Premium payment frequency |
3 |
Quarterly |
acc |
Accrual method |
2 |
act./360 |
d_rul |
Business day convention, a switch. |
2 |
next business day |
dp_type |
Default curve type |
1 |
par CDS spread curve |
dp_bskt |
Par CDS spread curve |
see above |
|
intrp_tb |
Default curve parameter table |
see example 1 |
|
hl |
holiday list |
0 |
|
dfstd |
The discount factor curve |
|
|
intrp |
Interpolation method of the discount factor curve, a
switch. |
1 |
linear |
accu_level |
Level of accuracy |
2 |
accuracy level 2 |
calc_para |
Calculation parameter table |
See example 1 |
|
stat |
Stat list |
{1, 2,…,23} |
|
tranche_list |
Tranche list |
1, 2 |
|
Tranche Table
Attachment |
Detachment |
Tranche Correlation |
Notional |
Coupon |
Position |
Notional adjustment method |
Upfront fee |
0.1 |
0.35 |
0 |
0.05 |
1 |
1 |
0.3 |
|
0.1 |
0.2 |
0.38 |
0 |
0.02 |
2 |
1 |
0.1 |
0.2 |
0.3 |
0 |
0 |
0 |
1 |
1 |
0 |
Results
Output Statistics |
Description |
Tranche 1 |
Tranche 2 |
1 |
Fair value |
684586.66 |
-336820.42 |
2 |
Value of payoff |
960530.33 |
-472931.00 |
3 |
Value of premium |
-275943.66 |
136110.58 |
4 |
Accrued interest of premium |
-20000.00 |
8000.00 |
5 |
Fair value minus accrued interest |
704586.66 |
-344820.42 |
6 |
Par spread |
0.07 |
0.04 |
7 |
Ratio of par spread and reference credit spread aggregate |
0.27 |
0.16 |
8 |
Attachment point |
0.00 |
2000000.00 |
9 |
Detachment point |
2000000.00 |
4000000.00 |
10 |
Tranche size |
2000000.00 |
2000000.00 |
11 |
Tranche notional |
2000000.00 |
2000000.00 |
12 |
Tranche loss up to the valuation date, inclusive |
0.00 |
0.00 |
13 |
Outstanding tranche notional |
2000000.00 |
2000000.00 |
14 |
DVOX of credit default spreads |
2341.28 |
-1876.69 |
15 |
|
5504.05 |
871.72 |
16 |
|
-8042.14 |
727.70 |
17 |
BPV of risk-free rate |
-113.00 |
73.29 |
18 |
Theta |
-515.42 |
335.54 |
19 |
Number of days that premium accrues |
72.00 |
72.00 |
20 |
Next coupon date |
39071.00 |
39071.00 |
21 |
Previous coupon date |
38980.00 |
38980.00 |
22 |
Number of remaining cash flows |
17.00 |
17.00 |
23 |
Implied upfront fee given premium coupon |
0.35229333 |
0.172410211 |
Suppose in Example 6, the reference entity 4 defaulted
sometime after the CDO started trading. Suppose also the contract dates are
given as in Example 4. Then the reference table needs a default status column
as is shown below:
Reference Notional and Recovery Rate Table
Notional |
Recovery Rate |
Default Status (0=no,
1 =yes) |
0.4 |
0 |
|
1000000 |
0.4 |
0 |
1000000 |
0.4 |
0 |
2000000 |
0.4 |
1 |
2000000 |
0.4 |
0 |
2000000 |
0.3 |
0 |
2000000 |
0.3 |
0 |
3000000 |
0.3 |
0 |
3000000 |
0.3 |
0 |
3000000 |
0.3 |
0 |
Results
Output Statistics |
Description |
Tranche 1 |
Tranche 2 |
1 |
Fair value |
298361.62 |
-530327.37 |
2 |
Value of payoff |
400815.95 |
-650501.47 |
3 |
Value of premium |
-102454.34 |
120174.10 |
4 |
Accrued interest of premium |
-8000.00 |
8000.00 |
5 |
Fair value minus accrued interest |
306361.62 |
-538327.37 |
6 |
Par spread |
0.09 |
0.08 |
7 |
Ratio of par spread and reference credit spread aggregate |
0.37 |
0.35 |
8 |
Attachment point |
0.00 |
2000000.00 |
9 |
Detachment point |
2000000.00 |
4000000.00 |
10 |
Tranche size |
2000000.00 |
2000000.00 |
11 |
Tranche notional |
2000000.00 |
2000000.00 |
12 |
Tranche loss up to the valuation date, inclusive |
1200000.00 |
0.00 |
13 |
Outstanding tranche notional |
800000.00 |
2000000.00 |
14 |
DVOX of credit default spreads |
927.48 |
-1958.66 |
15 |
|
10250.25 |
4449.53 |
16 |
|
-3571.70 |
3679.82 |
17 |
BPV of risk-free rate |
-45.21 |
92.46 |
18 |
Theta |
-216.62 |
382.34 |
19 |
Number of days that premium accrues |
72.00 |
72.00 |
20 |
Next coupon date |
39071.00 |
39071.00 |
21 |
Previous coupon date |
38980.00 |
38980.00 |
22 |
Number of remaining cash flows |
16.00 |
16.00 |
23 |
Implied upfront fee given premium coupon |
0.38295202 |
0.269163684 |
Suppose in example 6 neither correlation nor base
correlation is available, but the betas of the reference names can be obtained.
To value the CDO we can scale the betas
so that they are between -1 and 1 and use them as factor loadings. Suppose the factor loadings are shown as in
the following table:
Model Parameter Table
Name |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Factor Loading |
0.5 |
0.6 |
0.4 |
0.7 |
0.8 |
0.2 |
0.6 |
0.5 |
0.3 |
0.1 |
To value the CDO call the function aaCDO_ST_DS_fl_p
with the following input table:
aaCDO_ST_DS_fl_p
Argument |
Description |
Example Data |
Switch |
d_v |
Valuation date |
1-Dec-2006 |
|
contra_d |
CDS date table |
see below |
|
ref_bskt |
Reference notional and recovery rate table |
see example 7 |
|
tranche_type |
Type of a tranche (or loss layer) definition |
1 |
Proportional |
tranche_corr |
Tranche table |
see below |
|
corr_type |
Correlation type |
1 |
tranche correlation |
freq_pr |
Premium payment frequency |
3 |
Quarterly |
acc |
Accrual method |
2 |
act./360 |
d_rul |
Business day convention, a switch. |
2 |
next business day |
modl_type |
Model type |
1 |
normal copula |
modl_para |
Model parameter table |
see above |
|
dp_type |
Default curve type |
1 |
par CDS spread curve |
dp_bskt |
Par CDS spread curve |
see example 6 |
|
intrp_tb |
Default curve parameter table |
see example 1 |
|
hl |
A holiday list |
0 |
|
dfstd |
The discount factor curve |
|
|
intrp |
Interpolation method of the discount factor curve, a
switch. |
1 |
|
accu_level |
Level of accuracy |
2 |
accuracy level 2 |
calc_para |
Calculation parameter table |
see above |
|
stat |
Stat list |
{1, 2,…,23} |
|
tranche_list |
Tranche list |
1, 2 |
|
Tranche Table
Attachment |
Detachment |
Notional |
Coupon |
Position |
Notional adjustment method |
Upfront fee |
0.1 |
0 |
0.05 |
1 |
1 |
0.3 |
|
0.1 |
0.2 |
0 |
0.02 |
2 |
1 |
0.1 |
0.2 |
0.3 |
0 |
0 |
1 |
1 |
0 |
Results
Output Statistics |
Description |
Tranche 1 |
Tranche 2 |
1 |
Fair value |
782977.281 |
-352400.7328 |
2 |
Value of payoff |
1048989.81 |
-488908.6835 |
3 |
Value of premium |
-266012.53 |
136507.9507 |
4 |
Accrued interest of premium |
-20000 |
8000 |
5 |
Fair value minus accrued interest |
802977.281 |
-360400.7328 |
6 |
Par spread |
0.09125344 |
0.04496355 |
7 |
Ratio of par spread and reference credit spread aggregate |
0.35097478 |
0.172936731 |
8 |
Attachment point |
0 |
2000000 |
9 |
Detachment point |
2000000 |
4000000 |
10 |
Tranche size |
2000000 |
2000000 |
11 |
Tranche notional |
2000000 |
2000000 |
12 |
Tranche loss up to the valuation date, inclusive |
0 |
0 |
13 |
Outstanding tranche notional |
2000000 |
2000000 |
14 |
DVOX of credit default spreads |
2675.09 |
-2109.10 |
15 |
|
6342.18 |
2393.29 |
16 |
|
-92586.93 |
520.43 |
17 |
BPV of risk-free rate |
-130.48 |
81.37 |
18 |
Theta |
-548.46 |
379.61 |
19 |
Number of days that premium accrues |
72 |
72 |
20 |
Next coupon date |
20-Dec-06 |
20-Dec-06 |
21 |
Previous coupon date |
20-Sep-06 |
20-Sep-06 |
22 |
Number of remaining cash flows |
17 |
17 |
23 |
Implied upfront fee given premium coupon |
0.40148864 |
0.180200366 |
Suppose in example 8 we want to calculate the deltas of
name 1 and name 2. Then we should use
the function aaCDO_ST_DS_risk.
Its input table is similar to that of aaCDO_ST_DS_p
except that it has an output type parameter and a name list table and has no
statistics list. For this example, the output type is 1 (delta) and the entity
list is {1, 2}. The following are the
outputs:
Output Table Results
Name |
Tranche 1 |
Tranche 2 |
1 |
-0.42511 |
0.290643661 |
2 |
-0.38811 |
0.300931327 |
From the above table we see that to hedge the equity
tranche the trader should sell CDS of both name 1 and name 2, and to hedge
tranche 2 the holder of the tranche portfolio should buy CDSs of the names. The
net hedge will be to sell CDSs of name 1 and name 2 with notionals of:
and
respectively.
To value bespoke tranches of synthetic credit risk, one
often makes the standardized tranches, such as tranches of iTraxx
or Dow Jones CDX,
benchmarks for calibrating credit models. Function aaCDO_std_baseCorr_map
can be used to calibrate base correlations of bespoke tranches. Suppose that the
reference pool and base correlations of a benchmark CDO are given as follows:
Benchmark references table
notional of an entity |
recovery rate |
number of entities |
100 |
40.000% |
3 |
Benchmark basket default probability curve
time in years |
default probability of entity 1 |
default probability of entity 2 |
default probability of entity 3 |
1 |
0.022032 |
0.0317 |
0.0219 |
2 |
0.046242 |
0.0655 |
0.0461 |
3 |
0.07266 |
0.1022 |
0.0725 |
4 |
0.101233 |
0.142 |
0.101 |
5 |
0.131885 |
0.1752 |
0.1315 |
Benchmark base correlation table
detachment point |
base correlation |
0.03 |
0.07 |
0.07 |
0.11 |
0.15 |
0.15 |
Also suppose that reference pool and tranche
detachment points of the bespoke CDO are described in the following tables:
Bespoke reference table
notional amount |
recovery rate |
100 |
0.3 |
200 |
0.4 |
300 |
0.4 |
Bespoke basket default probability curve
time in years |
default probability of entity 1 |
default probability of entity 2 |
default probability of entity 3 |
1 |
0.022032 |
0.0317 |
0.0219 |
2 |
0.046242 |
0.0655 |
0.0461 |
3 |
0.07266 |
0.1022 |
0.0725 |
4 |
0.101233 |
0.142 |
0.101 |
5 |
0.131885 |
0.1752 |
0.1315 |
Detachment points of bespoke tranches
detachment point |
0.05 |
0.1 |
0.2 |
Input details are described in the following table:
aaCDO_ST_baseCorr_map
Argument |
Description |
Example Data |
Switch |
base_corr |
benchmark base correlation table |
See above |
|
intrp_gen |
base correlation interpolation method |
1 |
linear |
ref_bMark |
benchmark references table |
See above |
|
ref_custom |
bespoke references table |
See above |
|
prob_bMark |
benchmark basket default probability curve |
See above |
|
prob_custom |
bespoke basket default probability curve |
See above |
|
intrp_prob |
interpolation method of probability curve |
1 |
linear |
time_m |
time to maturity of CDO |
2.5 |
|
detach_custom |
detachment points of bespoke tranches |
See above |
|
map_type |
mapping method of base correlations |
1 |
match loss profiles |
rescale |
scaling factor (used when mapping type = 2 only) |
100% |
|
accu_level |
level of accuracy |
1 |
accuracy level 1 |
calc_method |
calculation method |
2 |
recursion method |
Then the base correlations of the bespoke tranches
can be estimated by calling aaCDO_baseCorr_map:
Output table
detachment
point |
base correlation |
0.05 |
0.088824283 |
0.1 |
0.12196818 |
0.2 |
0.15 |
The tranche value of a synthetic CDO is based on the
tranche loss distribution. Function aaCredit_tranche_loss_prob_cum
can be used to calculate the tranche loss distribution. Suppose, in Example 10,
one likes to know the loss distribution of the bespoke equity tranche. To use
this function, we specify the following inputs:
aaCredit_tranche_loss_prob_cum
Argument |
Description |
Example Data |
Switch |
ref_bskt |
notional and recovery rate table |
see above |
|
prob_bskt |
default probability curve |
see below |
|
intrp_prob |
interpolation method of probability curve |
1 |
linear |
tranche_bound |
tranche and loss range table |
see below |
|
tranche_type |
type of tranche definition |
1 |
tranche boundaries are proportional to the total
notional |
modl_type |
model type |
1 |
normal copula |
modl_para |
model parameters |
see below |
|
time_points |
time points (in years) at which loss probabilities
are to be calculated |
see below |
|
accu_level |
level of accuracy |
1 |
accuracy level 1 |
calc_method |
calculation method |
2 |
recursion method |
output_type |
output type |
1 |
tranche loss distribution |
Tranche and loss range table
attachment point |
detachment point |
lower loss bound |
upper loss bound |
0 |
0.05 |
0 |
0.05 |
Time points (in years) at which loss probabilities are to
be calculated
time length |
0.5 |
1 |
5 |
Note that the factor loading is the square root
of the correlation.
Model parameters
factor loading |
0.298034029690451 |
Calling aaCredit_tranche_loss_prob_cum,
we get the following loss distributions for the equity tranche:
Output table
attachment point |
detachment point |
probability of loss from time 0
to time point 1 |
probability of loss from time 0
to time point 2 |
probability of loss from time 0
to time point N |
0 |
0.05 |
0.0370100730996259 |
0.0727404397902457 |
0.297664746815289 |
[2]
Andersen L., Sidenius, J. et al, (2004), The Bank of America Guide to Advanced Correlation
Products, Incisive Financial Publishing.
[3]
Brasch, H. (2004), ‘A note on efficient pricing
and risk calculation of credit basket products’, TD Securities.
[6]
Fabozzi, F. and Goodman, L., (2001), Investing in Collateralized Debt Obligations,
[7]
Luo L., (May 2006), ‘CDOs and Search for Simplicity’,
Wilmott Magazine,
[8]
Merrill Lynch, (June 2004), ‘Standardized
Tranches’, Credit Derivatives Research.
[9]
McGinty, L., Beinstern, E. and
[11] Schonbucher,
P., (2003), Credit Derivatives Pricing, Models,
Pricing and Implementation, Wiley Finance.
Disclaimer
With respect to this document,
FinancialCAD Corporation (“FINCAD”) makes no warranty either express or
implied, including, but not limited to, any implied warranty of merchantability
or fitness for a particular purpose. In no event shall FINCAD be liable to
anyone for special, collateral, incidental, or consequential damages in
connection with or arising out of the use of this document or the information
contained in it. This document should not be relied on as a substitute for your
own independent research or the advice of your professional financial,
accounting or other advisors.
This information is subject to
change without notice. FINCAD assumes no responsibility for any errors in this
document or their consequences and reserves the right to make changes to this
document without notice.
Copyright
Copyright © FinancialCAD
Corporation 2008. All rights reserved.