CMO Workflow
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.
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
.
terms = 360;
coupon = 0.06;
principal = 10000000;
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:
where:
P is the total principal.
Pi is the principal repayment of the coupon i.
is the fraction of the principal repaid in coupon i.
ti is the time in years from the start to coupon i.
See Also
cmoseqcf
| cmosched
| cmoschedcf
| mbscfamounts
| mbspassthrough
Related Examples
- Using Collateralized Mortgage Obligations (CMOs)
- Create PAC and Sequential CMO
- Fixed-Rate Mortgage Pool