CMS BondEdge is able to produce a stream of cash flows for a portfolio of bonds, by cusip, over a variety of interest rate scenarios. In the "cash flow testing" exercise at insurance companies, these interest rate scenarios are monthly for 50 years. The rules for whether a security prepays or not (or the level of prepayment) would seem to be relatively straightforward. What is not straightforward is how BondEdge is also able to provide a market value for the securities at every date. It is quite clear that the system is not revaluing every security at every date. So how might they be doing this?
Some hosted systems can reprice monthly, such as FactSet’s ALM tool. This is computationally expensive, and a user option. It is more common to reprice something like every 12/24/36 months in the projection. For cashflows between these “full” repricings, it will re-use either the most recent cashflows discounted by the new rates or it will amortize MV using book yield. I can’t speak for BondEdge specifically but I’m sure their support could shed some light on their methodology.
Typically mortgages are priced using a Monte Carlo OAS approach with >200 paths and associated prepayments. For a CMO, this needs to be done per pool or repline so you can easily be looking at thousands of prepays for a single security, each month in the projection.
To get around this, most systems will use a “single path” for cash flow repricing, which is just using forward rates derived from that month’s spot curve for prepayment projection (and the spot rates for discounting). Much easier than full Monte Carlo and you still get changes in prepays.