Documentation

# stepcpnprice

Price bond with stepped coupons

## Syntax

```[Price,AccruedInterest] = stepcpnprice(Yield,Settle,Maturity,ConvDates,CouponRates,Period,Basis,EndMonthRule,Face)
```

## Arguments

 `Yield` Scalar or vector containing yield to maturity of instruments. `Settle` Settlement date. A scalar or vector of serial date numbers. `Settle` must be earlier than `Maturity`. `Maturity` Maturity date. A scalar or vector of serial date numbers. `ConvDates` Matrix of serial date numbers representing conversion dates after `Settle`. Size = number of instruments by maximum number of conversions. Fill unspecified entries with `NaN`. `CouponRates` Matrix indicating the coupon rates for each bond in decimal form. Size = number of instruments by maximum number of conversions + 1. First column of this matrix contains rates applicable between `Settle` and the first conversion date (date in the first column of `ConvDates`). Fill unspecified entries with `NaN`. `ConvDates` has the same number of rows as `CouponRate` to reflect the same number of bonds. However, `ConvDates` has one less column than `CouponRate`. This situation is illustrated by ```Settle---------ConvDate1-----------ConvDate2------------Maturity Rate1               Rate2                 Rate3``` `Period` (Optional) Coupons per year of the bond. A vector of integers. Allowed values are `0`, `1`, `2`, `3`, `4`, `6`, and `12`. Default = `2`. `Basis` (Optional) Day-count basis of the instrument. A vector of integers. 0 = actual/actual (default)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. `EndMonthRule` (Optional) End-of-month rule. A vector. This rule applies only when `Maturity` is an end-of-month date for a month having 30 or fewer days. `0` = ignore rule, meaning that a bond's coupon payment date is always the same numerical day of the month. `1` = set rule on (default), meaning that a bond's coupon payment date is always the last actual day of the month. `Face` (Optional) Face value of each bond in the portfolio. Default = `100`.

### Note

All arguments must be scalars or number of bonds (`NUMBONDS`)-by-`1` vectors, except for `ConvDates` and `CouponRates`.

## Description

`[Price,AccruedInterest] = stepcpnprice(Yield,Settle,Maturity,ConvDates,CouponRates,Period,Basis,EndMonthRule,Face)` computes the price of bonds with stepped coupons given the yield to maturity. The function supports any number of conversion dates.

`Price` is a `NUMBONDS`-by-`1` vector of clean prices.

`AccruedInterest` is a `NUMBONDS`-by-`1` vector of accrued interest payable at settlement dates.

### Note

For bonds with fixed coupons, use `bndprice`. If you use a fixed-coupon bond with `stepcpnprice`, you receive the error: ```incorrect number of inputs```.

## Examples

Compute the price and accrued interest due on a portfolio of stepped-coupon bonds having a yield of 7.221%, given three conversion scenarios:

• Bond A has two conversions, the first one falling on the settle date and immediately expiring.

• Bond B has three conversions, with conversion dates exactly on the coupon dates.

• Bond C has three conversions, with one or more conversion dates not on coupon dates. This case illustrates that only cash flows for full periods after conversion dates are affected, as illustrated below. The following table illustrates the interest rate characteristics of this bond portfolio.

Bond A DatesBond A RatesBond B DatesBond B RatesBond C DatesBond C Rates

Settle (02-Aug-92)

7.5%

Settle (02-Aug-92)

7.5%

Settle (02-Aug-92)

7.5%

First Conversion (02-Aug-92)

8.875%

First Conversion (15-Jun-97)

8.875%

First Conversion (14-Jun-97)

8.875%

Second Conversion (15-Jun-03)

9.25%

Second Conversion (15-Jun-01)

9.25%

Second Conversion (14-Jun-01)

9.25%

Maturity (15-Jun-10)

`NaN`

Third Conversion (15-Jun-05)

10.0%

Third Conversion (14-Jun-05)

10.0%

Maturity (15-Jun-10)

`NaN`

Maturity (15-Jun-10)

`NaN`

```Yield = 0.07221; Settle = datenum('02-Aug-1992'); ConvDates = [datenum('02-Aug-1992'), datenum('15-Jun-2003'),... nan; datenum('15-Jun-1997'), datenum('15-Jun-2001'),... datenum('15-Jun-2005'); datenum('14-Jun-1997'), datenum('14-Jun-2001'),... datenum('14-Jun-2005')]; Maturity = datenum('15-Jun-2010'); CouponRates = [0.075 0.08875 0.0925 nan; 0.075 0.08875 0.0925 0.1; 0.075 0.08875 0.0925 0.1]; Basis = 1; Period = 2; EndMonthRule = 1; Face = 100; [Price, AccruedInterest] = ... stepcpnprice(Yield, Settle, Maturity, ConvDates, CouponRates, ... Period, Basis, EndMonthRule, Face)```
```Price = 117.3824 113.4339 113.4339 AccruedInterest = 1.1587 0.9792 0.9792 ```

## References

This function adheres to SIA Fixed Income Securities Formulas for Price, Yield, and Accrued Interest. 3rd Edition. Vol. 1, pp. 120–123, on zero-coupon instruments pricing.