def init_class_fixtures(cls): super(WithInternationalDailyBarData, cls).init_class_fixtures() cls.daily_bar_sessions = {} cls.daily_bar_data = {} cls.daily_bar_readers = {} cls.daily_bar_currency_codes = {} for calendar, assets, in cls.assets_by_calendar.items(): name = calendar.name start_delta = cls.DAILY_BAR_LOOKBACK_DAYS * calendar.day start_session = cls.DAILY_BAR_START_DATE - start_delta sessions = calendar.sessions_in_range( start_session, cls.DAILY_BAR_END_DATE, ) cls.daily_bar_sessions[name] = sessions cls.daily_bar_data[name] = dict(cls.make_daily_bar_data( assets=assets, calendar=calendar, sessions=sessions, )) panel = (pd.Panel.from_dict(cls.daily_bar_data[name]) .transpose(2, 1, 0)) cls.daily_bar_currency_codes[name] = cls.make_currency_codes( calendar, assets, ) cls.daily_bar_readers[name] = InMemoryDailyBarReader.from_panel( panel, calendar, currency_codes=cls.daily_bar_currency_codes[name], )
def init_class_fixtures(cls): super(WithInternationalDailyBarData, cls).init_class_fixtures() cls.daily_bar_sessions = {} cls.daily_bar_data = {} cls.daily_bar_readers = {} for calendar, assets, in cls.assets_by_calendar.items(): name = calendar.name start_delta = cls.DAILY_BAR_LOOKBACK_DAYS * calendar.day start_session = cls.DAILY_BAR_START_DATE - start_delta sessions = calendar.sessions_in_range( start_session, cls.DAILY_BAR_END_DATE, ) cls.daily_bar_sessions[name] = sessions cls.daily_bar_data[name] = dict(cls.make_daily_bar_data( assets=assets, calendar=calendar, sessions=sessions, )) panel = (pd.Panel.from_dict(cls.daily_bar_data[name]) .transpose(2, 1, 0)) cls.daily_bar_readers[name] = InMemoryDailyBarReader.from_panel( panel, calendar, )
def in_memory_reader_for_close(self, close): nan_frame = pd.DataFrame( np.nan, index=close.index, columns=close.columns, ) frames = {'close': close} for key in 'open', 'high', 'low', 'volume': frames[key] = nan_frame return InMemoryDailyBarReader(frames, self.trading_calendar)
def init_class_fixtures(cls): super(WithInternationalDailyBarData, cls).init_class_fixtures() cls.daily_bar_sessions = {} cls.daily_bar_data = {} cls.daily_bar_readers = {} cls.daily_bar_currency_codes = {} for calendar, assets, in cls.assets_by_calendar.items(): name = calendar.name start_delta = cls.DAILY_BAR_LOOKBACK_DAYS * calendar.day start_session = cls.DAILY_BAR_START_DATE - start_delta sessions = calendar.sessions_in_range( start_session, cls.DAILY_BAR_END_DATE, ) cls.daily_bar_sessions[name] = sessions cls.daily_bar_data[name] = d = dict( cls.make_daily_bar_data( assets=assets, calendar=calendar, sessions=sessions, )) # panel = (pd.Panel.from_dict(cls.daily_bar_data[name]) # .transpose(2, 1, 0)) frame_dict = defaultdict(list) for asset, data in d.items(): for col in data.columns: df = pd.DataFrame(data[col].values, columns=[asset], index=data[col].index) frame_dict[col].append(df) frame_dict = { key: pd.concat(l, axis=1) for key, l in frame_dict.items() } cls.daily_bar_currency_codes[name] = cls.make_currency_codes( calendar, assets, ) cls.daily_bar_readers[ name] = InMemoryDailyBarReader.from_frame_dict( frame_dict, calendar, currency_codes=cls.daily_bar_currency_codes[name], )
def empty_in_memory_reader(self, dates, sids): nan_frame = pd.DataFrame( np.nan, index=dates, columns=sids, ) frames = { key: nan_frame for key in ('open', 'high', 'low', 'close', 'volume') } return InMemoryDailyBarReader(frames, self.trading_calendar)
def init_class_fixtures(cls): super(WithInternationalDailyBarData, cls).init_class_fixtures() cls.daily_bar_sessions = {} cls.daily_bar_data = {} cls.daily_bar_readers = {} cls.daily_bar_currency_codes = {} for ( calendar, assets, ) in cls.assets_by_calendar.items(): name = calendar.name start_delta = cls.DAILY_BAR_LOOKBACK_DAYS * calendar.day start_session = cls.DAILY_BAR_START_DATE - start_delta sessions = calendar.sessions_in_range( start_session, cls.DAILY_BAR_END_DATE, ) cls.daily_bar_sessions[name] = sessions cls.daily_bar_data[name] = dict( cls.make_daily_bar_data( assets=assets, calendar=calendar, sessions=sessions, ) ) bar_data = cls.daily_bar_data[name] df = ( pd.concat(bar_data, keys=bar_data.keys()).stack().unstack(0).swaplevel() ) frames = { field: frame.reset_index(level=0, drop=True) for field, frame in df.groupby(level=0) } # panel = (pd.Panel.from_dict(cls.daily_bar_data[name]) # .transpose(2, 1, 0)) cls.daily_bar_currency_codes[name] = cls.make_currency_codes( calendar, assets, ) cls.daily_bar_readers[name] = InMemoryDailyBarReader( frames=frames, calendar=calendar, currency_codes=cls.daily_bar_currency_codes[name], )
def empty_in_memory_reader(self, dates, sids): nan_frame = pd.DataFrame( np.nan, index=dates, columns=sids, ) frames = {key: nan_frame for key in ("open", "high", "low", "close", "volume")} return InMemoryDailyBarReader( frames, self.trading_calendar, currency_codes=pd.Series(index=sids, data="USD"), )
def in_memory_reader_for_close(self, close): nan_frame = pd.DataFrame( np.nan, index=close.index, columns=close.columns, ) frames = {"close": close} for key in "open", "high", "low", "volume": frames[key] = nan_frame return InMemoryDailyBarReader( frames, self.trading_calendar, currency_codes=pd.Series(index=close.columns, data="USD"), )
def init_class_fixtures(cls): super(WithInternationalDailyBarData, cls).init_class_fixtures() cls.daily_bar_sessions = {} cls.daily_bar_data = {} cls.daily_bar_readers = {} cls.daily_bar_currency_codes = {} for calendar, assets, in cls.assets_by_calendar.items(): name = calendar.name start_delta = cls.DAILY_BAR_LOOKBACK_DAYS * calendar.day start_session = cls.DAILY_BAR_START_DATE - start_delta sessions = calendar.sessions_in_range( start_session, cls.DAILY_BAR_END_DATE, ) cls.daily_bar_sessions[name] = sessions cls.daily_bar_data[name] = dict( cls.make_daily_bar_data( assets=assets, calendar=calendar, sessions=sessions, )) panel = pd.concat(cls.daily_bar_data[name], axis=0) dict_data = {} for column in panel.columns: dict_data[column] = pd.DataFrame( panel[column]).unstack(level=0) dict_data[column].columns = dict_data[ column].columns.droplevel(0) cls.daily_bar_currency_codes[name] = cls.make_currency_codes( calendar, assets, ) cls.daily_bar_readers[name] = InMemoryDailyBarReader.from_panel( dict_data, calendar, currency_codes=cls.daily_bar_currency_codes[name], )