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

FEATURE: added risk model tables

parent 8be2302c
...@@ -105,8 +105,263 @@ class _SwIndustryDaily(Base): ...@@ -105,8 +105,263 @@ class _SwIndustryDaily(Base):
Industry_code4 = Column(Text) Industry_code4 = Column(Text)
Industry_name4 = Column(Text) Industry_name4 = Column(Text)
flag = Column(INT, server_default=text("'1'")) flag = Column(INT, server_default=text("'1'"))
is_verify = Column(INT)
class _RiskExposure(Base):
__tablename__ = 'risk_exposure'
__table_args__ = (
Index('risk_exposure_idx', 'trade_date', 'security_code', unique=True),
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
code = Column("security_code", Text)
BETA = Column(FLOAT)
MOMENTUM = Column(FLOAT)
SIZE = Column(FLOAT)
EARNYILD = Column(FLOAT)
RESVOL = Column(FLOAT)
GROWTH = Column(FLOAT)
BTOP = Column(FLOAT)
LEVERAGE = Column(FLOAT)
LIQUIDTY = Column(FLOAT)
SIZENL = Column(FLOAT)
Bank = Column(INT)
RealEstate = Column(INT)
Health = Column(INT)
Transportation = Column(INT)
Mining = Column(INT)
NonFerMetal = Column(INT)
HouseApp = Column(INT)
LeiService = Column(INT)
MachiEquip = Column(INT)
BuildDeco = Column(INT)
CommeTrade = Column(INT)
CONMAT = Column(INT)
Auto = Column(INT)
Textile = Column(INT)
FoodBever = Column(INT)
Electronics = Column(INT)
Computer = Column(INT)
LightIndus = Column(INT)
Utilities = Column(INT)
Telecom = Column(INT)
AgriForest = Column(INT)
CHEM = Column(INT)
Media = Column(INT)
IronSteel = Column(INT)
NonBankFinan = Column(INT)
ELECEQP = Column(INT)
AERODEF = Column(INT)
Conglomerates = Column(INT)
COUNTRY = Column(INT)
class _RiskCovDay(Base):
__tablename__ = 'risk_cov_day'
__table_args__ = (
Index('risk_cov_day_idx', 'trade_date', 'FactorID', 'Factor', unique=True),
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
FactorID = Column(INT, nullable=False)
Factor = Column(Text, nullable=False)
BETA = Column(FLOAT)
MOMENTUM = Column(FLOAT)
SIZE = Column(FLOAT)
EARNYILD = Column(FLOAT)
RESVOL = Column(FLOAT)
GROWTH = Column(FLOAT)
BTOP = Column(FLOAT)
LEVERAGE = Column(FLOAT)
LIQUIDTY = Column(FLOAT)
SIZENL = Column(FLOAT)
Bank = Column(FLOAT)
RealEstate = Column(FLOAT)
Health = Column(FLOAT)
Transportation = Column(FLOAT)
Mining = Column(FLOAT)
NonFerMetal = Column(FLOAT)
HouseApp = Column(FLOAT)
LeiService = Column(FLOAT)
MachiEquip = Column(FLOAT)
BuildDeco = Column(FLOAT)
CommeTrade = Column(FLOAT)
CONMAT = Column(FLOAT)
Auto = Column(FLOAT)
Textile = Column(FLOAT)
FoodBever = Column(FLOAT)
Electronics = Column(FLOAT)
Computer = Column(FLOAT)
LightIndus = Column(FLOAT)
Utilities = Column(FLOAT)
Telecom = Column(FLOAT)
AgriForest = Column(FLOAT)
CHEM = Column(FLOAT)
Media = Column(FLOAT)
IronSteel = Column(FLOAT)
NonBankFinan = Column(FLOAT)
ELECEQP = Column(FLOAT)
AERODEF = Column(FLOAT)
Conglomerates = Column(FLOAT)
COUNTRY = Column(FLOAT)
class _RiskCovLong(Base):
__tablename__ = 'risk_cov_long'
__table_args__ = (
Index('risk_cov_long_Date_Factor_uindex', 'trade_date', 'Factor', unique=True),
Index('risk_cov_long_Date_FactorID_uindex', 'trade_date', 'FactorID', unique=True)
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
FactorID = Column(INT)
Factor = Column(Text, nullable=False)
BETA = Column(FLOAT)
MOMENTUM = Column(FLOAT)
SIZE = Column(FLOAT)
EARNYILD = Column(FLOAT)
RESVOL = Column(FLOAT)
GROWTH = Column(FLOAT)
BTOP = Column(FLOAT)
LEVERAGE = Column(FLOAT)
LIQUIDTY = Column(FLOAT)
SIZENL = Column(FLOAT)
Bank = Column(FLOAT)
RealEstate = Column(FLOAT)
Health = Column(FLOAT)
Transportation = Column(FLOAT)
Mining = Column(FLOAT)
NonFerMetal = Column(FLOAT)
HouseApp = Column(FLOAT)
LeiService = Column(FLOAT)
MachiEquip = Column(FLOAT)
BuildDeco = Column(FLOAT)
CommeTrade = Column(FLOAT)
CONMAT = Column(FLOAT)
Auto = Column(FLOAT)
Textile = Column(FLOAT)
FoodBever = Column(FLOAT)
Electronics = Column(FLOAT)
Computer = Column(FLOAT)
LightIndus = Column(FLOAT)
Utilities = Column(FLOAT)
Telecom = Column(FLOAT)
AgriForest = Column(FLOAT)
CHEM = Column(FLOAT)
Media = Column(FLOAT)
IronSteel = Column(FLOAT)
NonBankFinan = Column(FLOAT)
ELECEQP = Column(FLOAT)
AERODEF = Column(FLOAT)
Conglomerates = Column(FLOAT)
COUNTRY = Column(FLOAT)
class _RiskCovShort(Base):
__tablename__ = 'risk_cov_short'
__table_args__ = (
Index('risk_cov_short_Date_FactorID_uindex', 'trade_date', 'FactorID', unique=True),
Index('risk_cov_short_Date_Factor_uindex', 'trade_date', 'Factor', unique=True)
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
FactorID = Column(INT)
Factor = Column(Text, nullable=False)
BETA = Column(FLOAT)
MOMENTUM = Column(FLOAT)
SIZE = Column(FLOAT)
EARNYILD = Column(FLOAT)
RESVOL = Column(FLOAT)
GROWTH = Column(FLOAT)
BTOP = Column(FLOAT)
LEVERAGE = Column(FLOAT)
LIQUIDTY = Column(FLOAT)
SIZENL = Column(FLOAT)
Bank = Column(FLOAT)
RealEstate = Column(FLOAT)
Health = Column(FLOAT)
Transportation = Column(FLOAT)
Mining = Column(FLOAT)
NonFerMetal = Column(FLOAT)
HouseApp = Column(FLOAT)
LeiService = Column(FLOAT)
MachiEquip = Column(FLOAT)
BuildDeco = Column(FLOAT)
CommeTrade = Column(FLOAT)
CONMAT = Column(FLOAT)
Auto = Column(FLOAT)
Textile = Column(FLOAT)
FoodBever = Column(FLOAT)
Electronics = Column(FLOAT)
Computer = Column(FLOAT)
LightIndus = Column(FLOAT)
Utilities = Column(FLOAT)
Telecom = Column(FLOAT)
AgriForest = Column(FLOAT)
CHEM = Column(FLOAT)
Media = Column(FLOAT)
IronSteel = Column(FLOAT)
NonBankFinan = Column(FLOAT)
ELECEQP = Column(FLOAT)
AERODEF = Column(FLOAT)
Conglomerates = Column(FLOAT)
COUNTRY = Column(FLOAT)
class _SpecificRiskDay(Base):
__tablename__ = 'specific_risk_day'
__table_args__ = (
Index('specific_risk_day_Date_Code_uindex', 'trade_date', 'security_code', unique=True),
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
code = Column("security_code", Text, nullable=False)
exchangeCD = Column(Text)
secShortName = Column(Text)
SRISK = Column(FLOAT)
class _SpecificRiskLong(Base):
__tablename__ = 'specific_risk_long'
__table_args__ = (
Index('specific_risk_long_Date_Code_uindex', 'trade_date', 'security_code', unique=True),
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
code = Column("security_code", Text, nullable=False)
exchangeCD = Column(Text)
secShortName = Column(Text)
SRISK = Column(FLOAT)
class _SpecificRiskShort(Base):
__tablename__ = 'specific_risk_short'
__table_args__ = (
Index('specific_risk_short_Date_Code_uindex', 'trade_date', 'security_code', unique=True),
)
id = Column(INT, primary_key=True)
trade_date = Column(Date, nullable=False)
code = Column("security_code", Text, nullable=False)
exchangeCD = Column(Text)
secShortName = Column(Text)
SRISK = Column(FLOAT)
Market = _StkDailyPricePro Market = _StkDailyPricePro
Universe = _StkUniverse Universe = _StkUniverse
Industry = _SwIndustryDaily Industry = _SwIndustryDaily
RiskExposure = _RiskExposure
RiskCovDay = _RiskCovDay
RiskCovShort = _RiskCovShort
RiskCovLong = _RiskCovLong
SpecificRiskDay = _SpecificRiskDay
SpecificRiskShort = _SpecificRiskShort
SpecificRiskLong = _SpecificRiskLong
...@@ -19,7 +19,8 @@ import sqlalchemy as sa ...@@ -19,7 +19,8 @@ import sqlalchemy as sa
import sqlalchemy.orm as orm import sqlalchemy.orm as orm
from sqlalchemy import ( from sqlalchemy import (
and_, and_,
select join,
select,
) )
from PyFin.api import advanceDateByCalendar from PyFin.api import advanceDateByCalendar
...@@ -37,7 +38,56 @@ else: ...@@ -37,7 +38,56 @@ else:
from alphamind.data.engines.universe import Universe from alphamind.data.engines.universe import Universe
from alphamind.data.processing import factor_processing from alphamind.data.processing import factor_processing
from alphamind.data.engines.utilities import _map_industry_category
from alphamind.data.engines.utilities import _map_risk_model_table
from alphamind.portfolio.riskmodel import FactorRiskModel
risk_styles = ['BETA',
'MOMENTUM',
'SIZE',
'EARNYILD',
'RESVOL',
'GROWTH',
'BTOP',
'LEVERAGE',
'LIQUIDTY',
'SIZENL']
industry_styles = [
'Bank',
'RealEstate',
'Health',
'Transportation',
'Mining',
'NonFerMetal',
'HouseApp',
'LeiService',
'MachiEquip',
'BuildDeco',
'CommeTrade',
'CONMAT',
'Auto',
'Textile',
'FoodBever',
'Electronics',
'Computer',
'LightIndus',
'Utilities',
'Telecom',
'AgriForest',
'CHEM',
'Media',
'IronSteel',
'NonBankFinan',
'ELECEQP',
'AERODEF',
'Conglomerates'
]
macro_styles = ['COUNTRY']
total_risk_factors = risk_styles + industry_styles + macro_styles
DAILY_RETURN_OFFSET = 0 DAILY_RETURN_OFFSET = 0
......
...@@ -9,19 +9,34 @@ import os ...@@ -9,19 +9,34 @@ import os
from typing import Dict from typing import Dict
from typing import Iterable from typing import Iterable
from alphamind.data.dbmodel.models import Categories if "DB_VENDOR" in os.environ and os.environ["DB_VENDOR"].lower() == "rl":
from alphamind.data.dbmodel.models import Market from alphamind.data.dbmodel.models import Categories
from alphamind.data.dbmodel.models import RiskCovDay from alphamind.data.dbmodel.models import Market
from alphamind.data.dbmodel.models import RiskCovLong from alphamind.data.dbmodel.models import RiskCovDay
from alphamind.data.dbmodel.models import RiskCovShort from alphamind.data.dbmodel.models import RiskCovLong
from alphamind.data.dbmodel.models import RiskExposure from alphamind.data.dbmodel.models import RiskCovShort
from alphamind.data.dbmodel.models import SpecificRiskDay from alphamind.data.dbmodel.models import RiskExposure
from alphamind.data.dbmodel.models import SpecificRiskLong from alphamind.data.dbmodel.models import SpecificRiskDay
from alphamind.data.dbmodel.models import SpecificRiskShort from alphamind.data.dbmodel.models import SpecificRiskLong
from alphamind.data.dbmodel.models import Uqer from alphamind.data.dbmodel.models import SpecificRiskShort
from alphamind.data.engines.industries import INDUSTRY_MAPPING from alphamind.data.dbmodel.models import Uqer
from alphamind.data.engines.industries import INDUSTRY_MAPPING
factor_tables = [Market, RiskExposure, Uqer, Categories]
else:
from alphamind.data.dbmodel.models import Categories
from alphamind.data.dbmodel.models import Market
from alphamind.data.dbmodel.models_rl import RiskCovDay
from alphamind.data.dbmodel.models_rl import RiskCovLong
from alphamind.data.dbmodel.models_rl import RiskCovShort
from alphamind.data.dbmodel.models_rl import RiskExposure
from alphamind.data.dbmodel.models_rl import SpecificRiskDay
from alphamind.data.dbmodel.models_rl import SpecificRiskLong
from alphamind.data.dbmodel.models_rl import SpecificRiskShort
from alphamind.data.dbmodel.models import Uqer
from alphamind.data.engines.industries import INDUSTRY_MAPPING
factor_tables = [Market, RiskExposure, Uqer, Categories] factor_tables = [Market, RiskExposure, Uqer, Categories]
def _map_risk_model_table(risk_model: str) -> tuple: def _map_risk_model_table(risk_model: str) -> tuple:
......
Subproject commit cf21f072c71d003666e984c9d5ea761cf74670a9 Subproject commit a231c326626db460cd40c162b3df932f31409db3
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