# disc2zero

Zero curve given discount curve

## Syntax

``[ZeroRates,CurveDates] = disc2zero(DiscRates,CurveDates,Settle)``
``[ZeroRates,CurveDates] = disc2zero(___,Name,Value)``

## Description

example

````[ZeroRates,CurveDates] = disc2zero(DiscRates,CurveDates,Settle)` returns a zero curve given a discount curve and its maturity dates. If either inputs for `CurveDates` or `Settle` are datetime arrays, the output `CurveDates` is returned as datetime arrays.```

example

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

## Examples

collapse all

Given the following discount factors `DiscRates` over a set of maturity dates `CurveDates`, and a settlement date `Settle`:

```DiscRates = [0.9996 0.9947 0.9896 0.9866 0.9826 0.9786 0.9745 0.9665 0.9552 0.9466]; 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);```

Set daily compounding for the output zero curve, on an actual/365 basis.

```Compounding = 365; Basis = 3;```

Execute the function `disc2zero` which returns the zero curve `ZeroRates` at the maturity dates `CurveDates`.

`[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates, Settle, Compounding, Basis)`
```ZeroRates = 10×1 0.0487 0.0510 0.0523 0.0524 0.0530 0.0526 0.0530 0.0532 0.0549 0.0536 ```
```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 ```

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

## Input Arguments

collapse all

Discount factors, specified as a `NDATES`-by-`1` column vector of decimal fractions. In aggregate, the factors in `DiscRates` constitute a discount curve for the investment horizon represented by `CurveDates`.

Data Types: `double`

Maturity dates that correspond to the discount factors in `DiscRates`, specified as a `NDATES`-by-`1` column vector using a datetime array, string array, or date character vectors.

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

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

Common settlement date for the discount rates in `DiscRates`, specified as scalar datetime, string, or date character vector.

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

Rate at which the output zero rates are compounded when annualized, specified as a numeric value. 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

Data Types: `double`

Day-count basis used for annualizing the output zero rates, specified as a numeric value. Allowed values are:

• 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: `double`

## Output Arguments

collapse all

Zero curve for the investment horizon represented by `CurveDates`, returned as a `NDATES`-by-`1` column vector of decimal fractions. The zero rates are the yields to maturity on theoretical zero-coupon bonds.

Maturity dates that correspond to the `ZeroRates`, returned as a `NDATES`-by-`1` column vector. This vector is the same as the input vector `CurveDates`, but the output is sorted by ascending maturity. If either inputs for `CurveDates` or `Settle` are datetime arrays, the output `CurveDates` is returned as datetime arrays.

## Version History

Introduced before R2006a

expand all