summaryrefslogtreecommitdiff
path: root/numpy/lib
diff options
context:
space:
mode:
authorkai-striega <kaistriega@gmail.com>2019-09-14 13:45:00 +0800
committerkai-striega <kaistriega@gmail.com>2019-09-14 17:14:03 +0800
commit594d0c39bd7baf9575411b4a9689ec0bd564c930 (patch)
treeadd9598f3e66013157b46f8194be34341b5bcebf /numpy/lib
parent58dc45505b3d3e2b9de1a6961a749c8bd1165548 (diff)
downloadnumpy-594d0c39bd7baf9575411b4a9689ec0bd564c930.tar.gz
TST: Move NPV-IRR congruence check to tests
The internal rate of return (irr) is defined as the rate of return required for the net present values of a series of cashflows to be zero. i.e the lowest rate of return required for a project to break even. This is currently checked by refering to the example output from the ``irr`` and ``npv`` function documentation. This commit adds a test to confirm the identity holds.
Diffstat (limited to 'numpy/lib')
-rw-r--r--numpy/lib/financial.py7
-rw-r--r--numpy/lib/tests/test_financial.py6
2 files changed, 6 insertions, 7 deletions
diff --git a/numpy/lib/financial.py b/numpy/lib/financial.py
index d135804c0..d72384e99 100644
--- a/numpy/lib/financial.py
+++ b/numpy/lib/financial.py
@@ -715,8 +715,6 @@ def irr(values):
>>> round(np.irr([-5, 10.5, 1, -8, 1]), 5)
0.0886
- (Compare with the Example given for numpy.lib.financial.npv)
-
"""
# `np.roots` call is why this function does not support Decimal type.
#
@@ -785,11 +783,6 @@ def npv(rate, values):
Examples
--------
- >>> np.npv(0.281,[-100, 39, 59, 55, 20])
- -0.0084785916384548798 # may vary
-
- (Compare with the Example given for numpy.lib.financial.irr)
-
Consider a potential project with an initial investment of $40 000 and
projected cashflows of $5 000, $8 000, $12 000 and $30 000 at the end of
each period discounted at a rate of 8% per period. To find the project's
diff --git a/numpy/lib/tests/test_financial.py b/numpy/lib/tests/test_financial.py
index 524915041..21088765f 100644
--- a/numpy/lib/tests/test_financial.py
+++ b/numpy/lib/tests/test_financial.py
@@ -9,6 +9,12 @@ from numpy.testing import (
class TestFinancial(object):
+ def test_npv_irr_congruence(self):
+ # IRR is defined as the rate required for the present value of a
+ # a series of cashflows to be zero i.e. NPV(IRR(x), x) = 0
+ cashflows = np.array([-40000, 5000, 8000, 12000, 30000])
+ assert_allclose(np.npv(np.irr(cashflows), cashflows), 0, atol=1e-10, rtol=0)
+
def test_rate(self):
assert_almost_equal(
np.rate(10, 0, -3500, 10000),