# disc2rate

Interest rates from cash flow discounting factors

## Syntax

```Rates = disc2rate(Compounding,Disc,EndTimes)
Rates = disc2rate(Compounding,Disc,EndTimes,StartTimes)
[Rates,EndTimes,StartTimes] = disc2rate(Compounding,Disc,EndDates,StartDates,ValuationDate)
[Rates,EndTimes,StartTimes] = disc2rate(Compounding,Disc,EndDates,StartDates,ValuationDate,Basis,EndMonthRule)
```

Usage 1: Interval points are input as times in periodic units.

Usage 2: `ValuationDate` is passed and interval points are input as dates.

## Arguments

`Compounding`

Scalar value representing the rate at which the input zero rates were compounded when annualized. This argument determines the formula for the discount factors (`Disc`):

• `Compounding` = `0` for simple interest

• `Disc = 1/(1 + Z * T)`, where `T` is time in years and simple interest assumes annual times ```F = 1```.

• `Compounding` = `1`, `2`, `3`, `4`, `6`, `12`

• `Disc = (1 + Z/F)^(-T)`, where `F` is the compounding frequency, `Z` is the zero rate, and `T` is the time in periodic units, for example, ```T = F``` is one year.

• `Compounding` = `365`

• `Disc = (1 + Z/F)^(-T)`, where `F` is the number of days in the basis year and `T` is a number of days elapsed computed by basis.

• `Compounding` = `−1`

• `Disc = exp(-T*Z)`, where `T` is time in years.

`Disc`

Number of points `(NPOINTS)` by number of curves (`NCURVES`) matrix of discounts. `Disc` are unit bond prices over investment intervals from `StartTimes`, when the cash flow is valued, to `EndTimes`, when the cash flow is received.

`EndTimes`

`NPOINTS`-by-`1` vector or scalar of times in periodic units ending the interval to discount over.

### Note

When `ValuationDate` is not passed, the `EndTimes` and `StartTimes` arguments are interpreted as times.

`StartTimes`

(Optional) `NPOINTS`-by-`1` vector or scalar of times in periodic units starting the interval to discount over. Default = `0`.

`EndDates`

`NPOINTS`-by-`1` vector or scalar of serial maturity dates ending the interval to discount over.

### Note

When `ValuationDate` is passed, `EndDates` and `StartDates` arguments are interpreted as dates. The date `ValuationDate` is used as the zero point for computing the times.

`StartDates`

(Optional) `NPOINTS`-by-`1` vector or scalar of serial dates starting the interval to discount over. Default = `ValuationDate`. `StartDates` must be earlier than `EndDates`.

`ValuationDate`

Scalar value in serial date number form representing the observation date of the investment horizons entered in `StartDates` and `EndDates`. Required in Usage 2. Omitted or passed as an empty matrix to invoke Usage 1.

`Basis`

(Optional) Day-count basis of the instrument when using Usage 2. A vector of integers.

• 0 = actual/actual (default)

• 1 = 30/360 (SIA)

• 2 = actual/360

• 3 = actual/365

• 4 = 30/360 (BMA)

• 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

`EndMonthRule`

(Optional) End-of-month rule when using Usage 2. A vector. This rule applies only when `Maturity` is an end-of-month date for a month having 30 or fewer days. `0` = ignore rule, meaning that a bond's coupon payment date is always the same numerical day of the month. `1` = set rule on (default), meaning that a bond's coupon payment date is always the last actual day of the month.

## Description

Usage 1: `Rates = disc2rate(Compounding,Disc,EndTimes)` or ```Rates = disc2rate(Compounding, Disc,EndTimes,StartTimes)``` where interval points are input as times in periodic units.

Usage 2: ```[Rates,EndTimes,StartTimes] = disc2rate(Compounding,Disc,EndDates,StartDates, ValuationDate)``` or ```[Rates,EndTimes,StartTimes] = disc2rate(Compounding,Disc,EndDates,StartDates,ValuationDate,Basis, EndMonthRule)``` where `ValuationDate` is passed and interval points are input as dates.

`disc2rate` computes the yields over a series of `NPOINTS` time intervals given the cash flow discounts over those intervals. `NCURVES` different rate curves can be translated at once if they have the same time structure. The time intervals can represent a zero or a forward curve.

`Rates` is an `NPOINTS`-by-`NCURVES` column vector of yields in decimal form over the `NPOINTS` time intervals.

Specify the investment intervals with either input times (Usage 1) or input dates (Usage 2). Entering `ValuationDate` invokes the date interpretation; omitting `ValuationDate` invokes the default time interpretations.

For Usage 1:

• `StartTimes` is an `NPOINTS`-by-`1` column vector of times starting the interval to discount over, measured in periodic units.

• `EndTimes` is an `NPOINTS`-by-`1` column vector of times ending the interval to discount over, measured in periodic units.

For Usage 2:

• `StartDates` is an `NPOINTS`-by-`1` column vector of serial dates starting the interval to discount over, measured in days.

• `EndDates` is an `NPOINTS`-by-`1` column vector of serial date ending the interval to discount over, measured in days.

If `Compounding = 365` (daily), `StartTimes` and `EndTimes` are measured in days for Usage 2. Otherwise, for Usage 1, the arguments contain values, `T`, computed from SIA semiannual time factors, `Tsemi`, by the formula `T = Tsemi/2 * F`, where `F` is the compounding frequency.