mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-04 08:43:21 +08:00
ENH: Adds mapping of company_name and ensures str types in AssetFinder
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user