From 2f660db511e9262de71d3f364b2a2e1a9e51ff75 Mon Sep 17 00:00:00 2001 From: fredfortier Date: Thu, 26 Oct 2017 13:52:37 -0400 Subject: [PATCH 1/2] Fixed an issue with daily chunks end date --- catalyst/exchange/exchange_bundle.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/catalyst/exchange/exchange_bundle.py b/catalyst/exchange/exchange_bundle.py index 3a738f9b..9971dfb9 100644 --- a/catalyst/exchange/exchange_bundle.py +++ b/catalyst/exchange/exchange_bundle.py @@ -11,7 +11,7 @@ from catalyst.data.minute_bars import BcolzMinuteOverlappingData, \ BcolzMinuteBarMetadata from catalyst.exchange.bundle_utils import range_in_bundle, \ get_bcolz_chunk, get_delta, get_month_start_end, \ - get_year_start_end, get_periods_range, get_df_from_arrays, get_start_dt + get_year_start_end, get_df_from_arrays, get_start_dt from catalyst.exchange.exchange_bcolz import BcolzExchangeBarReader, \ BcolzExchangeBarWriter from catalyst.exchange.exchange_errors import EmptyValuesInBundleError, \ @@ -442,11 +442,11 @@ class ExchangeBundle: period_start = first_trading_dt _, asset_end_year = get_year_start_end( - asset.end_minute + asset.end_daily ) if asset_end_year == period_end \ - and period_end > asset.end_minute: - period_end = asset.end_minute + and period_end > asset.end_daily: + period_end = asset.end_daily else: raise InvalidHistoryFrequencyError( From 0e0bfc82b542ca7ce9f468bfd6e41e1aa83a40e9 Mon Sep 17 00:00:00 2001 From: fredfortier Date: Thu, 26 Oct 2017 14:04:30 -0400 Subject: [PATCH 2/2] Fixed issues in the prepare_chunk logic --- catalyst/exchange/exchange_bundle.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/catalyst/exchange/exchange_bundle.py b/catalyst/exchange/exchange_bundle.py index 9971dfb9..353c5fc9 100644 --- a/catalyst/exchange/exchange_bundle.py +++ b/catalyst/exchange/exchange_bundle.py @@ -346,9 +346,13 @@ class ExchangeBundle: end_asset = asset.end_minute if data_frequency == 'minute' else \ asset.end_daily - if end_asset is not None and \ - (last_entry is None or end_asset > last_entry): - last_entry = end_asset + if end_asset is not None: + if last_entry is None or end_asset > last_entry: + last_entry = end_asset + + else: + end = None + last_entry = None if start is None or \ (earliest_trade is not None and earliest_trade > start): @@ -388,8 +392,9 @@ class ExchangeBundle: start_dt, end_dt, [asset], data_frequency ) - except NoDataAvailableOnExchange: + except NoDataAvailableOnExchange as e: # If not, we continue to the next asset + log.debug('skipping {}: {}'.format(asset.symbol, e)) continue # This is either the first trading day of the asset or the