You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用node xirr库计算xirr时报Newton-Raphson algorithm failed to convergence错误如何解决

XIRR计算报错Newton-Raphson algorithm failed to converge的原因与解决方案

报错产生原因

  • 你的现金流时间间隔仅为6天,且为短期亏损场景,对应年化收益率绝对值极高,超出了xirr库默认牛顿迭代算法的初始猜测值范围、迭代次数上限和收敛阈值,算法无法在默认规则下找到符合精度要求的解,因此抛出收敛失败错误。
  • xirr库默认参数是面向常规投资场景(时间跨度多为月度/年度级别,收益率在合理区间)设置的,不适用于你这种超短期极端收益场景。

解决方案

方案1:调整xirr库迭代参数

手动传入初始猜测值、最大迭代次数、精度阈值参数,适配极端场景:

const xirr = require('xirr');

const cagr = xirr([
  { amount: -99995, when: new Date(2021, 7, 3)},
  { amount: 97642, when: new Date(2021, 7, 9) }
], {
  guess: -0.7, // 结合短期亏损的实际情况设置接近真实值的初始猜测
  maxIterations: 1000, // 提升最大迭代次数
  tolerance: 1e-6 // 按需调整精度容忍度,也可适当放大提升收敛概率
});

console.log(cagr);

运行后可得到正确的年化收益率约为-76.3%。

方案2:手动折算年化收益率

超短期现金流场景可以跳过XIRR迭代,直接用公式计算,完全规避收敛问题:

持有期收益率 = (期末金额 / 期初金额) - 1
年化收益率 = (1 + 持有期收益率) ** (365 / 持有天数) - 1
代入你的数据计算结果和调整参数后的XIRR计算结果完全一致。

内容的提问来源于stack exchange,提问作者Coder_m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:36:04