Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

zero2disc

Discount curve given zero curve

Syntax

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

Arguments

ZeroRates

Number of bonds (NUMBONDS)-by-1 vector of annualized zero rates, as decimal fractions. In aggregate, the rates constitute an implied zero curve for the investment horizon represented by CurveDates.

CurveDates

NUMBONDS-by-1 vector of maturity dates, specified as a serial date number, date character vector, or datetime array, that correspond to the zero rates.

Settle

Date, specified as a serial date number, date character vector, or datetime array, that is the common settlement date for the zero rates; that is, the settlement date for the bonds from which the zero curve was bootstrapped.

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 input ZeroRates were 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 input 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

[DiscRates,CurveDates] = zero2disc(ZeroRates,CurveDates,Settle,Compounding,Basis) returns a discount curve given a zero curve and its maturity dates. If either inputs for CurveDates or Settle is a datetime array, CurveDates is returned as a datetime array. Otherwise, CurveDates is returned as a serial date number. DiscRates is the same for any of these input data types.

[DiscRates,CurveDates] = zero2disc(ZeroRates,CurveDates,Settle,Name,Value) returns a discount curve given a zero 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.

DiscRates

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

CurveDates

A NUMBONDS-by-1 vector of maturity dates that correspond to the discount rates. This vector is the same as the input vector CurveDates, but is sorted by ascending maturity. If either inputs for CurveDates or Settle is a datetime array, CurveDates is returned as a datetime array. Otherwise, CurveDates is returned as a serial date number.

Examples

collapse all

Given a zero curve over a set of maturity dates and a settlement date.

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

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');

The zero curve is compounded daily on an actual/365 basis.

Compounding = 365;
Basis = 3;

Execute the function zero2disc which returns the discount curve DiscRates at the maturity dates CurveDates.

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

    0.9996
    0.9947
    0.9896
    0.9866
    0.9826
    0.9787
    0.9745
    0.9665
    0.9552
    0.9466

CurveDates = 

      730796
      730831
      730866
      730887
      730914
      730943
      730971
      731027
      731098
      731167

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

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 = [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');
[DiscRates, CurveDates] = zero2disc(ZeroRates, CurveDates,...
Settle, Compounding, Basis)
DiscRates = 

    0.9996
    0.9947
    0.9896
    0.9866
    0.9826
    0.9787
    0.9745
    0.9665
    0.9552
    0.9466

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

Introduced before R2006a

Was this topic helpful?