請從最早的一期開始,依序輸入各期的報酬率(%)和持有期間(年、月)。2 期以上即可計算(最多 20 期)。會算出整體投資的累積報酬率,以及換算成每年的平均報酬率(幾何平均、年化)。
這個頁面可以做什麼
- 由「第 1 年 +10%、接下來 5 個月 −2%……」這樣各期的報酬率(%)和持有期間(年、月),算出整體投資的累積報酬率和平均報酬率(年化)
- 平均報酬率是把高低起伏的各期報酬率平均後,換算成「相當於每年都以相同的幾 % 成長」的值(幾何平均的年化報酬率),能公平比較持有期間不同的投資
- 用公式卡清楚解說和算術平均的差別:為什麼會出現「平均 +25% 卻沒賺錢」(這是本頁最重要的重點)
- 也會顯示從 100 萬元開始時,各期的餘額變化表,以及實際餘額和以平均報酬率穩定成長的曲線重疊的圖表
這個計算有什麼用?
像「第 1 年 +10%、第 2 年 −5%、第 3 年 +20%」這樣成績高低起伏時,基金月報或 ETF 績效資料上的「年化報酬率」,就是用和本頁相同的幾何平均計算的。
能把自己的投資成績換算成年化,就能在同一個基準上比較不同的基金或 ETF(例如台股的 0050),或和目標(例如年 5%)對照。另外,中途有定期定額或贖回時,用資金加權報酬率(IRR)來看才準確。
−50% 和 +100% 的算術平均是 +25%,但實際的資產是 100 萬元 → 50 萬元 → 100 萬元,完全沒賺。成績起伏越大,算術平均看起來就比實際越好。
看到「平均報酬率 ○%」的廣告或文章時,先懷疑它是算術平均還是幾何平均(年化)。光是這一個知識,就比較不容易被誇大的數字騙。
把「3 年營收成長 1.5 倍」換算成年化,就是 \(1.5^{1/3} - 1 \approx 14.5\%\)。這個值叫做 CAGR(年複合成長率),在營運計畫、財報資料、法說會簡報中都是標準用法。
能把期間不同的事業或公司的成長統一成「每年」來比較,所以在製作商業資料或分析企業時很常用到。
先由過去的成績求出平均報酬率(年化),就能用複利估算「照這樣下去,20 年後會變成多少」,例如勞退自提或定期定額投資的規劃(年化 5% 時,20 年約變成 2.65 倍)。
不過過去的平均報酬率不代表未來。規劃時也用稍低的年化報酬率算一次,保留一些彈性比較穩健。
「2 年 +30% 的 A」和「3 年半 +50% 的 B」,哪一個比較有效率?只看累積報酬率無法比較,但換算成年化後,A 約 14.0%、B 約 12.3%,可見 A 比較有效率。
即使持有期間有零星的月數,用本頁的計算也能直接統一成年化報酬率。
公式與圖表
符號與用語解說
符號
| \(r_i\) | r i | 第 \(i\) 期的報酬率,表示資產在該期增加(減少)了幾 %。計算時要把 % 換成小數(+10% 是 0.1,−5% 是 −0.05)。 |
| \(y\), \(m\) | y、m | 輸入的持有期間。\(y\) 是年數,\(m\) 是月數。(例如 1 年 2 個月,\(y=1\)、\(m=2\)) |
| \(h_i\) | h i | 把第 \(i\) 期的持有期間換算成年的值,用 \(h = y + m \div 12\) 求出。(例如 1 年 2 個月 → 約 1.17 年) |
| \(B_0\), \(B_i\), \(B_n\) | B 0、B i、B n | 餘額(Balance)。\(B_0\) 是起始金額,\(B_i\) 是第 \(i\) 期的期末餘額,\(B_n\) 是最後一期的期末餘額。本頁的變化表以 \(B_0 = 100\) 萬元計算。 |
| \(T\) | T | 總持有期間(年),把各期的 \(h_i\) 全部相加的值。(例如 1 年+1 年+6 個月 → \(T = 2.5\) 年) |
| \(R\) | 大寫 R | 累積報酬率,整段期間下來資產增加(減少)了幾 %。 |
| \(r_{avg}\) | r average | 平均報酬率(年化)。把高低起伏的各期報酬率換算成「每年相同的幾 %」的值,是本頁的主要答案。avg 是英文 average(平均)的縮寫。 |
| \(x^{1/T}\) | x 的 T 分之 1 次方 | \(x\) 的 \(T\) 次方根,也就是「\(T\) 次方後等於 \(x\) 的數」。(例如 \(1.21^{1/2} = \sqrt{1.21} = 1.1\))可以用工程計算機或 Excel 的「^(1/T)」計算。 |
用語
| 報酬率 | 表示投資的錢在該期增加(減少)了幾 % 的值,也叫收益率。虧損的期間報酬率為負。 |
| 累積報酬率 | 以 % 表示整段期間合計賺(賠)多少的值。因為不考慮花了幾年,不適合用來比較期間不同的投資。 |
| 平均報酬率 | 把累積報酬率換算成「相當於每年都以相同的幾 % 成長」的值,也叫年化報酬率。能統一年數來比較,所以是投資績效表示的標準。 |
| 幾何平均數 | 以乘法相連的量的平均。把 \(n\) 個值全部相乘,再取 \(n\) 次方根。像報酬率這樣以倍數累積的量,正確的平均方法是用幾何平均,而不是算術平均。 |
| 算術平均數 | 全部加起來再除以個數的一般平均。用在報酬率的平均時,起伏越大,數字看起來就比實際越好(−50% 和 +100% 的算術平均是 +25%,但實際上完全沒賺)。 |
| 複利 | 把增加的部分也併入本金,下一期整筆一起增加的方式。本頁的計算以「前一期的期末餘額成為下一期的本金」的複利為前提。 |
| 年化 | 把期間長短不一的成績統一成「每年幾 %」。像 6 個月 +3% 和 2 年 +10% 這樣的成績,換算成年化後就能公平比較。 |
| 年複合成長率 | 英文縮寫 CAGR(Compound Annual Growth Rate)。和本頁的平均報酬率是完全相同的計算,常用來以年化表示企業營收、使用者數等的成長率。 |
| 資金加權報酬率 | 連中途的投入、提領都考慮進去,表示「自己的錢實際賺了多少」的報酬率(和 IRR 內部報酬率是相同的計算)。像定期定額這樣中途有資金進出的投資,報酬率用這個比本頁的計算更適合。不考慮資金進出的本頁報酬率,則叫做時間加權報酬率。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
| 比率與百分率(國小高年級,10~12 歲) |
|
| 分數與小數(國小高年級,10~12 歲) |
|
| 正負數(國中,12~15 歲) |
|
| 次方與指數(國中,12~15 歲) |
|
| 方根與指數的推廣(高中,15~18 歲) |
|
| 複利的概念(高中,15~18 歲) |
|
用 Excel 計算的方法
| 持有期間:年 | 1 |
| 持有期間:月 | 2 |
| 換算成年的持有期間(年) | =B1+B2/12 |
| 前一期的期末餘額(元) | 1000000 |
| 該期的報酬率(%) | 10 |
| 換算成年的持有期間(年) | 2 |
| 期末餘額(元) | =B1*(1+B2/100)^B3 |
| 起始金額(元) | 1000000 |
| 最後的餘額(元) | 1320000 |
| 累積報酬率(%) | =(B2/B1-1)*100 |
| 起始金額(元) | 1000000 |
| 最後的餘額(元) | 1320000 |
| 總持有期間(年) | 2 |
| 平均報酬率(年化 %) | =((B2/B1)^(1/B3)-1)*100 |
第 1 個表格是 1 + 2 ÷ 12,約 1.17 年;第 2 個表格是 1000000 × 1.1 × 1.1 = 1,210,000 元。
第 3 個表格顯示 32%,第 4 個表格約為 14.89%。只要把 B 欄改成自己的數字就能使用。
用 Google 試算表計算的方法
| 持有期間:年 | 1 |
| 持有期間:月 | 2 |
| 換算成年的持有期間(年) | =B1+B2/12 |
| 前一期的期末餘額(元) | 1000000 |
| 該期的報酬率(%) | 10 |
| 換算成年的持有期間(年) | 2 |
| 期末餘額(元) | =B1*(1+B2/100)^B3 |
| 起始金額(元) | 1000000 |
| 最後的餘額(元) | 1320000 |
| 累積報酬率(%) | =(B2/B1-1)*100 |
| 起始金額(元) | 1000000 |
| 最後的餘額(元) | 1320000 |
| 總持有期間(年) | 2 |
| 平均報酬率(年化 %) | =((B2/B1)^(1/B3)-1)*100 |
用 Python 計算的方法
# (報酬率 %, 持有年數, 持有月數),從最早的一期依序排列
periods = [(10, 1, 2), (-2, 0, 5), (15, 2, 3)]
start_balance = 1000000 # 起始金額(元)
balance = start_balance
total_years = 0
for return_percent, years, months in periods:
holding_years = years + months / 12 # 換算成年的持有期間
total_years += holding_years
balance *= (1 + return_percent / 100) ** holding_years # 複利連鎖
print(f"報酬率 {return_percent}%,持有 {holding_years:.4f} 年 -> 餘額 {balance:,.0f} 元")
cumulative_return = (balance / start_balance - 1) * 100
average_return = ((balance / start_balance) ** (1 / total_years) - 1) * 100
print(f"累積報酬率:{cumulative_return:.2f}%")
print(f"平均報酬率(年化):{average_return:.2f}%")
print(f"總持有期間:{total_years:.4f} 年")
用 LaTeX 等數學式語言的寫法(可直接複製)
h = y + m ÷ 12
h = y + \dfrac{m}{12}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>h</mi>
<mo>=</mo>
<mi>y</mi>
<mo>+</mo>
<mfrac>
<mi>m</mi>
<mn>12</mn>
</mfrac>
</mrow>
</math>
h = y + m / 12
y + m/12
h := y + m/12;
h = y + m/12;
h = y + m/12
B_i = B_{i-1} \times (1 + r_i)^{h_i}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>B</mi><mi>i</mi></msub>
<mo>=</mo>
<msub><mi>B</mi><mrow><mi>i</mi><mo>−</mo><mn>1</mn></mrow></msub>
<mo>×</mo>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>r</mi><mi>i</mi></msub><mo>)</mo></mrow>
<msub><mi>h</mi><mi>i</mi></msub>
</msup>
</mrow>
</math>
B_i = B_(i-1) (1 + r_i)^(h_i)
bprev (1 + r)^h
B := Bprev*(1 + r)^h;
B = Bprev*(1 + r)^h;
B_i = B_(i−1) (1 + r_i)^(h_i)
R = Bₙ ÷ B₀ − 1
R = \dfrac{B_n}{B_0} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>R</mi>
<mo>=</mo>
<mfrac>
<msub><mi>B</mi><mi>n</mi></msub>
<msub><mi>B</mi><mn>0</mn></msub>
</mfrac>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
R = (B_n) / (B_0) - 1
bn/b0 - 1
R := Bn/B0 - 1;
R = Bn/B0 - 1;
R = B_n/B_0 − 1
r_{avg} = \left(\dfrac{B_n}{B_0}\right)^{1/T} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>r</mi><mi>avg</mi></msub>
<mo>=</mo>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<msub><mi>B</mi><mi>n</mi></msub>
<msub><mi>B</mi><mn>0</mn></msub>
</mfrac>
<mo>)</mo>
</mrow>
<mrow><mn>1</mn><mo>/</mo><mi>T</mi></mrow>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
r_(avg) = ((B_n) / (B_0))^(1/T) - 1
(bn/b0)^(1/T) - 1
r_avg := (Bn/B0)^(1/T) - 1;
r_avg = (Bn/B0)^(1/T) - 1;
r_avg = (B_n/B_0)^(1/T) − 1
請 ChatGPT 幫忙計算的方法
你是投資計算助理。請務必實際執行 Python 程式碼來進行下列計算,並且只根據執行結果的數值回答(不要用心算或推測回答)。 某項投資從最早的一期起,依序有以下的成績: - 1 年 2 個月期間報酬率 +10% - 5 個月期間報酬率 −2% - 2 年 3 個月期間報酬率 +15% 請把各期的持有期間用「年數 + 月數 ÷ 12」換算成年,並以複利把餘額串起來(前一期的期末餘額是下一期的本金)。 請分別求出下列的值: 1. 累積報酬率(%,小數 2 位)= 整段期間的倍數 − 1 2. 平均報酬率(年化 %,小數 2 位)= 整段期間的倍數的(1 ÷ 總持有期間)次方 − 1(幾何平均) 3. 總持有期間(年) 4. 從新臺幣 100 萬元開始時,各期的期末餘額(元) 請列出計算時使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權