年化報酬率計算
已經發生的投資,實際年化報酬率是多少?CAGR 模式用期初、期末金額反推;XIRR 模式逐筆列出實際日期的投入與收回反推,並以 XNPV 是否歸零驗算。
這一頁算的是已經發生的報酬,屬於事後對帳。CAGR 是把整段期間攤平後的平滑值,看不出中間的波動;XIRR 對每一筆現金流的日期與正負號都很敏感,順序一換結果就不同。兩者都不是對未來報酬的預測,本頁也不提供投資建議、不比較商品。
年化報酬率(CAGR)
8.75%
總報酬率 80.00%,期間 2557 天(7.01 年,一年以 365 日計)。
公式代入:(1,800,000 ÷ 1,000,000) ^ (365 ÷ 2557) - 1 = 8.75%
CAGR 假設這段期間每年都以同一個比率成長,是一條平滑後的曲線。實際上中途可能大漲大跌,本頁不做波動與風險的評估。
CAGR 是什麼?怎麼算出來的
CAGR(compound annual growth rate,年複合成長率)回答一個問題:這筆錢如果每年都用同一個比率成長,要多少才會從期初變成期末?算式是CAGR =(期末 ÷ 期初)^(365 ÷ 實際天數)− 1。例如 1,000,000 元放到 2,000,000 元,中間經過 3,653 天(10.01 年),總報酬率是 100.00%,年化只有 7.17%。
兩個限制要先知道。第一,它是平滑值:一路慢慢漲和先腰斬再翻四倍,只要頭尾一樣,CAGR 就一樣,波動完全看不出來。第二,它只看頭尾兩個金額:中間有加碼或部分贖回時,期末金額裡混著後來才放進去的錢,這時候用 CAGR 會高估或低估,要改用下一節的 XIRR。
期初金額必須大於 0,否則沒有可以比較的基準;期間必須大於 0,同一天算不出年化。期末金額是 0 時結果剛好是 −100%;期末是負數(本金虧光還倒賠)沒有實數解,本頁會直接說明,不猜一個數字。
XIRR 與 IRR 差在哪?
IRR 假設每一期的間隔一樣長,適合規律的年度或月度現金流。真實的投資很少這麼整齊:這個月扣款、明年三月加碼、後年六月賣掉一半。XIRR 是 IRR 的不定期版本,它吃實際日期,把每一筆金額依「距基準日幾天 ÷ 365」折現,再去找一個讓折現後加總歸零的年化報酬率。這個折現後的加總就是試算表裡的 XNPV。
以 Microsoft 官方文件的範例為例:2008 年 1 月 1 日投入 10,000 元,之後在四個不規則的日期分別收回 2,750、4,250、3,250、2,750 元,XIRR 是 37.34%。把同一組數字貼進試算表的 XIRR 函數,結果會一致,因為年基準與折現方式相同。
XIRR 對時間點很敏感,這正是它的價值。同樣是先投入 500,000 元與 1,000,000 元、最後收回 1,800,000 元:大筆先進場的那一種年化是 9.67%,小筆先進場的那一種是 9.82%。金額總數一樣,只因為大錢待的時間不同,結果就不同。
一組現金流至少要有一筆投入與一筆收回,XIRR 才有意義:全部都是投入或全部都是收回時,折現後不可能歸零。部位還沒出場的話,把最後一天的市值當成一筆收回填進去,算出來就是「到今天為止的年化報酬率」。
怎麼知道這個數字可不可信?
XIRR 沒有公式解,只能用數值方法找。很多工具用單一路徑的牛頓法,起點沒選好時會跑掉,而且發散的時候往往悄悄回一個數字,看起來像答案。本頁改成兩步:先在 年化 -99.9999% 到每年成長 1,000,000,000,000 倍 這段範圍上等距掃描,找出所有「XNPV 由正變負或由負變正」的區間,再對每一個區間做二分逼近。二分只看正負號、不看斜率,所以不會發散。
收斂之後還要驗算。本頁會把求得的報酬率代回去,逐筆折現再加總,並把這個殘差顯示在畫面上;判定用的是相對殘差(殘差絕對值 ÷ 各筆折現金額絕對值之和),容差 1e-8,這樣不論金額是幾千還是幾兆,標準都是同一個意思。殘差超過容差、迭代到上限、或算出非有限值,本頁一律回報失敗,不顯示數字。
掃描到幾個區間就回報幾個解。找到 0 個時顯示找不到解;找到 1 個時顯示它,並附上左右兩側符號相反的證據;找到 2 個以上時全部列出來,不替你選定答案。例如先投入 1,000 元、隔年收回 2,500 元、再隔年又投入 1,560 元,20.00% 與 30.00% 都能讓折現後的金額歸零。這種現金流的「報酬率」本來就不是單一數字,把它拆成兩段分別試算會比較有意義。
日期的部分也做了一件事:計算核心完全不使用瀏覽器的時間物件,日期是年、月、日三個整數,天數用日曆日序相減。所以同一組輸入不論在哪個時區、有沒有日光節約時間,算出來都一樣,伺服器預渲染的結果也和你瀏覽器上的一致。
這一頁不做的事
本頁是試算與對帳工具,結果會受你填入的金額與日期是否完整、正確影響。投資有風險,過去的報酬不代表未來的績效,實際損益請以券商或投信的對帳單為準。
常見問題
年化報酬率和總報酬率差在哪?
總報酬率是整段期間賺了幾成,年化報酬率是把它換算成「平均每年要成長多少」才會變成這個結果。例如 3,653 天(約 10.01 年)從 1,000,000 元變成 2,000,000 元,總報酬率 100.00%,年化只有 7.17%。期間不同的兩筆投資,只有換算成年化才比得下去。
CAGR 和 XIRR 要選哪一個?
中間沒有加碼也沒有部分贖回,只有一筆錢放著,就用 CAGR:兩個金額加兩個日期就夠了。中間有多次投入或多次收回,而且日期不規則,就要用 XIRR:CAGR 看不見中間那些錢待了多久,算出來會失真。
為什麼算出來的數字和看盤軟體不一樣?
常見原因有三個:一是年基準不同,本頁與試算表的 XIRR 都以一年 365 日計,有些平台用 360 日或曆年;二是對方算的是時間加權報酬率(不看你何時投入多少),本頁算的是金額加權;三是股息、手續費與稅金有沒有列進現金流。把每一筆真實進出補齊,數字就會靠近。
出現「找不到解」是什麼意思?
代表在本站的求解範圍(年化 -99.9999% 到每年成長 1,000,000,000,000 倍)內,找不到任何報酬率能讓折現後的金額加總歸零。最常見的是日期或金額填錯,其次是本金幾乎虧光、實際報酬低於 -99.9999%。這種時候本站不會回一個看起來像答案的數字。
為什麼會出現兩個以上的答案?
現金流的正負號變換超過一次時(先投入、收回一大筆、又再投入),折現後歸零的報酬率可能不只一個,這是數學上的多解,不是程式算錯。例如 20.00% 與 30.00% 兩個值都能讓同一組現金流歸零。本站會把找到的候選值全部列出來並說明,不替你挑一個當「正確答案」。
日期會不會受到時區影響?
不會。本頁的計算核心完全不使用瀏覽器的時間物件,日期一律以年、月、日三個整數表示,天數用日曆日序相減。同一組輸入在台灣、在英國、在伺服器預渲染時,結果都一樣。
這個結果可以用來預測未來嗎?
不行。這一頁做的是把已經發生的金額與日期換算成年化報酬率,屬於事後對帳。未來的報酬取決於市場,和過去這段期間算出來的數字沒有必然關係。想用某個假設的報酬率推未來金額,請回到複利計算機那幾頁。
參考來源
年基準與求解方式對齊試算表的 XIRR 與 XNPV,本頁另外把驗算過程顯示出來。