- sd - Settlement date of the security.
- md - Maturity date of the security.
- id - Last interest date of security.
- rate - Interest rate of security.
- yld - Annual required rate of return.
- redem - Redemption value per $100 face value.
- freq - Coupon payments per year (annual = 1, semiannual = 2; quarterly = 4).
- basis - [optional] Day count basis (see below, default =0).
Some bonds have an irregular first or last period, so interest payments don't fit a normal schedule. To calculate the price of a bond with an irregular last period, you can use the ODDLPRICE function. The ODDLPRICE Function returns the price per $100 face value of a security having a short or long last period.
Assume we need to calculate the price per $100 face value of a bond with a last interest date of 15-Oct-2017 and a settlement date of 5-Feb-2018. The bond matures on 15-Jun-2018, and pays a coupon rate of 5% with a required return of 6%. Payments are semi-annual, the day count basis is US 30/360, and the redemption value is $100. In the example shown, the formula in F5 is:
With these inputs, the ODDLPRICE function returns 99.61, with currency number format applied.
In Excel, dates are serial numbers. Generally, the best way to enter valid dates is to use cell references, as shown in the example. To enter valid dates directly inside a function, the DATE function is the best option. To illustrate, the formula below has all values hardcoded. The DATE function is used to supply each of the three required dates:
The basis argument controls how days are counted. The ODDLPRICE function allows 5 options (0-4) and defaults to zero, which specifies US 30/360 basis. This article on Wikipedia provides a detailed explanation of available conventions.
|0 or omitted||US (NASD) 30/360|
- In Excel, dates are serial numbers.
- All dates, plus frequency and basis, are truncated to integers.
- If dates are invalid (i.e. not actually dates) ODDLPRICE returns #VALUE!
- ODDLPRICE returns #NUM when:
- (maturity > settlement > last_interest) is NOT true
- Basis is out-of-range