Main Content

defprobbyjlt

R2026b

Create defprobcurve object from market bond prices using Jarrow-Lando-Turnbull model

Since R2026b

Description

OutCurve = defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix) calibrates risk-neutral transition matrices from market zero-coupon bond prices using the Jarrow-Lando-Turnbull (JLT) model and returns default probability curves for each credit class as defprobcurve objects.

example

[OutCurve,TransMat] = defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix) also returns the risk-neutral transition matrices for each period.

example

[___] = defprobbyjlt(___,Name=Value) specifies options using one or more name-value arguments in addition to any of the input argument combinations in the previous syntaxes. For example, defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix,RecoveryRate=0.6) sets the recovery rate to 0.6.

example

Examples

collapse all

Calibrate risk-neutral default probability curves from historical credit rating data and market bond prices using the Jarrow-Lando-Turnbull model.

Settle = datetime(2017,1,1);
ZeroTimes = calyears([1 2]);
ZeroRates = [0.08 0.09];
ZeroDates = Settle + ZeroTimes;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,basis=0,Compounding=1);

V101 = 1/1.09;
V102 = 1/(1.105^2);
V201 = 1/1.10;
V202 = 1/(1.12^2);
BondPrices = 100*[V101 V102; V201 V202];

BondMaturities = ZeroDates;
HistProbMatrix = [0.9 0.05 0.05; 0.1 0.8 0.1; 0 0 1];

OutCurves = defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix);
disp(OutCurves)
  1×2 defprobcurve array with properties:

    Settle
    Basis
    Dates
    DefaultProbabilities

Use the RecoveryRate name-value argument to specify a custom recovery rate.

Settle = datetime(2017,1,1);
ZeroTimes = calyears([1 2]);
ZeroRates = [0.08 0.09];
ZeroDates = Settle + ZeroTimes;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,basis=0,Compounding=1);

V101 = 1/1.09;
V102 = 1/(1.105^2);
V201 = 1/1.10;
V202 = 1/(1.12^2);
BondPrices = 100*[V101 V102; V201 V202];

BondMaturities = ZeroDates;
HistProbMatrix = [0.9 0.05 0.05; 0.1 0.8 0.1; 0 0 1];

OutCurves = defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix,RecoveryRate=0.6);
disp(OutCurves)
  1×2 defprobcurve array with properties:

    Settle
    Basis
    Dates
    DefaultProbabilities

Use the optional TransMat output argument to return risk-neutral transition matrices in addition to default probability curves.

Settle = datetime(2017,1,1);
ZeroTimes = calyears([1 2]);
ZeroRates = [0.08 0.09];
ZeroDates = Settle + ZeroTimes;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,basis=0,Compounding=1);

V101 = 1/1.09;
V102 = 1/(1.105^2);
V201 = 1/1.10;
V202 = 1/(1.12^2);
BondPrices = 100*[V101 V102; V201 V202];

BondMaturities = ZeroDates;
HistProbMatrix = [0.9 0.05 0.05; 0.1 0.8 0.1; 0 0 1];

[OutCurves,TransMat] = defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix);
disp(OutCurves)
  1×2 defprobcurve array with properties:

    Settle
    Basis
    Dates
    DefaultProbabilities
disp(TransMat)
(:,:,1) =

   96.9419    1.5291    1.5291
    3.0303   93.9394    3.0303
         0         0  100.0000


(:,:,2) =

   94.0737    2.9631    2.9631
    6.0559   87.8882    6.0559
         0         0  100.0000

Input Arguments

collapse all

Risk-free zero-rate curve, specified as a ratecurve object. The settlement date of the object defines the settlement date for the calibration.

Market prices for risky zero-coupon bonds, specified as a positive matrix. Each row corresponds to a nondefault credit class and each column corresponds to a bond maturity.

Maturity dates for the risky zero-coupon bonds, specified as a datetime vector. Specify the intervals between consecutive maturity dates to be uniform and to match the transition period defined in HistProbMatrix.

Historical one-period credit rating transition matrix, specified as a nonnegative matrix with each row summing to 1. The rows and columns, with the exception of the last row and the last column, correspond to nondefault states. The last row and last column correspond to the default state. The entry in row i and column j represents the historical probability of transitioning from state i to state j in one time step. Each row must sum to 1. You can use the transprob function to estimate a transition matrix from historical credit rating data.

Note

  • You can optionally omit the last row from HistProbMatrix. If you do so, the function will append a row representing the default state (all zero entries, except the last entry is one).

  • You can optionally specify the values in HistProbMatrix as percentages (with entries in the interval [0, 100]) instead of probabilities (with entries in the interval [0, 1]).

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: defprobbyjlt(ZeroCurve,BondPrices,BondMaturities,HistProbMatrix,RecoveryRate=0.6)

Recovery rate upon default, specified as a scalar value in the range [0, 1]. The recovery rate represents the fraction of the bond face value that an investor recovers when default occurs.

Face value for quoted risky bonds, specified as a positive scalar.

Output Arguments

collapse all

Default probability curves for each credit class, returned as a vector of defprobcurve objects. Each entry of the vector corresponds to a nondefault credit class.

Risk-neutral transition matrices for each period, returned as a numeric array. The pages (third dimension) of TransMat contain the risk-neutral transition matrices for the corresponding periods, arranged in increasing chronological order. The first page applies from the settlement date to the first bond maturity, the second page from the first to the second bond maturity, and so on. Within each page, the entry in row i and column j represents the probability of transitioning from state i to state j in time period corresponding to the page.

Data Types: double

More About

collapse all

Version History

Introduced in R2026b