Compute spread over yield curve for cash flow

## Syntax

``Spread = cfspread(RateSpec,Price,CFlowAmounts,CFlowDates,Settle)``
``Spread = cfspread(___,Name,Value)``

## Description

example

````Spread = cfspread(RateSpec,Price,CFlowAmounts,CFlowDates,Settle)` computes spread over a yield curve for a cash flow.```

example

````Spread = cfspread(___,Name,Value)` specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax. ```

## Examples

collapse all

Use `cfspread` to compute the spread over a yield curve for a cash flow.

Define data for the yield curve.

```Settle = datenum('01-Jul-2003'); CurveDates = daysadd(Settle,360*[.25 .5 1 2 3 5 7 10 20],1); ZeroRates = [.0089 .0096 .0107 .0130 .0166 .0248 .0306 .0356 .0454]';```

Compute the `RateSpec`.

```RateSpec = intenvset('StartDates', Settle, 'EndDates', CurveDates,... 'Rates', ZeroRates)```
```RateSpec = struct with fields: FinObj: 'RateSpec' Compounding: 2 Disc: [9x1 double] Rates: [9x1 double] EndTimes: [9x1 double] StartTimes: [9x1 double] EndDates: [9x1 double] StartDates: 731763 ValuationDate: 731763 Basis: 0 EndMonthRule: 1 ```

```Price = 98; CFAmounts = [30;40;30]; CFDates = datenum({'15-Jul-2004', '15-Jul-2005', '15-Jul-2006'}); Spread = cfspread(RateSpec, Price, CFAmounts, CFDates, Settle)```
```Spread = 3×1 103 × -8.7956 -4.0774 -3.7073 ```

Use `cfspread` to compute the spread over a yield curve for a cash flow using `datetime` inputs.

```Settle = datenum('01-Jul-2003'); CurveDates = daysadd(Settle,360*[.25 .5 1 2 3 5 7 10 20],1); ZeroRates = [.0089 .0096 .0107 .0130 .0166 .0248 .0306 .0356 .0454]'; RateSpec = intenvset('StartDates', Settle, 'EndDates', CurveDates,... 'Rates', ZeroRates); Price = 98; CFAmounts = [30;40;30]; CFDates = datenum({'15-Jul-2004', '15-Jul-2005', '15-Jul-2006'}); CFDates = datetime(CFDates,'ConvertFrom','datenum','Locale','en_US'); Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US'); Spread = cfspread(RateSpec, Price, CFAmounts, CFDates, Settle)```
```Spread = 3×1 103 × -8.7956 -4.0774 -3.7073 ```

## Input Arguments

collapse all

Interest-rate specification for initial risk-free rate curve, specified by the `RateSpec` obtained from `intenvset` (Financial Instruments Toolbox). For information on the interest-rate specification, see `intenvset` (Financial Instruments Toolbox).

Data Types: `struct`

Price of cash flows, specified as an `NINST`-by-`1` vector.

Data Types: `double`

Cash flow amounts, specified as an `NINST`-by-`MOSTCFS` matrix . Each row is a list of cash flow values for one instrument. If an instrument has fewer than `MOSTCFS` cash flows, the end of the row is padded with `NaN`s.

Data Types: `double`

Cash flow dates, specified as an `NINST`-by-`MOSTCFS` matrix . Each entry contains the date of the corresponding cash flow in `CFlowAmounts`.

Data Types: `double` | `char` | `datetime`

Settlement date, specified as an `NINST`-by-`1` vector using serial date numbers or a cell array of date character vectors. The `Settle` date is the date on which the cash flows are priced.

Data Types: `double` | `char` | `cell`

### Name-Value Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside quotes. You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ```Spread = cfspread(RateSpec,Price,CFlowAmounts,CFlowDates,Settle,'Basis',4)```

Note

An optional input of size `NINST`-by-`1` is also acceptable as a single value applicable to all contracts. Single values are internally expanded to an array of size `NINST`-by-`1`.

Day-count basis, specified as the comma-separated pair consisting of `'Basis'` and a positive integer using a `NINST`-by-`1` vector.

• 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

Spread of cash flows over a zero curve, returned as an `NINST`-by-`1` vector. The `Spread` is expressed in basis points.

(Financial Instruments Toolbox) | | |

### Topics

Introduced in R2012a