Suppose that one pool has two remaining coupons, and the other has three. MATLAB®expects the prepayment matrix to be in the following format:
V11 V21 V12 V22 NaN V23
V
ij
denotes the single monthly mortality (SMM) rate for pooli
during thej
th coupon period sinceSettle
.
The use ofNaN
to pad the prepayment matrix is necessary because MATLAB cannot concatenate vectors of different lengths into a matrix. Also, it can serve as an error check against any unintended operation (any MATLAB operation that would returnNaN
).
For example, assume that the 2-month pool has a constant SMM of 0.5% and the 3-month pool has a constant SMM of 1% in every period. The prepayment matrix you would create is depicted below.
Create this input in whatever manner is best for you.
When you specify a PSA prepayment speed, MATLAB "seasons" the pool according to its age.
When you specify your own prepayment matrix, identify the maximum number of coupons remaining usingcpncount
. Then supply the matrix elements up to the point when cash flow ceases to exist.
When different length pools must exist in the same matrix, pad the shorter one(s) withNaN
. Each column of the prepayment matrix corresponds to a specific pool.
mbscfamounts
|mbsconvp
|mbsconvy
|mbsdurp
|mbsdury
|mbsnoprepay
|mbsoas2price
|mbsoas2yield
|mbspassthrough
|mbsprice
|mbsprice2oas
|mbsprice2speed
|mbswal
|mbsyield
|mbsyield2oas
|mbsyield2speed
|psaspeed2default
|psaspeed2rate