# zero2fwd

Forward curve given zero curve

## Syntax

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

## Description

example

````[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. Use the function `datestr` to convert serial date numbers to formatted date character vectors. `ForwardRates` is the same for any of these input data types. ```

example

````[ForwardRates,CurveDates] = zero2fwd(___,Name,Value)` adds optional name-value pair arguments```

## Examples

collapse all

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 = [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); InputCompounding = 1; InputBasis = 2; OutputCompounding = 1; OutputBasis = 2; [ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates,... Settle,'InputCompounding',1,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)```
```ForwardRates = 10×1 0.0458 0.0506 0.0535 0.0522 0.0541 0.0498 0.0544 0.0531 0.0594 0.0476 ```
```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 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.

Data Types: `double`

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

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

Data Types: `datetime` | `string` | `char`

Common settlement date for input `ZeroRates`, specified as scalar datetime, string, or date character vector.

To support existing code, `zero2fwd` 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: ```[ForwardRates,CurveDates] = zero2fwd(ZeroRates,CurveDates,Settle,'InputCompounding',3,'InputBasis',5,'OutputCompounding',4,'OutputBasis',5)```

Compounding frequency of input zero rates, specified as the comma-separated pair consisting of `'InputCompounding'` and 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

Note

If `InputCompounding` is not specified, then `InputCompounding` is assigned the value specified for `OutputCompounding`. If either `InputCompounding` or `OutputCompounding` are not specified, the default is `2` (semiannual) for both.

Data Types: `double`

Day count basis of input zero rates, specified as the comma-separated pair consisting of `'InputBasis'` and allowed 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

Note

If `InputBasis` is not specified, then `InputBasis` is assigned the value specified for `OutputBasis`. If either `InputBasis` or `Outputbasis` are not specified, the default is `0` (actual/actual) for both.

Data Types: `double`

Compounding frequency of output forward rates, specified as the comma-separated pair consisting of `'OutputCompounding'` and 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

Note

If `OutputCompounding` is not specified, then `OutputCompounding` is assigned the value specified for `InputCompounding`. If either `InputCompounding` or `OutputCompounding` are not specified, the default is `2` (semiannual) for both.

Data Types: `double`

Day count basis of output forward rates, specified as the comma-separated pair consisting of `'OutputBasis'` and allowed 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

Note

If `OutputBasis` is not specified, then `OutputBasis` is assigned the value specified for `InputBasis`. If either `InputBasis` or `OutputBasis` are not specified, the default is `0` (actual/actual) for both.

Data Types: `double`

## Output Arguments

collapse all

Forward curve for the investment horizon represented by `CurveDates`, returned as a `NUMBONDS`-by-`1` vector of decimal fractions. In aggregate, the rates in `ForwardRates` constitute a forward curve over the dates in `CurveDates`. `ForwardRates` are ordered by ascending maturity.

Maturity dates that correspond to the `ForwardRates`, returned as a `NUMBONDS`-by-`1` vector of maturity dates that correspond to the `ForwardRates`.

`ForwardRates` are expressed as serial date numbers (default) or datetimes (if `CurveDates` or `Settle` are datetime arrays), representing the maturity dates for each rate in `ForwardRates`. These dates are the same dates as those associated with the input `ZeroRates`, but are ordered by ascending maturity.

## Version History

Introduced before R2006a

expand all