def factor_load(start_date, end_date, factor_name, save_file=None, **kwargs):
"""
:param start_date: str, ???????????
:param end_date: str, ???????????
:param factor_name: str, ???????????
:param save_file: str, optional, ???????????? '*.csv' ?? '*.pkl'
:param kwargs: dict, optional
freq: str, optional, ???????? ??'M', 'W', 'S', 'Y'? ??enums.py - FreqType
tenor: str, optional, ???????? ?????????????????????????(??)? ????+FreqType? ?'3M'
sec_id, str/list, optional, ???????????
output_data_format: enum, optional, ??enums.py - FreqType
MULTI_INDEX_DF: multi-index DataFrame, index=[date, secID], value = factor
PIVOT_TABLE_DF: DataFrame, index=date, columns = secID
is_index: bool, optional, True: ???sec_id????????????????????????
False: ????sec_id?????
date_format: str, optional, ?????? ??'%Y-%m-%d'
:return: pd.DataFrame ????????
"""
if isinstance(factor_name, list):
kwargs = merge(kwargs, {'output_data_format': OutputFormat.MULTI_INDEX_DF})
factor_names = factor_name
else:
factor_names = [factor_name]
ret = pd.DataFrame()
for factor_name in factor_names:
LOGGER.info('Loading factor data {0}'.format(factor_name))
factor_loader = FactorLoader(start_date=start_date,
end_date=end_date,
factor_name=factor_name,
**kwargs)
factor_data = factor_loader.load_data()
LOGGER.info('factor data {0} is loaded '.format(factor_name))
ret = pd.concat([ret, factor_data], axis=1)
if kwargs.get('reset_col_names'):
ret.columns = factor_names
if save_file:
save_data_to_file(ret, save_file)
LOGGER.critical('Data saved in {0}'.format(save_file))
return ret
评论列表
文章目录