complete.tools

Bond Duration & Convexity Calculator

Work out a bond's price, Macaulay duration, modified duration and convexity, and how its price moves if yields change by 1 point.

What this tool does

Work out a bond's price, Macaulay duration, modified duration and convexity, and how its price moves if yields change by 1 point. You fill in these fields: Face value, Annual coupon rate, Coupon periods until maturity, Yield to maturity, and Coupon payments per year. It shows modified duration, bond price, macaulay duration, convexity, years to maturity, price change if yield rises 1 point, and price change if yield falls 1 point, plus a table (cash flows).

Inputs

  • Face value (USD): A number. Greater than 0, up to 1,000,000,000. Starts at 1,000 USD. The amount repaid at maturity. 1,000 is an example; replace it with your bond's face value.
  • Annual coupon rate (%): A number. Accepts 0 to 100. Starts at 5 %. Yearly interest as a percent of face value. Use 0 for a zero-coupon bond.
  • Coupon periods until maturity (periods): A whole number. Accepts 1 to 1,200. Starts at 20 periods. Years to maturity times payments per year. For example 10 years of semiannual payments is 20 periods.
  • Yield to maturity (%): A number. Accepts 0 to 100. Starts at 4 %. The annual discount rate, compounded at the payment frequency.
  • Coupon payments per year: Choose one: Annual (1 a year), Semiannual (2 a year), Quarterly (4 a year), Monthly (12 a year). Starts as Semiannual (2 a year).

How to use

  1. Enter the face value in USD.
  2. Enter the annual coupon rate as a percentage.
  3. Enter the coupon periods until maturity in periods.
  4. Enter the yield to maturity as a percentage.
  5. Choose Annual (1 a year), Semiannual (2 a year), Quarterly (4 a year), or Monthly (12 a year) for "Coupon payments per year".
  6. Read the result: modified duration, bond price, macaulay duration, convexity, years to maturity, price change if yield rises 1 point, and price change if yield falls 1 point, plus a table (cash flows). It appears once every required field has a valid value.

Worked examples

Example 1. Inputs:

  • Face value: 1,000 USD
  • Annual coupon rate: 0%
  • Coupon periods until maturity: 10 periods
  • Yield to maturity: 5%
  • Coupon payments per year: Annual (1 a year)

Results:

  • Modified duration: 9.5238 years (About 9.52381% price change for each 1 point change in yield.)
  • Bond price: $613.91
  • Macaulay duration: 10.0000 years
  • Convexity: 99.7732
  • Years to maturity: 10 years
  • Price change if yield rises 1 point: -9.025%
  • Price change if yield falls 1 point: 10.023%
  • Cash flows, row 1 of 10: Period 1; Year 1; Cash flow $0.00; Present value $0.00
  • Cash flows, row 2 of 10: Period 2; Year 2; Cash flow $0.00; Present value $0.00
  • Cash flows, row 3 of 10: Period 3; Year 3; Cash flow $0.00; Present value $0.00

How this is worked out: Zero-coupon, annual. Price = 1000 / 1.05^10 = 1000 / 1.628895 = 613.9133. Macaulay = maturity = 10. Modified = 10 / 1.05 = 9.5238. Convexity = t(t+1)/(1+y)^2 = 110 / 1.1025 = 99.7732. Up 1 point: -9.5238 + 0.5 * 99.7732 * 0.0001 * 100 = -9.5238 + 0.4989 = -9.0249 percent; down: +9.5238 + 0.4989 = 10.0227 percent.

Example 2. Inputs:

  • Face value: 1,000 USD
  • Annual coupon rate: 6%
  • Coupon periods until maturity: 2 periods
  • Yield to maturity: 4%
  • Coupon payments per year: Semiannual (2 a year)

Results:

  • Modified duration: 0.9662 years (About 0.966249% price change for each 1 point change in yield.)
  • Bond price: $1,019.42
  • Macaulay duration: 0.9856 years
  • Convexity: 1.4140
  • Years to maturity: 1 years
  • Price change if yield rises 1 point: -0.959%
  • Price change if yield falls 1 point: 0.973%
  • Cash flows, row 1 of 2: Period 1; Year 0.5; Cash flow $30.00; Present value $29.41
  • Cash flows, row 2 of 2: Period 2; Year 1; Cash flow $1,030.00; Present value $990.00

How this is worked out: Semiannual: y = 2% per period, coupon 30, 2 periods. PV = 30/1.02 = 29.41176 and 1030/1.0404 = 990.00384; price = 1019.41561. Macaulay in periods = (29.41176 + 2 * 990.00384) / 1019.41561 = 2009.41945 / 1019.41561 = 1.971148, divided by 2 = 0.985574 years. Modified = 0.985574 / 1.02 = 0.966249. Convexity = (2*30/1.02^3 + 6*1030/1.02^4) / price / 2^2 = (56.53934 + 5709.36474) / 1019.41561 / 4 = 5.656088 / 4 = 1.414022.

Example 3. Inputs:

  • Face value: 1,000 USD
  • Annual coupon rate: 8%
  • Coupon periods until maturity: 2 periods
  • Yield to maturity: 8%
  • Coupon payments per year: Quarterly (4 a year)

Results:

  • Modified duration: 0.4854 years (About 0.48539% price change for each 1 point change in yield.)
  • Bond price: $1,000.00
  • Macaulay duration: 0.4951 years
  • Convexity: 0.3557
  • Years to maturity: 0.5 years
  • Price change if yield rises 1 point: -0.484%
  • Price change if yield falls 1 point: 0.487%
  • Cash flows, row 1 of 2: Period 1; Year 0.25; Cash flow $20.00; Present value $19.61
  • Cash flows, row 2 of 2: Period 2; Year 0.5; Cash flow $1,020.00; Present value $980.39

How this is worked out: Quarterly par bond: y = 2% per period, coupon 20, 2 periods, so price = 1000. PV = 20/1.02 = 19.60784 and 1020/1.0404 = 980.39216. Macaulay in periods = (19.60784 + 2 * 980.39216) / 1000 = 1.980392, divided by 4 = 0.495098 years. Modified = 0.495098 / 1.02 = 0.485390. Convexity = (2*20/1.02^3 + 6*1020/1.02^4) / 1000 / 4^2 = (37.6929 + 5653.9341) / 1000 / 16 = 0.355727.

Example 4. Inputs:

  • Face value: 1,000 USD
  • Annual coupon rate: 0%
  • Coupon periods until maturity: 12 periods
  • Yield to maturity: 12%
  • Coupon payments per year: Monthly (12 a year)

Results:

  • Modified duration: 0.9901 years (About 0.990099% price change for each 1 point change in yield.)
  • Bond price: $887.45
  • Macaulay duration: 1.0000 years
  • Convexity: 1.0620
  • Years to maturity: 1 years
  • Price change if yield rises 1 point: -0.985%
  • Price change if yield falls 1 point: 0.995%
  • Cash flows, row 1 of 12: Period 1; Year 0.0833333; Cash flow $0.00; Present value $0.00
  • Cash flows, row 2 of 12: Period 2; Year 0.166667; Cash flow $0.00; Present value $0.00
  • Cash flows, row 3 of 12: Period 3; Year 0.25; Cash flow $0.00; Present value $0.00

How this is worked out: Monthly zero-coupon: y = 1% per period, 12 periods. Price = 1000 / 1.01^12 = 1000 / 1.126825 = 887.4492. Macaulay = maturity = 12 periods = 1 year. Modified = 1 / 1.01 = 0.990099. Convexity = 12 * 13 / 1.01^2 / 12^2 = 156 / 1.0201 / 144 = 152.9262 / 144 = 1.061987.

Limitations

  • Assumes a plain fixed-coupon bond valued on a coupon date, with no call, put or default risk.
  • The yield is compounded at the payment frequency you choose.
  • Price changes use the duration and convexity approximation, not a full repricing.

FAQs

Q: What is the difference between Macaulay and modified duration?
A: Macaulay duration is the average time, in years, until the bond's cash flows are received, weighted by their present value. Modified duration divides it by one plus the yield per period and estimates the percent price change for a one point change in yield.
Q: What does convexity add?
A: Duration is a straight-line estimate. Convexity measures the curve in the price-yield relationship and corrects the estimate for larger yield moves. The tool uses both in the price-change figures.
Q: Are the price-change figures exact?
A: No. They are the duration plus convexity approximation for a 1 point move, not a full repricing.
Q: Can I value a bond between coupon dates?
A: No. The bond is valued on a coupon date, with a whole number of coupon periods left.

Explore Similar Tools

Explore more tools like this one: