Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

## CMO Workflow

In general, the CMO workflow is:

1. Calculate underlying mortgage cash flows.

2. Define CMO tranches

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

4. Calculate cash flows for each tranche.

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

### Calculate Underlying Mortgage 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 Tranches

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

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

### If Using a PAC or TAC CMO, Calculate Principal Schedule

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));

### Calculate Cash Flows for Each Tranche

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);

### Analyze CMO by Computing Price, Yield, and Spread of CMO Cash Flows

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=\sum _{i=1}^{n}\frac{{P}_{i}}{P}{t}_{i}$

where:

P is the total principal.

Pi is the principal repayment of the coupon i.

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

ti is the time in years from the start to coupon i.