Main Content

zero2disc

Discount curve given zero curve

Description

[DiscRates,CurveDates] = zero2disc(ZeroRates,CurveDates,Settle) returns a discount curve given a zero curve and its maturity dates. If either inputs for or areCurveDatesSettle a datetime array, CurveDates is returned as a datetime array. Otherwise, CurveDates is returned as a serial date number. Use the function datetime to convert serial date numbers to formatted datetime arrays. The DiscRates output is the same for any of these input data types.

example

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

example

Examples

collapse all

Given a zero curve over a set of maturity dates and a settlement date, compute a discount curve using datetime inputs.

ZeroRates = [0.0464
             0.0509
             0.0524
             0.0525
             0.0531
             0.0525
             0.0530
             0.0531
             0.0549
             0.0536];

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);
Compounding = 365;
Basis = 3;

[DiscRates, CurveDates] = zero2disc(ZeroRates, CurveDates,...
Settle, Compounding, Basis)
DiscRates = 10×1

    0.9996
    0.9947
    0.9896
    0.9866
    0.9826
    0.9787
    0.9745
    0.9665
    0.9552
    0.9466

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

Input Arguments

collapse all

Annualized zero rates, specified as a NUMBONDS-by-1 vector using decimal fractions. In aggregate, the zero rates constitute an implied zero curve for the investment horizon represented by CurveDates.

Data Types: double

Maturity dates that correspond to the input ZeroRates, specified as NUMBONDS-by-1 vector using a datetime array, string array, or date character vectors.

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

Data Types: datetime | string | char

Common settlement date for ZeroRates, specified as a scalar datetime, string, or date character vector. Settle is the settlement date for the bonds from which the zero curve was bootstrapped.

To support existing code, zero2disc 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: [DiscRates,CurveDates] = zero2disc(ZeroRates,CurveDates,Settle,'Compounding',4,'Basis',6)

Rate at which the input ZeroRates are compounded when annualized, specified as the comma-separated pair consisting of 'Compounding' and allowed numeric values:

  • 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 input ZeroRates, specified as the comma-separated pair consisting of 'Basis' and allowed numeric values:

  • 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

Discount factors, returned as a NUMBONDS-by-1 vector of decimal fractions. In aggregate, the discount factors constitute a discount curve for the investment horizon represented by CurveDates.

Maturity dates that correspond to the DiscRates, returned as a NUMBONDS-by-1 vector of maturity dates that correspond to the discount factors. This vector is the same as the input vector CurveDates, but is sorted by ascending maturity.

If either inputs for CurveDates or Settle are a datetime array, CurveDates is returned as a datetime array. Otherwise, CurveDates is returned as a serial date number. Use the function datetime to convert serial date numbers to formatted datetime arrays.

Version History

Introduced before R2006a

expand all