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:

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.

30 thoughts on “How to calculate Yield to Maturity of a Bond or NCD”

  1. NCD
    Company- XYZ (Rating CARE AA and ICRA AA)
    Coupon Rate: 10.15
    Coupon Freq: Monthly
    Last Traded PRice: 1006.58
    Maturity Price: 1000
    EX Date: 17-Mar-2016
    Record Date: 18-Mar-2016

    Indicative YTM: -65.99%

    Maturity Date: 11-Mar-2020
    Coupon Payout Date: 1st of each month

  2. One more example:

    Company- XYZ (Rating CARE AA and ICRA AA)
    Coupon Rate: 10.15
    Coupon Freq: Monthly
    Last Traded PRice: 1006.58
    Maturity Price: 1000
    EX Date: 17-Mar-2016
    Record Date: 18-Mar-2016

    Indicative YTM: -65.99%

    Maturity Date: 11-Mar-2020
    Coupon Payout Date: 1st of each month

  3. I am very new to NCD trading.
    I am planning to buy NCD, which provide me a Fix Income for next 3 to 4. But want to make sure that I will get my 100% capital back on the Maturity date approx 2020.

    I was looking in my Bank’s website a list of NCDs and I saw a NCD with negative Yield, how that can happen and what are the chances on average.

    Please advice, what is Negative Indicative YTM.

    Company- XYZ
    Coupon Rate: 12
    Coupon Freq: Yearly
    Last Traded PRice: 1240
    Maturity Price: 1000
    EX Date: N/A
    Record Date: N/A

    Indicative YTM: -18.74%

    Maturity Date: 15-Sept-2016
    Coupon Payout Date: 13-Sept

  4. Interest 6% per annum.
    Interest Payable 31st Mar and 30th sept

    On 31st March 2001, trust purchases debenture fv of rs 60000 at 96 cum interest.

    Pls give me the interest for 31st march 2001

    Interest receipt on 5th April & 5th oct

  5. Thanks Shiv. This clears all.
    On a side note, I guess that for calc purpose in bonds, 300 days are considered instead of 365. I am unaware of the reason for the same but have heard it from people who work on capital markets. I understand you logical explanation for 250 days which seems to be more correct but just wanted to indicate what I have heard from various people.

  6. Thanks a lot Shiv.

    Request you to please the calc for earning interest of 4906.20Rs (Or 2453.10 half yearly)? This gives a coupon of 9.29% on 52768.17 while YTM is 10.34% and original stated coupon is 9.62%. Is current price 1034.67 dirty price (price including interest + premium) and needs to be divided further to come to 9.29%?

    Thanks in advance.

    1. Hello Shiv,

      Can you please explain me your calc for interest of 4906.20Rs/Yr? I am unable to calc the same via coupon rate and YTM.


      1. Hi meabhi… Interest is always calculated on the face value of the bond i.e. Rs. 1000 in your case. So, it will be like this: 51 Bonds * Rs. 1000 Face Value * 9.62% = Rs. 4906.20 yearly (or Rs. 2453.10 half-yearly).

        1. Thanks Shiv.

          Sorry to be naive but does 34.67Rs (1034.67-1000) mean accrued interest + bond appreciation OR it is just accrued interest? Which of the following case 1,2 is correct?

          Case1: 34.67Rs mean ONLY accrued interest
          Opinion 1: With interest payout would get back the 34.67Rs . No loss in capital

          Case 2: 34.67Rs mean accrued interest + bond appreciation
          Opinion 2: Interest payout would give only fraction of 34.67Rs back while the bond will continue to trade at more than face value.. say 1002Rs etc. Loss of capital in this case.


            1. Yes. It is.
              L&T FINANCE LTD NCD2-9.62% Half yearly
              maturity date 1,000.00
              CMP 1,034.67
              YTM 10.34%
              Payment date: 31MAR/30SEP

              1. It is trading at a notional loss as the current YTM is more than 9.62%. Accrued interest should approximately be Rs. 41.64 per bond considering 158 days have gone by since the last interest payment date.

                1. Interest would it be 41.64Rs or 42.22Rs. I am assuming 360days for trading for NCD/bond. Please correct me if I am wrong.
                  I understand that the price of the bond can trade less but how do we attribute to lesser accrued interest of 6.97Rs/7.55Rs?

                  1. No, it would be 365 days becuase the interest is paid for the whole year and not just 360 days. Also, there are approx. 250 trading days in a year and not 360.

                    In this case, the Dirty Price is Rs. 1034.67 and the Clean Price should be Rs. 993.03 (Rs. 1034.67 – Rs. 41.64). As the Clean Price of Rs. 993.03 is trading below the face value of Rs. 1000, that is why the YTM of 10.32% is trading above the coupon rate of 9.62%.

                    Accrued interest can never be less than what it should be. Only the Clean Price can trade below its face value.

  7. Hi Shiv,
    I have been a regular follower for your posts. They are very informative.
    I had a question related to NCD.

    I have be NCD wth coupon 9.62% half-yearly payment is available at YTM (Yield to Maturity) 10.34%. FV= 1000Rs Current trading price = 1034.67Rs As per IT rules, TDS will be deducted above interest payment of 5000/yr. To avoid TDS complications, what should be my investment amount in the NCD? I plan to hold the NCD till maturity.

    Thanks in advance.

    1. Hi meabhi… In order to avoid TDS, you should not buy more than 51 bonds. So, your investment amount would be Rs. 52768.17 (Rs. 1034.67 * 51). You’ll get Rs. 4906.20 as the interest (Rs. 2453.10 half-yearly * 2).

  8. Hi Shiv,

    I was trying to calculate the approximate YTM of this bond

    using this formula:

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

    Here is my calculation at today’s price of 1034

    (12.25 + (1000-1034)/2)/((1000+1034)/2)

    Google calculator is showing the value as 0.103 which is 10.3%

    Did I understand the formula correctly or made a mistake somewhere?


    1. Hi Vikas… There is no problem with your calculation or understanding. Actually, I’ve failed here to explain the approximation formula properly. When “(Face Value – Price)/Years to Maturity)” is calculated, it should never be a negative figure when added to the “Coupon Payment”.

      In the above case, it should either be “(12.25 – (1000-1034)/2)/((1000+1034)/2)” or (12.25 + (1034-1000)/2)/((1000+1034)/2)” to provide you the correct approximation.

  9. hi,
    I have a doubt on what is clean price and dirty price and the difference between dirty price and market price.
    Thank you

    1. A bond, which is not a zero-coupon bond, pays interest on every interest payment date. In between two interest payment dates, the bond keeps earning some interest which gets accrued. Dirty Price of a bond includes this accrued interest since the last interest payment date whereas Clean Price excludes this accrued interest.

      Market Price is the present value of bond’s future cashflows including all of the interest and principal payments, discounted at its current yield to maturity or YTM. While calculating the Dirty Price, YTM is ignored.

      1. Thank you shiv
        a little clarification….so the clean price is the market price rite?
        and if the calculated clean price is higher than the market price…does it mean that we shud buy the bond @CMP.

        and also can u share some links where this can be expalined clearly..
        thank you

        1. Different markets use different price conventions, so it is not necessary that the Clean Price is also the Market Price of a bond in all the markets.

          Bond purchase should be based on the YTM the bond is trading at and the risk involved. Market Price or Clean Price should not matter much.

          There must be many sites having details about them. You can try investopedia or wikipedia. I haven’t checked many sites for this, it was in my CFA curriculum.

  10. Hi Shiv,
    One more favour, I am looking to buy some more NCDs as well. Could you please tell me where can I look for record date and redemtion date for some other NCDs.

    And usually, all NCDs will have 15 days between record date and redemption date (or Interest pay date), Am I correct?

    Thanks in Advance,

    1. Hi Sivaraj… Please check these links:

      You’ll find most of the info required from these two links. If you require some other info also, please let me know. Also, yes you are right that all these NCDs carry record date 15 days in advance. I’m not aware of any NCD issue which follows it differently.

  11. Hi Shiv,

    Thanks for this post. There is so minimal info about NCD and this YTM in web world.
    I am novice in NCD, and just now bought Shriram Transport NCD from BSE through my demat account in HDFC securities.

    The problem here is this NCD is having 3 years maturity period, and 10.5% interest. It started on Aug 2009 and matures on Aug 2012. I bought it at July 2012, thinking that in 1 month I will get a 10.5% interest. But Now only I noticed that it says record date as 15-March 2012. So is that means 15-Mar 2012 itself the interest has been paid out, and I would get nothing on Aug 2012. Please clarify me this doubt, and it would be huge help for me, since I planned to buy more NCDs from market. Thanks in Advance.

    1. Hi Sivaraj… If I’m not wrong, the rate of interest is 10.75% p.a. and not 10.50% and the date of redemption is 26th August, 2012. On maturity, you’ll get the interest for a period of approximately 5 months i.e. from April 1, 2012 till August 26, 2012. I think you’ll end up getting close to Rs. 1043.59 per bond. Next interest record date is August 10th, 2012.

      1. That’s a good news. Thanks. And the interest rate is pretty good for me after tax deductions. Seems like NCD is a very gud investment if we calculate the interest rate return after tax deduction…

        1. Yes, it seems so… 🙂

          Opportunities are there in both stock as well as bond markets but you should be active, quick, smart and bold.

Leave a Reply

Your email address will not be published. Required fields are marked *