HP Forums

Full Version: 17Bii - Bond Duration
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

I don't know if this has been discussed on this message board before, but I am trying to figure out how to calculate Macauly and Modified duration using "solve". Does anybody else know of or have a formula that they have developed on their own calculator that they would like to share?

Brian:

Sorry for the late reply, but I didn't want to contribute when all I could say is "no!"

Can you provide the relevant equations/methodology? If so, I'm sure somebody here could help you with your problem. I love programming the 17BII and 19BII, so I would take a whack at it for you if it is not too big a project.

If I misunderstood your post, in that you don't know the relevant equations, then unfortunately I can't be of any help there.

Bruce.

I guess you are considering a fixed rate bond, so I'll try to explain you how I solved this problem.

First what I suggest to you is to set-up a STAT list named, for example CF (cash flows, in which you'll put the single cash flows for each coupon period (annual, semi-annual, ...). The last cash flow should be the last coupon plus the face value of the bond.

You can then calculate the bond duration by solving the following related equations:

1. bond price

Calculates the bond price for a given yield to maturity or vice-versa.

2. duration

Calculates the bond duration for the ytm calculated in equation 1

3. price sensitivity

Calculates the price change for a given movement in rates

4. convexity

calculates the convexity of the bond specified above

5. exact price sensitivity

calculates the exact price change, using the convexity adjustment for the bond durtation calculated in equation 3.

If you want I can e-mail the program codes.

By

Duration = [(1 + a) / a] - [(1 + a) + yrs * (i - a)] / [i * [(1 + a) ^yrs - 1] + i]

Where:

a = yield to maturity
i = annual interest (coupon)
yrs = the number of years to maturity

So, for a bond of 10 years to maturity with a 10% annual coupon presently yielding 8%, the duration is

[(1 + 0.1)/ 0.1] - [(1 + 0.1) + 10 x (0.1-0.08)] / [0.1 x [(1+0.1)^10 - 1 ] + 0.1]

or

[11 - [ 1.1 +0.2] / [0.1 x [1.593742] + 0.1]

or

[11 - 1.3/(0.2593742)]

or

5.9879 years

Gene
P.S. I'll be in NY, Chicago, and SF the first 3 weeks of February giving time value of money talks for a CFA exam review course, if anyone here is taking it. :-)

Here is the formula I have programmed into my HP17BII to
solve for modified Duration - I'm a CFP student.

DURTN: ((1+(Y x .01) / PYR) / ((Y x .01)/PYR) - (((1+(Y x .01) / PYR) + ((N x PYR) x ((C x .01)/PYR - (Y x .01) / PYR))) / ((C x .01) / PYR x ((1+(Y x .01) / PYR)^(N x PYR) -1) + (Y x .01) / PYR))) / PYR = DURTN

where
Y is yield to maturity
N is number of years to maturity
C is coupon
PYR is the number of compounding periods per year (1 or 2).

Note that all variable values are entered as whole numbers including Y and C.

This formula reduces calculating duration on the
HP17BII to as few as 11 keystrokes. I don't claim that this
is the shortest formula possible...but it works.

I also have a formula for bond price change calculations
that will calculate either $ or %. let me know if you are
interested in this.
Kay

I'm a CFP student so this equation is of interest to me. I beleive there is at least one, possibly multiple, errors in
this post. When I do the calculation using my preprogrammed
SOLVE formula on my HP17BII I get 6.9658 (this SOLVE formula
gives correct results as per CFP course exams given by the College of Financial Planning). If I'm not mistaken, the
substitutions of values into the equation in this post have
not been done correctly. According to the substitutions, the variable "a" is .1 or .08 depending on where in the
formula you look. Also, the formula should end in "+ a" not
"+ i".

I'd like to hear back if I am mistaken about my observations
since I'm studying this equation for a comprehensive
certification exam.

Kay

Correction - my SOLVE equation doesn't calculate modified duration, just plain old duration. My bond price change
formula does the "modfied" part.
Kay

http://www.finplan.com/invest/bondduration.asp

The link above is where I got the formula. I think I typed it in correctly. Of course, the formula may be wrong on the web page.

You are, however, quite right that I substituted the values into the formula incorrectly. My fault!

Here is another site with a specific duration calculation example:

http://invest-faq.com/articles/bonds-duration.html

Gene Wright
CFA Exam Test Reviewer
http://www.amazon.com/exec/obidos/ASIN/1888840196/
http://members.aol.com/hpgene

You did type the formula into your post correctly. I checked out the web site you noted. The formula is wrong there too. I sent them an e-mail to notify them of the mistake. Hopefully they'll fix it. I've double and triple checked this against my CFP student materials and the only way my observation could be wrong is if the student materials are.

Thanks,
Kay

Hi,

if anyone of you is still looking for a bond duration formula, I did spend some hours and programmed one myself on my 17bii -- doing it the "old-fashioned" way.

It might not be the shortest one, but I think it works. It also uses some built-in formulas.

O.K. here it is:
(Note: SUM is the built-in sum-function (ALPHA-Menu -> WXYZ -> OTHER -> MORE -> SUM (second from the
left)))

DURTN=(SUM(I:1:N*F:1:I/F*C%/100/F*SPPV(R%/F:I))+N*SPPV(R%/F:N*F))/(C%/100/F*USPV(R%/F:N*F)+SPPV(R%/F:N*F))

Where
C% ... Coupon (e.g. 7)
R% ... YTM (e.g. 6)
F ... payment frequency (e.g. Semi-annually -> 2, annually -> 1)
N ... Years

Example:
A 3 (N=3) Year semi-annual (F=2) coupon bond with a coupon of 6% (C%=6) and YTM of 7% p.a. (R%=7) has a (macaulay) duration of 2.79 yrs.

Hope this it what you are looking for.

Michael