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