mbsprice2speed

Implied PSA prepayment speeds given price

Syntax

``[ImpSpdOnPrc,ImpSpdOnDur,ImpSpdOnCnv] = mbsprice2speed(Price,Settle,Maturity,IssueDate,GrossRate,PrepayMatrix)``
``[ImpSpdOnPrc,ImpSpdOnDur,ImpSpdOnCnv] = mbsprice2speed(___,CouponRate,Delay)``

Description

example

````[ImpSpdOnPrc,ImpSpdOnDur,ImpSpdOnCnv] = mbsprice2speed(Price,Settle,Maturity,IssueDate,GrossRate,PrepayMatrix)` computes PSA prepayment speeds implied by pool prices and projected (user-defined) prepayment vectors. The calculated PSA speed produces the same price, modified duration, or modified convexity, depending upon the output requested.```

example

````[ImpSpdOnPrc,ImpSpdOnDur,ImpSpdOnCnv] = mbsprice2speed(___,CouponRate,Delay)` specifies options using one or more optional arguments in addition to the input arguments in the previous syntax. ```

Examples

collapse all

This example shows how to compute the equivalent PSA benchmark prepayment speeds for a mortgage pool with the following characteristics and prepayment matrix.

```Price = 101; Settle = datetime(2000,1,1); Maturity = datetime(2030,1,1); IssueDate = datetime(2000,1,1); GrossRate = 0.08125; PrepayMatrix = 0.005*ones(360,1); CouponRate = 0.075; Delay = 14; [ImpSpdOnPrc, ImpSpdOnDur, ImpSpdOnCnv] = ... mbsprice2speed(Price,Settle, Maturity, IssueDate, ... GrossRate, PrepayMatrix, CouponRate, Delay)```
```ImpSpdOnPrc = 118.5980 ```
```ImpSpdOnDur = 118.3946 ```
```ImpSpdOnCnv = 109.5115 ```

Input Arguments

collapse all

Clean price for every \$100 face value, specified as an `NMBS`-by-`1` vector.

Data Types: `double`

Settlement date, specified as an `NMBS`-by-`1` vector using a datetime array, string array, or date character vectors. `Settle` must be earlier than `Maturity`.

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

Maturity date, specified as an `NMBS`-by-`1` vector using a datetime array, string array, or date character vectors.

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

Issue date, specified as an `NMBS`-by-`1` vector using a datetime array, string array, or date character vectors.

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

Gross coupon rate (including fees), specified as an `NMBS`-by-`1` vector of decimal values.

Data Types: `double`

Customized prepayment vector, specified as a `NaN`-padded matrix of size `max(TermRemaining)`-by-`NMBS`. Each column corresponds to each mortgage-backed security, and each row corresponds to each month after settlement.

Note

Use `PrepayMatrix` only when `PrepaySpeed` is unspecified.

Data Types: `double`

(Optional) Net coupon rate, specified as an `NMBS`-by-`1` vector of decimal values.

Data Types: `double`

(Optional) Delay (in days) between payment from homeowner and receipt by bondholder, specified as an `NMBS`-by-`1` vector.

Data Types: `double`

Output Arguments

collapse all

Equivalent PSA benchmark prepayment speed for the pass-through to carry the same price, returned as a `NMBS`-by-`1` vector.

Equivalent PSA benchmark prepayment speed for the pass-through to carry the same modified duration, returned as a `NMBS`-by-`1` vector.

Equivalent PSA benchmark prepayment speed for the pass-through to carry the same modified convexity, returned as a `NMBS`-by-`1` vector.

References

[1] PSA Uniform Practices, SF-49

Version History

Introduced before R2006a

expand all