Option-Adjusted Spread (OAS) for Quants

Option-adjusted spread (OAS) is the constant spread added to pathwise discount rates that makes a model’s expected present value equal a security’s observed price. It removes the value assigned to embedded optionality only conditionally: the reported number inherits the curve, volatility, exercise, prepayment, and numerical assumptions used to compute it.

Spread is not a yield difference

For fixed cash flows, a z-spread discounts every promised payment at a risk-free curve plus a constant spread. For a callable bond or MBS, cash flows themselves depend on future rates and exercise. OAS instead solves:

P_market = E_Q[ Σ_t CF_t(path) exp(-∫_0^t (r_u(path) + s) du) ]

The expectation is under a calibrated risk-neutral rate model. Adding s as a continuously compounded spread is a convention; compounding, discount-node application, and whether the spread affects exercise valuation must be stated.

MeasureCash flowsOption treatmentTypical use
yield-to-maturityfixed assumed scheduleignoredsimple bond quoting
z-spreadcontractual scheduleignorednon-callable credit
OASpath-dependentmodelledcallable/MBS relative value
asset-swap spreadswap-discounted cash flowsconvention dependentfunding comparison

Solve the root, retain diagnostics

Monotonicity normally makes a bracketing root solver preferable to Newton steps. The function should return both PV and its pathwise ingredients so an unexplained OAS move can be attributed.

from scipy.optimize import brentq
import numpy as np

def pv_with_oas(cashflows, discount_integrals, spread):
    # Arrays are paths × payment dates; cashflows already reflect exercise.
    return np.mean(np.sum(cashflows *
                          np.exp(-(discount_integrals + spread)), axis=1))

def solve_oas(price, cashflows, discount_integrals):
    f = lambda s: pv_with_oas(cashflows, discount_integrals, s) - price
    return brentq(f, -0.10, 0.30)

For unequal payment times, multiply the spread by each payment year fraction; the compact code assumes discount_integrals already contains that term. Validate that zero OAS produces the base model PV, that higher OAS lowers price, and that the solved price is recovered to a meaningful tolerance.

Model dependence is first-order risk

A callable bond is a straight bond less the issuer’s call option. If a model assigns more value to that option, it produces a lower option-adjusted bond value at a given spread and can therefore report a wider or narrower OAS depending on the calibration convention. The number cannot be compared across vendors without reconciling model inputs.

Assumption changeLikely OAS impact at fixed priceWhy
higher rate volatilitychanges materiallyoption value rises
faster MBS prepaymentchanges materiallypremium cash flows truncate
wider liquidity premium omittedapparent OAS widensspread absorbs missing risk
curve twistambiguousexercise boundary shifts

Use a model fitted to the initial discount curve and relevant option surface. A one-factor Hull–White tree is often adequate for transparent callable structures, but it may miss smile or multi-factor curve dynamics. Vasicek and Hull–White models and Bermudan valuation give the calibration context.

Relative value workflow

Compare OAS only within a controlled cohort: collateral or call schedule, coupon, maturity, seniority, liquidity, model version, and settlement convention. Then test whether the spread differential survives perturbations to volatility and behavioral inputs. An apparent 15 bp cheapness that reverses under a plausible prepayment-speed change is model exposure, not a robust alpha signal.

For MBS, report effective duration, convexity, and OAS under multiple rate paths. Faster refinancing after rallies causes contraction; slower refinancing after sell-offs causes extension. The relevant cash-flow modeling details are in mortgage prepayment risk.

Separate market data changes from model changes in daily OAS history. Re-run yesterday's price with today's curve, then today's volatility and behavioral inputs one at a time. Without that attribution, a dashboard can call a security “wider” when only a prepayment-model update changed its reported spread.

Key takeaways

  • OAS equates market price to expected discounted path-dependent cash flows.
  • It is not a model-free credit spread or a direct measure of default probability.
  • A bracketing solve, monotonicity tests, and independent repricing are essential controls.
  • Volatility, curve, exercise, and liquidity assumptions can dominate an OAS comparison.
  • Trade OAS residuals only after testing them across plausible model specifications.
#OAS #fixed income #callable bonds #interest rate models