mbsprice2oas
Option-adjusted spread given price
Syntax
Description
OAS = mbsprice2oas(___,CouponRate,Delay,Interpolation,PrepaySpeed,PrepayMatrix)
Examples
Calculate the option-adjusted spread of a 30-year fixed-rate mortgage with about a 28-year weighted average maturity remaining, 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 = 6×3
105 ×
    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]; Interpolation = 1;
Compute the option-adjusted spread.
OAS = mbsprice2oas(ZeroCurve, Price, Settle, Maturity, ... IssueDate, GrossRate, CouponRate, Delay, Interpolation, ... PrepaySpeed)
OAS = 3×1
   26.0508
   28.6355
   31.2232
Input Arguments
Zero curve, specified as a three-column matrix, where:
- Column 1 is dates using datetimes. 
- Column 2 is spot rates with maturities corresponding to the dates in Column 1, in decimal (for example, 0.075). 
- Column 3 is the compounding value of the rates in Column 2. (This is the agency spot rate on the settlement date.) Allowable compounding values are: - 1(annual),- 2(semiannual,- 3(three times per year),- 4(quarterly),- 6(bimonthly),- 12(monthly), and- -1(continuous).
For example:
[datetime(2003,1,1) 0.0154 12; datetime(2004,1,1) 0.0250 12; ...... datetime(2020,1,1) 0.0675 2];
Data Types: datetime | cell
Clean price for every $100 face value of bond issue, specified as an
                            NMBS-by-1 vector.
Data Types: double
Settlement date, specified as an
                            NMBS-by-1 vector using a string
                        array, date character vectors, or serial date numbers.
                            Settle must be earlier than
                            Maturity.
Data Types: double | char | string
Maturity date, specified as an
                            NMBS-by-1 vector using a string
                        array, date character vectors, or serial date numbers. 
Data Types: double | char | string
Issue date, specified as an
                            NMBS-by-1 vector using a string
                        array, date character vectors, or serial date numbers. 
Data Types: double | char | string
Gross coupon rate (including fees), specified as an
                            NMBS-by-1 vector of decimal
                        values.
Data Types: double
(Optional) Net coupon rate, specified as an
                            NMBS-by-1 vector of decimal
                        values. 
Data Types: double
(Optional) Delay (in days) between payment from homeowner and receipt by
                        bondholder, specified as an NMBS-by-1
                        vector.
Data Types: double
(Optional) Interpolation method to compute the corresponding spot rates
                        for the bond's cash flow, specified as an
                            NMBS-by-1 vector. Available
                        methods are (0) nearest, (1) linear,
                        and (2) cubic spline. For more information on the
                        supported interpolation methods, see interp1.
Data Types: double
(Optional) Speed relative to PSA standard, specified as an
                            NMBS-by-1 vector. The PSA standard
                        is 100. 
Note
Set the PrepaySpeed to [] if
                                you input a customized PrepayMatrix.
Data Types: double
(Optional) Customized prepayment vector, specified as a
                            NaN-padded matrix of size
                            max(TermRemaining)-by-NMBS. Each
                        column corresponds to each mortgage-backed security, and each row
                        corresponds to each month after settlement.
Note
Use PrepayMatrix only when
                                    PrepaySpeed is unspecified.
Data Types: double
Output Arguments
Zero volatility OAS, in basis point (bp), returned as a
                            NMBS-by-1 vector. 
More About
The Option-Adjusted Spread (OAS) is a measure used to assess the yield spread of a fixed-income security, such as a bond or mortgage-backed security (MBS), over a benchmark yield curve, typically the risk-free rate or Treasury yields.
References
[1] PSA Uniform Practices, SF-49
Version History
Introduced before R2006a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)