def test_moving_average(self): mavg = MovingAverage( market_aware=True, fields=['price', 'volume'], window_length=2 ) transformed = list(mavg.transform(self.source)) # Output values. tnfm_prices = [message[mavg.get_hash()].price for message in transformed] tnfm_volumes = [message[mavg.get_hash()].volume for message in transformed] # "Hand-calculated" values expected_prices = [ ((10.0) / 1.0), ((10.0 + 10.0) / 2.0), # First event should get dropped here. ((10.0 + 11.0) / 2.0), # Second event should get dropped here. ((11.0 + 11.0) / 2.0) ] expected_volumes = [ ((100.0) / 1.0), ((100.0 + 100.0) / 2.0), # First event should get dropped here. ((100.0 + 100.0) / 2.0), # Second event should get dropped here. ((100.0 + 300.0) / 2.0) ] self.assertEquals(tnfm_prices, expected_prices) self.assertEquals(tnfm_volumes, expected_volumes)
def test_moving_average(self): mavg = MovingAverage( market_aware=False, fields=['price', 'volume'], delta=timedelta(days=2), ) transformed = list(mavg.transform(self.source)) # Output values. tnfm_prices = [message.tnfm_value.price for message in transformed] tnfm_volumes = [message.tnfm_value.volume for message in transformed] # "Hand-calculated" values expected_prices = [ ((10.0) / 1.0), ((10.0 + 10.0) / 2.0), # First event should get dropped here. ((10.0 + 11.0) / 2.0), # Second event should get dropped here. ((11.0 + 11.0) / 2.0) ] expected_volumes = [ ((100.0) / 1.0), ((100.0 + 100.0) / 2.0), # First event should get dropped here. ((100.0 + 100.0) / 2.0), # Second event should get dropped here. ((100.0 + 300.0) / 2.0) ] assert tnfm_prices == expected_prices assert tnfm_volumes == expected_volumes
def test_moving_average(self, name, add_custom_events): mavg = MovingAverage( market_aware=True, fields=['price', 'volume'], window_length=2 ) if add_custom_events: self.source = self.intersperse_custom_events(self.source) transformed = list(mavg.transform(self.source)) # Output values. tnfm_prices = [message[mavg.get_hash()].price for message in transformed if message.type != DATASOURCE_TYPE.CUSTOM] tnfm_volumes = [message[mavg.get_hash()].volume for message in transformed if message.type != DATASOURCE_TYPE.CUSTOM] # "Hand-calculated" values expected_prices = [ ((10.0) / 1.0), ((10.0 + 10.0) / 2.0), # First event should get dropped here. ((10.0 + 11.0) / 2.0), # Second event should get dropped here. ((11.0 + 11.0) / 2.0) ] expected_volumes = [ ((100.0) / 1.0), ((100.0 + 100.0) / 2.0), # First event should get dropped here. ((100.0 + 100.0) / 2.0), # Second event should get dropped here. ((100.0 + 300.0) / 2.0) ] self.assertEquals(tnfm_prices, expected_prices) self.assertEquals(tnfm_volumes, expected_volumes)
def test_moving_average(self, name, add_custom_events): mavg = MovingAverage(market_aware=True, fields=['price', 'volume'], window_length=2) if add_custom_events: self.source = self.intersperse_custom_events(self.source) transformed = list(mavg.transform(self.source)) # Output values. tnfm_prices = [ message[mavg.get_hash()].price for message in transformed if message.type != DATASOURCE_TYPE.CUSTOM ] tnfm_volumes = [ message[mavg.get_hash()].volume for message in transformed if message.type != DATASOURCE_TYPE.CUSTOM ] # "Hand-calculated" values expected_prices = [ ((10.0) / 1.0), ((10.0 + 10.0) / 2.0), # First event should get dropped here. ((10.0 + 11.0) / 2.0), # Second event should get dropped here. ((11.0 + 11.0) / 2.0) ] expected_volumes = [ ((100.0) / 1.0), ((100.0 + 100.0) / 2.0), # First event should get dropped here. ((100.0 + 100.0) / 2.0), # Second event should get dropped here. ((100.0 + 300.0) / 2.0) ] self.assertEquals(tnfm_prices, expected_prices) self.assertEquals(tnfm_volumes, expected_volumes)