@@ -551,25 +551,30 @@ def test_ewma_nan_handling(self):
551
551
s0 = Series ([np .nan , 1. , 101. ])
552
552
s1 = Series ([1. , np .nan , 101. ])
553
553
s2 = Series ([np .nan , 1. , np .nan , np .nan , 101. , np .nan ])
554
+ s3 = Series ([1. , np .nan , 101. , 50. ])
554
555
com = 2.
555
556
alpha = 1. / (1. + com )
556
557
557
558
def simple_wma (s , w ):
558
559
return (s .multiply (w ).cumsum () / w .cumsum ()).fillna (method = 'ffill' )
559
560
560
561
for (s , adjust , ignore_na , w ) in [
561
- (s0 , True , False , [np .nan , (1.0 - alpha ), 1. ]),
562
- (s0 , True , True , [np .nan , (1.0 - alpha ), 1. ]),
563
- (s0 , False , False , [np .nan , (1.0 - alpha ), alpha ]),
564
- (s0 , False , True , [np .nan , (1.0 - alpha ), alpha ]),
565
- (s1 , True , False , [(1.0 - alpha )** 2 , np .nan , 1. ]),
566
- (s1 , True , True , [(1.0 - alpha ), np .nan , 1. ]),
567
- (s1 , False , False , [(1.0 - alpha )** 2 , np .nan , alpha ]),
568
- (s1 , False , True , [(1.0 - alpha ), np .nan , alpha ]),
569
- (s2 , True , False , [np .nan , (1.0 - alpha )** 3 , np .nan , np .nan , 1. , np .nan ]),
570
- (s2 , True , True , [np .nan , (1.0 - alpha ), np .nan , np .nan , 1. , np .nan ]),
571
- (s2 , False , False , [np .nan , (1.0 - alpha )** 3 , np .nan , np .nan , alpha , np .nan ]),
572
- (s2 , False , True , [np .nan , (1.0 - alpha ), np .nan , np .nan , alpha , np .nan ]),
562
+ (s0 , True , False , [np .nan , (1. - alpha ), 1. ]),
563
+ (s0 , True , True , [np .nan , (1. - alpha ), 1. ]),
564
+ (s0 , False , False , [np .nan , (1. - alpha ), alpha ]),
565
+ (s0 , False , True , [np .nan , (1. - alpha ), alpha ]),
566
+ (s1 , True , False , [(1. - alpha )** 2 , np .nan , 1. ]),
567
+ (s1 , True , True , [(1. - alpha ), np .nan , 1. ]),
568
+ (s1 , False , False , [(1. - alpha )** 2 , np .nan , alpha ]),
569
+ (s1 , False , True , [(1. - alpha ), np .nan , alpha ]),
570
+ (s2 , True , False , [np .nan , (1. - alpha )** 3 , np .nan , np .nan , 1. , np .nan ]),
571
+ (s2 , True , True , [np .nan , (1. - alpha ), np .nan , np .nan , 1. , np .nan ]),
572
+ (s2 , False , False , [np .nan , (1. - alpha )** 3 , np .nan , np .nan , alpha , np .nan ]),
573
+ (s2 , False , True , [np .nan , (1. - alpha ), np .nan , np .nan , alpha , np .nan ]),
574
+ (s3 , True , False , [(1. - alpha )** 3 , np .nan , (1. - alpha ), 1. ]),
575
+ (s3 , True , True , [(1. - alpha )** 2 , np .nan , (1. - alpha ), 1. ]),
576
+ (s3 , False , False , [(1. - alpha )** 3 , np .nan , (1. - alpha ) * alpha , alpha * ((1. - alpha )** 2 + alpha )]),
577
+ (s3 , False , True , [(1. - alpha )** 2 , np .nan , (1. - alpha ) * alpha , alpha ]),
573
578
]:
574
579
expected = simple_wma (s , Series (w ))
575
580
result = mom .ewma (s , com = com , adjust = adjust , ignore_na = ignore_na )
0 commit comments