@@ -249,30 +249,36 @@ def test_mirr(self, values, finance_rate, reinvest_rate, expected):
249
249
else :
250
250
assert_ (numpy .isnan (result ))
251
251
252
+ @pytest .mark .parametrize ('number_type' , [Decimal , float ])
252
253
@pytest .mark .parametrize (
253
254
"args, expected" ,
254
255
[
255
- ({'values' : [Decimal ( '-4500' ), Decimal ( '-800' ), Decimal ( '800' ), Decimal ( '800' ) ,
256
- Decimal ( '600' ), Decimal ( '600' ), Decimal ( '800' ), Decimal ( '800' ),
257
- Decimal ( '700' ), Decimal ( '3000' )],
258
- 'finance_rate' : Decimal ( '0.08' ), 'reinvest_rate' : Decimal ( '0.055' )} ,
259
- Decimal ( '0.066597175031553548874239618' )) ,
260
- ({ 'values ' : [ Decimal ( '-120000' ), Decimal ( '39000' ), Decimal ( '30000' ), Decimal ( '21000' ),
261
- Decimal ( '37000' ), Decimal ( '46000' )],
262
- 'finance_rate' : Decimal ( '0.10' ), 'reinvest_rate' : Decimal ( '0.12' )} ,
263
- Decimal ( '0.126094130365905145828421880' )) ,
264
- ({ 'values' : [ Decimal ( '100' ), Decimal ( '200' ), Decimal ( '-50' ), Decimal ( '300' ), Decimal ( '-200' )],
265
- 'finance_rate' : Decimal ( '0.05' ) , 'reinvest_rate' : Decimal ( '0.06' )},
266
- Decimal ( '0.342823387842176663647819868' ) ),
267
- ({'values' : [Decimal ( '39000' ), Decimal ( '30000' ), Decimal ( '21000' ), Decimal ( '37000' ) ,
268
- Decimal ( '46000' )],
269
- 'finance_rate' : Decimal ( '0.10' ), 'reinvest_rate' : Decimal ( '0.12' )},
270
- numpy . nan ),
256
+ ({'values' : ['-4500' , '-800' , '800' , '800' , '600' , '600' , '800' , '800' , '700' , '3000' ] ,
257
+ 'finance_rate' : '0.08' , 'reinvest_rate' : '0.055'
258
+ }, '0.066597175031553548874239618'
259
+ ) ,
260
+ ({ 'values' : [ '-120000' , '39000' , '30000' , '21000' , '37000' , '46000' ] ,
261
+ 'finance_rate ' : '0.10' , 'reinvest_rate' : '0.12'
262
+ }, '0.126094130365905145828421880'
263
+ ) ,
264
+ ({ 'values' : [ '100' , '200' , '-50' , '300' , '-200' ] ,
265
+ 'finance_rate' : '0.05' , 'reinvest_rate' : '0.06'
266
+ } , '0.342823387842176663647819868'
267
+ ),
268
+ ({'values' : ['39000' , '30000' , '21000' , '37000' , '46000' ] ,
269
+ 'finance_rate' : '0.10' , 'reinvest_rate' : '0.12'
270
+ }, numpy . nan
271
+ ),
271
272
],
272
273
)
273
- def test_mirr_decimal (self , args , expected ):
274
- result = npf .mirr (** args )
275
- assert_equal (result , expected )
274
+ def test_mirr_decimal (self , number_type , args , expected ):
275
+ values = [number_type (v ) for v in args ['values' ]]
276
+ result = npf .mirr (values , number_type (args ['finance_rate' ]), number_type (args ['reinvest_rate' ]))
277
+
278
+ if expected is not numpy .nan :
279
+ assert_almost_equal (result , number_type (expected ), 15 )
280
+ else :
281
+ assert numpy .isnan (result )
276
282
277
283
def test_mirr_no_real_solution_exception (self ):
278
284
# Test that if there is no solution because all the cashflows
0 commit comments