Skip to content
All library documents

Reusing Monte Carlo Paths to Calibrate Mortgage OAS

Article Quant Q&A · Author: JoeBass

Summary

The note describes how to calculate an option-adjusted spread (OAS) for a mortgage-backed security using simulated interest-rate paths. Rather than rerunning the simulations for every OAS trial, generate the paths and associated cash flows once. For each candidate spread, adjust the short rates, calculate the period-by-period returns and cumulative path values, discount the cash flows along each path, and average the resulting present values across paths.

The model price is then compared with the observed market price: raise the OAS if the model price is too high, or lower it if the model price is too low. This creates a price function of OAS that can be searched iteratively using the same simulated scenarios. The note outlines the computational workflow but does not specify a root-finding method, rate model, cash-flow model, or convergence diagnostics. The cited trial count is an approximate example, not a universal accuracy guarantee.

Key ideas

  • Generate simulated rate paths and cash flows once, then reuse them for candidate OAS values.
  • Apply each candidate spread to the simulated short rates and calculate cumulative path values.
  • Discount cash flows path by path and average the present values to obtain the model price.
  • Increase OAS when the model price exceeds market price and decrease it when the model price is lower.
  • Convergence depends on the simulation and model choices; the example trial count is not a general guarantee.

Tags

Full text
# Finding MBS OAS in practice


# Finding MBS OAS in practice












I'm reading Fabozzi's Bond Markets, Analysis and Strategies, and I have a practical question about finding OAS.

The book basically says you simulate interest rate paths and take the average price of the PVs of the discounted cash flows for each interest rate path simulation. It also says to expect around 1024 trials to converge to within a tick on the bond price.

The method is basically layed out here: https://financetrainingcourse.com/education/2010/08/computational-finance-option-adjusted-spread-a-numerical-finance-example/

However, the link above makes the same jump as Fabozzi, where details are left out:

> The projected interest rates plus a “guess” OAS are used to discount the cash flows to determine the theoretical price. Once the price is determined under the various interest paths, the model solves of the OAS which makes the average of the theoretical prices equal the observed market price.

So you have a best guess, you run your 1024 trials (or so) to converge on a price... but then let's say the price is too high? Do you tweak the OAS guess and then run all the trials all over again? That seems intractable.

When I am calibrating for Z-Spread, I take the static cash flows and use a nelder-mead method to iteratively modify my Z-Spread to find the Z-Spread that matches the discounted cash flows to the observed price.

Let's say that process takes 100 iterations to find the Z-Spread.

If I did a similar method for OAS, this implies 100*1024 trials in total.

Is this actually the preferred approach?

## Answer by NBF (score 2)

https://quant.stackexchange.com/a/41106

You can't run the trials again. That would be insane and you'd never guarantee easy convergence.

Take all your trials. You have cashflows and short rates. So, two matrices which are $T\times 1024$ in size. These are generated in advance.

You need to take the short rates and bump them all up by a constant OAS, generate the corresponding one-period (risky) returns. So if $CF(t_i,k)$ is the cashflow in period $t_i$ along path $k$ and $r(t_i,k)$ is the corresponding short rate, you want to compute the one-period money-market returns $\exp(-r(t_i,k)+OAS)$ and then cumulate them, i.e., take the cumulative product $$DF(t_j,k)=\prod_{j=1}^j \exp(-r(t_i,k)+OAS)$$, which will give you today's PV for \$1 at time $t_j$ on the $k^{th}$ path (this is the return of a money-market along that path, not really a discount factor, so the notation might be a little off)

Take the product of the $DF$ and the $CF$ and sum them to get a $$PV(k,OAS)=\sum_{i=1}^{T} DF(t_j,k,OAS) CF(t_j,k) $$ the PV for the $k^{th}$ path for that OAS, and finally, average across all paths to get $PV^{model}(OAS)=\frac{1}{1024}\sum_{k=1}^{1024} PV(k,OAS)$ as a function of OAS.

If your model price is higher than the market price, you need to adjust the OAS up, and if it's too low, you need to adjust your OAS down.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.