This Treasury Return Calculator uses long-run 10-year Treasury data from the US Treasury Department and Robert Shiller to compute the total return of a 10 Year Treasury – coupon income plus the price change as yields move – for any period from 1871 until today.
(We have a similar calculator for the S&P 500, Dow Jones Industrial Average, NASDAQ, Gold, and Daily Inflation. Or, compare stocks, bonds, and short-term investments with the Stocks vs Bonds Historical Returns tool.)
Using the Treasury Return Calculator
Pick a starting and ending month and the calculator updates in real time. Here's what it shows:
- Total 10 Year Treasury Return – the cumulative total return over the period you chose.
- Annualized 10 Year Treasury Return – the same total return expressed as a return per year.
- Adjust for Inflation (CPI)? – restates every value in real, CPI-adjusted terms using Shiller's CPI series.
- Show legacy return calculation – adds two rows for an older "3-year ladder" method of calculating total returns. (The methodology is explained below.)
- Show Chart – draws the growth of a $10,000 investment over your window. Tick Log scale for a logarithmic vertical axis, which keeps long, multi-decade windows readable.
Methodology for the Treasury Return Calculator
The 10-year yield comes from Robert Shiller's compiled data, which runs back to 1871, with infill from the Treasury and FRED.
Each month's figure isn't a single day's price – it's the blended average of that month's daily 10-year constant-maturity yields. In other words these are "fake" numbers – a monthly average of the yield at which a new 10-year note could have been issued, not a price you could have transacted at on a given day. Because it's a monthly average rather than a month-end snapshot, returns here differ slightly from year-end-based sources – that is, returns are not based on an individual investment and sale date but a blended average.
Default return algorithm: constant-maturity total return
By default, the calculator uses the par-bond method for turning constant-maturity yields into total returns (see Swinkels, 2019 for the canonical writeup). Each month you hold a freshly-issued par 10-year bond – coupon equal to the prevailing yield and priced at par – earn the coupon, and a month later reprice that now-slightly-older bond at the new yield using full present-value bond math. The monthly total return is the coupon you earned plus that price change; then you roll into a fresh par bond and repeat.
Because the bond is fully repriced every month, this captures convexity exactly – no duration or convexity coefficient to fit. It's the method behind most published Treasury total-return indices.
And yes, this model uses the same general engine behind our Bond Convexity and Bond Pricing calculators.
The legacy 3-year ladder
This calculator originally had a different performance methodology which built a bond ladder. The legacy algorithm would buy a 10-year note, collect its semiannual coupons, and sell it after three years (holding, effectively, a 7-year bond). The model would then roll any proceeds into a new 10-year note assuming bonds are bought at face value with no transaction fees and a 0% tax rate.
While I've maintained the model for comparability across time (via Show legacy return calculation), there are two big caveats.
- Assuming you can sell a 7-year bond at the 10-year yield assumes a flat yield curve. To see how much real curves vary, play with my 3D Treasury Yield Curve visualization.
- The face-value roll ignores mark-to-market price changes... and that cuts both ways. In a rising-rate stretch the ladder overstates returns, while in a falling-rate stretch it misses the price gains instead. Over a full cycle the errors partly wash, but over any window dominated by one rate trend the ladder can be off by a point or more a year.
The constant-maturity method has neither problem because it marks to market every month... which is why it's the default now.
How to use this data
It's worth internalizing: the 10 year Treasury total return is not its yield at purchase. Indexes like the one I've constructed here try to keep your maturity at roughly ten years. When rates rise, the price of existing bonds falls, and that capital loss can swamp the coupon.
Models like this one approximate how you would have done if you – in some magical, frictionless way – constantly turned over 10-year treasuries just to purchase newly issued ones. Treat the output as a decent approximation of how an investor would have fared, not the ultimate arbiter of returns. And always remember that, just like with stocks, the time of day, the weather, general sentiment, daily inflation, and countless other factors move the real price of a security at any point in time, including the moment you'd actually have bought it.
Thank yous
To Robert Shiller, of course, for posting his data publicly. To Laurens Swinkels, whose 2019 paper documents the constant-maturity return method cleanly. And to Jim at Free By 50, who assisted with some of the original assumptions.
Is this a useful tool? Anything else you'd like to see added to the Treasury Return Calculator?
