# agencyprice

Price callable bond using Agency OAS model

## Syntax

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

## Description

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

```Price = agencyprice(ZeroData, OAS, CouponRate, Settle, Maturity,Vol, CallDate, Name,Value)``` computes the price for a callable bond, given OAS, 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. `OAS` `numBonds`-by-`1` vector of option-adjusted spreads, expressed as a decimal (that is, 50 basis points is entered as `.005`). `CouponRate` `numBonds`-by-`1` vector of coupon rates in decimal form.

`Settle`

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

 Note:   The `Settle` date must be an identical settlement date for all 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/3603 = actual/3654 = 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) `'CurveBasis'` Basis of the zero curve, where the choices are identical to `Basis`. Default: `0` (actual/actual) `'CurveCompounding'` Compounding frequency of the 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 interpolationDefault: `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

 `Price` `numBonds`-by-`1` matrix of the price.

## Examples

collapse all

### Compute the Agency `Price`

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 ```

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