From b0f2202b54772da35d6ac840dfd0024a8576a983 Mon Sep 17 00:00:00 2001 From: Frederic Fortier Date: Thu, 18 Jan 2018 14:08:11 -0500 Subject: [PATCH 1/2] BUG: fixed bundle test suite --- tests/exchange/test_suites/test_suite_bundle.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/exchange/test_suites/test_suite_bundle.py b/tests/exchange/test_suites/test_suite_bundle.py index e490fc22..e9468668 100644 --- a/tests/exchange/test_suites/test_suite_bundle.py +++ b/tests/exchange/test_suites/test_suite_bundle.py @@ -21,10 +21,11 @@ pd.set_option('display.max_colwidth', 1000) class TestSuiteBundle(WithLogger, ZiplineTestCase): @staticmethod - def get_data_portal(exchange_names): + def get_data_portal(exchanges): open_calendar = get_calendar('OPEN') - asset_finder = ExchangeAssetFinder() + asset_finder = ExchangeAssetFinder(exchanges) + exchange_names = [exchange.name for exchange in exchanges] data_portal = DataPortalExchangeBacktest( exchange_names=exchange_names, asset_finder=asset_finder, @@ -107,9 +108,7 @@ class TestSuiteBundle(WithLogger, ZiplineTestCase): # ) # Type: list[Exchange] exchanges = [get_exchange('bitfinex', skip_init=True)] - data_portal = TestSuiteBundle.get_data_portal( - [exchange.name for exchange in exchanges] - ) + data_portal = TestSuiteBundle.get_data_portal(exchanges) for exchange in exchanges: exchange.init() From 563fc433d5882addc306700eb838c7539f45a57a Mon Sep 17 00:00:00 2001 From: Frederic Fortier Date: Thu, 18 Jan 2018 15:08:12 -0500 Subject: [PATCH 2/2] BUG: fixed issue with number of superfluous candles at the beginning of bundle history --- catalyst/exchange/exchange_bundle.py | 36 +++++++++---------- .../exchange/test_suites/test_suite_bundle.py | 4 +-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/catalyst/exchange/exchange_bundle.py b/catalyst/exchange/exchange_bundle.py index 5ceb73db..9844f751 100644 --- a/catalyst/exchange/exchange_bundle.py +++ b/catalyst/exchange/exchange_bundle.py @@ -232,12 +232,12 @@ class ExchangeBundle: problem = '{name} ({start_dt} to {end_dt}) has empty ' \ 'periods: {dates}'.format( - name=asset.symbol, - start_dt=asset.start_date.strftime( - DATE_TIME_FORMAT), - end_dt=end_dt.strftime(DATE_TIME_FORMAT), - dates=[date.strftime( - DATE_TIME_FORMAT) for date in dates]) + name=asset.symbol, + start_dt=asset.start_date.strftime( + DATE_TIME_FORMAT), + end_dt=end_dt.strftime(DATE_TIME_FORMAT), + dates=[date.strftime( + DATE_TIME_FORMAT) for date in dates]) if empty_rows_behavior == 'warn': log.warn(problem) @@ -286,12 +286,12 @@ class ExchangeBundle: problem = '{name} ({start_dt} to {end_dt}) has {threshold} ' \ 'identical close values on: {dates}'.format( - name=asset.symbol, - start_dt=asset.start_date.strftime(DATE_TIME_FORMAT), - end_dt=end_dt.strftime(DATE_TIME_FORMAT), - threshold=threshold, - dates=[pd.to_datetime(date).strftime(DATE_TIME_FORMAT) - for date in dates]) + name=asset.symbol, + start_dt=asset.start_date.strftime(DATE_TIME_FORMAT), + end_dt=end_dt.strftime(DATE_TIME_FORMAT), + threshold=threshold, + dates=[pd.to_datetime(date).strftime(DATE_TIME_FORMAT) + for date in dates]) problems.append(problem) @@ -629,8 +629,8 @@ class ExchangeBundle: show_progress, label='Ingesting {frequency} price data on ' '{exchange}'.format( - exchange=self.exchange_name, - frequency=data_frequency, + exchange=self.exchange_name, + frequency=data_frequency, )) as it: for chunk in it: problems += self.ingest_ctable( @@ -964,15 +964,15 @@ class ExchangeBundle: data_frequency, trailing_bar_count=None, reset_reader=False): + if trailing_bar_count: + delta = get_delta(trailing_bar_count, data_frequency) + end_dt += delta + start_dt = get_start_dt(end_dt, bar_count, data_frequency, False) start_dt, _ = self.get_adj_dates( start_dt, end_dt, assets, data_frequency ) - if trailing_bar_count: - delta = get_delta(trailing_bar_count, data_frequency) - end_dt += delta - # This is an attempt to resolve some caching with the reader # when auto-ingesting data. # TODO: needs more work diff --git a/tests/exchange/test_suites/test_suite_bundle.py b/tests/exchange/test_suites/test_suite_bundle.py index e9468668..1bc8efec 100644 --- a/tests/exchange/test_suites/test_suite_bundle.py +++ b/tests/exchange/test_suites/test_suite_bundle.py @@ -98,7 +98,7 @@ class TestSuiteBundle(WithLogger, ZiplineTestCase): def test_validate_bundles(self): # exchange_population = 3 asset_population = 3 - data_frequency = random.choice(['minute', 'daily']) + data_frequency = random.choice(['minute']) # bundle = 'dailyBundle' if data_frequency # == 'daily' else 'minuteBundle' @@ -106,7 +106,7 @@ class TestSuiteBundle(WithLogger, ZiplineTestCase): # population=exchange_population, # features=[bundle], # ) # Type: list[Exchange] - exchanges = [get_exchange('bitfinex', skip_init=True)] + exchanges = [get_exchange('poloniex', skip_init=True)] data_portal = TestSuiteBundle.get_data_portal(exchanges) for exchange in exchanges: