Commit 65c88236 authored by Dr.李's avatar Dr.李

more efficiently get data

parent 85b8d68d
...@@ -5,10 +5,9 @@ Created on 2017-6-29 ...@@ -5,10 +5,9 @@ Created on 2017-6-29
@author: cheng.li @author: cheng.li
""" """
from sqlalchemy import BigInteger, Column, DateTime, Float, Index, Integer, JSON, String, Text, text from sqlalchemy import BigInteger, Column, DateTime, Float, Index, Integer, JSON, String, Text, Table
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base() Base = declarative_base()
metadata = Base.metadata metadata = Base.metadata
...@@ -219,7 +218,8 @@ class Performance(Base): ...@@ -219,7 +218,8 @@ class Performance(Base):
__tablename__ = 'performance' __tablename__ = 'performance'
__table_args__ = ( __table_args__ = (
Index('performance_type_industry_universe_portfolio_index', 'type', 'industry', 'universe', 'portfolio'), Index('performance_type_industry_universe_portfolio_index', 'type', 'industry', 'universe', 'portfolio'),
Index('performance_Date_type_portfolio_industry_source_universe_uindex', 'trade_date', 'type', 'portfolio', 'industry', 'source', 'universe', unique=True) Index('performance_Date_type_portfolio_industry_source_universe_uindex', 'trade_date', 'type', 'portfolio',
'industry', 'source', 'universe', unique=True)
) )
trade_date = Column(DateTime, primary_key=True, nullable=False) trade_date = Column(DateTime, primary_key=True, nullable=False)
...@@ -236,7 +236,8 @@ class Performance(Base): ...@@ -236,7 +236,8 @@ class Performance(Base):
class Performance2(Base): class Performance2(Base):
__tablename__ = 'performance2' __tablename__ = 'performance2'
__table_args__ = ( __table_args__ = (
Index('performance2_uindex', 'trade_date', 'type', 'portfolio', 'industry', 'source', 'universe', 'benchmark', unique=True), Index('performance2_uindex', 'trade_date', 'type', 'portfolio', 'industry', 'source', 'universe', 'benchmark',
unique=True),
Index('performance2_index', 'type', 'industry', 'universe', 'portfolio') Index('performance2_index', 'type', 'industry', 'universe', 'portfolio')
) )
...@@ -553,7 +554,8 @@ class RiskReturn(Base): ...@@ -553,7 +554,8 @@ class RiskReturn(Base):
class RiskStat(Base): class RiskStat(Base):
__tablename__ = 'risk_stats' __tablename__ = 'risk_stats'
__table_args__ = ( __table_args__ = (
Index('risk_stats_uindex', 'trade_date', 'type', 'portfolio', 'source', 'universe', 'benchmark', 'factor', unique=True), Index('risk_stats_uindex', 'trade_date', 'type', 'portfolio', 'source', 'universe', 'benchmark', 'factor',
unique=True),
) )
trade_date = Column(DateTime, primary_key=True, nullable=False) trade_date = Column(DateTime, primary_key=True, nullable=False)
...@@ -1120,9 +1122,564 @@ class Uqer(Base): ...@@ -1120,9 +1122,564 @@ class Uqer(Base):
NLSIZE = Column(Float(53)) NLSIZE = Column(Float(53))
class FullFactorView(Base):
__tablename__ = 'full_factor_view'
__table_args__ = (
Index('factor_pk', 'trade_date', 'code', unique=True),
)
if __name__ == '__main__': trade_date = Column(DateTime, primary_key=True, nullable=False)
code = Column(Integer, primary_key=True, nullable=False)
secShortName = Column(String(10))
exchangeCD = Column(String(4))
preClosePrice = Column(Float(53))
actPreClosePrice = Column(Float(53))
openPrice = Column(Float(53))
highestPrice = Column(Float(53))
lowestPrice = Column(Float(53))
closePrice = Column(Float(53))
turnoverVol = Column(BigInteger)
turnoverValue = Column(Float(53))
dealAmount = Column(BigInteger)
turnoverRate = Column(Float(53))
accumAdjFactor = Column(Float(53))
negMarketValue = Column(Float(53))
marketValue = Column(Float(53))
chgPct = Column(Float(53))
isOpen = Column(Integer)
vwap = Column(Float(53))
AccountsPayablesTDays = Column(Float(53))
AccountsPayablesTRate = Column(Float(53))
AdminiExpenseRate = Column(Float(53))
ARTDays = Column(Float(53))
ARTRate = Column(Float(53))
ASSI = Column(Float(53))
BLEV = Column(Float(53))
BondsPayableToAsset = Column(Float(53))
CashRateOfSales = Column(Float(53))
CashToCurrentLiability = Column(Float(53))
CMRA = Column(Float(53))
CTOP = Column(Float(53))
CTP5 = Column(Float(53))
CurrentAssetsRatio = Column(Float(53))
CurrentAssetsTRate = Column(Float(53))
CurrentRatio = Column(Float(53))
DAVOL10 = Column(Float(53))
DAVOL20 = Column(Float(53))
DAVOL5 = Column(Float(53))
DDNBT = Column(Float(53))
DDNCR = Column(Float(53))
DDNSR = Column(Float(53))
DebtEquityRatio = Column(Float(53))
DebtsAssetRatio = Column(Float(53))
DHILO = Column(Float(53))
DilutedEPS = Column(Float(53))
DVRAT = Column(Float(53))
EBITToTOR = Column(Float(53))
EGRO = Column(Float(53))
EMA10 = Column(Float(53))
EMA120 = Column(Float(53))
EMA20 = Column(Float(53))
EMA5 = Column(Float(53))
EMA60 = Column(Float(53))
EPS = Column(Float(53))
EquityFixedAssetRatio = Column(Float(53))
EquityToAsset = Column(Float(53))
EquityTRate = Column(Float(53))
ETOP = Column(Float(53))
ETP5 = Column(Float(53))
FinancialExpenseRate = Column(Float(53))
FinancingCashGrowRate = Column(Float(53))
FixAssetRatio = Column(Float(53))
FixedAssetsTRate = Column(Float(53))
GrossIncomeRatio = Column(Float(53))
HBETA = Column(Float(53))
HSIGMA = Column(Float(53))
IntangibleAssetRatio = Column(Float(53))
InventoryTDays = Column(Float(53))
InventoryTRate = Column(Float(53))
InvestCashGrowRate = Column(Float(53))
LCAP = Column(Float(53))
LFLO = Column(Float(53))
LongDebtToAsset = Column(Float(53))
LongDebtToWorkingCapital = Column(Float(53))
LongTermDebtToAsset = Column(Float(53))
MA10 = Column(Float(53))
MA120 = Column(Float(53))
MA20 = Column(Float(53))
MA5 = Column(Float(53))
MA60 = Column(Float(53))
MAWVAD = Column(Float(53))
MFI = Column(Float(53))
MLEV = Column(Float(53))
NetAssetGrowRate = Column(Float(53))
NetProfitGrowRate = Column(Float(53))
NetProfitRatio = Column(Float(53))
NOCFToOperatingNI = Column(Float(53))
NonCurrentAssetsRatio = Column(Float(53))
NPParentCompanyGrowRate = Column(Float(53))
NPToTOR = Column(Float(53))
OperatingExpenseRate = Column(Float(53))
OperatingProfitGrowRate = Column(Float(53))
OperatingProfitRatio = Column(Float(53))
OperatingProfitToTOR = Column(Float(53))
OperatingRevenueGrowRate = Column(Float(53))
OperCashGrowRate = Column(Float(53))
OperCashInToCurrentLiability = Column(Float(53))
PB = Column(Float(53))
PCF = Column(Float(53))
PE = Column(Float(53))
PS = Column(Float(53))
PSY = Column(Float(53))
QuickRatio = Column(Float(53))
REVS10 = Column(Float(53))
REVS20 = Column(Float(53))
REVS5 = Column(Float(53))
ROA = Column(Float(53))
ROA5 = Column(Float(53))
ROE = Column(Float(53))
ROE5 = Column(Float(53))
RSI = Column(Float(53))
RSTR12 = Column(Float(53))
RSTR24 = Column(Float(53))
SalesCostRatio = Column(Float(53))
SaleServiceCashToOR = Column(Float(53))
SUE = Column(Float(53))
TaxRatio = Column(Float(53))
TOBT = Column(Float(53))
TotalAssetGrowRate = Column(Float(53))
TotalAssetsTRate = Column(Float(53))
TotalProfitCostRatio = Column(Float(53))
TotalProfitGrowRate = Column(Float(53))
VOL10 = Column(Float(53))
VOL120 = Column(Float(53))
VOL20 = Column(Float(53))
VOL240 = Column(Float(53))
VOL5 = Column(Float(53))
VOL60 = Column(Float(53))
WVAD = Column(Float(53))
REC = Column(Float(53))
DAREC = Column(Float(53))
GREC = Column(Float(53))
FY12P = Column(Float(53))
DAREV = Column(Float(53))
GREV = Column(Float(53))
SFY12P = Column(Float(53))
DASREV = Column(Float(53))
GSREV = Column(Float(53))
FEARNG = Column(Float(53))
FSALESG = Column(Float(53))
TA2EV = Column(Float(53))
CFO2EV = Column(Float(53))
ACCA = Column(Float(53))
DEGM = Column(Float(53))
SUOI = Column(Float(53))
EARNMOM = Column(Float(53))
FiftyTwoWeekHigh = Column(Float(53))
Volatility = Column(Float(53))
Skewness = Column(Float(53))
ILLIQUIDITY = Column(Float(53))
BackwardADJ = Column(Float(53))
MACD = Column(Float(53))
ADTM = Column(Float(53))
ATR14 = Column(Float(53))
ATR6 = Column(Float(53))
BIAS10 = Column(Float(53))
BIAS20 = Column(Float(53))
BIAS5 = Column(Float(53))
BIAS60 = Column(Float(53))
BollDown = Column(Float(53))
BollUp = Column(Float(53))
CCI10 = Column(Float(53))
CCI20 = Column(Float(53))
CCI5 = Column(Float(53))
CCI88 = Column(Float(53))
KDJ_K = Column(Float(53))
KDJ_D = Column(Float(53))
KDJ_J = Column(Float(53))
ROC6 = Column(Float(53))
ROC20 = Column(Float(53))
SBM = Column(Float(53))
STM = Column(Float(53))
UpRVI = Column(Float(53))
DownRVI = Column(Float(53))
RVI = Column(Float(53))
SRMI = Column(Float(53))
ChandeSD = Column(Float(53))
ChandeSU = Column(Float(53))
CMO = Column(Float(53))
DBCD = Column(Float(53))
ARC = Column(Float(53))
OBV = Column(Float(53))
OBV6 = Column(Float(53))
OBV20 = Column(Float(53))
TVMA20 = Column(Float(53))
TVMA6 = Column(Float(53))
TVSTD20 = Column(Float(53))
TVSTD6 = Column(Float(53))
VDEA = Column(Float(53))
VDIFF = Column(Float(53))
VEMA10 = Column(Float(53))
VEMA12 = Column(Float(53))
VEMA26 = Column(Float(53))
VEMA5 = Column(Float(53))
VMACD = Column(Float(53))
VOSC = Column(Float(53))
VR = Column(Float(53))
VROC12 = Column(Float(53))
VROC6 = Column(Float(53))
VSTD10 = Column(Float(53))
VSTD20 = Column(Float(53))
KlingerOscillator = Column(Float(53))
MoneyFlow20 = Column(Float(53))
AD = Column(Float(53))
AD20 = Column(Float(53))
AD6 = Column(Float(53))
CoppockCurve = Column(Float(53))
ASI = Column(Float(53))
ChaikinOscillator = Column(Float(53))
ChaikinVolatility = Column(Float(53))
EMV14 = Column(Float(53))
EMV6 = Column(Float(53))
plusDI = Column(Float(53))
minusDI = Column(Float(53))
ADX = Column(Float(53))
ADXR = Column(Float(53))
Aroon = Column(Float(53))
AroonDown = Column(Float(53))
AroonUp = Column(Float(53))
DEA = Column(Float(53))
DIFF = Column(Float(53))
DDI = Column(Float(53))
DIZ = Column(Float(53))
DIF = Column(Float(53))
MTM = Column(Float(53))
MTMMA = Column(Float(53))
PVT = Column(Float(53))
PVT6 = Column(Float(53))
PVT12 = Column(Float(53))
TRIX5 = Column(Float(53))
TRIX10 = Column(Float(53))
UOS = Column(Float(53))
MA10RegressCoeff12 = Column(Float(53))
MA10RegressCoeff6 = Column(Float(53))
PLRC6 = Column(Float(53))
PLRC12 = Column(Float(53))
SwingIndex = Column(Float(53))
Ulcer10 = Column(Float(53))
Ulcer5 = Column(Float(53))
Hurst = Column(Float(53))
ACD6 = Column(Float(53))
ACD20 = Column(Float(53))
EMA12 = Column(Float(53))
EMA26 = Column(Float(53))
APBMA = Column(Float(53))
BBI = Column(Float(53))
BBIC = Column(Float(53))
TEMA10 = Column(Float(53))
TEMA5 = Column(Float(53))
MA10Close = Column(Float(53))
AR = Column(Float(53))
BR = Column(Float(53))
ARBR = Column(Float(53))
CR20 = Column(Float(53))
MassIndex = Column(Float(53))
BearPower = Column(Float(53))
BullPower = Column(Float(53))
Elder = Column(Float(53))
NVI = Column(Float(53))
PVI = Column(Float(53))
RC12 = Column(Float(53))
RC24 = Column(Float(53))
JDQS20 = Column(Float(53))
Variance20 = Column(Float(53))
Variance60 = Column(Float(53))
Variance120 = Column(Float(53))
Kurtosis20 = Column(Float(53))
Kurtosis60 = Column(Float(53))
Kurtosis120 = Column(Float(53))
Alpha20 = Column(Float(53))
Alpha60 = Column(Float(53))
Alpha120 = Column(Float(53))
Beta20 = Column(Float(53))
Beta60 = Column(Float(53))
Beta120 = Column(Float(53))
SharpeRatio20 = Column(Float(53))
SharpeRatio60 = Column(Float(53))
SharpeRatio120 = Column(Float(53))
TreynorRatio20 = Column(Float(53))
TreynorRatio60 = Column(Float(53))
TreynorRatio120 = Column(Float(53))
InformationRatio20 = Column(Float(53))
InformationRatio60 = Column(Float(53))
InformationRatio120 = Column(Float(53))
GainVariance20 = Column(Float(53))
GainVariance60 = Column(Float(53))
GainVariance120 = Column(Float(53))
LossVariance20 = Column(Float(53))
LossVariance60 = Column(Float(53))
LossVariance120 = Column(Float(53))
GainLossVarianceRatio20 = Column(Float(53))
GainLossVarianceRatio60 = Column(Float(53))
GainLossVarianceRatio120 = Column(Float(53))
RealizedVolatility = Column(Float(53))
REVS60 = Column(Float(53))
REVS120 = Column(Float(53))
REVS250 = Column(Float(53))
REVS750 = Column(Float(53))
REVS5m20 = Column(Float(53))
REVS5m60 = Column(Float(53))
REVS5Indu1 = Column(Float(53))
REVS20Indu1 = Column(Float(53))
Volumn1M = Column(Float(53))
Volumn3M = Column(Float(53))
Price1M = Column(Float(53))
Price3M = Column(Float(53))
Price1Y = Column(Float(53))
Rank1M = Column(Float(53))
CashDividendCover = Column(Float(53))
DividendCover = Column(Float(53))
DividendPaidRatio = Column(Float(53))
RetainedEarningRatio = Column(Float(53))
CashEquivalentPS = Column(Float(53))
DividendPS = Column(Float(53))
EPSTTM = Column(Float(53))
NetAssetPS = Column(Float(53))
TORPS = Column(Float(53))
TORPSLatest = Column(Float(53))
OperatingRevenuePS = Column(Float(53))
OperatingRevenuePSLatest = Column(Float(53))
OperatingProfitPS = Column(Float(53))
OperatingProfitPSLatest = Column(Float(53))
CapitalSurplusFundPS = Column(Float(53))
SurplusReserveFundPS = Column(Float(53))
UndividedProfitPS = Column(Float(53))
RetainedEarningsPS = Column(Float(53))
OperCashFlowPS = Column(Float(53))
CashFlowPS = Column(Float(53))
NetNonOIToTP = Column(Float(53))
NetNonOIToTPLatest = Column(Float(53))
PeriodCostsRate = Column(Float(53))
InterestCover = Column(Float(53))
NetProfitGrowRate3Y = Column(Float(53))
NetProfitGrowRate5Y = Column(Float(53))
OperatingRevenueGrowRate3Y = Column(Float(53))
OperatingRevenueGrowRate5Y = Column(Float(53))
NetCashFlowGrowRate = Column(Float(53))
NetProfitCashCover = Column(Float(53))
OperCashInToAsset = Column(Float(53))
CashConversionCycle = Column(Float(53))
OperatingCycle = Column(Float(53))
PEG3Y = Column(Float(53))
PEG5Y = Column(Float(53))
PEIndu = Column(Float(53))
PBIndu = Column(Float(53))
PSIndu = Column(Float(53))
PCFIndu = Column(Float(53))
PEHist20 = Column(Float(53))
PEHist60 = Column(Float(53))
PEHist120 = Column(Float(53))
PEHist250 = Column(Float(53))
StaticPE = Column(Float(53))
ForwardPE = Column(Float(53))
EnterpriseFCFPS = Column(Float(53))
ShareholderFCFPS = Column(Float(53))
ROEDiluted = Column(Float(53))
ROEAvg = Column(Float(53))
ROEWeighted = Column(Float(53))
ROECut = Column(Float(53))
ROECutWeighted = Column(Float(53))
ROIC = Column(Float(53))
ROAEBIT = Column(Float(53))
ROAEBITTTM = Column(Float(53))
OperatingNIToTP = Column(Float(53))
OperatingNIToTPLatest = Column(Float(53))
InvestRAssociatesToTP = Column(Float(53))
InvestRAssociatesToTPLatest = Column(Float(53))
NPCutToNP = Column(Float(53))
SuperQuickRatio = Column(Float(53))
TSEPToInterestBearDebt = Column(Float(53))
DebtTangibleEquityRatio = Column(Float(53))
TangibleAToInteBearDebt = Column(Float(53))
TangibleAToNetDebt = Column(Float(53))
NOCFToTLiability = Column(Float(53))
NOCFToInterestBearDebt = Column(Float(53))
NOCFToNetDebt = Column(Float(53))
TSEPToTotalCapital = Column(Float(53))
InteBearDebtToTotalCapital = Column(Float(53))
NPParentCompanyCutYOY = Column(Float(53))
SalesServiceCashToORLatest = Column(Float(53))
CashRateOfSalesLatest = Column(Float(53))
NOCFToOperatingNILatest = Column(Float(53))
TotalAssets = Column(Float(53))
MktValue = Column(Float(53))
NegMktValue = Column(Float(53))
TEAP = Column(Float(53))
NIAP = Column(Float(53))
TotalFixedAssets = Column(Float(53))
IntFreeCL = Column(Float(53))
IntFreeNCL = Column(Float(53))
IntCL = Column(Float(53))
IntDebt = Column(Float(53))
NetDebt = Column(Float(53))
NetTangibleAssets = Column(Float(53))
WorkingCapital = Column(Float(53))
NetWorkingCapital = Column(Float(53))
TotalPaidinCapital = Column(Float(53))
RetainedEarnings = Column(Float(53))
OperateNetIncome = Column(Float(53))
ValueChgProfit = Column(Float(53))
NetIntExpense = Column(Float(53))
EBIT = Column(Float(53))
EBITDA = Column(Float(53))
EBIAT = Column(Float(53))
NRProfitLoss = Column(Float(53))
NIAPCut = Column(Float(53))
FCFF = Column(Float(53))
FCFE = Column(Float(53))
DA = Column(Float(53))
TRevenueTTM = Column(Float(53))
TCostTTM = Column(Float(53))
RevenueTTM = Column(Float(53))
CostTTM = Column(Float(53))
GrossProfitTTM = Column(Float(53))
SalesExpenseTTM = Column(Float(53))
AdminExpenseTTM = Column(Float(53))
FinanExpenseTTM = Column(Float(53))
AssetImpairLossTTM = Column(Float(53))
NPFromOperatingTTM = Column(Float(53))
NPFromValueChgTTM = Column(Float(53))
OperateProfitTTM = Column(Float(53))
NonOperatingNPTTM = Column(Float(53))
TProfitTTM = Column(Float(53))
NetProfitTTM = Column(Float(53))
NetProfitAPTTM = Column(Float(53))
SaleServiceRenderCashTTM = Column(Float(53))
NetOperateCFTTM = Column(Float(53))
NetInvestCFTTM = Column(Float(53))
NetFinanceCFTTM = Column(Float(53))
GrossProfit = Column(Float(53))
Beta252 = Column(Float(53))
RSTR504 = Column(Float(53))
EPIBS = Column(Float(53))
CETOP = Column(Float(53))
DASTD = Column(Float(53))
CmraCNE5 = Column(Float(53))
HsigmaCNE5 = Column(Float(53))
SGRO = Column(Float(53))
EgibsLong = Column(Float(53))
STOM = Column(Float(53))
STOQ = Column(Float(53))
STOA = Column(Float(53))
NLSIZE = Column(Float(53))
ROEAfterNonRecurring = Column(Float(53))
EPSAfterNonRecurring = Column(Float(53))
EODPrice = Column(Float(53))
LogFloatCap = Column(Float(53))
BPS = Column(Float(53))
SPS = Column(Float(53))
DebtToAsset = Column(Float(53))
DROEAfterNonRecurring = Column(Float(53))
LogTotalCap = Column(Float(53))
BP = Column(Float(53))
SP = Column(Float(53))
EPAfterNonRecurring = Column(Float(53))
DivToB = Column(Float(53))
DivP = Column(Float(53))
EBITToSales = Column(Float(53))
EBITAToSales = Column(Float(53))
EVToSales = Column(Float(53))
EVToEBIT = Column(Float(53))
EVToEBITDA = Column(Float(53))
EVToNOPLAT = Column(Float(53))
EVToIC = Column(Float(53))
FCFFPS = Column(Float(53))
FCFFToEarningAfterNonRecurring = Column(Float(53))
FCFFP = Column(Float(53))
ProfitToAsset = Column(Float(53))
GrossProfitRatio = Column(Float(53))
LATO = Column(Float(53))
FATO = Column(Float(53))
TATO = Column(Float(53))
EquityTO = Column(Float(53))
PayableTO = Column(Float(53))
RecievableTO = Column(Float(53))
RevenueGrowth = Column(Float(53))
GrossProfitGrowth = Column(Float(53))
NetProfitGrowth = Column(Float(53))
GrossCFToRevenue = Column(Float(53))
CFToRevenue = Column(Float(53))
CFToProfit = Column(Float(53))
CFToAsset = Column(Float(53))
GrossCFGrowth = Column(Float(53))
CFGrowth = Column(Float(53))
ICFGrowth = Column(Float(53))
AveAmount60 = Column(Float(53))
PeriodReturn60 = Column(Float(53))
AmountRatio60to250 = Column(Float(53))
CFPS = Column(Float(53))
CFP = Column(Float(53))
NetCFGrowth = Column(Float(53))
NetCFGrowthP = Column(Float(53))
NetCash = Column(Float(53))
NetCashP = Column(Float(53))
BVPSGrowth = Column(Float(53))
EquityPSGrowth = Column(Float(53))
WholeSales = Column(Float(53))
WholeProfitAfterNonRecurring = Column(Float(53))
ExpenseRatio = Column(Float(53))
AcidTestRatio = Column(Float(53))
TimeInterestEarnedRatio = Column(Float(53))
DepositReceivedVsSale = Column(Float(53))
DebtRatioExcemptDepRec = Column(Float(53))
SNBARatio = Column(Float(53))
CFinc1 = Column(Float(53))
BDTO = Column(Float(53))
RVOL = Column(Float(53))
CHV = Column(Float(53))
VAL = Column(Float(53))
BETA = Column(Float(53))
MOMENTUM = Column(Float(53))
SIZE = Column(Float(53))
EARNYILD = Column(Float(53))
RESVOL = Column(Float(53))
GROWTH = Column(Float(53))
BTOP = Column(Float(53))
LEVERAGE = Column(Float(53))
LIQUIDTY = Column(Float(53))
SIZENL = Column(Float(53))
Bank = Column(BigInteger)
RealEstate = Column(BigInteger)
Health = Column(BigInteger)
Transportation = Column(BigInteger)
Mining = Column(BigInteger)
NonFerMetal = Column(BigInteger)
HouseApp = Column(BigInteger)
LeiService = Column(BigInteger)
MachiEquip = Column(BigInteger)
BuildDeco = Column(BigInteger)
CommeTrade = Column(BigInteger)
CONMAT = Column(BigInteger)
Auto = Column(BigInteger)
Textile = Column(BigInteger)
FoodBever = Column(BigInteger)
Electronics = Column(BigInteger)
Computer = Column(BigInteger)
LightIndus = Column(BigInteger)
Utilities = Column(BigInteger)
Telecom = Column(BigInteger)
AgriForest = Column(BigInteger)
CHEM = Column(BigInteger)
Media = Column(BigInteger)
IronSteel = Column(BigInteger)
NonBankFinan = Column(BigInteger)
ELECEQP = Column(BigInteger)
AERODEF = Column(BigInteger)
Conglomerates = Column(BigInteger)
COUNTRY = Column(BigInteger)
if __name__ == '__main__':
from sqlalchemy import create_engine from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha') engine = create_engine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha')
......
...@@ -34,6 +34,7 @@ from alphamind.data.dbmodel.models import RiskCovShort ...@@ -34,6 +34,7 @@ from alphamind.data.dbmodel.models import RiskCovShort
from alphamind.data.dbmodel.models import RiskCovLong from alphamind.data.dbmodel.models import RiskCovLong
from alphamind.data.dbmodel.models import RiskExposure from alphamind.data.dbmodel.models import RiskExposure
from alphamind.data.dbmodel.models import Market from alphamind.data.dbmodel.models import Market
from alphamind.data.dbmodel.models import FullFactorView
from alphamind.data.transformer import Transformer from alphamind.data.transformer import Transformer
from PyFin.api import advanceDateByCalendar from PyFin.api import advanceDateByCalendar
from PyFin.Analysis.SecurityValueHolders import SecurityLatestValueHolder from PyFin.Analysis.SecurityValueHolders import SecurityLatestValueHolder
...@@ -84,7 +85,7 @@ macro_styles = ['COUNTRY'] ...@@ -84,7 +85,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, LegacyFactor, Tiny, Experimental, RiskExposure, Market] factor_tables = [Uqer, LegacyFactor, Tiny, Experimental, RiskExposure, Market]
def append_industry_info(df): def append_industry_info(df):
...@@ -107,7 +108,16 @@ def _map_risk_model_table(risk_model: str) -> tuple: ...@@ -107,7 +108,16 @@ def _map_risk_model_table(risk_model: str) -> tuple:
raise ValueError("risk model name {0} is not recognized".format(risk_model)) raise ValueError("risk model name {0} is not recognized".format(risk_model))
def _map_factors(factors: Iterable[str]) -> dict: def _map_factors(factors: Iterable[str]) -> List:
factor_cols = []
excluded = {'trade_date', 'code', 'isOpen', }
for f in factors:
if f not in excluded and f in FullFactorView.__table__.columns:
factor_cols.append(FullFactorView.__table__.columns[f])
return factor_cols
def _map_factors_old(factors: Iterable[str]) -> List:
factor_cols = {} factor_cols = {}
excluded = {'trade_date', 'code', 'isOpen', } excluded = {'trade_date', 'code', 'isOpen', }
for f in factors: for f in factors:
...@@ -178,8 +188,8 @@ class SqlEngine(object): ...@@ -178,8 +188,8 @@ class SqlEngine(object):
def fetch_dx_return(self, def fetch_dx_return(self,
ref_date: str, ref_date: str,
codes: Iterable[int], codes: Iterable[int],
expiry_date: str=None, expiry_date: str = None,
horizon: int=0) -> pd.DataFrame: horizon: int = 0) -> pd.DataFrame:
start_date = ref_date start_date = ref_date
if not expiry_date: if not expiry_date:
...@@ -198,10 +208,10 @@ class SqlEngine(object): ...@@ -198,10 +208,10 @@ class SqlEngine(object):
def fetch_dx_return_range(self, def fetch_dx_return_range(self,
universe, universe,
start_date: str=None, start_date: str = None,
end_date: str=None, end_date: str = None,
dates: Iterable[str]=None, dates: Iterable[str] = None,
horizon: int=0) -> pd.DataFrame: horizon: int = 0) -> pd.DataFrame:
if dates: if dates:
start_date = dates[0] start_date = dates[0]
...@@ -210,7 +220,8 @@ class SqlEngine(object): ...@@ -210,7 +220,8 @@ class SqlEngine(object):
end_date = advanceDateByCalendar('china.sse', end_date, str(horizon) + 'b').strftime('%Y-%m-%d') end_date = advanceDateByCalendar('china.sse', end_date, str(horizon) + 'b').strftime('%Y-%m-%d')
q2 = universe.query_range(start_date, end_date).alias('temp_universe') q2 = universe.query_range(start_date, end_date).alias('temp_universe')
big_table = join(DailyReturn, q2, and_(DailyReturn.trade_date == q2.c.trade_date, DailyReturn.code == q2.c.code)) big_table = join(DailyReturn, q2,
and_(DailyReturn.trade_date == q2.c.trade_date, DailyReturn.code == q2.c.code))
stats = func.sum(self.ln_func(1. + DailyReturn.d1)).over( stats = func.sum(self.ln_func(1. + DailyReturn.d1)).over(
partition_by=DailyReturn.code, partition_by=DailyReturn.code,
...@@ -232,7 +243,7 @@ class SqlEngine(object): ...@@ -232,7 +243,7 @@ class SqlEngine(object):
ref_date: str, ref_date: str,
factors: Iterable[object], factors: Iterable[object],
codes: Iterable[int], codes: Iterable[int],
warm_start: int=0) -> pd.DataFrame: warm_start: int = 0) -> pd.DataFrame:
if isinstance(factors, Transformer): if isinstance(factors, Transformer):
transformer = factors transformer = factors
...@@ -246,13 +257,8 @@ class SqlEngine(object): ...@@ -246,13 +257,8 @@ class SqlEngine(object):
start_date = advanceDateByCalendar('china.sse', ref_date, str(-warm_start) + 'b').strftime('%Y-%m-%d') start_date = advanceDateByCalendar('china.sse', ref_date, str(-warm_start) + 'b').strftime('%Y-%m-%d')
end_date = ref_date end_date = ref_date
big_table = Market query = select([FullFactorView.trade_date, FullFactorView.code, FullFactorView.isOpen] + factor_cols) \
for t in set(factor_cols.values()): .where(and_(FullFactorView.trade_date.between(start_date, end_date), FullFactorView.code.in_(codes)))
big_table = outerjoin(big_table, t, and_(Market.trade_date == t.trade_date, Market.code == t.code))
query = select([Market.trade_date, Market.code, Market.isOpen] + list(factor_cols.keys())) \
.select_from(big_table) \
.where(and_(Market.trade_date.between(start_date, end_date), Market.code.in_(codes)))
df = pd.read_sql(query, self.engine).sort_values(['trade_date', 'code']).set_index('trade_date') df = pd.read_sql(query, self.engine).sort_values(['trade_date', 'code']).set_index('trade_date')
res = transformer.transform('code', df) res = transformer.transform('code', df)
...@@ -271,7 +277,7 @@ class SqlEngine(object): ...@@ -271,7 +277,7 @@ class SqlEngine(object):
start_date: str = None, start_date: str = None,
end_date: str = None, end_date: str = None,
dates: Iterable[str] = None, dates: Iterable[str] = None,
warm_start: int=0) -> pd.DataFrame: warm_start: int = 0) -> pd.DataFrame:
if isinstance(factors, Transformer): if isinstance(factors, Transformer):
transformer = factors transformer = factors
...@@ -295,20 +301,21 @@ class SqlEngine(object): ...@@ -295,20 +301,21 @@ class SqlEngine(object):
real_dates = dates real_dates = dates
else: else:
if dates: if dates:
real_start_date = advanceDateByCalendar('china.sse', dates[0], str(-warm_start) + 'b').strftime('%Y-%m-%d') real_start_date = advanceDateByCalendar('china.sse', dates[0], str(-warm_start) + 'b').strftime(
'%Y-%m-%d')
real_end_date = dates[-1] real_end_date = dates[-1]
else: else:
real_start_date = advanceDateByCalendar('china.sse', start_date, str(-warm_start) + 'b').strftime('%Y-%m-%d') real_start_date = advanceDateByCalendar('china.sse', start_date, str(-warm_start) + 'b').strftime(
'%Y-%m-%d')
real_end_date = end_date real_end_date = end_date
real_dates = None real_dates = None
q2 = universe.query_range(real_start_date, real_end_date, real_dates).alias('temp_universe') q2 = universe.query_range(real_start_date, real_end_date, real_dates).alias('temp_universe')
big_table = join(Market, q2, and_(Market.trade_date == q2.c.trade_date, Market.code == q2.c.code)) big_table = join(FullFactorView, q2,
for t in set(factor_cols.values()): and_(FullFactorView.trade_date == q2.c.trade_date, FullFactorView.code == q2.c.code))
big_table = outerjoin(big_table, t, and_(Market.trade_date == t.trade_date, Market.code == t.code))
query = select([Market.trade_date, Market.code, Market.isOpen] + list(factor_cols.keys())) \ query = select([FullFactorView.trade_date, FullFactorView.code, FullFactorView.isOpen] + factor_cols) \
.select_from(big_table) .select_from(big_table)
df = pd.read_sql(query, self.engine).sort_values(['trade_date', 'code']).set_index('trade_date') df = pd.read_sql(query, self.engine).sort_values(['trade_date', 'code']).set_index('trade_date')
...@@ -341,7 +348,8 @@ class SqlEngine(object): ...@@ -341,7 +348,8 @@ class SqlEngine(object):
end_date: str = None, end_date: str = None,
dates: Iterable[str] = None) -> pd.DataFrame: dates: Iterable[str] = None) -> pd.DataFrame:
cond = IndexComponent.trade_date.in_(dates) if dates else IndexComponent.trade_date.between(start_date, end_date) cond = IndexComponent.trade_date.in_(dates) if dates else IndexComponent.trade_date.between(start_date,
end_date)
query = select( query = select(
[IndexComponent.trade_date, IndexComponent.code, (IndexComponent.weight / 100.).label('weight')]).where( [IndexComponent.trade_date, IndexComponent.code, (IndexComponent.weight / 100.).label('weight')]).where(
...@@ -356,7 +364,7 @@ class SqlEngine(object): ...@@ -356,7 +364,7 @@ class SqlEngine(object):
ref_date: str, ref_date: str,
codes: Iterable[int], codes: Iterable[int],
risk_model: str = 'short', risk_model: str = 'short',
excluded: Iterable[str]=None) -> Tuple[pd.DataFrame, pd.DataFrame]: excluded: Iterable[str] = None) -> Tuple[pd.DataFrame, pd.DataFrame]:
risk_cov_table, special_risk_table = _map_risk_model_table(risk_model) risk_cov_table, special_risk_table = _map_risk_model_table(risk_model)
cov_risk_cols = [risk_cov_table.__table__.columns[f] for f in total_risk_factors] cov_risk_cols = [risk_cov_table.__table__.columns[f] for f in total_risk_factors]
...@@ -392,7 +400,8 @@ class SqlEngine(object): ...@@ -392,7 +400,8 @@ class SqlEngine(object):
cov_risk_cols = [risk_cov_table.__table__.columns[f] for f in total_risk_factors] cov_risk_cols = [risk_cov_table.__table__.columns[f] for f in total_risk_factors]
cond = risk_cov_table.trade_date.in_(dates) if dates else risk_cov_table.trade_date.between(start_date, end_date) cond = risk_cov_table.trade_date.in_(dates) if dates else risk_cov_table.trade_date.between(start_date,
end_date)
query = select([risk_cov_table.trade_date, query = select([risk_cov_table.trade_date,
risk_cov_table.FactorID, risk_cov_table.FactorID,
risk_cov_table.Factor] risk_cov_table.Factor]
...@@ -425,7 +434,7 @@ class SqlEngine(object): ...@@ -425,7 +434,7 @@ class SqlEngine(object):
def fetch_industry(self, def fetch_industry(self,
ref_date: str, ref_date: str,
codes: Iterable[int], codes: Iterable[int],
category: str='sw'): category: str = 'sw'):
industry_category_name = _map_industry_category(category) industry_category_name = _map_industry_category(category)
...@@ -449,18 +458,26 @@ class SqlEngine(object): ...@@ -449,18 +458,26 @@ class SqlEngine(object):
category: str = 'sw'): category: str = 'sw'):
industry_category_name = _map_industry_category(category) industry_category_name = _map_industry_category(category)
if dates:
q1 = select([Industry.trade_date,
Industry.code,
Industry.industryID1.label('industry_code'),
Industry.industryName1.label('industry')]).where(
and_(Industry.industry == industry_category_name,
Industry.trade_date.in_(dates))).alias('temp_industry')
else:
q1 = select([Industry.trade_date,
Industry.code,
Industry.industryID1.label('industry_code'),
Industry.industryName1.label('industry')]).where(
and_(Industry.industry == industry_category_name,
Industry.trade_date.between(start_date, end_date))).alias('temp_industry')
q2 = universe.query_range(start_date, end_date, dates).alias('temp_universe') q2 = universe.query_range(start_date, end_date, dates).alias('temp_universe')
big_table = join(Industry, q2, big_table = join(q1, q2,
and_(Industry.trade_date == q2.c.trade_date, Industry.code == q2.c.code)) and_(q1.c.trade_date == q2.c.trade_date, q1.c.code == q2.c.code))
query = select( query = select([q1]).select_from(big_table)
[Industry.trade_date,
Industry.code,
Industry.industryID1.label('industry_code'),
Industry.industryName1.label('industry')]). \
select_from(big_table).where(
Industry.industry == industry_category_name
)
return pd.read_sql(query, self.engine) return pd.read_sql(query, self.engine)
def fetch_data(self, ref_date: str, def fetch_data(self, ref_date: str,
...@@ -499,7 +516,7 @@ class SqlEngine(object): ...@@ -499,7 +516,7 @@ class SqlEngine(object):
dates: Iterable[str] = None, dates: Iterable[str] = None,
benchmark: int = None, benchmark: int = None,
risk_model: str = 'short', risk_model: str = 'short',
industry: str='sw') -> Dict[str, pd.DataFrame]: industry: str = 'sw') -> Dict[str, pd.DataFrame]:
total_data = {} total_data = {}
transformer = Transformer(factors) transformer = Transformer(factors)
...@@ -513,7 +530,8 @@ class SqlEngine(object): ...@@ -513,7 +530,8 @@ class SqlEngine(object):
if risk_model: if risk_model:
excluded = list(set(total_risk_factors).intersection(transformer.dependency)) excluded = list(set(total_risk_factors).intersection(transformer.dependency))
risk_cov, risk_exp = self.fetch_risk_model_range(universe, start_date, end_date, dates, risk_model, excluded) risk_cov, risk_exp = self.fetch_risk_model_range(universe, start_date, end_date, dates, risk_model,
excluded)
factor_data = pd.merge(factor_data, risk_exp, how='left', on=['trade_date', 'code']) factor_data = pd.merge(factor_data, risk_exp, how='left', on=['trade_date', 'code'])
total_data['risk_cov'] = risk_cov total_data['risk_cov'] = risk_cov
...@@ -529,22 +547,34 @@ class SqlEngine(object): ...@@ -529,22 +547,34 @@ class SqlEngine(object):
if __name__ == '__main__': if __name__ == '__main__':
import datetime as dt
from PyFin.api import * from PyFin.api import *
from alphamind.api import alpha_logger
db_url = 'postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha' db_url = 'postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha'
# db_url = 'mssql+pymssql://licheng:A12345678!@10.63.6.220/alpha' # db_url = 'mssql+pymssql://licheng:A12345678!@10.63.6.220/alpha'
universe = Universe('custom', ['zz500']) universe = Universe('custom', ['zz500'])
engine = SqlEngine(db_url) engine = SqlEngine(db_url)
ref_date = '2017-08-10'
start_date = '2017-08-01' start_date = '2017-08-01'
end_date = '2017-08-12' end_date = '2017-08-31'
codes = engine.fetch_codes(universe=universe, ref_date=ref_date) dates = makeSchedule(start_date, end_date, '1w', 'china.sse')
data2 = engine.fetch_industry(ref_date=ref_date,
codes=codes) alpha_logger.info('start')
data2 = engine.fetch_data_range(universe, # codes = engine.fetch_codes(universe=universe, ref_date=ref_date)
factors=None,
start_date=start_date, data1 = engine.fetch_factor_range(universe=universe,
end_date=end_date) start_date=start_date,
print(codes) end_date=end_date,
print(data2) dates=dates,
factors=['RVOL', 'EPS', 'CFinc1', 'BDTO', 'VAL', 'CHV', 'GREV', 'ROEDiluted'])
alpha_logger.info('end')
data2 = engine.fetch_industry_range(universe, start_date=start_date, end_date=end_date, dates=dates)
alpha_logger.info('end')
data3 = engine.fetch_benchmark_range(905, start_date=start_date, end_date=end_date, dates=dates)
alpha_logger.info('end')
data4 = engine.fetch_risk_model_range(universe=universe, start_date=start_date, end_date=end_date, dates=dates)
alpha_logger.info('end')
data2 = engine.fetch_codes_range(universe, start_date=start_date, end_date=end_date, dates=dates)
alpha_logger.info('end')
...@@ -30,8 +30,14 @@ create MATERIALIZED VIEW full_factor_view as SELECT m."trade_date",m."code",m."s ...@@ -30,8 +30,14 @@ create MATERIALIZED VIEW full_factor_view as SELECT m."trade_date",m."code",m."s
u."AccountsPayablesTDays",u."AccountsPayablesTRate",u."AdminiExpenseRate",u."ARTDays",u."ARTRate",u."ASSI",u."BLEV",u."BondsPayableToAsset",u."CashRateOfSales",u."CashToCurrentLiability",u."CMRA",u."CTOP",u."CTP5",u."CurrentAssetsRatio",u."CurrentAssetsTRate",u."CurrentRatio",u."DAVOL10",u."DAVOL20",u."DAVOL5",u."DDNBT",u."DDNCR",u."DDNSR",u."DebtEquityRatio",u."DebtsAssetRatio",u."DHILO",u."DilutedEPS",u."DVRAT",u."EBITToTOR",u."EGRO",u."EMA10",u."EMA120",u."EMA20",u."EMA5",u."EMA60",u."EPS",u."EquityFixedAssetRatio",u."EquityToAsset",u."EquityTRate",u."ETOP",u."ETP5",u."FinancialExpenseRate",u."FinancingCashGrowRate",u."FixAssetRatio",u."FixedAssetsTRate",u."GrossIncomeRatio",u."HBETA",u."HSIGMA",u."IntangibleAssetRatio",u."InventoryTDays",u."InventoryTRate",u."InvestCashGrowRate",u."LCAP",u."LFLO",u."LongDebtToAsset",u."LongDebtToWorkingCapital",u."LongTermDebtToAsset",u."MA10",u."MA120",u."MA20",u."MA5",u."MA60",u."MAWVAD",u."MFI",u."MLEV",u."NetAssetGrowRate",u."NetProfitGrowRate",u."NetProfitRatio",u."NOCFToOperatingNI",u."NonCurrentAssetsRatio",u."NPParentCompanyGrowRate",u."NPToTOR",u."OperatingExpenseRate",u."OperatingProfitGrowRate",u."OperatingProfitRatio",u."OperatingProfitToTOR",u."OperatingRevenueGrowRate",u."OperCashGrowRate",u."OperCashInToCurrentLiability",u."PB",u."PCF",u."PE",u."PS",u."PSY",u."QuickRatio",u."REVS10",u."REVS20",u."REVS5",u."ROA",u."ROA5",u."ROE",u."ROE5",u."RSI",u."RSTR12",u."RSTR24",u."SalesCostRatio",u."SaleServiceCashToOR",u."SUE",u."TaxRatio",u."TOBT",u."TotalAssetGrowRate",u."TotalAssetsTRate",u."TotalProfitCostRatio",u."TotalProfitGrowRate",u."VOL10",u."VOL120",u."VOL20",u."VOL240",u."VOL5",u."VOL60",u."WVAD",u."REC",u."DAREC",u."GREC",u."FY12P",u."DAREV",u."GREV",u."SFY12P",u."DASREV",u."GSREV",u."FEARNG",u."FSALESG",u."TA2EV",u."CFO2EV",u."ACCA",u."DEGM",u."SUOI",u."EARNMOM",u."FiftyTwoWeekHigh",u."Volatility",u."Skewness",u."ILLIQUIDITY",u."BackwardADJ",u."MACD",u."ADTM",u."ATR14",u."ATR6",u."BIAS10",u."BIAS20",u."BIAS5",u."BIAS60",u."BollDown",u."BollUp",u."CCI10",u."CCI20",u."CCI5",u."CCI88",u."KDJ_K",u."KDJ_D",u."KDJ_J",u."ROC6",u."ROC20",u."SBM",u."STM",u."UpRVI",u."DownRVI",u."RVI",u."SRMI",u."ChandeSD",u."ChandeSU",u."CMO",u."DBCD",u."ARC",u."OBV",u."OBV6",u."OBV20",u."TVMA20",u."TVMA6",u."TVSTD20",u."TVSTD6",u."VDEA",u."VDIFF",u."VEMA10",u."VEMA12",u."VEMA26",u."VEMA5",u."VMACD",u."VOSC",u."VR",u."VROC12",u."VROC6",u."VSTD10",u."VSTD20",u."KlingerOscillator",u."MoneyFlow20",u."AD",u."AD20",u."AD6",u."CoppockCurve",u."ASI",u."ChaikinOscillator",u."ChaikinVolatility",u."EMV14",u."EMV6",u."plusDI",u."minusDI",u."ADX",u."ADXR",u."Aroon",u."AroonDown",u."AroonUp",u."DEA",u."DIFF",u."DDI",u."DIZ",u."DIF",u."MTM",u."MTMMA",u."PVT",u."PVT6",u."PVT12",u."TRIX5",u."TRIX10",u."UOS",u."MA10RegressCoeff12",u."MA10RegressCoeff6",u."PLRC6",u."PLRC12",u."SwingIndex",u."Ulcer10",u."Ulcer5",u."Hurst",u."ACD6",u."ACD20",u."EMA12",u."EMA26",u."APBMA",u."BBI",u."BBIC",u."TEMA10",u."TEMA5",u."MA10Close",u."AR",u."BR",u."ARBR",u."CR20",u."MassIndex",u."BearPower",u."BullPower",u."Elder",u."NVI",u."PVI",u."RC12",u."RC24",u."JDQS20",u."Variance20",u."Variance60",u."Variance120",u."Kurtosis20",u."Kurtosis60",u."Kurtosis120",u."Alpha20",u."Alpha60",u."Alpha120",u."Beta20",u."Beta60",u."Beta120",u."SharpeRatio20",u."SharpeRatio60",u."SharpeRatio120",u."TreynorRatio20",u."TreynorRatio60",u."TreynorRatio120",u."InformationRatio20",u."InformationRatio60",u."InformationRatio120",u."GainVariance20",u."GainVariance60",u."GainVariance120",u."LossVariance20",u."LossVariance60",u."LossVariance120",u."GainLossVarianceRatio20",u."GainLossVarianceRatio60",u."GainLossVarianceRatio120",u."RealizedVolatility",u."REVS60",u."REVS120",u."REVS250",u."REVS750",u."REVS5m20",u."REVS5m60",u."REVS5Indu1",u."REVS20Indu1",u."Volumn1M",u."Volumn3M",u."Price1M",u."Price3M",u."Price1Y",u."Rank1M",u."CashDividendCover",u."DividendCover",u."DividendPaidRatio",u."RetainedEarningRatio",u."CashEquivalentPS",u."DividendPS",u."EPSTTM",u."NetAssetPS",u."TORPS",u."TORPSLatest",u."OperatingRevenuePS",u."OperatingRevenuePSLatest",u."OperatingProfitPS",u."OperatingProfitPSLatest",u."CapitalSurplusFundPS",u."SurplusReserveFundPS",u."UndividedProfitPS",u."RetainedEarningsPS",u."OperCashFlowPS",u."CashFlowPS",u."NetNonOIToTP",u."NetNonOIToTPLatest",u."PeriodCostsRate",u."InterestCover",u."NetProfitGrowRate3Y",u."NetProfitGrowRate5Y",u."OperatingRevenueGrowRate3Y",u."OperatingRevenueGrowRate5Y",u."NetCashFlowGrowRate",u."NetProfitCashCover",u."OperCashInToAsset",u."CashConversionCycle",u."OperatingCycle",u."PEG3Y",u."PEG5Y",u."PEIndu",u."PBIndu",u."PSIndu",u."PCFIndu",u."PEHist20",u."PEHist60",u."PEHist120",u."PEHist250",u."StaticPE",u."ForwardPE",u."EnterpriseFCFPS",u."ShareholderFCFPS",u."ROEDiluted",u."ROEAvg",u."ROEWeighted",u."ROECut",u."ROECutWeighted",u."ROIC",u."ROAEBIT",u."ROAEBITTTM",u."OperatingNIToTP",u."OperatingNIToTPLatest",u."InvestRAssociatesToTP",u."InvestRAssociatesToTPLatest",u."NPCutToNP",u."SuperQuickRatio",u."TSEPToInterestBearDebt",u."DebtTangibleEquityRatio",u."TangibleAToInteBearDebt",u."TangibleAToNetDebt",u."NOCFToTLiability",u."NOCFToInterestBearDebt",u."NOCFToNetDebt",u."TSEPToTotalCapital",u."InteBearDebtToTotalCapital",u."NPParentCompanyCutYOY",u."SalesServiceCashToORLatest",u."CashRateOfSalesLatest",u."NOCFToOperatingNILatest",u."TotalAssets",u."MktValue",u."NegMktValue",u."TEAP",u."NIAP",u."TotalFixedAssets",u."IntFreeCL",u."IntFreeNCL",u."IntCL",u."IntDebt",u."NetDebt",u."NetTangibleAssets",u."WorkingCapital",u."NetWorkingCapital",u."TotalPaidinCapital",u."RetainedEarnings",u."OperateNetIncome",u."ValueChgProfit",u."NetIntExpense",u."EBIT",u."EBITDA",u."EBIAT",u."NRProfitLoss",u."NIAPCut",u."FCFF",u."FCFE",u."DA",u."TRevenueTTM",u."TCostTTM",u."RevenueTTM",u."CostTTM",u."GrossProfitTTM",u."SalesExpenseTTM",u."AdminExpenseTTM",u."FinanExpenseTTM",u."AssetImpairLossTTM",u."NPFromOperatingTTM",u."NPFromValueChgTTM",u."OperateProfitTTM",u."NonOperatingNPTTM",u."TProfitTTM",u."NetProfitTTM",u."NetProfitAPTTM",u."SaleServiceRenderCashTTM",u."NetOperateCFTTM",u."NetInvestCFTTM",u."NetFinanceCFTTM",u."GrossProfit",u."Beta252",u."RSTR504",u."EPIBS",u."CETOP",u."DASTD",u."CmraCNE5",u."HsigmaCNE5",u."SGRO",u."EgibsLong",u."STOM",u."STOQ",u."STOA",u."NLSIZE", u."AccountsPayablesTDays",u."AccountsPayablesTRate",u."AdminiExpenseRate",u."ARTDays",u."ARTRate",u."ASSI",u."BLEV",u."BondsPayableToAsset",u."CashRateOfSales",u."CashToCurrentLiability",u."CMRA",u."CTOP",u."CTP5",u."CurrentAssetsRatio",u."CurrentAssetsTRate",u."CurrentRatio",u."DAVOL10",u."DAVOL20",u."DAVOL5",u."DDNBT",u."DDNCR",u."DDNSR",u."DebtEquityRatio",u."DebtsAssetRatio",u."DHILO",u."DilutedEPS",u."DVRAT",u."EBITToTOR",u."EGRO",u."EMA10",u."EMA120",u."EMA20",u."EMA5",u."EMA60",u."EPS",u."EquityFixedAssetRatio",u."EquityToAsset",u."EquityTRate",u."ETOP",u."ETP5",u."FinancialExpenseRate",u."FinancingCashGrowRate",u."FixAssetRatio",u."FixedAssetsTRate",u."GrossIncomeRatio",u."HBETA",u."HSIGMA",u."IntangibleAssetRatio",u."InventoryTDays",u."InventoryTRate",u."InvestCashGrowRate",u."LCAP",u."LFLO",u."LongDebtToAsset",u."LongDebtToWorkingCapital",u."LongTermDebtToAsset",u."MA10",u."MA120",u."MA20",u."MA5",u."MA60",u."MAWVAD",u."MFI",u."MLEV",u."NetAssetGrowRate",u."NetProfitGrowRate",u."NetProfitRatio",u."NOCFToOperatingNI",u."NonCurrentAssetsRatio",u."NPParentCompanyGrowRate",u."NPToTOR",u."OperatingExpenseRate",u."OperatingProfitGrowRate",u."OperatingProfitRatio",u."OperatingProfitToTOR",u."OperatingRevenueGrowRate",u."OperCashGrowRate",u."OperCashInToCurrentLiability",u."PB",u."PCF",u."PE",u."PS",u."PSY",u."QuickRatio",u."REVS10",u."REVS20",u."REVS5",u."ROA",u."ROA5",u."ROE",u."ROE5",u."RSI",u."RSTR12",u."RSTR24",u."SalesCostRatio",u."SaleServiceCashToOR",u."SUE",u."TaxRatio",u."TOBT",u."TotalAssetGrowRate",u."TotalAssetsTRate",u."TotalProfitCostRatio",u."TotalProfitGrowRate",u."VOL10",u."VOL120",u."VOL20",u."VOL240",u."VOL5",u."VOL60",u."WVAD",u."REC",u."DAREC",u."GREC",u."FY12P",u."DAREV",u."GREV",u."SFY12P",u."DASREV",u."GSREV",u."FEARNG",u."FSALESG",u."TA2EV",u."CFO2EV",u."ACCA",u."DEGM",u."SUOI",u."EARNMOM",u."FiftyTwoWeekHigh",u."Volatility",u."Skewness",u."ILLIQUIDITY",u."BackwardADJ",u."MACD",u."ADTM",u."ATR14",u."ATR6",u."BIAS10",u."BIAS20",u."BIAS5",u."BIAS60",u."BollDown",u."BollUp",u."CCI10",u."CCI20",u."CCI5",u."CCI88",u."KDJ_K",u."KDJ_D",u."KDJ_J",u."ROC6",u."ROC20",u."SBM",u."STM",u."UpRVI",u."DownRVI",u."RVI",u."SRMI",u."ChandeSD",u."ChandeSU",u."CMO",u."DBCD",u."ARC",u."OBV",u."OBV6",u."OBV20",u."TVMA20",u."TVMA6",u."TVSTD20",u."TVSTD6",u."VDEA",u."VDIFF",u."VEMA10",u."VEMA12",u."VEMA26",u."VEMA5",u."VMACD",u."VOSC",u."VR",u."VROC12",u."VROC6",u."VSTD10",u."VSTD20",u."KlingerOscillator",u."MoneyFlow20",u."AD",u."AD20",u."AD6",u."CoppockCurve",u."ASI",u."ChaikinOscillator",u."ChaikinVolatility",u."EMV14",u."EMV6",u."plusDI",u."minusDI",u."ADX",u."ADXR",u."Aroon",u."AroonDown",u."AroonUp",u."DEA",u."DIFF",u."DDI",u."DIZ",u."DIF",u."MTM",u."MTMMA",u."PVT",u."PVT6",u."PVT12",u."TRIX5",u."TRIX10",u."UOS",u."MA10RegressCoeff12",u."MA10RegressCoeff6",u."PLRC6",u."PLRC12",u."SwingIndex",u."Ulcer10",u."Ulcer5",u."Hurst",u."ACD6",u."ACD20",u."EMA12",u."EMA26",u."APBMA",u."BBI",u."BBIC",u."TEMA10",u."TEMA5",u."MA10Close",u."AR",u."BR",u."ARBR",u."CR20",u."MassIndex",u."BearPower",u."BullPower",u."Elder",u."NVI",u."PVI",u."RC12",u."RC24",u."JDQS20",u."Variance20",u."Variance60",u."Variance120",u."Kurtosis20",u."Kurtosis60",u."Kurtosis120",u."Alpha20",u."Alpha60",u."Alpha120",u."Beta20",u."Beta60",u."Beta120",u."SharpeRatio20",u."SharpeRatio60",u."SharpeRatio120",u."TreynorRatio20",u."TreynorRatio60",u."TreynorRatio120",u."InformationRatio20",u."InformationRatio60",u."InformationRatio120",u."GainVariance20",u."GainVariance60",u."GainVariance120",u."LossVariance20",u."LossVariance60",u."LossVariance120",u."GainLossVarianceRatio20",u."GainLossVarianceRatio60",u."GainLossVarianceRatio120",u."RealizedVolatility",u."REVS60",u."REVS120",u."REVS250",u."REVS750",u."REVS5m20",u."REVS5m60",u."REVS5Indu1",u."REVS20Indu1",u."Volumn1M",u."Volumn3M",u."Price1M",u."Price3M",u."Price1Y",u."Rank1M",u."CashDividendCover",u."DividendCover",u."DividendPaidRatio",u."RetainedEarningRatio",u."CashEquivalentPS",u."DividendPS",u."EPSTTM",u."NetAssetPS",u."TORPS",u."TORPSLatest",u."OperatingRevenuePS",u."OperatingRevenuePSLatest",u."OperatingProfitPS",u."OperatingProfitPSLatest",u."CapitalSurplusFundPS",u."SurplusReserveFundPS",u."UndividedProfitPS",u."RetainedEarningsPS",u."OperCashFlowPS",u."CashFlowPS",u."NetNonOIToTP",u."NetNonOIToTPLatest",u."PeriodCostsRate",u."InterestCover",u."NetProfitGrowRate3Y",u."NetProfitGrowRate5Y",u."OperatingRevenueGrowRate3Y",u."OperatingRevenueGrowRate5Y",u."NetCashFlowGrowRate",u."NetProfitCashCover",u."OperCashInToAsset",u."CashConversionCycle",u."OperatingCycle",u."PEG3Y",u."PEG5Y",u."PEIndu",u."PBIndu",u."PSIndu",u."PCFIndu",u."PEHist20",u."PEHist60",u."PEHist120",u."PEHist250",u."StaticPE",u."ForwardPE",u."EnterpriseFCFPS",u."ShareholderFCFPS",u."ROEDiluted",u."ROEAvg",u."ROEWeighted",u."ROECut",u."ROECutWeighted",u."ROIC",u."ROAEBIT",u."ROAEBITTTM",u."OperatingNIToTP",u."OperatingNIToTPLatest",u."InvestRAssociatesToTP",u."InvestRAssociatesToTPLatest",u."NPCutToNP",u."SuperQuickRatio",u."TSEPToInterestBearDebt",u."DebtTangibleEquityRatio",u."TangibleAToInteBearDebt",u."TangibleAToNetDebt",u."NOCFToTLiability",u."NOCFToInterestBearDebt",u."NOCFToNetDebt",u."TSEPToTotalCapital",u."InteBearDebtToTotalCapital",u."NPParentCompanyCutYOY",u."SalesServiceCashToORLatest",u."CashRateOfSalesLatest",u."NOCFToOperatingNILatest",u."TotalAssets",u."MktValue",u."NegMktValue",u."TEAP",u."NIAP",u."TotalFixedAssets",u."IntFreeCL",u."IntFreeNCL",u."IntCL",u."IntDebt",u."NetDebt",u."NetTangibleAssets",u."WorkingCapital",u."NetWorkingCapital",u."TotalPaidinCapital",u."RetainedEarnings",u."OperateNetIncome",u."ValueChgProfit",u."NetIntExpense",u."EBIT",u."EBITDA",u."EBIAT",u."NRProfitLoss",u."NIAPCut",u."FCFF",u."FCFE",u."DA",u."TRevenueTTM",u."TCostTTM",u."RevenueTTM",u."CostTTM",u."GrossProfitTTM",u."SalesExpenseTTM",u."AdminExpenseTTM",u."FinanExpenseTTM",u."AssetImpairLossTTM",u."NPFromOperatingTTM",u."NPFromValueChgTTM",u."OperateProfitTTM",u."NonOperatingNPTTM",u."TProfitTTM",u."NetProfitTTM",u."NetProfitAPTTM",u."SaleServiceRenderCashTTM",u."NetOperateCFTTM",u."NetInvestCFTTM",u."NetFinanceCFTTM",u."GrossProfit",u."Beta252",u."RSTR504",u."EPIBS",u."CETOP",u."DASTD",u."CmraCNE5",u."HsigmaCNE5",u."SGRO",u."EgibsLong",u."STOM",u."STOQ",u."STOA",u."NLSIZE",
l."ROEAfterNonRecurring",l."EPSAfterNonRecurring",l."EODPrice",l."LogFloatCap",l."BPS",l."SPS",l."DebtToAsset",l."DROEAfterNonRecurring",l."LogTotalCap",l."BP",l."SP",l."EPAfterNonRecurring",l."DivToB",l."DivP",l."EBITToSales",l."EBITAToSales",l."EVToSales",l."EVToEBIT",l."EVToEBITDA",l."EVToNOPLAT",l."EVToIC",l."FCFFPS",l."FCFFToEarningAfterNonRecurring",l."FCFFP",l."ProfitToAsset",l."GrossProfitRatio",l."LATO",l."FATO",l."TATO",l."EquityTO",l."PayableTO",l."RecievableTO",l."RevenueGrowth",l."GrossProfitGrowth",l."NetProfitGrowth",l."GrossCFToRevenue",l."CFToRevenue",l."CFToProfit",l."CFToAsset",l."GrossCFGrowth",l."CFGrowth",l."ICFGrowth",l."AveAmount60",l."PeriodReturn60",l."AmountRatio60to250",l."CFPS",l."CFP",l."NetCFGrowth",l."NetCFGrowthP",l."NetCash",l."NetCashP",l."BVPSGrowth",l."EquityPSGrowth",l."WholeSales",l."WholeProfitAfterNonRecurring",l."ExpenseRatio",l."AcidTestRatio",l."TimeInterestEarnedRatio",l."DepositReceivedVsSale",l."DebtRatioExcemptDepRec",l."SNBARatio", l."ROEAfterNonRecurring",l."EPSAfterNonRecurring",l."EODPrice",l."LogFloatCap",l."BPS",l."SPS",l."DebtToAsset",l."DROEAfterNonRecurring",l."LogTotalCap",l."BP",l."SP",l."EPAfterNonRecurring",l."DivToB",l."DivP",l."EBITToSales",l."EBITAToSales",l."EVToSales",l."EVToEBIT",l."EVToEBITDA",l."EVToNOPLAT",l."EVToIC",l."FCFFPS",l."FCFFToEarningAfterNonRecurring",l."FCFFP",l."ProfitToAsset",l."GrossProfitRatio",l."LATO",l."FATO",l."TATO",l."EquityTO",l."PayableTO",l."RecievableTO",l."RevenueGrowth",l."GrossProfitGrowth",l."NetProfitGrowth",l."GrossCFToRevenue",l."CFToRevenue",l."CFToProfit",l."CFToAsset",l."GrossCFGrowth",l."CFGrowth",l."ICFGrowth",l."AveAmount60",l."PeriodReturn60",l."AmountRatio60to250",l."CFPS",l."CFP",l."NetCFGrowth",l."NetCFGrowthP",l."NetCash",l."NetCashP",l."BVPSGrowth",l."EquityPSGrowth",l."WholeSales",l."WholeProfitAfterNonRecurring",l."ExpenseRatio",l."AcidTestRatio",l."TimeInterestEarnedRatio",l."DepositReceivedVsSale",l."DebtRatioExcemptDepRec",l."SNBARatio",
t."CFinc1",t."BDTO",t."RVOL",t."CHV",t."VAL", t."CFinc1",t."BDTO",t."RVOL",t."CHV",t."VAL",
r."BETA",r."MOMENTUM",r."SIZE",r."EARNYILD",r."RESVOL",r."GROWTH",r."BTOP",r."LEVERAGE",r."LIQUIDTY",r."SIZENL",r."Bank",r."RealEstate",r."Health",r."Transportation",r."Mining",r."NonFerMetal",r."HouseApp",r."LeiService",r."MachiEquip",r."BuildDeco",r."CommeTrade",r."CONMAT",r."Auto",r."Textile",r."FoodBever",r."Electronics",r."Computer",r."LightIndus",r."Utilities",r."Telecom",r."AgriForest",r."CHEM",r."Media",r."IronSteel",r."NonBankFinan",r."ELECEQP",r."AERODEF",r."Conglomerates",r."COUNTRY" r."BETA",r."MOMENTUM",r."SIZE",r."EARNYILD",r."RESVOL",r."GROWTH",r."BTOP",r."LEVERAGE",r."LIQUIDTY",r."SIZENL",r."Bank",r."RealEstate",r."Health",r."Transportation",r."Mining",r."NonFerMetal",r."HouseApp",r."LeiService",r."MachiEquip",r."BuildDeco",r."CommeTrade",r."CONMAT",r."Auto",r."Textile",r."FoodBever",r."Electronics",r."Computer",r."LightIndus",r."Utilities",r."Telecom",r."AgriForest",r."CHEM",r."Media",r."IronSteel",r."NonBankFinan",r."ELECEQP",r."AERODEF",r."Conglomerates",r."COUNTRY",
s1."SRISK" as d_srisk, s2."SRISK" as s_srisk, s3."SRISK" as l_srisk
FROM market AS m left join uqer AS u on m.trade_date = u.trade_date and m.code = u.code FROM market AS m left join uqer AS u on m.trade_date = u.trade_date and m.code = u.code
inner join risk_exposure AS r on m.trade_date = r.trade_date and m.code = r.code inner join risk_exposure AS r on m.trade_date = r.trade_date and m.code = r.code
inner join specific_risk_day as s1 on m.trade_date = s1.trade_date and m.code = s1.code
inner join specific_risk_short as s2 on m.trade_date = s2.trade_date and m.code = s2.code
inner join specific_risk_long as s3 on m.trade_date = s3.trade_date and m.code = s3.code
left join legacy_factor as l on m.trade_date = l.trade_date and m.code = l.code left join legacy_factor as l on m.trade_date = l.trade_date and m.code = l.code
left join tiny as t on m.trade_date = t.trade_date and m.code = t.code left join tiny as t on m.trade_date = t.trade_date and m.code = t.code
\ No newline at end of file
create UNIQUE index on MATERIALIZED (trade_date, code)
\ No newline at end of file
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