def test_ewm_stats(self, window_length): def ewma_name(decay_rate): return 'ewma_%s' % decay_rate def ewmstd_name(decay_rate): return 'ewmstd_%s' % decay_rate decay_rates = [0.25, 0.5, 0.75] ewmas = { ewma_name(decay_rate): EWMA( inputs=(USEquityPricing.close,), window_length=window_length, decay_rate=decay_rate, ) for decay_rate in decay_rates } ewmstds = { ewmstd_name(decay_rate): EWMSTD( inputs=(USEquityPricing.close,), window_length=window_length, decay_rate=decay_rate, ) for decay_rate in decay_rates } all_results = self.engine.run_pipeline( Pipeline(columns=merge(ewmas, ewmstds)), self.dates[window_length], self.dates[-1], ) for decay_rate in decay_rates: ewma_result = all_results[ewma_name(decay_rate)].unstack() ewma_expected = self.expected_ewma(window_length, decay_rate) assert_frame_equal(ewma_result, ewma_expected) ewmstd_result = all_results[ewmstd_name(decay_rate)].unstack() ewmstd_expected = self.expected_ewmstd(window_length, decay_rate) assert_frame_equal(ewmstd_result, ewmstd_expected)