What is YTM? I keep seeing it on BondScanner but I do not fully understand what it is actually telling me

Every bond listing on BondScanner shows a YTM percentage. I roughly understand it means the return I will earn, but I am not sure exactly how it is calculated or what assumptions it makes. The bond I am looking at shows 9.2% YTM. Does that mean I will definitely earn 9.2% per year?

YTM stands for Yield to Maturity. It is the annualised return you will earn if you buy the bond at the current price, receive every coupon on schedule, and hold it all the way to maturity. A worked example makes this clearer. Suppose a bond has a face value of Rs 1,000, a coupon of Rs 80 per year, 5 years to maturity, and is currently trading at Rs 950. You are buying at a discount because the price is below face value. The approximate YTM formula is: coupon plus face value minus current price divided by years, all divided by the average of face value and current price. That works out to Rs 80 plus Rs 10, divided by Rs 975, which is roughly 9.2%. The Rs 10 comes from the Rs 50 capital gain you earn at maturity spread over 5 years. So YTM is not just the coupon rate. It accounts for both the regular interest payments and the price difference between what you pay today and what you receive at maturity.

okay but the 9.2% – is that guaranteed? or can it change?

If you buy the bond today at the current price and hold it to maturity, and the issuer makes every payment on time, then yes, 9.2% is what you will earn. It is locked in at the point of purchase. The coupon is fixed, the maturity value is fixed, and you bought at a known price. None of those three change after you buy. What YTM cannot guarantee is that the issuer will not default. It also assumes you reinvest every coupon payment at the same 9.2% rate, which in practice is unlikely since rates change. But for a buy and hold investor comparing two bonds, YTM is the cleanest single number to use.

so coupon rate and YTM are not the same thing? when would they be different?

They diverge whenever the bond trades away from face value. If a bond has a 9% coupon rate but you buy it at Rs 950 instead of Rs 1,000, your YTM is higher than 9% because you also benefit from the Rs 50 gain at maturity. If you buy at Rs 1,050, your YTM is lower than 9% because you are paying a premium that you will not get back. The only time coupon rate equals YTM is when the bond trades at exactly par.

For practical comparison, forget trying to calculate YTM by hand. Use XIRR in Excel or Google Sheets. List the purchase price as a negative cash flow on the settlement date, each coupon payment as a positive cash flow on its payment date, and the face value as a positive cash flow on the maturity date. XIRR calculates the exact annualised return across those cash flows automatically. It handles semi-annual coupons, mid-period purchases, and day count conventions without any manual adjustment.

one thing worth knowing: the YTM shown on BondScanner is calculated on the dirty price, meaning the actual amount you will pay including accrued interest, not just the clean price on screen. so the number you see already accounts for what you will actually pay out of pocket. that is not always the case on every platform, which is one reason the same bond can show slightly different YTM across different sites.