Model on Mortgages: Monte Carlo Model

Hi All,

I have a query regarding Monte Carlo Model used for valuation of mortgages/CMOs.

When we say we generate a stream of interest rates (forward-looking) for each of months from 0 to 360, what do we exactly mean here? Do we use/ Can we use bootstrapping procedure (from the term structure) to simulate those interest rates for every month from 0 to 360? Or is there any other less-computationally-intensive way?

I know this is out of context for the CFA curriculum. However, i was just trying to develop this model and thought it could be quite a time intensive exercise to generate interest rates for different months uskng bootstrapping.

Any thoughts would be welcome and greatly appreciated. Request @S2000magician to share your views

When I was analyzing MBSs and CMOs at PIMCO, we started with a calibrated (using benchmark Treasuries) 30-year semiannual binomial tree, then interpolated to get one-month forward rates. Then, because a 360-month binomial tree has 2360 (≈ 2,348,542,582,773,830,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000; i.e., a lot of) paths – an impractical number to use – we would randomly select a more pragmatic number of paths: say, 500 or 1,000. As using those paths with equal weighting would not likely give correct prices for the benchmark Treasuries, we would then adjust the path weights to recalibrate the model. (As there are more weights than securities, the solution is not unique; we added the criterion that the sum of the squared differences between the chosen weights and the original equal weights be a minimum.)

Hey, apologies @S2000magician , but I didn’t understand your point above. I have a few questions, please.

Questions on your message above:

  1. How do you mean you calibrated a 30-year binomial tree from benchmark treasuries? I mean, how did you start over? Did you start over ,from for instance, data variables corresponding to 6m, 12m, 1Yr, 1.5Yr…upto 360 month interest rates? If not, you must have used some volatility assumption on interest rates to generate up move and down move? Was this assumption constant over every movement from start to t=360?
  2. When you say you interpolated to get 1-month rates, what do u mean exactly? Suppose I have a t=0 interest rate of 2% and suppose 6 month-forward interest rate (since you are using a semiannual tree) is 4%, then did you use linear interpolation to find out a series of 1-month forward rates during that 6 month period? If yes, this would generate “one” interest rate value for the next month from t=0. How did you, then, compute the second interest rate (to arrive at binomial tree)? Does this mean, you used some thing other than linear interpolation technique?

Other questions:
I plan to approach this way. I would request you to please let me know how does this sound to you / any improvements welcome.

  1. Once I have, for example, used linear interpolation from a 30-year treasury curve to compute 1-month interest rates for every movement from t=0 to t=360 and consider this as “first” path (base case). Then, could i probably use a volatility assumption, of say, 10% and within the range of ±10%, simulate 2,000 paths? So, “second” path could be “first” path multiplied by volatility assumption of 0.01% for each 1-month interest rate and so on upto 10% volatility? Similarly, i could probably go in negative direction.
  2. Once i complete the step 1 above, i can simulate a range of prepayment speeds for each of the above 2,000 paths? Say, 60 PSA to 150 PSA for every path along with a default scenario? Say, 0.5% of loans going into default each month etc?
  3. After these two steps, compute cash flows and discount them appropriately to arrive at mean valuation at t=0?

I would also like to understand how did you use / how do you suggest volatility can be modelled while generating interest rates for different paths?
Basically, I am unable to understand how to consider volatility-use it across different simulations or use it to build binomial lattice. If latter, then, have not we already used interpolation to generate the curve