From 2274bf4467b76d08e4d413f7579bb604e32b4590 Mon Sep 17 00:00:00 2001 From: dmichalowicz Date: Tue, 7 Mar 2017 11:38:32 -0500 Subject: [PATCH] BUG: Set data portal last trading session if passed --- zipline/data/data_portal.py | 46 ++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/zipline/data/data_portal.py b/zipline/data/data_portal.py index e833b69b..3b77cdaa 100644 --- a/zipline/data/data_portal.py +++ b/zipline/data/data_portal.py @@ -166,15 +166,35 @@ class DataPortal(object): self._augmented_sources_map = {} self._extra_source_df = None - self._first_trading_session = first_trading_day + self._first_available_session = first_trading_day - _last_sessions = [r.last_available_dt - for r in [equity_daily_reader, future_daily_reader] - if r is not None] - if _last_sessions: - self._last_trading_session = min(_last_sessions) + if last_available_session: + self._last_available_session = last_available_session else: - self._last_trading_session = None + # Infer the last session from the provided readers. + last_sessions = [ + reader.last_available_dt + for reader in [equity_daily_reader, future_daily_reader] + if reader is not None + ] + if last_sessions: + self._last_available_session = min(last_sessions) + else: + self._last_available_session = None + + if last_available_minute: + self._last_available_minute = last_available_minute + else: + # Infer the last minute from the provided readers. + last_minutes = [ + reader.last_available_dt + for reader in [equity_minute_reader, future_minute_reader] + if reader is not None + ] + if last_minutes: + self._last_available_minute = min(last_minutes) + else: + self._last_available_minute = None aligned_equity_minute_reader = self._ensure_reader_aligned( equity_minute_reader) @@ -223,14 +243,14 @@ class DataPortal(object): self.trading_calendar, self.asset_finder, aligned_minute_readers, - last_available_minute, + self._last_available_minute, ) _dispatch_session_reader = AssetDispatchSessionBarReader( self.trading_calendar, self.asset_finder, aligned_session_readers, - last_available_session, + self._last_available_session, ) self._pricing_readers = { @@ -286,15 +306,15 @@ class DataPortal(object): return ReindexMinuteBarReader( self.trading_calendar, reader, - self._first_trading_session, - self._last_trading_session + self._first_available_session, + self._last_available_session ) elif reader.data_frequency == 'session': return ReindexSessionBarReader( self.trading_calendar, reader, - self._first_trading_session, - self._last_trading_session + self._first_available_session, + self._last_available_session ) def _reindex_extra_source(self, df, source_date_index):