agencyprice

Price callable bond using Agency OAS model

Description

example

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

example

Price = agencyprice(___,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 Price.

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;
OAS = 6.53/10000;
Vol = .5117;
CallDate = datenum('30-Dec-2010');
Price = agencyprice(ZeroData, OAS, CouponRate, Settle, Maturity, Vol, CallDate)
Price = 99.4212

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

Option-adjusted spreads, specified as an numBonds-by-1 vector expressed as a decimal (that is, 50 basis points is entered as .005).

Data Types: double

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

Data Types: double

Settlement date, specified as a scalar serial date number.

Note

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

Data Types: double

Maturity date, specified as a numBonds-by-1 vector.

Data Types: double

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 an numBonds-by-1 vector.

Data Types: double

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 quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: Price = agencyprice(ZeroData,OAS,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 NINST-by-1 vector using a serial date numbers.

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

Data Types: double

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 a N-by-1 vector using serial date numbers.

Data Types: double

Irregular last coupon date, specified as the comma-separated pair consisting of 'LastCouponDate' and a N-by-1 vector using serial date numbers

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.

Data Types: double

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 N-by-1 vector using serial date numbers.

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

Data Types: double

Output Arguments

collapse all

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

Introduced before R2006a