cmoschedcf

Generate cash flows for scheduled collateralized mortgage obligation (CMO) using PAC or TAC model

Syntax

``[Balance,Principal,Interest] = cmoschedcf(PrincipalPayments,TranchePrincipalsTrancheCoupons,BalanceSchedule)``

Description

example

````[Balance,Principal,Interest] = cmoschedcf(PrincipalPayments,TranchePrincipalsTrancheCoupons,BalanceSchedule)` generates cash flows for a scheduled CMO, such as the planned amortization class (PAC) or targeted amortization class (TAC), given the underlying mortgage pool payments (or payments from another CMO tranche). The output `Balances`, `Principal`, and `Interest` from this function can be used as input into `cmoseqcf` to further divide the PAC, TAC, or support dividing a tranche into sequential tranches.```

Examples

collapse all

Define the mortgage pool under consideration for CMO structuring using `mbscfamounts` or `mbspassthrough`. Calculate the underlying mortgage cash flow, define the PAC schedule and CMO tranches, and calculate the cash flows for each tranche.

```MortgagePrincipal = 1000000; % underlying mortgage Coupon = 0.12; Terms = 6; % months [PrincipalBalance, MonthlyPayments, SchedPrincipalPayments, ... InterestPayments, Prepayments] = ... mbspassthrough(MortgagePrincipal, Coupon, Terms, Terms, 0, []); PrincipalPayments = SchedPrincipalPayments.' + Prepayments.'```
```PrincipalPayments = 1×6 105 × 1.6255 1.6417 1.6582 1.6747 1.6915 1.7084 ```

Calculate the PAC schedule for CMO using `cmosched`.

```PrepaySpeed = [100 300]; [BalanceSchedule, InitialBalance] ... = cmosched(MortgagePrincipal, Coupon, Terms, Terms, PrepaySpeed, [])```
```BalanceSchedule = 1×6 105 × 8.3617 6.7180 5.0581 3.3828 1.6955 0 ```
```InitialBalance = 9.9886e+05 ```

Define CMO tranches.

```TranchePrincipals = ... [InitialBalance; MortgagePrincipal-InitialBalance]; TrancheCoupons = [0.12; 0.12];```

Calculate cash flows for each tranche.

```[Balance, Principal, Interest] = ... cmoschedcf(PrincipalPayments, TranchePrincipals, ... TrancheCoupons, BalanceSchedule)```
```Balance = 2×6 105 × 8.3631 6.7213 5.0632 3.3885 1.6970 0 0.0114 0.0114 0.0114 0.0114 0.0114 0.0000 ```
```Principal = 2×6 105 × 1.6255 1.6417 1.6582 1.6747 1.6915 1.6970 0 0 0 0 0 0.0114 ```
```Interest = 2×6 103 × 9.9886 8.3631 6.7213 5.0632 3.3885 1.6970 0.0114 0.0114 0.0114 0.0114 0.0114 0.0114 ```

Input Arguments

collapse all

Number of terms remaining for underlying principal payments, specified as a matrix of size `1`-by-`NUMTERMS`, where `NUMTERMS` is the number of terms remaining. Each column contains the underlying principal payment for the time period corresponding to the row number. Calculate underlying principal payments using `mbscfamounts` or `mbspassthrough`. The underlying principal payments can also be outputs from other CMO cash flow functions.

Data Types: `double`

Initial principal for the scheduled and the support tranche, specified as a matrix of size `2`-by-`1`.

Data Types: `double`

Coupons for the schedule tranche and the support tranche, specified as a matrix of size `2`-by-`1` of coupon values. The weighted average coupon for the CMO should not exceed the coupon of the underlying mortgage.

Data Types: `double`

Number of terms remaining for targeted balance, specified as a matrix of size `1`-by-`NUMTERMS`, where `NUMTERMS` is the number of terms remaining. Each element represents the targeted balance schedule for the time period corresponding to that column.

Data Types: `double`

Output Arguments

collapse all

Number of terms remaining and principal balances, returned as a matrix of size `2`-by-`NUMTERMS`, where `NUMTERMS` is the number of terms remaining. The first row is the principal balances of the scheduled tranche, and the second row is the principal balances of the support tranche at the time period corresponding to the column.

Number of terms remaining and principal payments, returned as a matrix of size `2`-by-`NUMTERMS`, where `NUMTERMS` is the number of terms remaining. The first row is the principal payments of the scheduled tranche, and the second row is the principal payments of the support tranche at the time period corresponding to the column.

Number of terms remaining and interest payments, returned as a matrix of size `2`-by-`NUMTERMS`, where `NUMTERMS` is the number of terms remaining. The first row is the interest payments of the schedule tranche, and the second row is the interest payments of the support tranche at the time period corresponding to the column.

collapse all

Planned Amortization Class (PAC) Tranches

In a PAC CMO, there is a main tranche, known as the schedule tranche, and a support tranche.

The main purpose of a schedule tranche is to give investors in the PAC tranche a more certain cash flow.

Targeted Amortization Class (TAC) Tranches

TACs are like PACs, but principal payment is specified for only one prepayment rate.

If prepayment rates are higher or lower, then the principal payment to TAC holders are higher or lower accordingly.

Schedule and Support Tranche

The main purpose of a PAC tranche is to give investors in the PAC tranche a more certain cash flow.

The PAC tranche receives priority for receiving payments of principal and interest that gives investors in the PAC tranche a steadier income. If prepayments differ from what was expected, then the support tranche gets the variable portion of the payments. While income to the support tranche is more variable, it is also higher yielding. Estimates of the yield, average life, and lockout periods of the PAC tranche is more certain.

References

[1] Hayre, Lakhbir, ed. Salomon Smith Barney Guide to Mortgage-Backed and Asset-Backed Securities. John Wiley and Sons, New York, 2001.

[2] Lyuu, Yuh-Dah. Financial Engineering and Computation. Cambridge University Press, 2004.

Version History

Introduced in R2012a