diff options
author | kai-striega <kaistriega@gmail.com> | 2019-09-14 13:45:00 +0800 |
---|---|---|
committer | kai-striega <kaistriega@gmail.com> | 2019-09-14 17:14:03 +0800 |
commit | 594d0c39bd7baf9575411b4a9689ec0bd564c930 (patch) | |
tree | add9598f3e66013157b46f8194be34341b5bcebf /numpy/lib/tests/test_financial.py | |
parent | 58dc45505b3d3e2b9de1a6961a749c8bd1165548 (diff) | |
download | numpy-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/tests/test_financial.py')
-rw-r--r-- | numpy/lib/tests/test_financial.py | 6 |
1 files changed, 6 insertions, 0 deletions
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), |