How to calculate Yield to Maturity of a Bond or NCD

This post is written by Shiv Kukreja

A few days back TCB, one of the regular visitors on OneMint, asked me about the process to calculate YTM of a bond. I wanted to tell him the whole process while replying but that would have been too much for the comments section and therefore I decided to write a post on it.

What is Yield to Maturity and how to calculate it?

Yield to Maturity (or YTM) is the annualised rate of return that an investor earns on a fixed income instrument such as bond or debenture, if the investor purchases the bond today and holds it until maturity. This yield incorporates the yield earned in the form of interest payments and the present value of the principal amount (or face value) of the bond.

In other words, it is the discount rate which equates the present value of coupon payments and maturity amount equal to the market price of the bond. The Yield to Maturity is actually the Internal Rate of Return (IRR) on a bond.

Market Price of the Bond = Present Value of Coupon Payments + Present Value of Maturity Amount of the Bond

Real Example: I’ll take the real case of 9.95% SBI 15-year bonds to present the process to calculate the YTM. Consider the below mentioned data of SBI bonds for the calculation:

Face Value: Rs. 10000
Maturity Amount: Rs. 10000
Tenure: 15 Years
Allotment Date: March 16, 2011
Maturity Date: March 16, 2026
Coupon/Interest: 9.95% p.a. payable annually (Rs. 995 on the Face Value of Rs. 10000)
Interest Payment Date: April 2nd every year
Market Price: Rs. 10788.56 (July 23, 2012)
Remaining Tenure: 13 Years and 236 Days (or approx. 13.65 Years)
YTM: To Be Calculated

YTM is the discount rate in percentage which is going to make the present value of Rs. 995 payable every year on April 2nd and the present value of Rs. 10000 payable on March 16, 2026 equal to the market price of Rs. 10788.56.

In equation terms:

Rs. 10788.56 = Rs. 995/(1+YTM)^0.65 + Rs. 995/(1+YTM)^1.65 + Rs. 995/(1+YTM)^2.65 + Rs. 995/(1+YTM)^3.65 + Rs. 995/(1+YTM)^4.65 + Rs. 995/(1+YTM)^5.65 + Rs. 995/(1+YTM)^6.65 + Rs. 995/(1+YTM)^7.65 + Rs. 995/(1+YTM)^8.65 + Rs. 995/(1+YTM)^9.65 + Rs. 995/(1+YTM)^10.65 + Rs. 995/(1+YTM)^11.65 + Rs. 995/(1+YTM)^12.65 + Rs. 10995/(1+YTM)^13.65.

The discount rate which makes LHS = RHS is the YTM of the bond. Now, we will have to use the “Trial and Error” method to determine this YTM.

There is an approximation formula to calculate YTM very close to the correct YTM:

Approximate YTM = [(Coupon Payment + ((Face Value – Price)/Years to Maturity)] / (Face Value + Price)/2

How to calculate YTM using a financial calculator?

We can also use a financial calculator or an excel sheet to calculate YTMs. Here is the link to one of the financial calculators:

http://vindeep.com/Corporate/BondYTMCalculator.aspx

You just need to feed your data in the boxes provided on the left hand side of this calculator and it will calculate YTM for you after just couple of clicks. You can observe here that you cannot make changes in the boxes on the right hand side and these boxes calculate the required figures on their own.

Maturity Date: 16/03/2026
Coupon: 9.95%
Coupon Payment Frequency: Annual
Maturity Value of bond: 100
Interest Accrual Start Date: 16/03/2012
Clean Price: 104.3656
Settlement Date: 23/07/2012
Ex-Dividend: No
Day Count Basis: Actual/Actual

“Settlement Date” is the date on which you are calculating the YTM. In our case, it is July 23, 2012 or July 25, 2012 (a couple of working days after today’s date) and click on “Calculate Bond Yield (YTM)” after filling the first five boxes of the financial calculator. “Dirty Price” should be equal to the “Market Price” of the bond but we cannot change it on our own. So, in order to change it, we need to change the “Clean Price”.

To calculate the correct clean price, we need to deduct the “Accrued Interest” of Rs. 3.52 from the market price Rs. 107.89. The resultant figure is Rs. 104.37 and when we put it in the sixth box and again click Calculate Bond Yield, we get the correct dirty price of Rs. 107.89. ‘Ex-Dividend’ box should remain ‘No’ and “Day Count Basis” should be “Actual/Actual”. Now we get the correct YTM as 9.3509%.

How to calculate YTM using excel?

We can calculate the required YTM using the ‘Yield’ function in an excel sheet also. As we did it using financial calculator, we just need to feed the data here in a similar way. Start by typing “=Yield” (without the quotes) and then enter the following parameters:

Settlement: “23/07/2012” (must be in quotes) [Note: This assumes that your Excel is setup to take date format in DD/MM/YYYY, if it doesn’t work, try MM/DD/YYYY)]
Maturity: “16/03/2026” (must be in quotes)
Rate: 9.95% (or 0.0995)
Pr: 104.3656 (Clean Price)
Redemption: 100 (Maturity Amount)
Frequency: 1 (Interest Payable Annually)
Basis: 1 (Actual Days since Last Interest Payment/Actual Days in a Year)

You can check that the data we have entered here is quite similar to the data we entered using financial calculator. Actually the financial calculator uses excel itself in the background to calculate YTM. Here we get the YTM as 9.3571%, a bit different than we calculated above. That is probably due to the rounding-off differences of “Accrued Interest” while working on the financial calculator.

You can similarly calculate “Yield to Call” and “Yield to Put” also, which are regular features of corporate bonds issued in the developed markets. But, here in India, call/put options are not used extensively so I’ll try to write a post on them whenever the need arises. If I missed something here or there is something which is incorrect or require explanation, please leave a comment.