Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

In general, the CMO workflow is:

Calculate underlying mortgage cash flows.

Define CMO tranches

If using a PAC or TAC CMO, calculate the principal schedule.

Calculate cash flows for each tranche.

Analyze the CMO by computing price, yield, spread of CMO cash flows.

Underlying mortgage pool pass-through cash flows are calculated
by the existing function `mbspassthrough`

.
The CMO cash flow functions require the principal payments (including
prepayments) calculated from existing functions `mbspassthrough`

or `mbscfamounts`

.

principal = 10000000; coupon = 0.06; terms = 360; psa = 150; [principal_balance, monthly_payments, sched_principal_payments,... interest_payments, prepayments] = mbspassthrough(principal,... coupon, terms, terms, psa, []); principal_payments = sched_principal_payments.' + prepayments.';

After determining principal payments for the underlying mortgage
collateral, you can generate cash flows for a sequential CMO, with
or without a Z-bond, by using `cmoseqcf`

.
For a PAC or TAC CMO, the cash flows are generated using `cmoschedcf`

Define CMO tranche; for example, define a CMO with two tranches:

TranchePrincipals = [500000; 500000]; TrancheCoupons = [0.06; 0.06];

Calculate the PAC/TAC principal balance schedule based on a
band of PSA speeds. For scheduled CMOs (PAC/TAC), the CMO cash flow
functions additionally take in the principal balance schedule calculated
by the CMO schedule function `cmosched`

.

```
speed = [100 300];
[balanceSchedule, initialBalance] = cmosched(principal, coupon,...
terms, terms, speed, TranchePrincipals(1));
```

You can reuse the output from the cash flow generation functions
to further divide the cash flows into tranches. For example, the output
from `cmoschedcf`

for a PAC tranche
can be divided into sequential tranches by passing the principal cash
flows of the PAC tranche into the `cmoschedcf`

function.
The outputs of the CMO cash flow functions are the principal and
interest cash flows, and the principal balance.

```
[principal_balances, principal_cashflows, interest_cashflows] = cmoschedcf(principal_payments,...
TranchePrincipals, TrancheCoupons, balanceSchedule);
```

The outputs from the CMO functions (`cmoseqcf`

and `cmoschedcf`

) are cash flows. The functions
used to analyze a CMO are based on these cash flows. To that end,
you can use `cfbyzero`

, `cfspread`

, `cfyield`

,
and `cfprice`

to compute prices,
yield, and spreads for the CMO cash flows. In addition, using the
following, you can calculate a weighted average life (WAL) for each
tranche in the CMO:

$$WAL={\displaystyle \sum _{i=1}^{n}\frac{{P}_{i}}{P}}{t}_{i}$$

where:

*P* is the total principal.

*P _{i}* is the principal
repayment of the coupon

$$\frac{{P}_{i}}{P}$$ is the fraction of the principal
repaid in coupon *i*.

*t _{i}* is the time in
years from the start to coupon

`cmosched`

| `cmoschedcf`

| `cmoseqcf`

| `mbscfamounts`

| `mbspassthrough`

- Using Collateralized Mortgage Obligations (CMOs)
- Create PAC and Sequential CMO
- Fixed-Rate Mortgage Pool