Skip to content

December 29, 2020

7

如何计算自己的投资回报率?TWR 时间加权收益率 vs IRR 内部收益率(更新)

作者: physixfan

这几天想看看自己这半年来的投资回报率如何,意识到如何计算投资回报率并不是一件完全trivial的事情,各券商直接给出来的数字可能也有不同的定义。其原因在于需要考虑资金流入流出的影响。

Basic Rate of Return

最naive的想法是,计算投资回报率就直接把一段时间内的利润除以本金即可,即:

Basic Return = (EV – BV) / BV

其中EV是Ending Value, BV是Beginning Value。但是有资金的流入流出怎么办?最naive的方法就是把净资金流入算作本金,即:

Basic Return = [EV – (BV+CF)] / (BV+CF)

其中CF是 Net Cash Flow。这样计算,最大的好处自然是简单粗暴;但是有一个致命问题就是,当资金流入流出很多或很大的时候,会让结果变得不准确。

举一个简单而极端的例子:假设年初投入本金$1千,某一天投入资金$1百万,一天后涨了1%赚了$1万之后把这$1百万撤走了,到了年末的时候,投资的股票价格正好跌回和年初一样。这样的话,这一年中净资金流入CF为0,本金BV为$1千,而EV是$1.1万,最后计算回报率的时候如果按上面公式计算分母(BV+CF)是$1千,于是回报率1000%。显然,这个结果没有任何意义。

大家每个月都有新的收入进来,都会投入到股市当中,因此资金的流入流出肯定是投资的重要一部分,因此 Basic Rate of Return 这种计算投资回报率的方式基本上可以说是错误计算方式了。而正确的计算方式有两种:时间加权收益率 Time-Weighted Return (TWR) 和内部收益率 Internal Rate of Return (IRR)。

Time-Weighted Return (TWR) 时间加权收益率

Time-Weighted Return (TWR) 时间加权收益率的宗旨是把整个时间段分成一个个小的时间段,在每个小时间段内资金流入流出为0,然后再把各个是简单的回报率相乘得到总的投资回报率。写成公式就是:

TWR = (1 + m1) * (1 + m2) * …* (1 + mN) – 1

其中mi为每一个小是简单的收益率。貌似通常小时间段的选取是一个月,但是随着信息时代的到来不需要手工计算了其实划分成一天甚至更短更靠谱一点。

TWR这种计算投资回报率的方式意图去掉资金量大小对投资回报率的影响。继续看上一段举的那个极端例子,如果小时间段的选取是一天,那么TWR计算出来的回报率就是一个不到1%的很小的数字了,是一个比较合理的结果。

TWR这种计算方式的好处是便于和benchmark(例如SP500基金)进行比较。看基金经理的业绩就比较适合看TWR,因为基金经理旗下的资金量大小不是自己能决定的,而是投资者决定的,拿基金经理的TWR和SP500的进行比较就很有意义。

Internal Rate of Return (IRR) 内部收益率

TWR固然方便和benchmark进行比较,但是忽略掉资金流入流出的影响也让它有很重要的缺陷。假设一年11个月收益都是正的,只有1个月的收益是负的,结果投资人很不幸就是在那回报为负的一个月加了重仓,就有可能导致这样的结果:TWR收益是正的,但是其实这位投资者这一年却赔了不少钱。这时就要引入另一种计算方式,内部收益率 Internal Rate of Return (IRR),或者叫金钱加权收益率 Money-Weighted Return (MWR)。

内部收益率 Internal Rate of Return (IRR) 的宗旨是给重仓的时间更大的权重,轻仓的时间更低的权重。其具体计算方式稍微有点复杂,为了避免误导我这里还是直接引用阅微堂写的介绍吧:

将初始投入视为现金流入(大于 0 ),期末资产视为现金流出(小于 0 ),那么 IRR 即使得现金流的现值等于 0 的折现率。我们使用下述公式:

\[\sum_{i=1}^T f_{t_i}(1+r)^{-t_i}=0\]

其中\(f_{t_i}\)为时间点\(t_i\)上的现金流,\(r\)即 IRR。在 IRR 的计算中,钱在不同时候收益率是一样的。并且它只对期间整体进行定义,分期的收益率和整体的收益率并无直接的关系。上述的定义较为复杂,掩盖了 IRR 的一些本质。事实上,IRR 近似等于收益额除以平均占用资金。这里平均占用资金是指各期占用资金的算术平均值。

IRR 这种计算方式的好处是能体现出投资者择时的影响,能反应出真实的总个人得失,但是拿 IRR 和 SP500 直接比较就比较不合理了。

如何查看/计算自己的投资收益率

在券商的界面中,他们总是会给出一个Portfolio Performance,大家可以仔细看看说明页他们给出的到底是哪个数字。例如下图是Schwab的界面,点开设置的话发现这俩都能选择,其中默认选择是 TWR。M1finance显示的回报率数字则是 IRR,不能更改。

如果你的投资分散在几个不同的券商中,则单一券商显示的结果就不完整了,这时需要自己计算。

TWR 的计算需要完整的每天的余额或者需要全部交易记录,如果没有自动化工具的话计算起来会相当繁琐,不过只要你不是准备自己开基金的话那其实还是 IRR 对你更有意义一点。

IRR 的计算则比较容易,虽然公式看着复杂但是 Excel 提供了一个XIRR函数可以直接使用。需要用到的数据只有某个时间段起始日期时候的余额、结束日期时候的余额、以及这个时间段内的所有资金流入流出记录。IRR 的计算不需要导入交易记录,也不需要知道每日余额(当然,该时间段开始和结束这两天的余额需要填入)。XIRR 函数使用时唯一需要注意的点就是结束日期时候的余额需要添加一个负号填入作为出金。一个简单的例子见下面的截图:

总结

TWR 和 IRR 这两种计算方式,一个侧重反应投资策略本身的回报试图避免资金流入流出的影响,一个侧重考虑不同时间仓位轻重的影响反应总的个人得失。总的来说,这两种计算方式都是有意义的,但是看待这个数字的时候应该清楚自己的目的是什么以便选择更合理的那一个。

Read more from Investment
7 Comments Post a comment
  1. Dec 31 2020

    虽然包括Fidelity在内的不少券商都自动给客户计算投资回报率,但是像博主这样的文章还是非常值得一读的。我也有自己的个人投资理财blog,不知道能不能和博主互放blog的链接?

    https://www.wealthyjourney.com

    Reply
  2. o6tgr
    Jan 1 2021

    我的 Schwab 没有 Rate of Return 这个标签,只有第二个 Schwab Portfolio Checkup,请问需要什么特别的操作才能显示这个标签吗?

    Reply
    • Jan 2 2021

      我也不知道哎 我这账户直接就有

      Reply

Trackbacks & Pingbacks

  1. 我的2020年投资回顾 - 宇宙的心弦
  2. 如何计算投资回报率 - Crypto Margin Trading Guide
  3. 2021年投资回顾 - physixfan
  4. 2022年投资回顾 - physixfan

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments