Main Content

disc2zero

Zero curve given discount curve

Description

[ZeroRates,CurveDates] = disc2zero(DiscRates,CurveDates,Settle) 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.

example

[ZeroRates,CurveDates] = disc2zero(___,Name,Value) adds optional name-value pair arguments

example

Examples

collapse all

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 = [datetime(2000,11,6) 
              datetime(2000,12,11) 
              datetime(2001,1,15) 
              datetime(2001,2,5) 
              datetime(2001,3,4) 
              datetime(2001,4,2) 
              datetime(2001,4,30) 
              datetime(2001,6,25) 
              datetime(2001,9,4) 
              datetime(2001,11,12)];

Settle = datetime(2000,11,3);

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 = 10×1

    0.0487
    0.0510
    0.0523
    0.0524
    0.0530
    0.0526
    0.0530
    0.0532
    0.0549
    0.0536

CurveDates = 10x1 datetime
   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

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.

Input Arguments

collapse all

Discount factors, specified as a NDATES-by-1 column vector of decimal fractions. In aggregate, the factors in DiscRates constitute a discount curve for the investment horizon represented by CurveDates.

Data Types: double

Maturity dates that correspond to the discount factors in DiscRates, specified as a NDATES-by-1 column vector using a datetime array, string array, or date character vectors.

To support existing code, disc2zero also accepts serial date numbers as inputs, but they are not recommended.

Data Types: datetime | string | char

Common settlement date for the discount rates in DiscRates, specified as scalar datetime, string, or date character vector.

To support existing code, disc2zero also accepts serial date numbers as inputs, but they are not recommended.

Data Types: datetime | string | char

Name-Value Arguments

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.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: [ZeroRates,CurveDates] = disc2zero(DiscRates,CurveDates,Settle,'Compounding',6,'Basis',9)

Rate at which the output zero rates are compounded when annualized, specified as a numeric value. 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

Data Types: double

Day-count basis used for annualizing the output zero rates, specified as a numeric value. Allowed values are:

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

Data Types: double

Output Arguments

collapse all

Zero curve for the investment horizon represented by CurveDates, returned as a NDATES-by-1 column vector of decimal fractions. The zero rates are the yields to maturity on theoretical zero-coupon bonds.

Maturity dates that correspond to the ZeroRates, returned as a NDATES-by-1 column vector. This vector is the same as the input vector CurveDates, but the output is sorted by ascending maturity. If either inputs for CurveDates or Settle are datetime arrays, the output CurveDates is returned as datetime arrays.

Version History

Introduced before R2006a

expand all