# disc2zero

Zero curve given discount curve

In R2017b, 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 optional name-value pair inputs: `Compounding` and `Basis`.

## 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