def test_run_trade_ticks_through_aggregator_results_in_expected_bars(self): # Arrange bar_store = ObjectStorer() handler = bar_store.store bar_spec = BarSpecification(1000, BarAggregation.VOLUME, PriceType.LAST) bar_type = BarType(ETHUSDT_BINANCE.id, bar_spec) aggregator = VolumeBarAggregator(bar_type, handler, TestLogger(TestClock())) wrangler = TradeTickDataWrangler( instrument=ETHUSDT_BINANCE, data=TestDataProvider.ethusdt_trades(), ) wrangler.pre_process(0) ticks = wrangler.build_ticks() # Act for tick in ticks: aggregator.handle_trade_tick(tick) # Assert last_bar = bar_store.get_store()[-1].bar self.assertEqual(187, len(bar_store.get_store())) self.assertEqual(Price("426.44"), last_bar.open) self.assertEqual(Price("426.84"), last_bar.high) self.assertEqual(Price("426.00"), last_bar.low) self.assertEqual(Price("426.82"), last_bar.close) self.assertEqual(Quantity(1000), last_bar.volume)
def test_run_trade_ticks_through_aggregator_results_in_expected_bars(self): # Arrange bar_store = ObjectStorer() handler = bar_store.store instrument = ETHUSDT_BINANCE bar_spec = BarSpecification(1000, BarAggregation.TICK, PriceType.LAST) bar_type = BarType(instrument.id, bar_spec) aggregator = TickBarAggregator( instrument, bar_type, handler, Logger(TestClock()), ) wrangler = TradeTickDataWrangler( instrument=instrument, data=TestDataProvider.ethusdt_trades(), ) wrangler.pre_process(0) ticks = wrangler.build_ticks() # Act for tick in ticks: aggregator.handle_trade_tick(tick) # Assert last_bar = bar_store.get_store()[-1] self.assertEqual(69, len(bar_store.get_store())) self.assertEqual(Price.from_str("426.72"), last_bar.open) self.assertEqual(Price.from_str("427.01"), last_bar.high) self.assertEqual(Price.from_str("426.46"), last_bar.low) self.assertEqual(Price.from_str("426.67"), last_bar.close) self.assertEqual(Quantity.from_int(2281), last_bar.volume)
class TradeTickDataWranglerTests(unittest.TestCase): def setUp(self): # Fixture Setup self.clock = TestClock() def test_tick_data(self): # Arrange # Act ticks = TestDataProvider.ethusdt_trades() # Assert self.assertEqual(69806, len(ticks)) def test_process(self): # Arrange tick_data = TestDataProvider.ethusdt_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.default_fx_ccy( TestStubs.symbol_usdjpy_fxcm()), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.processed_data # Assert self.assertEqual(69806, len(ticks)) self.assertEqual( Timestamp("2020-08-14 10:00:00.223000+0000", tz="UTC"), ticks.iloc[0].name) def test_build_ticks(self): # Arrange tick_data = TestDataProvider.ethusdt_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.ethusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.build_ticks() # Assert self.assertEqual(69806, len(ticks)) self.assertEqual(Price("423.760"), ticks[0].price) self.assertEqual(Quantity("2.67900"), ticks[0].size) self.assertEqual(OrderSide.SELL, ticks[0].side) self.assertEqual(TradeMatchId("148568980"), ticks[0].match_id) self.assertEqual( Timestamp("2020-08-14 10:00:00.223000+0000", tz="UTC"), ticks[0].timestamp)
class TardisTradeDataWranglerTests(unittest.TestCase): def setUp(self): # Fixture Setup self.clock = TestClock() def test_tick_data(self): # Arrange # Act ticks = TestDataProvider.tardis_trades() # Assert self.assertEqual(9999, len(ticks)) def test_process(self): # Arrange tick_data = TestDataProvider.tardis_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.btcusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.processed_data # Assert self.assertEqual(9999, len(ticks)) self.assertEqual( Timestamp('2020-02-22 00:00:02.418379+0000', tz='UTC'), ticks.iloc[0].name) def test_build_ticks(self): # Arrange tick_data = TestDataProvider.tardis_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.btcusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.build_ticks() # Assert self.assertEqual(9999, len(ticks)) self.assertEqual(Price("9682.00"), ticks[0].price) self.assertEqual(Quantity("0.132000"), ticks[0].size) self.assertEqual(OrderSide.BUY, ticks[0].side) self.assertEqual(TradeMatchId("42377944"), ticks[0].match_id) self.assertEqual( Timestamp('2020-02-22 00:00:02.418379+0000', tz='UTC'), ticks[0].timestamp)
class TradeTickDataWranglerTests(unittest.TestCase): def setUp(self): # Fixture Setup self.clock = TestClock() def test_tick_data(self): # Arrange # Act ticks = TestDataProvider.ethusdt_trades() # Assert self.assertEqual(69806, len(ticks)) def test_process(self): # Arrange tick_data = TestDataProvider.ethusdt_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.default_fx_ccy("USD/JPY"), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.processed_data # Assert self.assertEqual(69806, len(ticks)) self.assertEqual( Timestamp("2020-08-14 10:00:00.223000+0000", tz="UTC"), ticks.iloc[0].name) def test_build_ticks(self): # Arrange tick_data = TestDataProvider.ethusdt_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.ethusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.build_ticks() # Assert self.assertEqual(69806, len(ticks)) self.assertEqual(Price.from_str("423.760"), ticks[0].price) self.assertEqual(Quantity.from_str("2.67900"), ticks[0].size) self.assertEqual(AggressorSide.SELL, ticks[0].aggressor_side) self.assertEqual("148568980", ticks[0].match_id) self.assertEqual(1597399200223000064, ticks[0].ts_recv_ns)
def test_process(self): # Arrange tick_data = TestDataProvider.tardis_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.btcusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.processed_data # Assert self.assertEqual(9999, len(ticks)) self.assertEqual(Timestamp('2020-02-22 00:00:02.418379+0000', tz='UTC'), ticks.iloc[0].name)
def test_process(self): # Arrange tick_data = TestDataProvider.ethusdt_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.default_fx_ccy(TestStubs.symbol_usdjpy()), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.processed_data # Assert self.assertEqual(69806, len(ticks)) self.assertEqual(Timestamp("2020-08-14 10:00:00.223000+0000", tz="UTC"), ticks.iloc[0].name)
def test_build_ticks(self): # Arrange tick_data = TestDataProvider.tardis_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.btcusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.build_ticks() # Assert self.assertEqual(9999, len(ticks)) self.assertEqual(Price("9682.00"), ticks[0].price) self.assertEqual(Quantity("0.132000"), ticks[0].size) self.assertEqual(OrderSide.BUY, ticks[0].side) self.assertEqual(TradeMatchId("42377944"), ticks[0].match_id) self.assertEqual(1582329602418379008, ticks[0].timestamp_ns)
def test_build_ticks(self): # Arrange tick_data = TestDataProvider.ethusdt_trades() self.tick_builder = TradeTickDataWrangler( instrument=TestInstrumentProvider.ethusdt_binance(), data=tick_data, ) # Act self.tick_builder.pre_process(0) ticks = self.tick_builder.build_ticks() # Assert self.assertEqual(69806, len(ticks)) self.assertEqual(Price("423.760"), ticks[0].price) self.assertEqual(Quantity("2.67900"), ticks[0].size) self.assertEqual(OrderSide.SELL, ticks[0].side) self.assertEqual(TradeMatchId("148568980"), ticks[0].match_id) self.assertEqual(1597399200223000064, ticks[0].timestamp_ns)
def test_run_trade_ticks_through_aggregator_results_in_expected_bars(self): # Arrange bar_store = ObjectStorer() handler = bar_store.store bar_spec = BarSpecification(10000, BarAggregation.VALUE, PriceType.LAST) bar_type = BarType(ETHUSDT_BINANCE.id, bar_spec) aggregator = ValueBarAggregator(bar_type, handler, Logger(TestClock())) wrangler = TradeTickDataWrangler( instrument=ETHUSDT_BINANCE, data=TestDataProvider.ethusdt_trades(), ) wrangler.pre_process(0) ticks = wrangler.build_ticks() # Act for tick in ticks: aggregator.handle_trade_tick(tick)