diff --git a/zipline/assets/_assets.pyx b/zipline/assets/_assets.pyx index 1a7a3d25..40d84997 100644 --- a/zipline/assets/_assets.pyx +++ b/zipline/assets/_assets.pyx @@ -40,7 +40,7 @@ from zipline.utils.calendars import get_calendar # IMPORTANT NOTE: You must change this template if you change # Asset.__reduce__, or else we'll attempt to unpickle an old version of this # class -CACHE_FILE_TEMPLATE = '/tmp/.%s-%s.v6.cache' +CACHE_FILE_TEMPLATE = '/tmp/.%s-%s.v7.cache' cdef class Asset: @@ -58,6 +58,7 @@ cdef class Asset: cdef readonly object auto_close_date cdef readonly object exchange + cdef readonly object exchange_full _kwargnames = frozenset({ 'sid', @@ -68,6 +69,7 @@ cdef class Asset: 'first_traded', 'auto_close_date', 'exchange', + 'exchange_full', }) def __init__(self, @@ -78,13 +80,16 @@ cdef class Asset: object start_date=None, object end_date=None, object first_traded=None, - object auto_close_date=None): + object auto_close_date=None, + object exchange_full=None): self.sid = sid self.sid_hash = hash(sid) self.symbol = symbol self.asset_name = asset_name self.exchange = exchange + self.exchange_full = (exchange_full if exchange_full is not None + else exchange) self.start_date = start_date self.end_date = end_date self.first_traded = first_traded @@ -164,7 +169,8 @@ cdef class Asset: self.start_date, self.end_date, self.first_traded, - self.auto_close_date,)) + self.auto_close_date, + self.exchange_full)) cpdef to_dict(self): """ @@ -179,6 +185,7 @@ cdef class Asset: 'first_traded': self.first_traded, 'auto_close_date': self.auto_close_date, 'exchange': self.exchange, + 'exchange_full': self.exchange_full, } @classmethod @@ -228,7 +235,8 @@ cdef class Equity(Asset): def __repr__(self): attrs = ('symbol', 'asset_name', 'exchange', - 'start_date', 'end_date', 'first_traded', 'auto_close_date') + 'start_date', 'end_date', 'first_traded', 'auto_close_date', + 'exchange_full') tuples = ((attr, repr(getattr(self, attr, None))) for attr in attrs) strings = ('%s=%s' % (t[0], t[1]) for t in tuples) @@ -291,6 +299,7 @@ cdef class Future(Asset): 'exchange', 'tick_size', 'multiplier', + 'exchange_full', }) def __init__(self, @@ -306,7 +315,8 @@ cdef class Future(Asset): object auto_close_date=None, object first_traded=None, object tick_size="", - float multiplier=1.0): + float multiplier=1.0, + object exchange_full=None): super().__init__( sid, @@ -317,6 +327,7 @@ cdef class Future(Asset): end_date=end_date, first_traded=first_traded, auto_close_date=auto_close_date, + exchange_full=exchange_full, ) self.root_symbol = root_symbol self.notice_date = notice_date @@ -336,7 +347,7 @@ cdef class Future(Asset): attrs = ('symbol', 'root_symbol', 'asset_name', 'exchange', 'start_date', 'end_date', 'first_traded', 'notice_date', 'expiration_date', 'auto_close_date', 'tick_size', - 'multiplier') + 'multiplier', 'exchange_full') tuples = ((attr, repr(getattr(self, attr, None))) for attr in attrs) strings = ('%s=%s' % (t[0], t[1]) for t in tuples) @@ -362,7 +373,8 @@ cdef class Future(Asset): self.auto_close_date, self.first_traded, self.tick_size, - self.multiplier,)) + self.multiplier, + self.exchange_full)) cpdef to_dict(self): """ diff --git a/zipline/assets/synthetic.py b/zipline/assets/synthetic.py index c3f173dd..3e594b2e 100644 --- a/zipline/assets/synthetic.py +++ b/zipline/assets/synthetic.py @@ -51,6 +51,7 @@ def make_rotating_equity_info(num_assets, periods=num_assets, ), 'exchange': 'TEST', + 'exchange_full': 'TEST FULL', }, index=range(num_assets), ) @@ -87,6 +88,7 @@ def make_simple_equity_info(sids, 'start_date': pd.to_datetime([start_date] * num_assets), 'end_date': pd.to_datetime([end_date] * num_assets), 'exchange': 'TEST', + 'exchange_full': 'TEST FULL', }, index=sids, columns=( @@ -94,6 +96,7 @@ def make_simple_equity_info(sids, 'end_date', 'symbol', 'exchange', + 'exchange_full', ), ) @@ -137,6 +140,7 @@ def make_jagged_equity_info(num_assets, periods=num_assets, ), 'exchange': 'TEST', + 'exchange_full': 'TEST FULL', }, index=range(num_assets), ) @@ -218,6 +222,7 @@ def make_future_info(first_sid, 'expiration_date': notice_date_func(month_begin), 'multiplier': 500, 'exchange': "TEST", + 'exchange_full': 'TEST FULL', }) return pd.DataFrame.from_records(contracts, index='sid').convert_objects()