如何正確計算投資報酬率

前言

前幾篇有提到,我會花點時間撰寫一下如何計算投資報酬率的文章。為什麼要寫這樣的文章呢?主要是因為,我注意到網路上投資的資料很多,講如何正確計算投資報酬率的中文文章卻很少。

網路上講投資報酬率計算的文章,要碼是錯誤的用了根本不該用的最簡單的公式(請參見下一節:「最直白的算法與它的問題」),要碼是只提了 TWR 或是 MWR/IRR 的其中一種(詳細內容會在下面說明)而沒提到另外一種,也沒有提 TWR 與 MWR 究竟在什麼時候用、其意義為何。

有鑑於此,我決定整理一篇關於如何正確計算投資報酬率的文章,希望對大家有所幫助。這篇會用到一點點數學,也會把公式列出來。但不用緊張,你不需要真的把公式背起來用,了解其意義就可以了,實際的計算有各式各樣的工具可以用,完全不用自己慢慢算。

其實,畢竟投資報酬率的計算只不過是一些簡單的概念與公式,這比主動選股要看的東西簡單多了。如果連投資報酬率的正確計算都做不到,那我真的覺得最好不要花太多時間在主動選股了,定期投資全市場 ETF 是這種人最好的選擇。

最直白的算法與它的問題

投資報酬率 (return on investment, roi) 最直白的算法應該沒有人不會。簡單來說,就是利潤除以本金。

\[
\begin{aligned}
roi &= \frac{Revenue}{Investment}\\ &= \frac{gain\ from\ investment − cost\ of\ investment}{cost\ of\ investment}
\end{aligned}
\]

但如果拿這個算法來用在投資上,這個算法有兩個明顯的問題。

  1. 完全沒有考慮時間效應
  2. 對於長期、有出入金的狀況,公式有模糊地帶

首先第 1 點,完全沒有考慮時間效應。假設有兩位投資者,本金都是 1000 元,且都賺了100 元,但一個投資者只花了一個月,另一個投資者則花了一年,從這個簡單的公式來說,投資報酬率都是 10%,但很明顯,第一個投資者賺錢的能力遠高於第二位,因為他的速度是十二倍。而這個簡單公式,完全無法體現這個賺錢速度的差異。

第 2 點,對於長期、有出入金的狀況,公式有模糊地帶。假設我今天有月薪十萬,每個月拿一萬投資。經過一年後,我帳戶入金了十二次共 12 萬,第二年第一個月,因個人需求,出金 2 萬而不入金,接著照規矩每月入金一萬。到第二年年底,我總共入金 23 萬,出金 2 萬,那我成本到底該用 23 萬算,還是用 23-2 共 21 萬算?

直覺上來說,實際上我等於只出了 21 萬算,所以應該用 21 萬當本金。但如果延用這樣的思維,換成另一個情況,我於第一個月入金一萬,然後這個月賺了 100 元,第二個月出金一萬,帳戶內剩下淨利 100 元,那豈不是我本金應該要用 0 算,投資報酬率變成無限大?

理論上來講用無限大也沒錯,但這樣一來,淨利 100 或 1000 或 10000 都是無限大的倍率,變成根本無從比較,這樣的投資報酬率,其實是一點用也沒有的。所以在投資上,根本不應該用這樣的方式來計算投資報酬率。

為了解決上述的兩個問題,在投資上,正確的投資報酬率我們應該要採用另外兩種算法。分別是 Time-Weighted Rate of Return (TWR, 時間加權收益率) 與 Money-Weighted Rate of Return (MWR, 金錢加權收益率)

Time-Weighted Rate of Return

Time-Weighted Rate of Return 通常簡寫為 TWR ,中文翻譯為時間加權收益率。

計算方式

TWR 的計算方式很簡單,以每次出入金為分界點,或是以固定一小段時間為周期,分段進行計算投資報酬率,最後將每段的報酬率加一之後相乘,最後減去一,就是 TWR。

單看文字可能有點難理解,這裡直接舉例,假設我們每月 1 日開盤前進行出入金:

  2020/01/01 2020/02/01 2020/03/01 2020/04/01
前期資金 0 1050 1155 1212
增減資金 1000 0 45 -12
等效初始本金 1000 1050 1200 1200
當月結餘 1050 1155 1212 1224
當月利潤 50 105 12 24
階段投報率 50/1000=5% 105/1050=10% 12/1200=1% 24/1200=2%

上面的 TWR 計算方式如下

\[
\begin{aligned}
TWR &= (1+5\%)\times(1+10\%)\times(1+1\%)\times(1+2\%)-1\\
&= 1.05\times 1.1\times1.01 \times1.02-1\\
&= 0.189881\\
&\approx 18.99\%
\end{aligned}
\]

上面的表格,是以一個月為週期去計算,但其實我們不一定要固定為一個月,我們可以用出入金為分界點整理為三個區間。

  2020/01/01 ~ 02/29 2020/03/01~03/31 2020/04/01~04/30
前期資金 0 1155 1212
增減資金 1000 45 -12
等效初始本金 1000 1200 1200
當月結餘 1155 1212 1224
當月利潤 155 12 24
階段投報率 155/1000=15.5% 12/1200=1% 24/1200=2%

上面的 TWR 計算方式如下

\[
\begin{aligned}
TWR &= (1+15.5\%)\times(1+1\%)\times(1+2\%)-1\\
&= 1.155\times1.01 \times1.02-1\\
&= 0.189881\\
&\approx 18.99\%
\end{aligned}
\]

仔細看你會發現兩種算法結果完全一樣。所以 TWR 的算法其實可以固定周期計算(實際上一個月由於日數不同,不能算是固定周期就是了,但這裡簡化不討論,你可以自己改成單日計算去算一次,結果仍是一樣的),也可以用出入金為分割點計算,完全等效。

實際意義

在解釋實際意義時,我們用一個非常簡單的案例來講解會比較直觀。想像我們每年年初入金,狀況如下:

  2020/01/01 ~ 2020/12/31 2021/01/01~2021/12/31
前期資金 0 1000
增減資金 500 1000
等效初始本金 500 2000
結餘 1000 1500
當月利潤 500 -500
階段投報率 500/500=100% -500/2000=-25%

上面的 TWR 計算方式如下

\[
\begin{aligned}
TWR &= (1+100\%)\times(1+(-25\%))-1\\
&= 2\times 0.75-1\\
&= 0.5\\
&= 50\%
\end{aligned}
\]

這個時候,我們假設將本金完全移到第一天去,然後每個周期用一樣的投報率去演變,結果會怎樣呢?

  2020/01/01 ~ 2020/12/31 2021/01/01~2021/12/31
前期資金 0 3000
增減資金 1500 0
等效初始本金 1500 3000
階段投報率 100% -25%
當月結餘 1500x(1+100%)=3000 3000x(1-25%)=2250

這時候用最傳統的算法,利潤除以本金(這時候因為中間沒有任何出入金,所以沒有本金定義的問題)是 (2250-1500)/1500=50% ,你會發現跟我們上面計算出來的 TWR 完全相同,都是 50% 報酬率。

所以,TWR 可以等效於將所有本金都於起始時投入之後,照完全相同的波動去起伏會有的理論報酬率。

有了這個例子再回想其計算方式,可以從數學定義上很直觀看出來, TWR 等於是任何初始本金用相同波動去起伏會有的理論報酬率

TWR 這種計算方式,可以解決等效本金為零時,傳統算法會變成無限而無法比較的問題。想像下面兩種狀況:

  2020/01/01 ~ 2020/12/31 2021/01/01~2021/12/31
前期資金 0 1000
增減資金 500 -500
等效初始本金 500 500
結餘 1000 1000
當月利潤 500 500
階段投報率 500/500=100% 500/500=100%

這種狀況,總利潤 500,TWR 為 300%

\[
\begin{aligned}
TWR &= (1+100\%)\times(1+100\%)-1\\
&= 2\times 2-1\\
&= 3\\
&= 300\%
\end{aligned}
\]

第二種:

  2020/01/01 ~ 2020/12/31 2021/01/01~2021/12/31
前期資金 0 1000
增減資金 500 -500
等效初始本金 500 500
結餘 1000 550
當月利潤 500 50
階段投報率 500/500=100% 50/500=10%

這種狀況,總利潤 50,TWR 為 120%

\[
\begin{aligned}
TWR &= (1+100\%)\times(1+10\%)-1\\
&= 2\times 1.1-1\\
&= 1.2\\
&= 120\%
\end{aligned}
\]

同樣是等效本金為零,前者 TWR 較高,而其總利潤確實就是比後者多,在投資週期一樣長的前提下,前者確實較為厲害。

Money-Weighted Rate of Return

Money-Weighted Rate of Return 通常簡寫為 MWR ,它也可以稱為 Internal rate of return (IRR) 中文翻譯為金錢加權收益率或是內部報酬率。

金錢的時間價值 (Time Value Of Money)

要解釋 MWR,我們需要先簡單的講一下「金錢的時間價值」(Time Value Of Money)這個概念。「金錢的時間價值」(Time Value Of Money)是一個經濟學上的術語,我們在這就不用太學術的方式來深究這個名詞,我們用很簡單的生活概念來講解。

在現實生活中,如果你有一筆錢,這筆錢你不能花,也不能投資的情況下,請問你會拿去做什麼呢?如果是在台灣,我相信你會拿去銀行或是郵局存起來,為什麼這樣選呢?因為錢以現金的形式放著,它不會自己變多,而拿去存,可以領利息。

那既然這樣,我們是不是可以假設,金錢會以隨著時間增長,自然地再生出錢來呢?如果我們假設在一般狀況下,錢可以穩定的生錢,那其實就意味著,現在的一百元,跟未來的一百元,其價值其實是不同的。未來的一百元,價值比今天的一百元要小,因為我可以用更少的錢去生利息就累積出一百元的錢。

這,就是最簡單的「金錢的時間價值」的概念。

貼現率/折現率 (Discount rate)

沿用上面儲蓄的例子,假設今天我拿一萬元去存錢,年利率 2%,且每年配息/複利一次,那麼一年後,一萬元會變成一萬零兩百元。

那麼,如果我今天有一萬零兩百,而市場上的存錢利率整體來說約為 2% 的話,從上面的例子我們可以得知,我手上這一萬零兩百元,可以折算成去年的一萬元,這個概念就是所謂的折現,而 2%,就是這個例子用的折現率又或稱為貼現率。

現值與淨現值 (Net Present Value)

我們現在已經知道,對於不同時間的錢,我們都可以用一個特定的折現率去計算成對應今天的現值。要計算現值的方式很簡單,就用上面的儲蓄例子做思考,假設初始存款也就是現值為 PV (Present Value),每期的利率為 r ,且有 n 期,則以複利計算的最後存款也就是終值 FV (Future value),就會是:

\[
\begin{aligned}
FV = PV\times(1+r)^n
\end{aligned}
\]

所以,移項一下就可以得知現值 PV (Present Value)的計算方式為:

\[
\begin{aligned}
PV = \frac{FV}{(1+r)^n}
\end{aligned}
\]

而如果我們把未來的出金入金,每一筆用這樣的公式對應到投資起始日的現值,將這個值加總,就是現在的「淨現值」(Net Present Value, NPV)。

\[
\begin{aligned}
NPV = \sum_{n=0}^N\frac{FV_n}{(1+r)^n}
\end{aligned}
\]

計算公式

講完了金錢的時間價值與貼現率還有淨現值的概念之後,我們就可以來介紹實際的 MWR 的算法了。

MWR 的公式概念很簡單。由於

現在的錢投入到某個投資 = 未來的錢

而現值/淨現值的概念告訴我們

未來的錢 = 用這個投資的投資報酬率當成折現率折回現在的錢

所以

現在的錢投入到某個投資 = 用這個投資的投資報酬率當成折現率折回現在的錢

左右同減處理一下就是

0 = 用這個投資的投資報酬率當成折現率折回現在的錢+(-現在的錢投入到某個投資)

那麼,從這個等式我們就可以得知,如果我們把現在投資的本金當成負的現金流(負號項),未來投資帶給我的錢當成正的現金流並把它折算回現在的錢,加起來就應該要是 0。

所以 MWR 的公式就是,把每一期的金錢計成 $C_n$ 的話,淨現值為 0 解出來的投資報酬率 r。

\[
\begin{aligned}
NPV = \sum_{n=0}^N\frac{C_n}{(1+r)^n} = 0
\end{aligned}
\]

實際範例

假設一個投資我每年年初都會把利息取走,並在最後一天把本金與當日利息一起取回,金流如下

日期 金流
2021/1/1 -2000
2022/1/1 100
2023/1/1 100
2024/1/1 2100

我們假設 10% 的貼現率算看看折現金額加總會是多少

日期 金流 10% 折現乘數 折現金額(四捨五入)
2021/1/1 -2000 1 -2000
2022/1/1 100 (1+10%)^1 = 1.1 90.91
2023/1/1 100 (1+10%)^2 = 1.21 82.64
2024/1/1 2100 (1+10%)^3 = 1.331 1577.76

可以發現折現金額加總等於 -248.69,太低了,這代表我們猜得貼現率太高,使正現金流折回初始日期折太多了。因此實際的 MWR 應該是要比 10% 小。

那我們猜 5% 看看。

日期 金流 5% 折現乘數 折現金額(四捨五入)
2021/1/1 -2000 1 -2000
2022/1/1 100 1.01 95.24
2023/1/1 100 1.1025 90.70
2024/1/1 2100 1.157625 1814.06

加起來發現折現金額總合為 0,因此這樣的金流的內部報酬率,也就是 MWR ,就等於 5%

生活中實際計算

從上面的實際範例可以知道,由於我們在每一筆金流要折現的時候要算次方,實際計算其實很難算,所以現實生活中,我們幾乎不會自己手算。

在實際生活中 Excel 與 Google Sheet 都有提供一個公式叫做 XIRR 可以直接使用。

將金流像上面那樣,再套公式就可以讓電腦自己幫你算出正確的 IRR 了。詳細的使用方式可以參考這篇的範例

使用時機與比較

從上面的介紹,可以簡單的注意到幾點。第一個是,TWR 本身其實不在意時間效應,而是在計算許多段落累積起來的波動所能帶來的報酬,所以拿 TWR 來比較兩個不同的投資組合的時候,前提是兩者的總投資時長必須相等,否則無法比較。

第二個是,TWR 會消彌出金入金帶來的影響,所以這對於常見的共同基金比較是非常合理的算法,因為通常共同基金的經理人是不能影響出入金的(顧客購買基金時,就等於投資組合有入金,而顧客贖回時,基金就必須出金),所以比較經理人無法掌控金流的基金或是被動式 ETF 時,應採用 TWR。

這裡順便提一下,在投資網站上看到的被動型的 ETF 的 NAV Total Return (Net asset value total return),其實意義上等同其 TWR。

再來,上面提到 TWR 會消彌出入金帶來的影響,也不在意時間效應,適合用來比較不響考慮金流的狀況,那實際要考慮金流與時間效應的時候,就應該要用 MWR。

對一般人個人而言,應該要以 MWR 來計算與比較不同的投資標的,才是正確的做法。

總結

  • 比較經理人無法掌控金流的基金或是被動式 ETF 時,應採用 TWR
  • 個人計算投資報酬率或是比較經理人可以掌控金流的基金時,應用 MWR/IRR
  • TWR 意味著當資金於起始時投入並依據相同波動變化時的理論報酬率
  • MWR/IRR 意味著考慮時間效應之後的個人報酬率
  • 當投資的 TWR 高於全市場指數 NAV 時,代表選股做得好
  • 當投資的 MWR 高於全市場指數 NAV 時,代表實際表現贏過大盤
  • 當一個投資組合的 MWR 高於 TWR 時,代表投入資金的時機抓得好
  • 當一個投資組合的 MWR 低於 TWR 時,代表投入資金的時機抓得不好