Frederic Macaulay developed the Macaulay Duration formula in 1938 as a way to gauge investment risk associated with bonds. Although a bond has a defined period before reaching maturity, the duration calculation effectively states how long it takes to recover the true price of the bond and allows an effective measurement of comparison to other fixed payment investments. This formula takes into account the present value of each coupon payment, including the final face-value payment, and weights it against each payment's duration to derive the bond's overall duration.

Divide the coupon rate by the number of payment periods in a year to calculate the periodic coupon rate. As an example, a bond with a 8 percent annual coupon rate that pays twice per year would have a 4 percent periodic coupon rate, or 0.04.

Multiply the periodic coupon rate, in decimal form, by the face value of the bond. This calculates the periodic coupon payments. If the example bond had a face value of $1,000, multiplying by 0.04 derives the periodic coupon payments of $40.

Divide the bond yield by the number of periods to calculate the periodic yield. If the example bond offered a 10 percent yield, the periodic yield wold be 5 percent, or 0.05.

Calculate the present value of each payment. Do this by adding 1 to the periodic yield rate and raising that value to the power of the period number to calculate its yield factor. Divide each coupon payment by its respective yield factor. Remember the last payment will include the coupon payment and the face value of the bond. In the example, a 2-year bond would have yield factors of 1.05 raised to the power of 1, 2, 3 and 4, corresponding to the four payments. Dividing the four payments or $40, $40, $40 and $1,040 by their respective yield factors gives present values of $38.10, $36.28, $34.55 and $1,264.13.

Add each coupon's present value to calculate the bond's market value. The example bond's market value would be $1,373.06.

Divide each coupon's present value by the bond's market value to calculate its present value factor. Continuing with the example, each coupon's present value factor would be 0.02775, 0.02642, 0.02516 and 0.9207, respectively.

Multiply each coupon's present value factor by the payment year to calculate its duration. For semi-annual payments, use fractional years. In the example, the present value factors are multiplied by 0.5, 1.0, 1.5 and 2.0, respectively, to get 0.01388, 0.02642, 0.03774 and 1.8414.

Add each coupon's duration to calculate the bond's duration. The example bond's duration would be 1.9194, which means it would take 1.9194 years to recover the bond's true cost.