Main Content

agencyoas

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

Description

example

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

example

OAS = agencyoas(___,Name,Value) specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax.

Examples

collapse all

This example shows how to compute the agency OAS value.

Settle = '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 = datetime(2013,12,30);
CouponRate = .022;
Price = 99.155;
Vol = .5117;
CallDate = datetime(2010,12,30);
OAS = agencyoas(ZeroData, Price, CouponRate, Settle, Maturity, Vol, CallDate)
OAS = 8.5837

Input Arguments

collapse all

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

Data Types: double

Prices specified as an numBonds-by-1 vector.

Data Types: double

Coupon rates, specified as an numBonds-by-1 vector in decimals.

Data Types: double

Settlement date, specified as a scalar datetime, string, date character vector.

Note

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

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

Maturity date, specified as a numBonds-by-1 vector using datetime array, string array, or date character vectors.

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

Volatilities specified as a scalar or an numBonds-by-1 vector in decimals. Vol is the volatility of interest rates corresponding to the time of the CallDate.

Data Types: double

Call dates, specified as a scalar string or date character vector or an numBonds-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: OAS = agencyoas(ZeroData,Price,CouponRate,Settle,Maturity,Vol,CallDate,'Basis',7,'Face',1000)

Day-count basis, specified as the comma-separated pair consisting of 'Basis' and a N-by-1 vector using the following values:

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 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.

Data Types: double

Curve basis, specified as the comma-separated pair consisting of 'CurveBasis' and a N-by-1 vector using the following values:

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 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.

Data Types: double

Compounding frequency of the zero curve, specified as the comma-separated pair consisting of 'CurveCompounding' and a N-by-1 vector using the supported values: –1, 0, 1, 2, 3, 4, 6, and 12.

Data Types: double

End-of-month rule flag, specified as the comma-separated pair consisting of 'EndMonthRule' and a nonnegative integer [0, 1] using a N-by-1 vector.

  • 0 = Ignore rule, meaning that a payment date is always the same numerical day of the month.

  • 1 = Set rule on, meaning that a payment date is always the last actual day of the month.

Data Types: logical

Face value of bond, specified as the comma-separated pair consisting of 'Face' and an N-by-1 vector of numeric values.

Data Types: double

Irregular first coupon date, specified as the comma-separated pair consisting of 'FirstCouponDate' and a scalar string or character vector or an NINST-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

When FirstCouponDate and LastCouponDate are both specified, FirstCouponDate takes precedence in determining the coupon payment structure.

Interpolation method, specified as the comma-separated pair consisting of 'InterpMethod' and a N-by-1 vector using a supported value. For more information on interpolation methods, see interp1.

Data Types: char

Bond issue date, specified as the comma-separated pair consisting of 'IssueDate' and scalar string or character vector or an N-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

Irregular last coupon date, specified as the comma-separated pair consisting of 'LastCouponDate' and a scalar string or character vector or a N-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

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.

Coupons per year, specified as the comma-separated pair consisting of 'Period' and an N-by-1 vector. Values for Period are 0, 1, 2, 3, 4, 6, and 12.

Data Types: double

Forward starting date of payments (the date from which a bond cash flow is considered), specified as the comma-separated pair consisting of 'StartDate' and a scalar string or character vector or an N-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, agencyoas also accepts serial date numbers as inputs, but they are not recommended.

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

Output Arguments

collapse all

Option-adjusted spreads, returned as an numBonds-by-1 matrix.

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

References

[1] SIFMA, The BMA European Callable Securities Formula, https://www.sifma.org.

Version History

Introduced before R2006a

expand all