# ROI and CAGR calculator

> Calculate ROI (total return) and CAGR (compound annual growth rate) from an investment's start and end values, over years or between two dates.

交互版本：https://www.calcopenly.com/zh/finance/roi-cagr-calculator
主题：财务计算器

ROI is the total gain as a share of the amount invested: (final value + income − amount invested) ÷ amount invested. CAGR turns that into a steady yearly rate, (ending value ÷ amount invested)^(1/years) − 1: the rate that, compounded every year, would reach the same end value. Between two dates, the holding period is the actual number of days divided by 365.25, or by 365 as Excel's XIRR does.

With the defaults, 10,000 growing to 16,500 in 5 years is a 65% total return and a CAGR of 10.53% a year. Dividing 65% by 5 years gives 13%, which overstates the yearly rate because it ignores compounding.

Both figures treat the investment as one payment in and one value out. If you added or withdrew money along the way, use the XIRR calculator, which weights each cash flow by its date.

## 输入

- **Amount invested**
- **Final value**
- **Income received along the way**: Dividends, interest or rent you took out. It is added to the final value.
- **Holding period from** (选项：年, 日期)
- **Years held**
- **Bought on**
- **Valued on**
- **Days per year** (选项：365.25 (average year), 365 (as Excel XIRR))

## 结果

- CAGR (annualized return) — 主要结果
- Total return (ROI)
- Gain
- Growth multiple (×)
- Holding period (years)

## 公式

$$
ROI = \frac{V_{end} + I - V_0}{V_0},\qquad CAGR = \left(\frac{V_{end} + I}{V_0}\right)^{1/t} - 1
$$

## 计算示例

### 10,000 to 16,500 in 5 years

- Amount invested: 10,000
- Final value: 16,500
- Income received along the way: 0
- Holding period from: 年
- Years held: 5 years
- **Total return (ROI): 65%**
- **CAGR (annualized return): 10.53423%**
- **Gain: 6,500.00**
- 核验来源：Python decimal: 1.65^(1/5) − 1 = 10.5342296%

### Doubling between two dates

- Amount invested: 10,000
- Final value: 20,000
- Income received along the way: 0
- Holding period from: 日期
- Bought on: 2020-01-01
- Valued on: 2025-01-01
- Days per year: 365.25 (average year)
- **Holding period: 5.002053 years**
- **CAGR (annualized return): 14.863299%**
- **Total return (ROI): 100%**
- 核验来源：Python datetime: 1,827 days / 365.25 = 5.0020534 years; 2^(1/5.0020534) − 1 = 14.8632986%

### Exactly one year, 365-day basis

- Amount invested: 100
- Final value: 110
- Income received along the way: 0
- Holding period from: 日期
- Bought on: 2023-01-01
- Valued on: 2024-01-01
- Days per year: 365 (as Excel XIRR)
- **Holding period: 1 year**
- **CAGR (annualized return): 10%**
- **Total return (ROI): 10%**
- 核验来源：365 days / 365 = 1 year, so CAGR equals ROI (definition)

### Income taken out counts toward the return

- Amount invested: 1000
- Final value: 1100
- Income received along the way: 50
- Holding period from: 年
- Years held: 2 years
- **Total return (ROI): 15%**
- **CAGR (annualized return): 7.238053%**
- 核验来源：Python decimal: √1.15 − 1 = 7.2380529%

### Microsoft RRI example

- Amount invested: 10,000
- Final value: 11,000
- Income received along the way: 0
- Holding period from: 年
- Years held: 96 years
- **CAGR (annualized return): 0.099331%**
- 核验来源：Microsoft RRI documentation: RRI(96, 10000, 11000) = 0.0009933; Python decimal 0.0993307376%

### Total loss

- Amount invested: 1000
- Final value: 0
- Income received along the way: 0
- Holding period from: 年
- Years held: 3 years
- **CAGR (annualized return): -100%**
- **Total return (ROI): -100%**
- **Growth multiple: 0.0000 ×**
- 核验来源：0^(1/3) − 1 = −1 (definition)

## 常见问题

### How do you calculate ROI?

Divide the gain by the amount invested and multiply by 100: ROI = (final value + income − cost) ÷ cost × 100. An investment of 10,000 now worth 16,500 has an ROI of 6,500 ÷ 10,000 = 65%. Income you took out counts too: 1,000 that grew to 1,100 and paid 50 of dividends returned 15%.

### How do you calculate CAGR?

Divide the ending value by the starting value, raise the result to the power 1 ÷ years, and subtract 1. For 10,000 growing to 16,500 in 5 years, 1.65^(1/5) − 1 = 10.53% a year. In Excel, =RRI(5, 10000, 16500) returns the same rate.

### What is the difference between ROI and CAGR?

ROI measures the whole gain and ignores time; CAGR spreads it over the years as a compound rate. A 65% ROI is a CAGR of 10.53% if it took 5 years but only 5.14% if it took 10 years. Use CAGR to compare investments held for different lengths of time.

### Is CAGR the same as the average annual return?

No. The average of yearly returns ignores compounding, so it overstates the growth whenever returns vary. An investment that gains 50% one year and loses 50% the next has an average return of 0%, but it ends at 75% of its starting value, a CAGR of −13.40% a year.

### Should I use CAGR for a holding period under a year?

With care, because CAGR assumes the same return would repeat for a full year. A 5% gain in 3 months annualizes to 1.05^4 − 1 = 21.55% a year, which says little about what the next nine months will bring. For short holdings the total return is the plainer figure.

### “ROI and CAGR calculator”有多准确？

准确性取决于输入值和方法的假设。十进制运算使用50位有效数字，但估算、数值方法和源数据的精度可能较低；显示时的舍入并不能消除这些限制。 已按独立来源核验的计算示例：6。 例如，“10,000 to 16,500 in 5 years”根据Python decimal: 1.65^(1/5) − 1 = 10.5342296%进行核验。

### 这种方法出自哪里？

Microsoft Excel RRI function (equivalent interest rate for growth); CFA Institute — Quantitative Methods: The Time Value of Money (annualized returns).

## 来源

- [Microsoft Excel RRI function (equivalent interest rate for growth)](https://support.microsoft.com/office/rri-function-6f5822d8-7ef1-4233-944c-79e8172930f4)
- CFA Institute — Quantitative Methods: The Time Value of Money (annualized returns)

_仅用于规划。贷款机构、税务机关和市场采用各自的舍入方式、费用和规则；作出承诺前，请向相关机构确认数值。_
