Documentation

disc2zero

Zero curve given discount curve

Syntax

[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates, Settle,
Compounding, Basis)
[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates, Settle,
Name, Value)

Arguments

DiscRates

Column vector of discount factors, as decimal fractions. In aggregate, the factors in DiscRates constitute a discount curve for the investment horizon represented by CurveDates.

CurveDates

Column vector of maturity dates, specified as serial date numbers, date character vectors, or datetime arrays, that correspond to the discount factors in DiscRates.

Settle

Settle is specified as a serial date numbers, date character vectors, or datetime arrays and is the common settlement date for the discount rates in DiscRates.

Ordered Input or Name–Value Pair Arguments

Enter the following inputs using an ordered syntax or as name-value pair arguments. You cannot mix ordered syntax with name-value pairs.

Compounding

Scalar value representing the rate at which the output zero rates are compounded when annualized. Allowed values are:

  • 0 — Simple interest (no compounding)

  • 1 — Annual compounding

  • 2 — Semiannual compounding (default)

  • 3 — Compounding three times per year

  • 4 — Quarterly compounding

  • 6 — Bimonthly compounding

  • 12 — Monthly compounding

  • 365 — Daily compounding

  • -1 — Continuous compounding

Default: 2 (default)

Basis

Day-count basis used for annualizing the output zero rates. A vector of integers.

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/365 (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0

Description

[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates, Settle, Compounding, Basis) returns a zero curve given a discount curve and its maturity dates. If either inputs for CurveDates or Settle are datetime arrays, the output CurveDates is returned as datetime arrays.

[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates, Settle, Name, Value) returns a zero curve given a discount curve and its maturity dates using optional name-value pair arguments. Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

ZeroRates

Column vector of decimal fractions. In aggregate, the rates in ZeroRates constitute a zero curve for the investment horizon represented by CurveDates. The zero rates are the yields to maturity on theoretical zero-coupon bonds.

CurveDates

Column vector of maturity dates that correspond to the zero rates. This vector is the same as the input vector CurveDates, but is sorted by ascending maturity. If either inputs for CurveDates or Settle are datetime arrays, the output CurveDates is returned as datetime arrays.

Examples

collapse all

Determine the Zero Curve Given a Discount Curve and Maturity Dates

Given the following discount factors DiscRates over a set of maturity dates CurveDates, and a settlement date Settle:

DiscRates = [0.9996
             0.9947
             0.9896
             0.9866
             0.9826
             0.9786
             0.9745
             0.9665
             0.9552
             0.9466];

CurveDates = [datenum('06-Nov-2000')
              datenum('11-Dec-2000')
              datenum('15-Jan-2001')
              datenum('05-Feb-2001')
              datenum('04-Mar-2001')
              datenum('02-Apr-2001')
              datenum('30-Apr-2001')
              datenum('25-Jun-2001')
              datenum('04-Sep-2001')
              datenum('12-Nov-2001')];

Settle = datenum('03-Nov-2000');

Set daily compounding for the output zero curve, on an actual/365 basis.

Compounding = 365;
Basis = 3;

Execute the function disc2zero which returns the zero curve ZeroRates at the maturity dates CurveDates.

[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates,...
Settle, Compounding, Basis)
ZeroRates =

    0.0487
    0.0510
    0.0523
    0.0524
    0.0530
    0.0526
    0.0530
    0.0532
    0.0549
    0.0536


CurveDates =

      730796
      730831
      730866
      730887
      730914
      730943
      730971
      731027
      731098
      731167

For readability, DiscRates and ZeroRates are shown here only to the basis point. However, MATLAB® software computed them at full precision. If you enter DiscRates as shown, ZeroRates may differ due to rounding.

Determine the Zero Curve Given a Discount Curve and Maturity Dates Using datetime Inputs

Given the following discount factors, DiscRates, over a set of maturity dates, CurveDates, and a settlement date, Settle, use datetime inputs to return the zero curve, ZeroRates, at the maturity dates, CurveDates.

DiscRates = [0.9996
             0.9947
             0.9896
             0.9866
             0.9826
             0.9786
             0.9745
             0.9665
             0.9552
             0.9466];

CurveDates = [datenum('06-Nov-2000')
              datenum('11-Dec-2000')
              datenum('15-Jan-2001')
              datenum('05-Feb-2001')
              datenum('04-Mar-2001')
              datenum('02-Apr-2001')
              datenum('30-Apr-2001')
              datenum('25-Jun-2001')
              datenum('04-Sep-2001')
              datenum('12-Nov-2001')];

Settle = datenum('03-Nov-2000');
Compounding = 365;
Basis = 3;

CurveDates = datetime(CurveDates,'ConvertFrom','datenum','Locale','en_US');
Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US');

[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates,...
Settle, Compounding, Basis)
ZeroRates =

    0.0487
    0.0510
    0.0523
    0.0524
    0.0530
    0.0526
    0.0530
    0.0532
    0.0549
    0.0536


CurveDates = 

   06-Nov-2000
   11-Dec-2000
   15-Jan-2001
   05-Feb-2001
   04-Mar-2001
   02-Apr-2001
   30-Apr-2001
   25-Jun-2001
   04-Sep-2001
   12-Nov-2001

Related Examples

See Also

|

Introduced before R2006a

Was this topic helpful?