@@ -551,25 +551,30 @@ def test_ewma_nan_handling(self):
551551 s0 = Series ([np .nan , 1. , 101. ])
552552 s1 = Series ([1. , np .nan , 101. ])
553553 s2 = Series ([np .nan , 1. , np .nan , np .nan , 101. , np .nan ])
554+ s3 = Series ([1. , np .nan , 101. , 50. ])
554555 com = 2.
555556 alpha = 1. / (1. + com )
556557
557558 def simple_wma (s , w ):
558559 return (s .multiply (w ).cumsum () / w .cumsum ()).fillna (method = 'ffill' )
559560
560561 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 ]),
573578 ]:
574579 expected = simple_wma (s , Series (w ))
575580 result = mom .ewma (s , com = com , adjust = adjust , ignore_na = ignore_na )
0 commit comments