Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

mbsyield2oas

Option-adjusted spread given yield

Syntax

OAS = mbsyield2oas(ZeroCurve,Yield,Settle,Maturity,IssueDate,GrossRate,CouponRate,Delay,Interpolation,PrepaySpeed,PrepayMatrix)

Arguments

ZeroCurve

A matrix of three columns:

  • Column 1: Serial date numbers.

  • Column 2: Spot rates with maturities corresponding to the dates in Column 1, in decimal (for example, 0.075).

  • Column 3: Compounding of the rates in Column 2. Values are 1 (annual), 2 (semiannual, 3 (three times per year), 4 (quarterly), 6 (bimonthly), 12 (monthly), and -1 (continuous).

Yield

Mortgage yield, compounded monthly (in decimal).

Settle

Settlement date (scalar only). A serial date number or date character vector. Date when option-adjusted spread is calculated. Settle must be earlier than Maturity.

Maturity

Maturity date. Scalar or vector in serial date number or date character vector.

IssueDate

Issue date. A serial date number or date character vector.

GrossRate

Gross coupon rate (including fees), in decimal.

CouponRate

(Optional) Net coupon rate, in decimal. Default = GrossRate.

Delay

(Optional) Delay (in days) between payment from homeowner and receipt by bondholder. Default = 0 (no delay between payment and receipt).

Interpolation

Interpolation method. Computes the corresponding spot rates for the bond's cash flow. Available methods are (0) nearest, (1) linear, and (2) cubic spline. Default = 1. See interp1 for more information.

PrepaySpeed

(Optional) Relation of the conditional payment rate (CPR) to the benchmark model. Default = end of month's CPR. Set PrepaySpeed to [] if you input a customized prepayment matrix.

PrepayMatrix

(Optional) Customized prepayment matrix. A matrix of size max(TermRemaining)-by-NMBS. Missing values are padded with NaNs. Each column corresponds to a mortgage-backed security, and each row corresponds to each month after settlement.

All inputs (except PrepayMatrix) are number of mortgage-backed securities (NMBS) by 1 vectors.

Description

OAS = mbsyield2oas(ZeroCurve,Yield,Settle,Maturity,IssueDate,GrossRate,CouponRate,Delay,Interpolation,PrepaySpeed,PrepayMatrix) computes the option-adjusted spread in basis points.

Examples

collapse all

Calculate the option-adjusted spread of a 30-year, fixed-rate mortgage pool with about 28-year weighted average maturity left, given assumptions of 0, 50, and 100 PSA prepayments. First, create the bonds matrix:

Bonds = [datenum('11/21/2002')  0        100  0  2  1;
         datenum('02/20/2003')  0        100  0  2  1;
         datenum('07/31/2004')  0.03     100  2  3  1;
         datenum('08/15/2007')  0.035    100  2  3  1;
         datenum('08/15/2012')  0.04875  100  2  3  1;
         datenum('02/15/2031')  0.05375  100  2  3  1];

Choose a settlement date.

Settle = datenum('20-Aug-2002');

Assume the following clean prices for the bonds:

Prices =  [ 98.97467;
            98.58044;
           100.10534;
            98.18054;
           101.38136;
            99.25411];

Use the following formula to compute spot compounding for the bonds:

SpotCompounding = 2*ones(size(Prices));

Compute the zero curve.

[ZeroRatesP, CurveDatesP] = zbtprice(Bonds, Prices, Settle);
ZeroCurve = [CurveDatesP, ZeroRatesP, SpotCompounding]
ZeroCurve = 

   1.0e+05 *

    7.3154    0.0000    0.0000
    7.3163    0.0000    0.0000
    7.3216    0.0000    0.0000
    7.3327    0.0000    0.0000
    7.3510    0.0000    0.0000
    7.4185    0.0000    0.0000

Assign the following parameters:

Price         = 95;
Maturity      = datenum('02-Jan-2030');
IssueDate     = datenum('02-Jan-2000');
GrossRate     = 0.08125;
CouponRate    = 0.075;
Delay         = 14;
Interpolation = 1;
PrepaySpeed   = [0 50 100];

Compute the yield, and from the yield, compute the option-adjusted spread.

[mbsyld, beyld] = mbsyield(Price, Settle, ...
Maturity, IssueDate, GrossRate, CouponRate, Delay, PrepaySpeed);

OAS = mbsyield2oas(ZeroCurve, mbsyld, Settle, ...
Maturity, IssueDate, GrossRate, CouponRate, Delay, ... 
Interpolation, PrepaySpeed)
OAS = 

   26.0508
   28.6355
   31.2232

Introduced before R2006a

Was this topic helpful?