Enter what the position cost you on the start date, and what it was worth on the end date. This annualized return calculator gives you the compound annual growth rate, and every line of the arithmetic is printed below the result with your own numbers in it. If you came looking for an investment return percentage calculator or a holding period return calculator, the same two figures are here as well: the total change over the stretch is printed in the working and again as its own line under the result, and the yearly rate sits above it. A max drawdown calculator is asking about something else — the worst fall inside the stretch, from a high point down to the low that followed it — and two values with two dates cannot supply it; what is printed here is the fall between the two values you typed, and the section further down says so in as many words. The beginning value is the money you actually put in, not what the position was worth that day; use the market value instead and the answer comes out different.
The compound annual growth rate is the one steady yearly rate that would take the beginning value to the ending value over the stretch you measured. It is not the average of the yearly returns you actually had along the way, and it is not a report on any single year: it is the rate that, applied once a year and compounded, lands on the same ending value.
CAGR = (ending value / beginning value) ^ (1 / number of years) minus 1
then × 100 to read it as a percent
The number of years is not typed in anywhere. It is worked out from your two dates: the actual count of days between them, divided by 365.25, so a leap year is spread across the whole stretch instead of landing on one year. The multiple is the ending value divided by the beginning value. The root is that multiple taken to the power of one over the number of years, and the rate is the root minus 1, read as a percent.
The page prints every one of those steps with your own numbers under the result, rather than only the last figure, so you can follow it and check it. Here it is with an example, 10,000 in on 2022-01-01 and 15,200 out on 2026-03-01:
Beginning value = 10000
Ending value = 15200
Actual days = 2026-03-01 minus 2022-01-01 = 1520 days
Years = 1520 / 365.25 = 4.1615
Multiple = 15200 / 10000 = 1.52
Root = 1.52 ^ (1 / 4.1615) = 1.10585107
CAGR = (1.10585107 minus 1) × 100 = 10.58%
So the figure is 10.58% a year. The multiple of 1.52 says the position ended at 152% of what it cost, a total change of 52.00% over the 4.1615 years. The yearly figure is smaller than the total because it is charged again each year on a larger value, which is what compounding does.
One line, and it is the rule everywhere on this site: nothing here is ever rounded up. The number of years and the multiple are shown to four decimals, the root to eight, and the rate to two, and each figure is cut off at that point rather than brought to the nearest. The figure on the screen is therefore never higher than the number it came from.
Each line of the working is worked out from the line above it exactly as that line is printed. Check the arithmetic with the figures on the screen and the last step lands on the printed answer, instead of a hundredth away from it. A spreadsheet does not cut figures down the way this page does, so on the same two values the last decimal can come out differently. The spreadsheet section below sets out both routes.
The beginning value is the money you put into the position, on the start date. It is a cost, not a valuation, and the choice changes the answer. If you enter the market value the position had on the start date instead, you get a different figure: the ending value is divided by a larger number whenever that market value is above what you paid, so the rate comes out lower, and it comes out higher when the position was worth less that day than it cost. This page uses the cost.
Dividends are not counted by this page. If the position paid you dividends during the stretch and you reinvested them, the extra shares are part of what the position is worth at the end, so enter the ending value with them included. If you took the dividends as cash, the ending value does not contain them, and this page does not add them back: the two boxes are the whole of the money it looks at.
Taxes, commissions, platform fees, spreads and currency movements are not deducted from either box, and nothing is added to them either. Both values are used exactly as you typed them, and the rate that comes back is the rate of those two numbers over those two dates, nothing more.
A blank box is not worked out, and neither is a beginning value of 0: the rate divides by it. The page says so under the button rather than printing a figure that could not be trusted.
A fall is printed with a minus sign and read as a fall. Here is the same 10,000 over the same two dates, with an ending value of 9,200:
Multiple = 9200 / 10000 = 0.92
Root = 0.92 ^ (1 / 4.1615) = 0.98016296
CAGR = (0.98016296 minus 1) × 100 = -1.99%
Read that as a fall of 1.99% a year. The total change over the stretch was minus 8.00%, and the note under the result says plainly that the ending value is below the beginning value, so the minus sign is the fall and not a mistake. The yearly figure is closer to zero than the total, because the same rate is charged again each year on a smaller value.
An ending value of 0 is worked out rather than refused. The multiple is 0, the root is 0, and the rate comes out as minus 100 percent, which is as low as this formula can go for an ending value of 0 or more. The page prints that figure, the whole working and a line saying what it means, rather than hiding it behind an error.
One doubling, three stretches. The two values stay exactly where they are; only the length of time changes, and the longer it is the smaller the yearly rate has to be to produce the same doubling.
The stretch also runs the other way round. Hold the yearly rate still and let the number of years move, and the total change does not come out at the rate multiplied by the years: 10.00% a year for twenty years is not a gain of 200.00%. Each year is charged on a value the year before it already raised, and the gap that opens is the whole of what compounding means.
One rate, three stretches. The yearly figure is the same 10.00% in every row, and what changes is the total: the blue part is the rate multiplied by the years, the green part is the rest, and it is the part that compounds.
A holding period return is the plain change over the stretch with nothing annualised: ending value divided by beginning value, less 1, read as a percent. On the example further up that is 15200 / 10000 = 1.52, so 52.00% over the 4.1615 years — and it already has a line of its own under the result, the one marked as the total change over the stretch, so the same run that gives you 10.58% a year hands you the whole move beside it. A holding period return calculator and this page work that total out the same way; what this page adds is the division by years, which turns the one figure into a rate you can line up against another position held for a different length of time.
Two differences from the way the figure is usually put together are worth stating, because neither is a rounding matter. It runs from what the position cost you, not from whatever the position was worth on the start date, so a gain or loss that was already there when the stretch opened sits outside it. And it counts no income: dividends you took as cash are not in the ending value, so on a payer the holding period return is higher than the total printed here unless you fold that cash back in yourself. Dividends you reinvested are a different case — those arrived as extra shares and are already inside the ending value you type.
The two boxes and the two dates are the whole input. These things are outside it, and none of them is a rounding difference:
There are no live prices anywhere on this page. Both values are typed by you and no quote is fetched, so every figure on the screen traces back to your own two numbers and your own two dates.
Both routes use the same four things. Put the beginning value in A1, the ending value in A2, the start date in A3 and the end date in A4.
As a formula, typed into any empty cell:
=(A2/A1)^(1/((A4-A3)/365.25))-1
With a function, Excel and Google Sheets both have RATE, which returns the rate per period and gives the same figure when the period is a year:
=RATE((A4-A3)/365.25,0,-A1,A2)
The middle zero is the payment box and it has to be there, because nothing is paid in or taken out during the stretch. The beginning value goes in as a negative number, because a function like RATE wants money going out and money coming in to carry opposite signs. Format the cell as a percentage to read it.
One difference is worth knowing about: a spreadsheet rounds a number when it displays it but keeps the full value underneath, while this page cuts every figure down at the point shown. On the same inputs the last decimal can differ, and when it does, this page is the one that matches the working printed above it.
The rate answers one question about a position, and two others come up beside it. If you want the money rather than the rate, the stock profit calculator takes your buys and your sell price and works out what the position made or lost, with the fee on the way in and the fee on the way out counted. If the position paid you income during the stretch, the dividend calculator works that out on its own, and the ending value you type here is the place to put it back in if you reinvested it. And if what you are after is the price you paid rather than a rate, the average down calculator pools your buys into one figure per share, and it will include a buy you have not made yet if you want to see what that would do.
Divide the ending value by the beginning value to get the multiple. Take that multiple to the power of one over the number of years, then subtract 1. Multiply by 100 and you have the rate as a percent. The number of years is the actual count of days between your two dates divided by 365.25, never a number you type in. With the example above: 15200 / 10000 = 1.52, then 1.52 ^ (1 / 4.1615) = 1.10585107, then (1.10585107 minus 1) × 100 = 10.58%. Those are the same three steps the boxes above run on your own figures, and the page prints each one of them rather than only the last.
It is the steady yearly rate that would carry the beginning value to the ending value across five years. A 5 year CAGR of 10% a year means the value multiplied by about 1.10 each year, five times over, which is a multiple of 1.6105 (1.10 ^ 5, cut down to four decimals) and a total change of 61.05%. It is not the same thing as the five yearly returns you actually had: those can be up and down, and still produce the same end figure, and a 5 year CAGR says nothing about any one of them. Five years is also a number this page gets from your dates rather than from the box, and a stretch that reads as five calendar years does not always land exactly on 5.0000 here. For example, 2021-01-01 to 2026-01-01 is 1,826 days, which is 4.9993 years, so the years box is worth reading alongside the rate.
Doubling is a multiple of 2, so over five years the rate is 2 ^ (1/5) minus 1. The root is 1.14869835 to eight decimals, and (1.14869835 minus 1) × 100 is 14.86% on this page's rule of cutting down, or 14.87% before anything is cut. The same sum for other stretches: 2 ^ (1/3) is 25.99% over three years, and 2 ^ (1/10) is 7.17% over ten. When the years come from two real dates they are whatever the dates give: 2021-01-01 to 2026-01-01 is 4.9993 years on this page, and a doubling from 10,000 to 20,000 over that stretch comes out at 14.87%.
This page does not grade a rate, and there is no line of arithmetic in it that could: what counts as good depends on the risk that was taken, on how long the money was committed, and on what else that money could have done, and none of those is an input here. What the page can do is show you what 12% comes to in figures. A rate of 12% a year over five years is a multiple of 1.7623, since 1.12 ^ 5 is 1.7623416832 cut down to four decimals, and that is a rise of 76.23% on the money at the start. Read the other way round, a multiple of 1.7623 over five years works back to 11.99% a year rather than 12.00%. That gap of one hundredth is the four decimal cut showing up in the last step, not an error in the sum.
This page is a calculator, not investment advice. Taxes, commissions, fees, spreads and currency movements are not counted anywhere on this page. There are no live prices here: the beginning value and the ending value are both typed by you. Contact: contact@stockavg.com