cmoseqcf
Generate cash flows for sequential collateralized mortgage obligation (CMO)
Syntax
Description
[
generates cash flows for a sequential CMO without a Z-bond, given the underlying
mortgage pool payments.Balance
,Principal
,Interest
] = cmoseqcf(PrincipalPayments
,TranchePrincipals
TrancheCoupons
)
Examples
Calculate Cash Flows for a Sequential Collateralized Mortgage Obligation (CMO)
Define the mortgage pool under consideration for CMO structuring using mbscfamounts
or mbspassthrough
and calculate the cash flows with an A and B tranche for a sequential CMO.
MortgagePrincipal = 1000000; Coupon = 0.12; Terms = 6; % months % Calculate underlying mortgage cash flows [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
Define CMO tranches, A and B.
TranchePrincipals = [500000; 500000]; TrancheCoupons = [0.12; 0.12];
Calculate cash flows for each tranche.
[Balance, Principal, Interest] = ...
cmoseqcf(PrincipalPayments, TranchePrincipals, TrancheCoupons, false)
Balance = 2×6
105 ×
3.3745 1.7328 0.0746 0 0 0
5.0000 5.0000 5.0000 3.3999 1.7084 0.0000
Principal = 2×6
105 ×
1.6255 1.6417 1.6582 0.0746 0 0
0 0 0 1.6001 1.6915 1.7084
Interest = 2×6
103 ×
5.0000 3.3745 1.7328 0.0746 0 0
5.0000 5.0000 5.0000 5.0000 3.3999 1.7084
Input Arguments
PrincipalPayments
— Number of terms remaining for underlying principal payments
numeric matrix
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
TranchePrincipals
— Initial principal for each tranche
numeric matrix
Initial principal for each tranche, specified as a matrix of size
NUMTRANCHES
-by-1
, where
NUMTRANCHES
is the number of tranches in the
sequential CMO. Each element of the matrix represents the initial principal
for each tranche. If the sequential CMO includes a Z-bond
(HasZ
is true
), the last element
of this matrix is the principal of the Z-bond.
Data Types: double
TrancheCoupons
— Coupon for each tranche
matrix of coupon values
Coupon for each tranche, specified as a matrix of size
NUMTRANCHES
-by-1
, where
NUMTRANCHES
is the number of tranches in the
sequential CMO. Each element of the matrix represents the coupon for each
tranche. If the sequential CMO includes a Z-bond (HasZ
is true
), the last element of this matrix is the coupon
of the Z-bond. The weighted average coupon for the CMO should not exceed the
coupon of the underlying mortgage.
Data Types: double
HasZ
— Indicates that the sequential CMO contains a Z-bond
false
(default) | true
| false
(Optional) Indicates that the sequential CMO contains a Z-bond, specified
as a Boolean (true
or false
). A value
of true
indicates that the sequential CMO contains a
Z-bond, and the last element of TranchePrincipals
and
TrancheCoupons
is treated as that of the Z-bond. A
value of false
indicates that there is no Z-bond in the
sequential CMO, and the last element of
TranchePrincipals
and
TrancheCoupons
is treated as an ordinary
tranche.
Data Types: logical
Output Arguments
Balance
— Principal balance for time period and tranche
matrix
Principal balance for time period and tranche, returned as a matrix of
size NUMTRANCHES
-by-NUMTERMS
, where
NUMTRANCHES
is the number of terms remaining and
NUMTRANCHES
is the number of tranches. Each element
represents the principal balance at the time period corresponding to the
column, and for the tranche corresponding to the row.
Principal
— Principal payments for time period and tranche
matrix
Principal payments for time period and tranche, returned as a matrix of
size NUMTRANCHES
-by-NUMTERMS
, where
NUMTRANCHES
is the number of terms remaining and
NUMTRANCHES
is the number of tranches. Each element
represents the principal payments made at the time period corresponding to
the column, and to the tranche corresponding to the row.
Interest
— Interest payments for time period and tranche
matrix
Interest payments for time period and tranche, returned as a matrix of
size NUMTRANCHES
-by-NUMTERMS
, where
NUMTRANCHES
is the number of terms remaining and
NUMTRANCHES
is the number of tranches. Each element
represents the interest payments made at the time period corresponding to
the column, and to the tranche corresponding to the row.
More About
Sequential Pay CMO
A sequential pay CMO involves tranches that pay off principal sequentially.
For example, consider the following case, where all principal from the underlying mortgage pool is repaid on tranche A first, then tranche B, then tranche C. Interest is paid on each tranche as long as the principal for the tranche has not been retired.
CMO Tranche
Tranche is a term often used to describe a specific class of bonds within an offering wherein each tranche offers varying degrees of risk to the investor.
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
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)