What's new

Convexity Calculation


New Member
Hi David,

I was checking if both the formulas of convexity that I know lead to the same solution. I had posted this in another topic but am still confused. Could you please help me.

There are 2 formulas for convexity that I used:

1. C = [ BV(2) + BV(1) - 2*BV(0) ] / BV(0) * (delta y)^2

2. C = Summation of ( t^2 + t) * Present Value of Cash Flow / [ Current Bond Value * (1 + y)^2 ]

The Question: What is the convexity of a bond which pays a coupon of 2.5 every 6 months for 2 years and a principal of 100 at the end of 2 years. The market rate is 4.5% compounded semi annually.

When using the 1st formula I got 4.53

Here is the calculation:
BV2 = 102.873 (when interest rate is 3.5%)
BV1 = 99.06514 (when interest rate is 5.5%)
BV0 = 100.9462 (when interest rate is 4.5%)

When using the 2nd formula I got 5.23

Here is the calculation for the 2nd formula:

t(t+1) * PVCF = 1.84, 4.78, 8.77, 562.62
Sum of the above: 578.01

denominator: B ( 1 + y )^2 .... Now B = 100.95 and taking y = 4.5% we get this = 110.24
So convexity = 5.24

(I am also confused about what value of y to take. The effective annual yield comes to 1.04551. Should I use this instead? This gives convexity = 5.23)

Please let me know if there is something wrong.


David Harper CFA FRM

David Harper CFA FRM
Staff member
Hi mathman,

Re your (1), which is effective convexity, my calc ~agrees with yours (i.e., 100 bps shock --> convexity 4.559 with difference due to your rounding, far as i can tell, since our three prices agree).

Re your (2), I think your mistake is: in this case of semi-annual discounting (k = 2), you want to multiply each PV cash flow by [t*(t+0.5)]; i.e., when you see [t*(t+1.0)] that refers to annual compounding but implicitly it is [t*(t+1.0/k), where k = number of periods [1 or 2]. So, see below, the sum of that right-most column is something I might call Macaulay Convexity (4.7618) which is translated into ("modified") convexity by, analogous to duration translation, dividing by (1+y/k). In this case, 4.7618/(1+4.5%/2)^2 = 4.554508. Or, equivalently each of the rows can be instead given by PV(cash flow) * t * (t+0.5) * 1/(1+4.5%/2)^2, then the sum of the column, divided by price, will equal the (modified) convexity of 4.55. As expected, this is near to the approximation; i.e., the 1st (a secant function) is an approximation of the exact 2nd.

from our xls: