drippath

定投收益率怎么算:总收益率、年化和 XIRR 为什么差这么多

假设每月投入 1,000,一共 12 笔,一年后值 13,200。总收益率是 10%,按下文列出的日期用 XIRR 算,年化约 18.9%。前者看累计投入赚亏了几成,后者把每笔钱进出的日期也算进去:定投的钱陆续到位,不能把全部本金都当成放满了一年。

十二笔每月投入在账户里停留的月数,从第 1 笔的 12 个月递减到第 12 笔的 1 个月,对比总收益率 10% 与 XIRR 年化 18.9%
每根横条表示一笔钱在计划里停留的时长。在这个一年期算例里,本金陆续投入,所以 XIRR 年化高于总收益率;持有更久时,两者不一定有这个高低关系。图中为假设流水,2026 年 10 月按 XIRR 公式复算。

最直观的那个数:总收益率

公式只有一行:

总收益率

(当前市值 − 累计投入)÷ 累计投入

开头只是一个假设算例:2025 年 1 月 1 日至 12 月 1 日,每月 1 日投 1,000,一共 12 笔、12,000;2026 年 1 月 1 日估值为 13,200。没有中途卖出、不计手续费,总收益率就是 1,200 ÷ 12,000 = 10%。金额和日期只为演示,不是真实账户记录。

这个数回答的问题很具体:我掏出去的钱,现在多了还是少了,多少成。它不需要知道你是哪天投的。看到平台或记账软件显示「收益率」时,可以先用这个公式核对它是否采用了同一种算法。

先约定算哪笔钱:本文只核算这一份定投计划,不混入账户里的其他资产。累计投入是从计划外补进来的钱及另付的费用;当前市值包括计划内的持仓和现金。上面的算例每笔钱都立即买入,没有留存现金。

如果你没有卖过、没有留存现金,并且手续费算进了买入成本,它和「(现价 − 定投均价)÷ 定投均价」是同一个数:市值是份数乘现价,累计投入是份数乘均价,份数约掉了。均价本身怎么算,见定投均价那一篇。

总收益率除以年数,为什么不对

想知道「一年多少」,最顺手的做法是拿总收益率除以年数。投了三年赚 20%,那就是每年 6.7%?

对一次性买入,这么算只是粗糙一点(三年 20% 按复利折算是每年约 6.3%)。对定投,问题出在分母:累计投入里的钱,并不是三年都在账户里。第一笔待满了三年,最后一笔只待了一个月。平均下来,一块钱在里面只待了一年半左右。

再设一份假设流水:2023 年 1 月 1 日至 2025 年 12 月 1 日,每月 1 日投入 1,000,共 36 笔;2026 年 1 月 1 日估值为 43,200,不计费用、没有中途取出。总收益率是 20%,XIRR 年化约 12.2%,几乎是「20% ÷ 3」的两倍。XIRR 把各笔钱不同的停留时长纳入计算,并不假设 36,000 全部放满三年。

所以只要你想说「每年」,就得把每笔钱进来的日期算进去。手算很麻烦,表格一个函数就够了。

用 XIRR 把时间算进去:表格里怎么填

XIRR 是 Excel 里的一个函数,微软官方说明对它的描述是「返回一组不一定定期发生的现金流的内部收益率」。翻成定投的话:每笔钱什么时候进、什么时候出、各多少,它都按实际日期算,算出的是一个折成每年的比率。这类按资金进出时间加权的年化,常被叫作资金加权收益率。

A1 写「日期」,B1 写「现金流」。以下用第一节的 12 笔假设投入演示,真实账户则换成自己的流水:

  1. A 列写实际投入日期,本例 A2 到 A13 依次为 2025 年 1 月 1 日至 12 月 1 日。用真正的日期值,例如 =DATE(2025,1,1),不要把日期存成文本。扣款失败、没有实际投入的那期不要写进去。
  2. B 列写金额,投进去的钱写负数(钱离开你的口袋),比如 −1000。
  3. 最后加一行估值日期和期末市值,金额用正数。本例 A14 是 2026 年 1 月 1 日,B14 是 13200;核算自己的账户时,才换成实际估值日(例如今天)和当天计划内全部持仓及现金的价值。
  4. 在空白格里输入 =XIRR(B2:B14, A2:A14),把单元格格式设成百分比。

本例 B2 到 B13 都填 −1000,末行填上面的日期与 13200,结果约为 18.9%。换了估值日,即使末行金额不变,年化也会变。

几个容易填错的地方,都写在微软的说明里:金额里至少要有一个正数和一个负数,否则返回 #NUM! 错误——忘了加最后那行市值,就会看到这个报错;第一行日期被当作起点,其余日期按一年 365 天往回折算;第三个参数「预估值」可以不填,不填时默认从 10% 开始试算。Google 表格里也有同名函数,填法一样。

日期应对应钱实际进入或离开这份计划的那天。在扣款即买入的计划里,扣款顺延了,就写实际扣款日。若早已一次性把全部本金放进计划,再逐月买入,这些买入只是计划内部换资产,不能再次记成新投入;待投现金也要计入计划市值。

投了不到一年,年化为什么容易误导

还是假设每月投入 1,000,但只在 2025 年 1 月 1 日、2 月 1 日、3 月 1 日各投一笔,2025 年 4 月 1 日估值为 3,150,没有其他进出或费用。总收益率是 5%。

放进 XIRR,结果约 34.4%。

算法没问题,问题在含义。这三笔钱平均只在账户里待了两个月,两个月赚 5%,按复利「假如一整年都这样」去推,就推出了三成多。可比特币两个月的涨跌,没有任何理由在接下来的十个月里照样重复。年化在这里做的事,就是把一小段行情外推成一整年。

反过来也一样:沿用这三个投入日期,只把 2025 年 4 月 1 日的估值换成 2,850,总收益率 −5%,XIRR 年化约 −26.9%。

只投了几个月时,更适合先看实际赚亏金额和总收益率,年化留作核账,不拿它推测接下来一年。投满一年也不会让年化变成预测。记录更长,能观察的历史更多,但期末价格、投入日期和金额仍会影响结果。

一年定投亏了 50%,为什么 XIRR 更低

本站历史结果测算里,投满 12 个月的起点中最差的一个,总收益率是 −50.0%。如果你的账户也走到这一步,用 XIRR 看会是多少?

这里只借用「亏一半」这个结果另做假设:沿用第一节 2025 年每月 1 日的 12 笔投入,把 2026 年 1 月 1 日的估值改成 6,000。总收益率 −50%,XIRR 约 −76.0%。这个年化只对应这里的假设日期,不是那个历史起点的真实 XIRR。

这份流水里的钱陆续投入,停留时长平均只有半年多;按这些日期折成年化,负数就更低。实际亏损金额仍是 6,000,占累计投入的 50%,不能把 −76.0% 再乘本金当成亏损额。也不能推广成「年化总会放大亏损」:持有期、每笔金额和日期一换,两种百分比的高低关系也可能改变。

下跌时,先分清「实际少了多少钱」和「把这段结果折成年化是多少」,再看是否继续。不能仅因其中一个数字更吓人就判断计划对错。资金用途和自己能否承担损失也要重新考虑,见币价腰斩那一篇。

中途卖过、手续费另付,两种算法怎么改

卖过一部分,先看卖出款去了哪里。如果钱已经取到这份计划外,总收益率是(计划当前市值 + 累计取出金额 − 累计投入)÷ 累计投入。只看剩余市值,会漏掉已经拿回来的钱。如果卖出款还留在计划里,就把它作为现金计入当前市值,不再加到「累计取出金额」,否则会重复计算。

XIRR 也按相同范围记账:钱实际取出计划的那天加一笔正现金流;卖币后现金仍留在计划里,不单独记这笔正数,末行市值包含它。增加流水后,要同步扩大 XIRR 的金额和日期范围,让新增流水及末行估值都被引用,两列行数也要相同。

这里两种算法会分开:卖出之后,「(现价 − 均价)÷ 均价」只描述剩下那部分持仓,不再等于整个账户的总收益率。想知道整件事做得怎么样,看总收益率或 XIRR;想知道手上这些币现在浮盈浮亏,才看均价那个数。剩余持仓的成本价有两种摊法,均价那一篇讲过。

手续费另付。买入金额之外、从计划外另付的费用,要加进累计投入,XIRR 对应日期的负数也包含这笔费用。若手续费已经从投入金额或计划内现金扣除,它已反映在持仓或现金余额中,不要再加一次。漏记另付费用会低估投入,但不能据此说频率越高偏差越大:总买入金额和费率相同时,纯比例手续费总额不因笔数增加;每笔固定费或最低收费才可能增加高频成本。量级见手续费会吃掉多少收益。

拿收益率去比较之前,先对齐是哪一种

收益率最常见的误用,不是算错,而是拿两种不同的数放在一起比:

  • 假设定投一年总收益率 10%,而年初一次性买入赚了 15%,不能只换成年化就判哪种做法更好。若年初已经备好同一笔本金,比较时要统一起止日期、费用和估值范围,把定投尚未买币的钱及其收益也算进去;否则只对已买入部分算 XIRR,会漏掉待投现金。若本金是逐月才拿到的,年初一次性买入本就不是同样的可选条件。两种做法各自的代价,见定投还是一次性买入。
  • 平台页面上的「收益率」没写算法时,可用本文公式初步核账:没有取出款时用第一节,取出过钱则用上一节的公式,并确认手续费和留存现金是否计入。一次结果对得上,只能说明这次数字相同,不能确认算法完全一样;还要找页面对收益率的定义。
  • 「输入年化收益率,算出到期金额」是在做假设情景:它先指定一个稳定回报,再推算余额,并没有算出你的真实收益率。用它理解假设怎样影响结果可以,把输入的年化当成比特币的未来回报就没有依据,原因见能不能赚钱那一篇。

记一条就够:总收益率说的是结果,XIRR 说的是效率,两个都要会算,但别把它们当成同一个东西去比。如果你只打算长期投、不跟别人比,第一节那一行公式已经能告诉你大部分需要知道的东西。

来源与算法说明:XIRR 的定义、参数与报错规则引自微软支持页面「XIRR 函数」(2026 年 10 月 18 日查阅)。文中 12 期、36 期、3 期都是假设流水,投入日期和末行估值日在各节列明,不计手续费、没有中途取出。复算时求使 Σ[现金流 ÷ (1 + r)^((日期 − 首日) / 365)] = 0 的年化率 r,结果保留到小数点后一位;这些结果不代表真实行情。历史最差起点 −50.0% 引自本站历史结果测算(其标注数据为 Yahoo Finance BTC-USD 月线,查证于 2026 年 8 月 26 日),本文没有据此宣称该窗口的真实年化。过去的结果不代表未来。

文中的任何收益率都只用来说明算法,不是对你账户结果的预期,也不是选择投入金额的依据。