Treasury Return Calculator

Update: (January is 1/26 price).

The calculator below uses long run 10-year Treasury Data from Robert Shiller to compute US Treasury returns, based on reinvesting the coupon payments.  You can see the total returns for the 10 Year Treasury for any arbitrary period from 1871 until today.  After the calculator you can find our methodology.  (If you are looking for a similar calculator for the S&P 500 with Dividends Reinvested, Gold, or Daily Inflation we’ve got that too.)

The 10-Year Treasury Reinvested Coupon Payments Return Calculator (With Inflation Adjustment)

One issue you run into a lot when you are discussing optimal savings strategies is the inability to produce a fair comparison (or, at least, not pay someone for one) – especially when it comes to bonds and treasuries. In the case of the 10-Year Treasury, investors will eyeball a chart of historic yields but past that point it’s hard to figure out what the returns for ‘staying in the market’ would be without, at minimum, a spreadsheet program.  Let’s fix that today.

Here are the values the tool computes:

  • Reinvested 10 Year Treasury Return – The total price return of 10 Year Treasuries over the time-frame you chose. So if you buy and sell the same month, it’ll be 0.
  • Annualized 10 Year Treasury Return – The total price return of 10 Year Treasuries (as above), annualized. This number basically gives your ‘return per year’ if your time period was compressed or expanded to a 12 month timeframe.
  • Inflation Adjusted (CPI)? – Whether the calculation you did is using CPI adjusted values gathered by Shiller, or showing return before inflation. Hit the checkbox above the buttons to turn on or off the inflation adjustment, and rerun the calculator for the opposite adjustment.


Professor Shiller lists his methodology on his site – all values internal to this tool use the values he provided. One thing to note is that the month’s ’10-Year Yield Price’ isn’t the price on a particular day, but the blended average of daily yields, comparable to the 10 Year Yields (also known as ‘constant maturity‘) which you can find at the Treasury’s site.  What does that mean?  It means, in short, these numbers are ‘fake’ – they are a blend of the yields available throughout the months (on ‘average’), had a new 10 year note even been sold that month.

A 10 Year Treasury note pays a coupon every 6 months.  The calculator assumes bonds are bought at face value with no transaction fees and a tax rate of 0%.  Since we only have a 10-year yield number, we had to take some liberties when calculating bond prices – we properly compute dirty and clean prices of the bonds, but we are assuming that bonds are sold at the 7 year mark asking for the 10 year yield.  Why does that matter?  Using the 10 year yield at the 7 year mark assumes a flat yield curve.  For an example of this method breaking down, see the constant maturity series for 1/02/2013 – the 10 year prevailing yield was 1.86%, but the 7 year yield was 1.25%.  If you have yield curve data going back to 1871 feel free to excoriate me (just be sure to release that data into the public domain so I can use it!)… otherwise, deal with it.

How to Use This Data

As we mentioned above, there isn’t much in the way of good Treasury Yield Curve data going back to 1871 – so we don’t have a great way of determining how, exactly, to price 10 year treasuries with roughly 7 years to maturity.  With that in mind, this data is best used as an approximation of how an investor would have fared, than the ultimate arbiter of investor returns.  However – you should have guessed that anyway, since the resolution is only one month.

Considering these shortcomings, please look at this data as a ‘decent approximation’ of returns from the past.  Remember, just like with stocks, the time of day, the weather, general sentiment, daily inflation, and numerous other factors would affect the price of a security at any point in time – including the actual purchase of that security.

Thank Yous

To Robert Shiller, of course, for posting his data publicly.
To Jim at Free By 50, who assisted with some assumptions.

Is this a useful tool? Anything else you’d like to see added?


    • says

      Thanks for the help on this one – do you like the methodology section? My favorite line is the ‘deal with it’.

  1. AvgJoeMoney says

    If you could make a good yield to maturity calculator for bonds and preferred stocks, that’d be awesome. There’s my request! This is great.

    • says

      Of course, that wouldn’t be too bad of a calculator. There is actually one inside of this calculator, believe it or not – but it’s based on 10 years and coupon payments every 6 months. I’ll try to get a more generic one up at some point.

  2. Jonathan Berthet says

    I’m wondering, why does the July 2012 to July 2013 give me a -6.891% Reinvested and Annualized return?

  3. Carl says

    Perhaps is it because my intelligence is lower than average, but I have a hard time getting the figures to add up. Would it be possible to simply give an example of how one particular monthly return is calculated from the yield.
    In advance, thanks

    • says

      Sure – Sep 2012 – Sep 2013, -8.077%.

      September 2012 dividends buy you March 2013 reinvested bonds, and September 2013 bonds (which sell immediately, so sort of cancel out).

      My calculations, using my dirty pricing function (I use $1000 in the beginning – not that it matters, but you can use that to figure out the return):

      Sep 2012 coupon 1.72, current yield: 2.96, 9 years to maturity (value 902.6556678331992)

      Mar 2013 coupon 1.96, current yield 2.96, 9.5 years to maturity (value 7.892343273873696)

      Sep 2013 coupon 2.96, current yield: 2.96, 10 years to maturity (value 2.96 – these bought using $2.96 in Sep 2013, so they really cancel out here)

      902.6556678331992 + 7.892343273873696 + 2.96 = 919.2322911070729, started with $1,000, over one year.

        • Carl says

          Hi again,

          Unfortunately, I am not getting the exact same figures as you do. I would assume it is due to the fact that all payments are discounted using 2.96, but I am unable to figure out where your discount rate comes from. I can of course also have done some other mistake.

          The Sep 13 value of the bonds bought in Sep 2012:

          Mar -14: 1.72/2*exp(-2.96%*0.5)=0.847548

          Mar -22: 1.72/2*exp(-2.96%*8.5)=0.671144
          Sep -22: (1.72/2+100)*exp(-2.96%*9)=77.27214

          All in all this leads to a total sum of 901.0254 and not the 902.6556678331992 you calculated.


          • says

            It’s not a function of dirty price (since no interest is accrued) so you’re computing the clean price differently than me. Here’s the math on Sep-12 (for Sep-13, again):

            I put it in OpenOffice and got this for the sell price:

            =PRICE(“2013-9-1″;”2022-9-1”;0.0172;0.0296;100;2;1) (‘Bought’ 9/1/13, matures 9/1/2022) = 90.2655667833

            Mine is in Javascript though, let me step it through to clear it up. If you see any errors, let me know:

            Face Value: 1000
            Coupon: 1.72
            Yield: 2.96
            Months Remaining: 108

            Then I calculate:

            Coupon Payment: 8.6
            Required Yield: 0.0148
            Payments Left: 18 (20 total, 1 assumed to have just paid to buy the Sep-13s)

            Factor one: (1- (1/ (1 + Required Yield)^ Payments Left)) / Required Yield = (15.700698736580765)

            Factor two: Face Value / (1 + Required Yield) ^ Payments Left = (767.6296586986047)

            Clean Price = (Coupon Payment * Factor One) + Factor Two = (902.6556678331992)

            Hope this helps – it might be easier to do it in a spreadsheet; I’m emulating them for US as best I can (360 day calendar, etc, etc).

          • Carl says

            Thanks again, the figures are now adding up for me, just had to change the interest convention to semi yearly compounding.
            Just one thing that might confuse readers is third component of 2.96 in your first answer. This should really be 0.868. 0.86 (the coupon from the bond bought in sep 12) + 0.0084 (The coupon of the bond bought in mar 13 with the first coupon from the first bond (0.98*0.86/100)).

          • says

            Ahh, good point – blame Freud?

            For anyone who stumbles upon this out of context – look at the second answer for the math.

  4. Malin says

    I have read your examples, but unfortunately can’t get it to add up using your calculator.

    If I for instance look at the return between sep12-mar13 return:

    In my calculations, the Sep12 bond (with a coupon of 1.72) using 1.96 as disc factor is 1.72/2/100/(1+1.96/100/2)^0+1.72/2/100/(1+1.96/100/2)^1…+1.72/2/100/(1+1.96/100/2)^19+1/(1+1.96/100/2)^19=0.987889024.

    This would correspond to a return of 1.21%, but your calculator returns 1.011%

    I can’t really figure out what I am missing. Could you please help?


    • PK says

      I’m glad you trusted your instincts there – it was wrong.

      Not sure when that bug was introduced (likely one of the monthly updates; since I was in the code anyway I added the June ’14 data) but we were off-by-one (year) when we were calculating the number of months left. Using 114 months remaining (the correct number for 9/12 to 3/13), a single dividend/repurchase on that 6th month, and the rest of the assumptions the calculator agrees with your return of -1.211%.

      Thank you for commenting – I appreciate it!

  5. Joe says

    Been searching for one of these calculators for a long time. Thanks. How about a Barclay’s aggregate bond index or total bond market calculator?

    • PK says

      You’ve accurate predicted some of my queue (well, the second part). Stay tuned!