This is machine translation

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

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


Determine option-adjusted spread of callable bond using Agency OAS model


OAS = agencyoas(ZeroData,Price,CouponRate,Settle,Maturity,Vol,CallDate)
OAS = agencyoas(ZeroData,Price,CouponRate,Settle,Maturity,Vol,CallDate,Name,Value)


OAS = agencyoas(ZeroData,Price,CouponRate,Settle,Maturity,Vol,CallDate) computes OAS of a callable bond given price using the Agency OAS model.

OAS = agencyoas(ZeroData,Price,CouponRate,Settle,Maturity,Vol,CallDate,Name,Value) computes OAS of a callable bond given price using the Agency OAS model with additional options specified by one or more Name,Value pair arguments.

Input Arguments


Zero curve represented as a numRates-by-2 matrix where the first column is zero dates and the second column is the accompanying zero rates.


numBonds-by-1 vector of prices.


numBonds-by-1 vector of coupon rates in decimal form.


Scalar MATLAB® date number for the settlement date for all bonds and the zero data.


The Settle date must be an identical settlement date for all the bonds and the zero curve.


numBonds-by-1 vector of maturity dates.


numBonds-by-1 vector of volatilities in decimal form. This is the volatility of interest rates corresponding to the time of the CallDate.


numBonds-by-1 vector of call dates.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.


N-by-1 vector of day-count basis:

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/365 (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0 (actual/actual)


Basis of the zero curve, where the choices are identical to Basis.

Default: 0 (actual/actual)


Compounding frequency of the zero curve. Possible values include: –1, 0, 1, 2, 3, 4, 6, 12.

Default: 2 (Semi-annual)


End-of-month rule; 1, indicating in effect, and 0, indicating rule not in effect for the bond(s). When 1, the rule is in effect for the bond(s), this means that a security that pays coupon interest on the last day of the month will always make payment on the last day of the month.

Default: 1 — Indicates in effect


Face value of the bond.

Default: 100


Date when a bond makes its first coupon payment; used when bond has an irregular first coupon period. When FirstCouponDate and LastCouponDate are both specified, FirstCouponDate takes precedence in determining the coupon payment structure.

Default: If you do not specify a FirstCouponDate, the cash flow payment dates are determined from other inputs.


Interpolation method used to obtain points from the zero curve. Values are:

  • linear — linear interpolation

  • cubic — piecewise cubic spline interpolation

  • pchip — piecewise cubic Hermite interpolation

Default: linear


Bond issue date.

Default: If you do not specify an IssueDate, the cash flow payment dates are determined from other inputs.


Last coupon date of a bond before the maturity date; used when bond has an irregular last coupon period. In the absence of a specified FirstCouponDate, a specified LastCouponDate determines the coupon structure of the bond. The coupon structure of a bond is truncated at the LastCouponDate, regardless of where it falls, and is followed only by the bond's maturity cash flow date.

Default: If you do not specify a LastCouponDate, the cash flow payment dates are determined from other inputs.


Number of coupon payments per year. Possible values include: 0, 1, 2, 3, 4, 6, 12.

Default: 2


Forward starting date of payments.

Default: If you do not specify a StartDate, the effective start date is the Settle date.

Output Arguments


numBonds-by-1 matrix of option-adjusted spreads.


collapse all

This example shows how to compute the agency OAS value.

Settle = datenum('20-Jan-2010');
ZeroRates = [.07 .164 .253 1.002 1.732 2.226 2.605 3.316 ...
3.474 4.188 4.902]'/100;
ZeroDates = daysadd(Settle,360*[.25 .5 1 2 3 4 5 7 10 20 30],1);
ZeroData = [ZeroDates ZeroRates];
Maturity = datenum('30-Dec-2013');
CouponRate = .022;
Price = 99.155;
Vol = .5117;
CallDate = datenum('30-Dec-2010');
OAS = agencyoas(ZeroData, Price, CouponRate, Settle, Maturity, Vol, CallDate)
OAS = 8.5837

More About

collapse all

Agency OAS Model

The BMA European Callable Securities Formula provides a standard methodology for computing price and option-adjusted spread for European Callable Securities (ECS).


SIFMA, The BMA European Callable Securities Formula,

Introduced before R2006a

Was this topic helpful?