Main Content

# mbspassthrough

Mortgage pool cash flows and balances with prepayment

## Syntax

``[Balance,Payment,Principal,Interest,Prepayment] = mbspassthrough(OriginalBalance,GrossRate,OriginalTerm)``
``[Balance,Payment,Principal,Interest,Prepayment] = mbspassthrough(___,TermRemaining,PrepaySpeed,PrepayMatrix)``

## Description

example

````[Balance,Payment,Principal,Interest,Prepayment] = mbspassthrough(OriginalBalance,GrossRate,OriginalTerm)` calculates mortgage pool cash flows and balances with prepayments. If a standard (PSA) prepayment is specified, "aging" is applied to standard prepayment vector. Aging is the same amount as the age of the pool (`OriginalTerm` - `TermRemaining`).```

example

````[Balance,Payment,Principal,Interest,Prepayment] = mbspassthrough(___,TermRemaining,PrepaySpeed,PrepayMatrix)` 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 cash flows and balances of a 3-month old mortgage pool with original term of 360 months, assuming a prepayment speed of 100.

```OriginalBalance = 100000; GrossRate = 0.08125; OriginalTerm = 360; TermRemaining = 357; PrepaySpeed = 100; [Balance, Payment, Principal, Interest, Prepayment] =... mbspassthrough(OriginalBalance, GrossRate, OriginalTerm,... TermRemaining, PrepaySpeed)```
```Balance = 357×1 104 × 9.9866 9.9715 9.9548 9.9363 9.9161 9.8942 9.8707 9.8454 9.8185 9.7900 ⋮ ```
```Payment = 357×1 743.9671 743.4693 742.8468 742.0999 741.2285 740.2329 739.1132 737.8699 736.5034 735.0139 ⋮ ```
```Principal = 357×1 66.8837 67.2915 67.6904 68.0802 68.4607 68.8317 69.1929 69.5442 69.8854 70.2163 ⋮ ```
```Interest = 357×1 677.0833 676.1777 675.1564 674.0196 672.7678 671.4012 669.9203 668.3257 666.6179 664.7976 ⋮ ```
```Prepayment = 357×1 66.8676 83.5494 100.2000 116.8108 133.3731 149.8785 166.3183 182.6840 198.9672 215.1593 ⋮ ```

## Input Arguments

collapse all

Original balance value in dollars (balance at the beginning of each `TermRemaining`), specified as an `NMBS`-by-`1` vector.

Data Types: `double`

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

Data Types: `double`

Term of the mortgage in months, specified as an `NMBS`-by-`1` vector.

Data Types: `double`

(Optional) Number of full months between settlement and maturity, specified as an `NMBS`-by-`1` vector. For this argument, "full months" means not including fractional first term (if there is one).

Data Types: `double`

(Optional) Speed relative to PSA standard, specified as an `NMBS`-by-`1` vector. The PSA standard is `100`.

Note

Set the `PrepaySpeed` to `[]` if you input a customized `PrepayMatrix`.

Data Types: `double`

(Optional) 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`

## Output Arguments

collapse all

Principal balance at end of month, returned as a `TermRemaining`-by-`1` vectors of end-of-month values.

Total monthly payment, returned as a `TermRemaining`-by-`1` vectors of end-of-month values.

Principal portion of the payment, returned as a `TermRemaining`-by-`1` vectors of end-of-month values.

Interest portion of the payment, returned as a `TermRemaining`-by-`1` vectors of end-of-month values.

Unscheduled principal payment, returned as a `TermRemaining`-by-`1` vectors of end-of-month values.

## See Also

Introduced before R2006a

Download ebook