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.

zero2fwd

Forward curve given zero curve

Syntax

[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates,
Settle)
[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates,
Settle, Name, Value)

In R2015b, the specification of optional input arguments has changed. While the previous ordered inputs syntax is still supported, it may no longer be supported in a future release. Use the new optional name-value pair inputs: InputCompounding, InputBasis, OutputCompounding, and OutputBasis.

Input 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. The first element pertains to forward rates from the settlement date to the first curve date.

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.

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.

Example: [ForwardRates,CurveDates] = zero2fwd(ZeroRates,CurveDates,Settle,'InputCompounding',3,'InputBasis',5,'OutputCompounding',4,'OutputBasis',5)

collapse all

Compounding frequency of the input zero rates, specified as a scalar with allowed 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: single | double

Day count basis of input zero rates, specified as a scalar with possible 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

Data Types: single | double

Compounding frequency of the output forward rates, specified as a scalar with allowed 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: single | double

Day count basis of output forward rates, specified as a scalar with possible 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

Data Types: single | double

Description

[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates, Settle) returns an implied forward rate curve given a zero curve and its maturity dates. If either input for CurveDates or Settle is a datetime array, CurveDates is returned as a datetime array. Otherwise, CurveDates is returned as a serial date number. ForwardRates is the same for any of these input data types.

[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates, Settle, Name, Value) returns an implied forward rate curve given a zero curve and its maturity dates using optional name-value arguments for InputCompounding, InputBasis, OutputCompounding, and OutputBasis.

ForwardRates

A NUMBONDS-by-1 vector of decimal fractions. In aggregate, the rates in ForwardRates constitute a forward curve over the dates in CurveDates.

CurveDates

A NUMBONDS-by-1 vector of maturity dates (as serial date numbers) that correspond to the forward rates. This vector is the same as the input vector CurveDates, but is sorted by ascending maturity.

Examples

collapse all

Given a zero curve over a set of maturity dates, a settlement date, and a compounding rate, compute the forward rate curve.

ZeroRates = [0.0458
             0.0502
             0.0518
             0.0519
             0.0524
             0.0519
             0.0523
             0.0525
             0.0541
             0.0529];

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');
InputCompounding = 1;
InputBasis = 2;
OutputCompounding = 1;
OutputBasis = 2;

Execute the function zero2fwd to return the forward rate curve ForwardRates at the maturity dates CurveDates.

[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates,...
Settle, 'InputCompounding',1,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)
ForwardRates =

    0.0458
    0.0506
    0.0535
    0.0522
    0.0541
    0.0498
    0.0544
    0.0531
    0.0594
    0.0476


CurveDates =

      730796
      730831
      730866
      730887
      730914
      730943
      730971
      731027
      731098
      731167

Given a zero curve over a set of maturity dates, a settlement date, and a compounding rate, use datetime compute the forward rate curve.

ZeroRates = [0.0458
             0.0502
             0.0518
             0.0519
             0.0524
             0.0519
             0.0523
             0.0525
             0.0541
             0.0529];

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');
InputCompounding = 1;
InputBasis = 2;
OutputCompounding = 1;
OutputBasis = 2;

CurveDates = datetime(CurveDates, 'ConvertFrom', 'datenum','Locale','en_US');
Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US');
[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates,...
Settle,'InputCompounding',1,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)
ForwardRates =

    0.0458
    0.0506
    0.0535
    0.0522
    0.0541
    0.0498
    0.0544
    0.0531
    0.0594
    0.0476


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

Related Examples

Introduced before R2006a

Was this topic helpful?