python - numpy.irr 和 Excel IRR 函数的 IRR 结果不同
问题描述
我有以下年度现金流:
w=np.array([ -56501, -14918073, -1745198, -20887403, -9960686, -31076934,
0, 0, 11367846, 26736802, -2341940, 20853917,
22166416, 19214094, 23056582, -11227178, 18867100, 24947517,
28733869, 24707603, -17030396, 7753089, 27526723, 31534327,
26726270, -24607953, 11532035, 29444013, 24350595, 30140678,
-33262793, 5640172, 32846900, 38165710, 31655489, -74343373,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, -8727068])
我使用 np.irr 计算 IRR
np.irr(w)
Out[141]: -0.05393588064654964
当我在 Excel 中对相同的现金流使用 IRR 函数时,我得到 12%。这两个函数通常产生相同的结果。有谁知道为什么在这种情况下结果如此不同?谢谢!
解决方案
对于给定的现金流,内部收益率不是唯一的;请参阅多个 IRR。r
满足的 numpy 和 Excel 值NPV(r) = 0
,其中 NPV 是净现值。
这是 中数据的 NPV(r) 图w
。红星标记 IRR 值(其中 NPV(r) 为零)。
这是生成情节的脚本:
import numpy as np
import matplotlib.pyplot as plt
w = np.array([ -56501, -14918073, -1745198, -20887403, -9960686, -31076934,
0, 0, 11367846, 26736802, -2341940, 20853917,
22166416, 19214094, 23056582, -11227178, 18867100, 24947517,
28733869, 24707603, -17030396, 7753089, 27526723, 31534327,
26726270, -24607953, 11532035, 29444013, 24350595, 30140678,
-33262793, 5640172, 32846900, 38165710, 31655489, -74343373,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, -8727068])
r_excel = 0.1200963665
r_numpy = np.irr(w)
rr = np.linspace(-0.055, 0.16, 500)
npvals = np.array([np.npv(r, w) for r in rr])
plt.plot(rr, npvals/1e6, alpha=0.8)
plt.plot(r_numpy, 0, 'r*')
plt.plot(r_excel, 0, 'r*')
plt.grid(True)
plt.xlabel('r')
plt.ylabel('NPV(r) [millions]')
plt.show()
推荐阅读
- python - 具有变量类型的 Django 表单
- java - 在多个帧之间传递变量
- wordpress - `woocommerce_save_product_variation` 动作挂钩之前的哪个动作?
- asynchronous - 无法加载类型“System.Diagnostics.DebuggerStepThroughAttribute”
- prolog - 如何在重复中累积(永远)
- tensorflow - 矩阵wrt矩阵的TensorFlow梯度没有意义
- mongodb - MongoDB 中的 $unwind,$project 运算符是什么?
- angular - Angular - 具有来自另一个控件的 valueChanges 的异步验证器
- java - 如何在Java中允许越界索引
- docker - 使用驱动程序 NAT 的 Docker 主机名和其他容器解析