如何计算投资组合收益率(时间加权与资金加权)
用具体例子讲清简单收益率、时间加权收益率(TWR)和资金加权收益率(MWR,即内部收益率)的区别,避免入金和出金让你误判投资表现。
作者:Sonar team阅读约 7 分钟
如果你从没入金或出金,组合收益率就是(期末市值 − 期初市值)÷ 期初市值。一旦有资金进出,衡量投资本身的表现用时间加权收益率(TWR),衡量你自己的钱在考虑投入时点之后的表现用资金加权收益率(MWR,也叫内部收益率 IRR)。两者可能相差很大,而且都没错,只是回答的问题不同。
这篇指南用几个可以拿计算器验证的小例子,逐一说明这些方法。
"余额涨了"不等于收益
假设你的账户 1 月有 10,000 元,12 月有 15,000 元。如果中间你入金了 5,000 元,那么投资一分钱都没赚,多出来的是你自己的钱。任何有用的收益率,都必须把资金流动(入金、出金、账户间转入转出)和市场损益分开。
下面这些方法都是为了解决这个问题,区别在于怎样处理资金流动的时点。
方法一:简单收益率(没有资金进出时)
收益率 =(期末市值 − 期初市值)÷ 期初市值
例子(虚构):你投入 8,000 元,一年后变成 8,960 元。
收益率 =(8,960 元 − 8,000 元)÷ 8,000 元 = 12%
只有在期间没有任何增减时才适用。留在账户里的分红计入期末市值。
方法二:时间加权收益率(TWR)
时间加权收益率会剔除入金和出金的影响。每发生一次资金流动就把期间切开,算出每一段的收益率,再连乘起来。由于基金经理无法决定客户何时申购或赎回,这是比较基金经理时的标准指标;CFA 协会发布的 GIPS 全球投资业绩标准也以此为基础。基金净值不受申购赎回影响,也是同样的道理。
计算方法:
- 每次资金流动时切分期间。
- 每一段:收益率 = 段末市值(下一次资金流动之前)÷ 段初市值(上一次资金流动之后)− 1。
- 连乘:TWR =(1 + r1)×(1 + r2)× … ×(1 + rn)− 1。
计算示例
以下为说明用的虚构示例。
- 1 月 1 日,你以 10,000 元起步。
- 6 月 30 日,组合市值 11,000 元,上半年 +10%。
- 同一天你入金 10,000 元,组合变成 21,000 元。
- 12 月 31 日,组合市值 19,950 元,下半年 −5%(19,950 元 ÷ 21,000 元 − 1)。
TWR =(1 + 0.10)×(1 − 0.05)− 1 = 1.10 × 0.95 − 1 = +4.5%
入金不会被算作收益,入金金额大小也不影响结果。TWR 回答的是:"这一年投资表现如何?"
方法三:资金加权收益率(MWR,即 IRR)
内部收益率是让你所有入金和出金恰好增长到期末市值的那一个年化利率。它对投入资金更多的时期给予更大权重,所以会反映你的投入时点。
同一个例子里,要求出满足下式的 r:
10,000 元 ×(1 + r)+ 10,000 元 ×(1 + r)^0.5 = 19,950 元
第一笔 10,000 元投了一整年,第二笔投了半年。解得 r ≈ −0.3%。
从金额看:你一共投入 20,000 元,最后是 19,950 元,市场亏损 50 元。下跌的下半年里你投入的钱更多,所以尽管投资本身全年 +4.5%,你个人的结果却略微为负。
CFA 协会的一篇摘要正好指出了这种情况:同一笔投资,时间加权收益率可能为正,资金加权收益率却为负。
捷径:修正迪茨法(Modified Dietz)
如果不想解方程又想得到接近 IRR 的数字,可以用修正迪茨法,它按每笔资金流动实际投入的时间比例加权:
收益率 ≈(期末市值 − 期初市值 − 净入金)÷(期初市值 + 加权后的入金)
每笔资金流动的权重,是它发生之后剩余期间所占的比例。示例中入金之后还剩半年,所以权重是 0.5:
(19,950 元 − 10,000 元 − 10,000 元)÷(10,000 元 + 0.5 × 10,000 元)= −50 元 ÷ 15,000 元 ≈ −0.33%
和精确的 IRR 非常接近,用表格一分钟就能算出来。
IRR 也不用手算:Excel 的 XIRR 函数接收一列日期和金额(入金为负,期末市值为正),就能返回收益率。
该用哪一个?
| 你想知道的 | 用哪个指标 |
|---|---|
| 剔除入金影响后,投资本身表现如何? | 时间加权收益率 |
| 我的组合和指数或基金相比怎么样? | 时间加权收益率 |
| 考虑投入时点后,我自己的钱表现如何? | 资金加权收益率(IRR) |
| 按金额算,我赚了或亏了多少? | 市场损益(见下文) |
指数和基金公布的收益率都是时间加权的。想把你的组合和标普 500 或比特币比较,就用 TWR。
市场损益:用金额来看
百分比看不出规模,用金额看会更直观:
市场损益 = 期末市值 − 期初市值 − 净入金
示例中:19,950 元 − 10,000 元 − 10,000 元 = −50 元。
市场损益告诉你,在剔除你自己投入的钱之后,市场在这段时间里给你的资产增加或减少了多少。
把收益率年化
期间长短不同的收益率,要先年化再比较:
年化收益率 =(1 + 期间收益率)^(1 ÷ 年数)− 1
例子:两年总共 21%,年化是(1.21)^0.5 − 1 = 每年 10%,而不是 10.5%。
把很短的期间年化要小心。一个月涨 5%,年化后约为 80%,但这对一整年的结果几乎说明不了什么。
Sonar 怎样计算你的收益率
对你选择的每个期间,Sonar 显示三个数字:
- 时间加权收益率,按天连乘计算,入金、出金和账户间转账按当天价格估值,不会被算作收益。
- 市场损益,以你选择的货币显示。
- 净入金额,即投入的钱减去取出的钱。


你可以在同一张图上把自己的时间加权曲线和标普 500(SPY)、比特币做比较;对比基准只计价格,不含分红。如果导入过去的交易,Sonar 会用收盘价重建组合的每日市值,让收益率覆盖你的真实历史。可以在演示里看看,或者了解如何同时追踪加密货币和股票。
常见错误
- 把入金算作收益。 这是最常见的错误。
- 拿自己的 IRR 和指数的 TWR 比。 它们回答的问题不同,TWR 要和 TWR 比。
- 忽略账户间转账。 把币从交易所转到钱包,对整个组合来说既不是收益也不是入金。确认两边都有记录。
- 漏算分红和手续费。 分红增加收益,手续费减少收益。
- 把几周的数据年化。 结果基本都是噪音。
常见问题
多少算好的收益率?
没有统一答案。收益率只有放在同一期间、风险相近的指数旁边才有意义。用时间加权收益率,和一个与你持仓相似的指数比较。
为什么券商显示的收益率和我的工具不一样?
券商的计算方法各不相同:有的用 TWR,有的用 IRR,有的只显示相对持仓成本的简单盈亏。期间、分红和转账的处理方式也不同。比较之前先确认各自的方法。
浮动盈亏等于收益率吗?
不等于。浮动盈亏是仍然持有的仓位的市值减去持仓成本。收益率衡量的是一段时间内的表现。参见什么是持仓成本。
钱包之间转币应该怎么处理?
自己账户之间的转账,对整个组合是中性的。如果只记录了一边,它就会看起来像出金或入金,让收益率失真。把你用的所有钱包和交易所都纳入管理,或者在两边都记录这笔转账。
相关页面
- 投资组合追踪应用:股票、ETF 和加密货币一站管理在一个应用里追踪你的所有投资:来自钱包、交易所和券商账户的股票、ETF、基金、加密货币和现金,显示收益、资产配置和净资产。
- 什么是持仓成本?跨交易所如何追踪持仓成本就是你为一笔投资付出的钱,包含手续费。本文讲清它怎么计算、为什么转币会让成本丢失,以及怎样在多个账户里把它记准。
- 股票投资组合追踪,所有账户一目了然适用于股票、ETF 和基金的投资组合追踪。以只读方式连接美国券商账户或导入 CSV,查看收益、股息和资产配置。
- 如何管理加密货币和股票的资产配置衡量你的钱在股票、ETF、加密货币和现金之间怎样分布,发现持仓集中度和配置偏离,跨账户诚实地看待分散程度。附计算示例和常见盲点。