Source: “The Big Short” (2015), Paramount Pictures

Simulating Yield of Non-Agency CMO in Python

This post aims to provide conceptual background for the CMO model available here.

Introduction

Collateralized Mortgage Obligation (CMO) is a type of mortgage-backed security that, essentially, distribute payments of interest and principal of a pool of mortgages to separate debt instruments. These instruments are split into classes (tranches) to create securities with different maturities that would be attractive to a broader range of investors than the original pool of loans.

                +-------+------------+-----------+
| Class | Principal | Interest |
+-------+------------+-----------+
| A | $60,000 | 4.0% |
| B | $30,000 | 4.0% |
| C | $10,000 | 4.0% |
+-------+------------+-----------+
              +----------+------------+-----------+
| Class | Principal | Interest |
+----------+------------+-----------+
| A | $60,000 | 4.0% |
| B | $30,000 | 4.0% |
| C | $7,000 | 4.0% |
| Residual | $0 | 0% |
+----------+------------+-----------+

Modelling Prepayments

First, the Python model projects cash flows from the pool of mortgages. I estimate the prepayments with Richard and Roll (1989) prepayment model (I use the approach originally shown in [2] and [3]). Richard and Roll prepayment model assumes that prepayment rates are dependent on 4 factors:

‘CPR(max)’ and ‘CPR(min)’ are maximum and minimum Conditional Prepayment Rates we expect to observe;‘midpoint(diff)’ is the difference between ‘C’ and ‘R’ (in bps) at the middle of the range between ‘CPR(max)’ and ‘CPR(min)’; ‘slope(max)’ is the maximum slope observable at midpoint.
                       +-------+-------------+
| Month | Value of MM |
+-------+-------------+
| 1 | 0.94 |
| 2 | 0.76 |
| 3 | 0.74 |
| 4 | 0.95 |
| 5 | 0.98 |
| 6 | 0.92 |
| 7 | 0.98 |
| 8 | 1.10 |
| 9 | 1.18 |
| 10 | 1.22 |
| 11 | 1.23 |
| 12 | 0.98 |
+-------+-------------+
‘B(t)’ is outstanding balance of the pool at time ‘t’ (‘t’ is expressed in months)

Modelling interest rates path

To calculate Reinvestment Incentive, we need to have the refinancing rate. I model the path of interest rates with the Cox-Ingersoll-Ross (CIR) short term interest rate process:

Modelling Defaults

To account for defaults, the model employs Standard Default Assumption (SDA) developed by the Bond Market Association. SDA assumes Constant Default Rate rises from 0% to 0.6% until the 30th month and stay on this level for another 30 months. Then it gradually decreases to 0.03% by 120th month and stays at this level for the remaining period. The convention here is similar to the PSA benchmark, for example, 200% SDA would mean that the CDR peaks at 1.2% (0.6% * 200%) and the final CPR after 120th month is 0.06% (0.03% * 200%).

Numerical Example and Monte Carlo Simulation

To calculate yield of a sample CMO, we need to estimate the cash flows from the hypothetical pool of 30-year mortgages. I assume a WAC of 3.5%, WAM of 357 months, net coupon of 3%, and a size of $300,000,000. The monthly default rates are calculated assuming 100% SDA. The lag between the default of a mortgage and recovery (time to liquidation) is 14 months. During this period any payments of principal and interest are assumed to be advanced by the servicer. The loss severity is assumed to be 20%.

               +----------+------------+-----------+
| Class | Principal | Interest |
+----------+------------+-----------+
| A | 60% | 1.0% |
| B | 15% | 2.0% |
| C | 15% | 3.5% |
| D | 3% | 5.5% |
| Residual | 0% | 0% |
+----------+------------+-----------+
  1. All the principal cash flows (including prepayments and recoveries) will be directed to the senior tranche (until repaid), then to the mezzanine tranche (until repaid), and finally to the junior tranche (until repaid). After the junior tranche is repaid any principal cash flows will go to the Residual tranche.
  2. If the cumulative defaults exceed the amount of overcollateralization, all the cash flows potentially attributable to the Residual will be paid to the junior tranche that is first to bear the losses.
  1. For each of the months model prepayment rate, default rate, and recoveries. Use them to calculate monthly principal payments, interest payments, and the amount of defaults.
  2. Distribute cash flows to tranches according to the waterfall rules.
  3. Calculate the annual cash flow yield (IRR) and WAL of the tranches.
  4. Repeat steps 1–4 n times and calculate the average of WALs and yields for each of the tranches
                 +----------+--------+----------+
| Class | Yield | WAL (yr) |
+----------+--------+----------+
| A | 1.00% | 8.6 |
| B | 2.00% | 17.7 |
| C | 3.50% | 19.5 |
| D | 5.45% | 19.6 |
| Residual | 12.35% | 11.6 |
+----------+--------+----------+
Average yields after 1,000 simulations for each level of SDA

References

[1] Richard, S. & Roll, R. (1989). Prepayments on fixed-rate mortgage-backed securities, The Journal of Portfolio Management, 15(3), 73–82