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

使用numpy_financial.irr计算月度IRR:数组构造错误排查

月度IRR计算的现金流数组构造错误排查

错误点分析

你构造的现金流数组存在三个核心问题,导致IRR结果偏差:

1. 初始余额符号错误

IRR计算遵循现金流出为负、现金流入为正的规则:初始余额initial_balance是你投入账户的起始资金,属于现金流出,因此数组第一个元素(t=0时刻)应为 -initial_balance,而非正数值。

2. 每日现金流符号完全反转

你提供的每日现金流数组是账户资金的变动额(正为账户增加,负为账户减少),但IRR计算需要的是投资者视角的现金流:

  • 账户资金增加→你向账户投入资金(现金流出),对应负数值
  • 账户资金减少→你从账户取出资金(现金流入),对应正数值
    因此每日现金流数组的所有元素符号需要反转。

3. 时间点错位冗余元素

你在每日现金流前额外添加了一个0,导致时间点错位(原本31天的现金流被扩展为32天),直接使用原31天的现金流数组即可。

修正后的代码

from numpy_financial import irr

initial_balance = 579676.18
final_balance = 2921989.17

# 原每日账户变动现金流
daily_account_changes = [0, 22700.00, 0 ,0 ,0 ,5320.00 ,0 ,0 ,-39900.00 ,0 ,0 ,0 ,0 ,0 ,0 ,-2278500.00 ,0, 31472.00, -42000.00, 0 , 0 , 0, -70300.00, 0, 0, 0, 0, 0, 0,36650.00, 0]

# 转换为投资者视角的现金流:账户变动取反
daily_cashflows = [-x for x in daily_account_changes]

# 正确构造现金流数组:初始流出 + 每日现金流 + 期末流入
final_array = [-initial_balance] + daily_cashflows + [final_balance]

# 计算日IRR(结果应接近0.0001465)
daily_irr = irr(final_array)
print(daily_irr)

验证逻辑

修正后的数组满足IRR核心逻辑:初始投入资金的折现、每日现金流的折现、期末提取资金的折现总和为0。此时计算出的IRR为日内部收益率,若需月度IRR,可通过(1 + daily_irr) ** 31 - 1转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:10:07