Commit db8c05c3 authored by Dr.李's avatar Dr.李

added more

parent 0c249a27
...@@ -22,6 +22,8 @@ from alphamind.data.standardize import standardize ...@@ -22,6 +22,8 @@ from alphamind.data.standardize import standardize
from alphamind.data.neutralize import neutralize from alphamind.data.neutralize import neutralize
from alphamind.data.engines.sqlengine import factor_tables from alphamind.data.engines.sqlengine import factor_tables
from alphamind.model.preparing import prepare_data
from alphamind.utilities import alpha_logger from alphamind.utilities import alpha_logger
...@@ -41,5 +43,6 @@ __all__ = [ ...@@ -41,5 +43,6 @@ __all__ = [
'standardize', 'standardize',
'neutralize', 'neutralize',
'factor_tables', 'factor_tables',
'prepare_data',
'alpha_logger' 'alpha_logger'
] ]
\ No newline at end of file
...@@ -83,7 +83,7 @@ macro_styles = ['COUNTRY'] ...@@ -83,7 +83,7 @@ macro_styles = ['COUNTRY']
total_risk_factors = risk_styles + industry_styles + macro_styles total_risk_factors = risk_styles + industry_styles + macro_styles
factor_tables = [Uqer, Tiny, LegacyFactor, Experimental, Market] factor_tables = [Uqer, Tiny, LegacyFactor, Experimental, RiskExposure, Market]
def append_industry_info(df): def append_industry_info(df):
......
...@@ -15,35 +15,39 @@ from alphamind.data.engines.sqlengine import SqlEngine ...@@ -15,35 +15,39 @@ from alphamind.data.engines.sqlengine import SqlEngine
from alphamind.data.engines.universe import Universe from alphamind.data.engines.universe import Universe
def _map_horizon(sampling: str) -> int: def _map_horizon(frequency: str) -> int:
if sampling == '1d': if frequency == '1d':
return 0 return 0
elif sampling == '1w': elif frequency == '1w':
return 4 return 4
elif sampling == '1m': elif frequency == '1m':
return 21 return 21
elif sampling == '3m': elif frequency == '3m':
return 62 return 62
else: else:
raise ValueError('{0} is an unrecognized sampling rule'.format(sampling)) raise ValueError('{0} is an unrecognized frequency rule'.format(frequency))
def prepare_data(engine: SqlEngine, def prepare_data(engine: SqlEngine,
factors: Iterable[object], factors: Iterable[object],
start_date: str, start_date: str,
end_date: str, end_date: str,
sampling: str, frequency: str,
universe: Universe): universe: Universe,
dates = makeSchedule(start_date, end_date, sampling, calendar='china.sse', dateRule=BizDayConventions.Following) default_window: int=0):
dates = makeSchedule(start_date, end_date, frequency, calendar='china.sse', dateRule=BizDayConventions.Following)
horizon = _map_horizon(sampling) horizon = _map_horizon(frequency)
transformer = Transformer(factors) transformer = Transformer(factors)
factor_df = engine.fetch_factor_range(universe, factors=transformer, dates=dates).sort_values(['Date', 'Code']) factor_df = engine.fetch_factor_range(universe,
factors=transformer,
dates=dates,
default_window=default_window).sort_values(['Date', 'Code'])
return_df = engine.fetch_dx_return_range(universe, dates=dates, horizon=horizon) return_df = engine.fetch_dx_return_range(universe, dates=dates, horizon=horizon)
df = pd.merge(factor_df, return_df, on=['Date', 'Code']) df = pd.merge(factor_df, return_df, on=['Date', 'Code']).dropna()
return df[['Date', 'Code', 'dx']], df[['Date', 'Code'] + transformer.names] return df[['Date', 'Code', 'dx']], df[['Date', 'Code'] + transformer.names]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment