Commit 4ebe71fe authored by Dr.李's avatar Dr.李

fixed for universe

parent e8165e93
...@@ -14,8 +14,8 @@ from sqlalchemy import select ...@@ -14,8 +14,8 @@ from sqlalchemy import select
from sqlalchemy import join from sqlalchemy import join
from sqlalchemy import outerjoin from sqlalchemy import outerjoin
from alphamind.data.dbmodel.models import Universe as UniverseTable from alphamind.data.dbmodel.models import Universe as UniverseTable
from alphamind.data.dbmodel.models import FullFactor
from alphamind.data.engines.utilities import _map_factors from alphamind.data.engines.utilities import _map_factors
from alphamind.data.dbmodel.models import Market
from alphamind.data.engines.utilities import factor_tables from alphamind.data.engines.utilities import factor_tables
from alphamind.data.transformer import Transformer from alphamind.data.transformer import Transformer
from alphamind.utilities import encode from alphamind.utilities import encode
...@@ -86,22 +86,22 @@ class Universe(object): ...@@ -86,22 +86,22 @@ class Universe(object):
dependency = transformer.dependency dependency = transformer.dependency
factor_cols = _map_factors(dependency, factor_tables) factor_cols = _map_factors(dependency, factor_tables)
big_table = FullFactor big_table = Market
for t in set(factor_cols.values()): for t in set(factor_cols.values()):
if t.__table__.name != FullFactor.__table__.name: if t.__table__.name != Market.__table__.name:
big_table = outerjoin(big_table, t, and_(FullFactor.trade_date == t.trade_date, big_table = outerjoin(big_table, t, and_(Market.trade_date == t.trade_date,
FullFactor.code == t.code, Market.code == t.code,
FullFactor.trade_date.in_( Market.trade_date.in_(
dates) if dates else FullFactor.trade_date.between( dates) if dates else Market.trade_date.between(
start_date, end_date))) start_date, end_date)))
big_table = join(big_table, UniverseTable, big_table = join(big_table, UniverseTable,
and_(FullFactor.trade_date == UniverseTable.trade_date, and_(Market.trade_date == UniverseTable.trade_date,
FullFactor.code == UniverseTable.code, Market.code == UniverseTable.code,
universe_cond)) universe_cond))
query = select( query = select(
[FullFactor.trade_date, FullFactor.code] + list(factor_cols.keys())) \ [Market.trade_date, Market.code] + list(factor_cols.keys())) \
.select_from(big_table).distinct() .select_from(big_table).distinct()
df = pd.read_sql(query, engine.engine).sort_values(['trade_date', 'code']).dropna() df = pd.read_sql(query, engine.engine).sort_values(['trade_date', 'code']).dropna()
......
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