ENH: Adds mapping of company_name and ensures str types in AssetFinder

This commit is contained in:
jfkirk
2015-09-01 14:54:48 -04:00
parent 5320fd0fc5
commit fd907dbabc
2 changed files with 29 additions and 1 deletions
+7 -1
View File
@@ -25,13 +25,14 @@ ASSET_TABLE_FIELDS = frozenset({
'exchange',
})
# Expected fields for an Asset's metadata
# Expected fields for a Future's metadata
FUTURE_TABLE_FIELDS = ASSET_TABLE_FIELDS | {
'notice_date',
'expiration_date',
'contract_multiplier',
}
# Expected fields for an Equity's metadata
EQUITY_TABLE_FIELDS = ASSET_TABLE_FIELDS
EXCHANGE_TABLE_FIELDS = frozenset({
@@ -355,6 +356,11 @@ class AssetDBWriter(with_metaclass(ABCMeta)):
# Generate equities DataFrame #
###############################
# HACK: If company_name is provided, map it to asset_name
if ('company_name' in data.equities.columns) \
and ('asset_name' not in data.equities.columns):
data.equities['asset_name'] = data.equities['company_name']
equities_output = _generate_output_dataframe(
data_subset=data.equities,
defaults=_equities_defaults,
+22
View File
@@ -43,6 +43,24 @@ from zipline.assets.asset_writer import (
log = Logger('assets.py')
# A set of fields that need to be converted to strings before building an
# Asset to avoid unicode fields
_asset_str_fields = frozenset({
'symbol',
'asset_name',
'exchange',
})
def _convert_asset_str_fields(dict):
"""
Takes in a dict of Asset init args and converts from unicode to string
where applicable
"""
for key, value in dict.items():
if key in _asset_str_fields:
dict[key] = str(value)
class AssetFinder(object):
@@ -201,6 +219,8 @@ class AssetFinder(object):
data['first_traded'] = pd.Timestamp(
data['first_traded'], tz='UTC')
_convert_asset_str_fields(data)
equity = Equity(**data)
else:
equity = None
@@ -239,6 +259,8 @@ class AssetFinder(object):
data['expiration_date'] = pd.Timestamp(
data['expiration_date'], tz='UTC')
_convert_asset_str_fields(data)
future = Future(**data)
else:
future = None