annotate DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/lib/tests/test_financial.py @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2a2c65a20a8b
children
rev   line source
Chris@87 1 from __future__ import division, absolute_import, print_function
Chris@87 2
Chris@87 3 import numpy as np
Chris@87 4 from numpy.testing import (
Chris@87 5 run_module_suite, TestCase, assert_, assert_almost_equal
Chris@87 6 )
Chris@87 7
Chris@87 8
Chris@87 9 class TestFinancial(TestCase):
Chris@87 10 def test_rate(self):
Chris@87 11 assert_almost_equal(np.rate(10, 0, -3500, 10000),
Chris@87 12 0.1107, 4)
Chris@87 13
Chris@87 14 def test_irr(self):
Chris@87 15 v = [-150000, 15000, 25000, 35000, 45000, 60000]
Chris@87 16 assert_almost_equal(np.irr(v),
Chris@87 17 0.0524, 2)
Chris@87 18 v = [-100, 0, 0, 74]
Chris@87 19 assert_almost_equal(np.irr(v),
Chris@87 20 -0.0955, 2)
Chris@87 21 v = [-100, 39, 59, 55, 20]
Chris@87 22 assert_almost_equal(np.irr(v),
Chris@87 23 0.28095, 2)
Chris@87 24 v = [-100, 100, 0, -7]
Chris@87 25 assert_almost_equal(np.irr(v),
Chris@87 26 -0.0833, 2)
Chris@87 27 v = [-100, 100, 0, 7]
Chris@87 28 assert_almost_equal(np.irr(v),
Chris@87 29 0.06206, 2)
Chris@87 30 v = [-5, 10.5, 1, -8, 1]
Chris@87 31 assert_almost_equal(np.irr(v),
Chris@87 32 0.0886, 2)
Chris@87 33
Chris@87 34 def test_pv(self):
Chris@87 35 assert_almost_equal(np.pv(0.07, 20, 12000, 0),
Chris@87 36 -127128.17, 2)
Chris@87 37
Chris@87 38 def test_fv(self):
Chris@87 39 assert_almost_equal(np.fv(0.075, 20, -2000, 0, 0),
Chris@87 40 86609.36, 2)
Chris@87 41
Chris@87 42 def test_pmt(self):
Chris@87 43 assert_almost_equal(np.pmt(0.08/12, 5*12, 15000),
Chris@87 44 -304.146, 3)
Chris@87 45
Chris@87 46 def test_ppmt(self):
Chris@87 47 np.round(np.ppmt(0.1/12, 1, 60, 55000), 2) == 710.25
Chris@87 48
Chris@87 49 def test_ipmt(self):
Chris@87 50 np.round(np.ipmt(0.1/12, 1, 24, 2000), 2) == 16.67
Chris@87 51
Chris@87 52 def test_nper(self):
Chris@87 53 assert_almost_equal(np.nper(0.075, -2000, 0, 100000.),
Chris@87 54 21.54, 2)
Chris@87 55
Chris@87 56 def test_nper2(self):
Chris@87 57 assert_almost_equal(np.nper(0.0, -2000, 0, 100000.),
Chris@87 58 50.0, 1)
Chris@87 59
Chris@87 60 def test_npv(self):
Chris@87 61 assert_almost_equal(
Chris@87 62 np.npv(0.05, [-15000, 1500, 2500, 3500, 4500, 6000]),
Chris@87 63 122.89, 2)
Chris@87 64
Chris@87 65 def test_mirr(self):
Chris@87 66 val = [-4500, -800, 800, 800, 600, 600, 800, 800, 700, 3000]
Chris@87 67 assert_almost_equal(np.mirr(val, 0.08, 0.055), 0.0666, 4)
Chris@87 68
Chris@87 69 val = [-120000, 39000, 30000, 21000, 37000, 46000]
Chris@87 70 assert_almost_equal(np.mirr(val, 0.10, 0.12), 0.126094, 6)
Chris@87 71
Chris@87 72 val = [100, 200, -50, 300, -200]
Chris@87 73 assert_almost_equal(np.mirr(val, 0.05, 0.06), 0.3428, 4)
Chris@87 74
Chris@87 75 val = [39000, 30000, 21000, 37000, 46000]
Chris@87 76 assert_(np.isnan(np.mirr(val, 0.10, 0.12)))
Chris@87 77
Chris@87 78 def test_when(self):
Chris@87 79 #begin
Chris@87 80 assert_almost_equal(np.rate(10, 20, -3500, 10000, 1),
Chris@87 81 np.rate(10, 20, -3500, 10000, 'begin'), 4)
Chris@87 82 #end
Chris@87 83 assert_almost_equal(np.rate(10, 20, -3500, 10000),
Chris@87 84 np.rate(10, 20, -3500, 10000, 'end'), 4)
Chris@87 85 assert_almost_equal(np.rate(10, 20, -3500, 10000, 0),
Chris@87 86 np.rate(10, 20, -3500, 10000, 'end'), 4)
Chris@87 87
Chris@87 88 # begin
Chris@87 89 assert_almost_equal(np.pv(0.07, 20, 12000, 0, 1),
Chris@87 90 np.pv(0.07, 20, 12000, 0, 'begin'), 2)
Chris@87 91 # end
Chris@87 92 assert_almost_equal(np.pv(0.07, 20, 12000, 0),
Chris@87 93 np.pv(0.07, 20, 12000, 0, 'end'), 2)
Chris@87 94 assert_almost_equal(np.pv(0.07, 20, 12000, 0, 0),
Chris@87 95 np.pv(0.07, 20, 12000, 0, 'end'), 2)
Chris@87 96
Chris@87 97 # begin
Chris@87 98 assert_almost_equal(np.fv(0.075, 20, -2000, 0, 1),
Chris@87 99 np.fv(0.075, 20, -2000, 0, 'begin'), 4)
Chris@87 100 # end
Chris@87 101 assert_almost_equal(np.fv(0.075, 20, -2000, 0),
Chris@87 102 np.fv(0.075, 20, -2000, 0, 'end'), 4)
Chris@87 103 assert_almost_equal(np.fv(0.075, 20, -2000, 0, 0),
Chris@87 104 np.fv(0.075, 20, -2000, 0, 'end'), 4)
Chris@87 105
Chris@87 106 # begin
Chris@87 107 assert_almost_equal(np.pmt(0.08/12, 5*12, 15000., 0, 1),
Chris@87 108 np.pmt(0.08/12, 5*12, 15000., 0, 'begin'), 4)
Chris@87 109 # end
Chris@87 110 assert_almost_equal(np.pmt(0.08/12, 5*12, 15000., 0),
Chris@87 111 np.pmt(0.08/12, 5*12, 15000., 0, 'end'), 4)
Chris@87 112 assert_almost_equal(np.pmt(0.08/12, 5*12, 15000., 0, 0),
Chris@87 113 np.pmt(0.08/12, 5*12, 15000., 0, 'end'), 4)
Chris@87 114
Chris@87 115 # begin
Chris@87 116 assert_almost_equal(np.ppmt(0.1/12, 1, 60, 55000, 0, 1),
Chris@87 117 np.ppmt(0.1/12, 1, 60, 55000, 0, 'begin'), 4)
Chris@87 118 # end
Chris@87 119 assert_almost_equal(np.ppmt(0.1/12, 1, 60, 55000, 0),
Chris@87 120 np.ppmt(0.1/12, 1, 60, 55000, 0, 'end'), 4)
Chris@87 121 assert_almost_equal(np.ppmt(0.1/12, 1, 60, 55000, 0, 0),
Chris@87 122 np.ppmt(0.1/12, 1, 60, 55000, 0, 'end'), 4)
Chris@87 123
Chris@87 124 # begin
Chris@87 125 assert_almost_equal(np.ipmt(0.1/12, 1, 24, 2000, 0, 1),
Chris@87 126 np.ipmt(0.1/12, 1, 24, 2000, 0, 'begin'), 4)
Chris@87 127 # end
Chris@87 128 assert_almost_equal(np.ipmt(0.1/12, 1, 24, 2000, 0),
Chris@87 129 np.ipmt(0.1/12, 1, 24, 2000, 0, 'end'), 4)
Chris@87 130 assert_almost_equal(np.ipmt(0.1/12, 1, 24, 2000, 0, 0),
Chris@87 131 np.ipmt(0.1/12, 1, 24, 2000, 0, 'end'), 4)
Chris@87 132
Chris@87 133 # begin
Chris@87 134 assert_almost_equal(np.nper(0.075, -2000, 0, 100000., 1),
Chris@87 135 np.nper(0.075, -2000, 0, 100000., 'begin'), 4)
Chris@87 136 # end
Chris@87 137 assert_almost_equal(np.nper(0.075, -2000, 0, 100000.),
Chris@87 138 np.nper(0.075, -2000, 0, 100000., 'end'), 4)
Chris@87 139 assert_almost_equal(np.nper(0.075, -2000, 0, 100000., 0),
Chris@87 140 np.nper(0.075, -2000, 0, 100000., 'end'), 4)
Chris@87 141
Chris@87 142 def test_broadcast(self):
Chris@87 143 assert_almost_equal(np.nper(0.075, -2000, 0, 100000., [0, 1]),
Chris@87 144 [21.5449442, 20.76156441], 4)
Chris@87 145
Chris@87 146 assert_almost_equal(np.ipmt(0.1/12, list(range(5)), 24, 2000),
Chris@87 147 [-17.29165168, -16.66666667, -16.03647345,
Chris@87 148 -15.40102862, -14.76028842], 4)
Chris@87 149
Chris@87 150 assert_almost_equal(np.ppmt(0.1/12, list(range(5)), 24, 2000),
Chris@87 151 [-74.998201, -75.62318601, -76.25337923,
Chris@87 152 -76.88882405, -77.52956425], 4)
Chris@87 153
Chris@87 154 assert_almost_equal(np.ppmt(0.1/12, list(range(5)), 24, 2000, 0,
Chris@87 155 [0, 0, 1, 'end', 'begin']),
Chris@87 156 [-74.998201, -75.62318601, -75.62318601,
Chris@87 157 -76.88882405, -76.88882405], 4)
Chris@87 158
Chris@87 159 if __name__ == "__main__":
Chris@87 160 run_module_suite()