Documentation

fwd2zero

Zero curve given forward curve

Syntax

[ZeroRates, CurveDates] = fwd2zero(ForwardRates, CurveDates,
Settle)
[ZeroRates, CurveDates] = fwd2zero(ForwardRates, 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

ForwardRates

A number of bonds (NUMBONDS)-by-1 vector of annualized implied forward rates, as decimal fractions. In aggregate, the rates in ForwardRates constitute an implied forward 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

A NUMBONDS-by-1 vector of maturity dates (as serial date numbers) that correspond to the forward rates.

Settle

A serial date number or date string that is the common settlement date for the forward 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: [ZeroRates,CurveDates] = fwd2zero(ForwardRates,CurveDates,Settle,'InputCompounding',3,'InputBasis',5,'OutputCompounding',4,'OutputBasis',5)

'InputCompounding' — Compounding frequency of input forward ratesif InputCompounding is not specified, it is assigned the value specified for OutputCompounding. If neither InputCompounding nor OutputCompounding are specified, the default is 2 (semiannual) for both. (default) | scalar

Compounding frequency of the input 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

'InputBasis' — Day count basis of input forward ratesif InputBasis is not specified, it is assigned the value specified for OutputBasis. If neither InputBasis nor OutputBasis are specified, the default is 0 (actual/actual) for both. (default) | scalar

Day count basis of input 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

'OutputCompounding' — Compounding frequency of output zero ratesif OutputCompounding is not specified, it is assigned the value specified for InputCompounding. If neither InputCompounding nor OutputCompounding are specified, the default is 2 (semiannual) for both. (default) | scalar

Compounding frequency of the output 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

'OutputBasis' — Day count basis of output zero ratesif OutputBasis is not specified, it is assigned the value specified for InputBasis. If neither InputBasis nor OutputBasis are specified, the default is 0 (actual/actual) for both. (default) | scalar

Day count basis of output 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

Description

[ZeroRates, CurveDates] = fwd2zero(ForwardRates, CurveDates, Settle) returns a zero curve given an implied forward rate curve and its maturity dates.

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

ZeroRates

A NUMBONDS-by-1 vector of decimal fractions. In aggregate, the rates in ZeroRates constitute a zero curve for the investment horizon represented by CurveDates.

CurveDates

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

Examples

collapse all

Compute the Zero Curve Given the Forward Curve

This example shows how to compute the zero curve, given an implied forward rate curve over a set of maturity dates, a settlement date, and a compounding rate.

ForwardRates = [0.0469
                0.0519
                0.0549
                0.0535
                0.0558
                0.0508
                0.0560
                0.0545
                0.0615
                0.0486];

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 fwd2zero to return the zero-rate curve ZeroRates at the maturity dates CurveDates.

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

    0.0469
    0.0515
    0.0531
    0.0532
    0.0538
    0.0532
    0.0536
    0.0539
    0.0556
    0.0543


CurveDates =

      730796
      730831
      730866
      730887
      730914
      730943
      730971
      731027
      731098
      731167

Related Examples

See Also

Introduced before R2006a

Was this topic helpful?