From 563fc433d5882addc306700eb838c7539f45a57a Mon Sep 17 00:00:00 2001 From: Frederic Fortier Date: Thu, 18 Jan 2018 15:08:12 -0500 Subject: [PATCH] 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: