# zero2disc

Discount curve given zero curve

## Syntax

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

## Description

example

````[DiscRates,CurveDates] = zero2disc(ZeroRates,CurveDates,Settle)` returns a discount curve given a zero curve and its maturity dates. If either inputs for or are`CurveDates``Settle` 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. The `DiscRates` output is the same for any of these input data types. ```

example

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

## Examples

collapse all

Given a zero curve over a set of maturity dates and a settlement date, compute a discount curve using `datetime` inputs.

```ZeroRates = [0.0464 0.0509 0.0524 0.0525 0.0531 0.0525 0.0530 0.0531 0.0549 0.0536]; 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); Compounding = 365; Basis = 3; [DiscRates, CurveDates] = zero2disc(ZeroRates, CurveDates,... Settle, Compounding, Basis)```
```DiscRates = 10×1 0.9996 0.9947 0.9896 0.9866 0.9826 0.9787 0.9745 0.9665 0.9552 0.9466 ```
```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 zero rates constitute an implied zero curve for the investment horizon represented by `CurveDates`.

Data Types: `double`

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

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

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

Common settlement date for `ZeroRates`, specified as a scalar datetime, string, or date character vector. `Settle` is the settlement date for the bonds from which the zero curve was bootstrapped.

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

Rate at which the input `ZeroRates` are compounded when annualized, specified as the comma-separated pair consisting of `'Compounding'` and allowed numeric 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: `double`

Day-count basis used for annualizing the input `ZeroRates`, specified as the comma-separated pair consisting of `'Basis'` and allowed numeric 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: `double`

## Output Arguments

collapse all

Discount factors, returned as a `NUMBONDS`-by-`1` vector of decimal fractions. In aggregate, the discount factors constitute a discount curve for the investment horizon represented by `CurveDates`.

Maturity dates that correspond to the `DiscRates`, returned as a `NUMBONDS`-by-`1` vector of maturity dates that correspond to the discount factors. This vector is the same as the input vector `CurveDates`, but is sorted by ascending maturity.

If either inputs for `CurveDates` or `Settle` are 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.

## Version History

Introduced before R2006a

expand all