Documentation Center

  • Trial Software
  • Product Updates

agencyoas

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

Syntax

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

Description

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

ZeroData

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.

Price

numBonds-by-1 vector of prices.

CouponRate

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

Settle

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

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

Maturity

numBonds-by-1 vector of maturity dates.

Vol

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

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.

'Basis'

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/actual (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0 (actual/actual)

'CurveBasis'

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

Default: 0 (actual/actual)

'CurveCompounding'

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

Default: 2 (Semi-annual)

'EndMonthRule'

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'

Face value of the bond.

Default: 100

'FirstCouponDate'

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.

'InterpMethod'

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

'IssueDate'

Bond issue date.

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

'LastCouponDate'

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.

'Period'

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

Default: 2

'StartDate'

Forward starting date of payments.

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

Output Arguments

OAS

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

Examples

expand all

Compute the Agency OAS Value

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

expand 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).

References

SIFMA, The BMA European Callable Securities Formula, http://www.sifma.org.

See Also

Was this topic helpful?