ENH: Add exchange_full to all Assets, incl. Futures.

This commit is contained in:
John Ricklefs
2016-08-19 16:38:50 -04:00
parent fce87015d2
commit ccde5cbf56
2 changed files with 17 additions and 59 deletions
+16 -59
View File
@@ -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,15 @@ 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
self.start_date = start_date
self.end_date = end_date
self.first_traded = first_traded
@@ -164,7 +168,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 +184,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
@@ -226,59 +232,6 @@ cdef class Asset:
cdef class Equity(Asset):
cdef readonly object exchange_full
_kwargnames = frozenset({
'sid',
'symbol',
'asset_name',
'start_date',
'end_date',
'first_traded',
'auto_close_date',
'exchange',
'exchange_full',
})
def __init__(self,
int sid, # sid is required
object exchange, # exchange is required
object symbol="",
object asset_name="",
object start_date=None,
object end_date=None,
object first_traded=None,
object auto_close_date=None,
object exchange_full=None):
super().__init__(
sid,
exchange,
symbol=symbol,
asset_name=asset_name,
start_date=start_date,
end_date=end_date,
first_traded=first_traded,
auto_close_date=auto_close_date,
)
self.exchange_full = exchange_full
cpdef to_dict(self):
"""
Convert to a python dict.
"""
return {
'sid': self.sid,
'symbol': self.symbol,
'asset_name': self.asset_name,
'start_date': self.start_date,
'end_date': self.end_date,
'first_traded': self.first_traded,
'auto_close_date': self.auto_close_date,
'exchange': self.exchange,
'exchange_full': self.exchange_full,
}
def __repr__(self):
attrs = ('symbol', 'asset_name', 'exchange',
'start_date', 'end_date', 'first_traded', 'auto_close_date',
@@ -345,6 +298,7 @@ cdef class Future(Asset):
'exchange',
'tick_size',
'multiplier',
'exchange_full',
})
def __init__(self,
@@ -360,7 +314,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,
@@ -371,6 +326,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
@@ -390,7 +346,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)
@@ -416,7 +372,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):
"""
+1
View File
@@ -222,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()