def MainFunc(): """ 计算对冲组合收益,判断因子的作用 """ #Set up a file log myLog = logging.Logger("GetHedgedPortfolioAndCalculateReturn", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler( "GetHedgedPortfolioAndCalculateReturn.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) #Database address dbPathFactorValues = "Index_399906_21Day_Rebalance.db" dbPathMarketData = "MktData\\MktData_Wind_CICC.db" begDate = "20070101" endDate = "20160101" #Initiate a GetHedgedPortfolioBySingleFactor object objGetHedgedPort = modGetHedgedPort.GetHedgedPortfolioBySingleFactor( dbPathFactorValues, dbPathMarketData, begDate, endDate, myLog) #Calculate hedged portfolio return factors = objGetHedgedPort.GetFactorNames() #for factor in factors: # objGetHedgedPort.CalculateHedgedPortfolioReturn(factor,"FactorValues","0","2",0.2,"DESC","Plot_ZScores") factor = "Size" objGetHedgedPort.CalculateHedgedPortfolioReturn(factor, "FactorValues", "0", "2", 0.2, "DESC", "Plot_ZScores")
def MainFunc(): """ 使用已经处理过的财报数据和预测数据计算因子值并按行业对该值进行标准化 """ #Set up a file log myLog = logging.Logger("ComputeFactorValuesAndZScores", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler( "ComputeFactorValuesAndZScores.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) #Initiate a ComputeFactor object objComputeFactor = modComputeFactor.ComputeFactorValues(myLog) #Load source database dbPathMktData = "MktData\\MktData_Wind_CICC.db" dbPathConstituentStocks = "MktGenInfo\\IndexConstituent_WIND_CICC.db" objComputeFactor.LoadSourceData(dbPathMktData, dbPathConstituentStocks) #Set stock universe and rebalance date begDate = "20070101" objComputeFactor.LoadFactorAlgos() objComputeFactor.ComputeAndSaveFactorValues("TestFactorDatabase", begDate)
def MainFunc(): """ 把基本面因子原始值转换成ZScores """ #Set up a file log myLog = logging.Logger("ConvertFactorValuesToZScores", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler( "ConvertFactorValuesToZScores.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) #Initiate a ComputeFactor object objConvertToZScores = modConvertToZScores.ConvertFactorValuesToZScores( myLog) #Connect to local fundamental factor database dbNameFactorValues = "Index_399906_20Day_Rebalance.db" objConvertToZScores.ConnectToFactorDatabase(dbNameFactorValues) #Get factor names and save them #objConvertToZScores.GetFactorNames("OutlierRule.cfg") #Load outlier rule config objConvertToZScores.LoadOutlierRuleConfig("OutlierRule.cfg") #print objConvertToZScores.outlierRule #Load factor values into in-memory database objConvertToZScores.LoadFactorValues() #Calculate ZScores objConvertToZScores.ToZScores(90, 3)
def MainFunc(): """ 处理原始财报数据和预测数据,将数据按时间点整理 """ #Set up a file log myLog = logging.Logger("BuildPITFundamentalDatabase", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler( "BuildPITFundamentalDatabase.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) #Initiate a BuildPITDB object objBuildPITDB = modBuildPITDB.BuildPITFundamentalDatabase(myLog) #Database address and load raw data addrssDBIndexConstituent = "\\MktGenInfo\\IndexConstituent_Wind.db" constituentIndex = "399906" objBuildPITDB.SetStockUniverse(addrssDBIndexConstituent, constituentIndex) objBuildPITDB.LoadFundamentalDataItemsToBeProcessed() #Name PITDatabase and create it namePITDatabase = "PITFundamentalData.db" objBuildPITDB.CreateDatabase(namePITDatabase) #Start to process data startDate = "20050101" objBuildPITDB.CalculateAndSaveData(startDate)
def MainFunc(): """ 使用已经处理过的财报数据和预测数据计算因子值并按行业对该值进行标准化 """ #Set up a file log myLog = logging.Logger("ComputeFactorValuesAndZScores", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler( "ComputeFactorValuesAndZScores.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) #Initiate a ComputeFactor object objComputeFactor = modComputeFactor.ComputeFactorValues(myLog) #Load source database dbPathFdmtData = "PITFundamentalData.db" dbPathMktData = "MktData\\MktData_Wind_CICC.db" dbPathConstituentStocks = "MktGenInfo\\IndexConstituent_WIND.db" objComputeFactor.LoadSourceData(dbPathFdmtData, dbPathMktData, dbPathConstituentStocks) #Set stock universe and rebalance date begDate = "20070101" #Load factor algorithem factorStyle = ["Growth", "Profitability", "Quality", "Risk", "Value"] objComputeFactor.LoadFactorAlgos(factorStyle) #Start to run factor computation objComputeFactor.ComputeAndSaveFactorValues("TestFctorDatabase", begDate)
def __init__(self, logger=None): """Constructor""" if logger == None: self.logger = LogHandler.LogOutputHandler( "ComputeFactorsAndZScores") else: self.logger = logger self.trdDays = GetTrdDay.GetTradeDays()
def __init__(self, logger=None): """Constructor""" #Create log file if logger == None: self.logger = LogHandler.LogOutputHandler("SyncFinRpt.log") else: self.logger = logger self.locDbPath = GetPath.GetLocalDatabasePath()
def __init__(self,logger=None): """Constructor""" #Create log file if logger == None: self.logger = LogHandler.LogOutputHandler("ComputeFactorsAndZScores") else: self.logger = logger dbPathProcessedData = GetPath.GetLocalDatabasePath()["EquityDataRefined"] self.dbPathProcessedData = dbPathProcessedData self.totalTradeDay = GetTrdDay.GetTradeDays()
def __init__(self,dbPathPITFundamentalData,dbPathMarketData,conn=None,logger=None): """Constructor""" #Create log file if logger == None: self.logger = LogHandler.LogOutputHandler("CalculateFundamentalFactorValues.log") else: self.logger = logger #Load data into in-memory database if conn!=None: self.conn = conn else: self.conn = lite.connect(":memory:") self.conn.text_factory = str cur = self.conn.cursor() self.logger.info("<{}>-Load local database into in-memory database...".format(__name__.split('.')[-1])) locDbPath = GetPath.GetLocalDatabasePath() _dbPathPITFundamentalData = locDbPath["EquityDataRefined"]+dbPathPITFundamentalData _dbPathMarketData = locDbPath["EquityDataRaw"]+dbPathMarketData cur.execute("ATTACH '{}' AS FdmtData".format(_dbPathPITFundamentalData)) cur.execute("ATTACH '{}' AS MktData".format(_dbPathMarketData)) self.logger.info("<{}>-Load table FinancialPointInTimeData".format(__name__.split('.')[-1])) cur.execute("CREATE TABLE FinancialPITData AS SELECT * FROM FdmtData.FinancialPointInTimeData") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Load table ForecastPintInTimeData".format(__name__.split('.')[-1])) cur.execute("CREATE TABLE ForecastPITData AS SELECT * FROM FdmtData.ForecastPointInTimeData") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Load table MarketData".format(__name__.split('.')[-1])) cur.execute("CREATE TABLE MktData AS SELECT StkCode,Date,TC,LC,TC_Adj FROM MktData.AStockData WHERE Date>='20060101'") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Load talbe MarketCap".format(__name__.split('.')[-1])) cur.execute("CREATE TABLE MktCap AS SELECT * FROM MktData.MarketCap") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table FinancialPITData".format(__name__.split('.')[-1])) cur.execute("CREATE INDEX fiId ON FinancialPITData (StkCode,DeclareDate)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table ForecastData".format(__name__.split('.')[-1])) cur.execute("CREATE INDEX fcId ON ForecastPITData (StkCode,DeclareDate)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table MarketData".format(__name__.split('.')[-1])) cur.execute("CREATE INDEX mId ON MktData (StkCode,Date)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table MarketCap".format(__name__.split('.')[-1])) cur.execute("CREATE INDEX cId ON MktCap (StkCode,Date)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1]))
def __init__(self, finRptDbPath, mktDataDbPath, logger=None): """ Constructor Load the fundamental data into in-memory database """ #Create log file if logger == None: self.logger = LogHandler.LogOutputHandler("SyncFinRpt.log") else: self.logger = logger self.logger.info("<{}>-Create in-memory database".format( __name__.split('.')[-1])) self.conn = lite.connect(":memory:") self.conn.text_factory = str cur = self.conn.cursor() self.logger.info( "<{}>-Load local database into in-memory database".format( __name__.split('.')[-1])) cur.execute("ATTACH '{}' AS FinRpt".format(finRptDbPath)) cur.execute("ATTACH '{}' AS MktData".format(mktDataDbPath)) cur.execute( "CREATE TABLE BalanceSheet AS SELECT * FROM FinRpt.BalanceSheet") cur.execute( "CREATE TABLE IncomeStatement AS SELECT * FROM FinRpt.IncomeStatement" ) cur.execute( "CREATE TABLE CashFlowStatement AS SELECT * FROM FinRpt.CashFlowStatement" ) cur.execute( "CREATE TABLE ForecastData AS SELECT * FROM FinRpt.ForecastData") cur.execute("CREATE TABLE Dividend AS SELECT * FROM MktData.Dividend") self.logger.info("<{}>-Finished".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on in-memory database".format( __name__.split('.')[-1])) cur.execute( "CREATE INDEX Id1 ON BalanceSheet (StkCode,RPT_DATE,RDeclareDate)") cur.execute( "CREATE INDEX Id2 ON IncomeStatement (StkCode,RPT_DATE,RDeclareDate)" ) cur.execute( "CREATE INDEX Id3 ON CashFlowStatement (StkCode,RPT_DATE,RDeclareDate)" ) cur.execute( "CREATE INDEX IdF ON ForecastData (StkCode,RPT_DATE,RDeclareDate)") cur.execute("CREATE INDEX IdD ON Dividend (StkCode,RDeclareDate)") self.logger.info("<{}>-Finished".format(__name__.split('.')[-1]))
def MainFunc(): """ 计算因子IC """ #Set up a file log myLog = logging.Logger("ComputeFactorICs", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler("ComputeFactorICs.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) #Database address dbPathZScores = "Index_000300_10Day_Rebalance.db" dbPathMarketData = "MktData\\MktData_Wind_CICC.db" begDate = "20100101" endDate = "20160101" #Initiate a GetHedgedPortfolioBySingleFactor object objComputeICs = modComputeFactorICs.ComputeICs(dbPathZScores, dbPathMarketData, begDate, endDate, conn=None, logger=myLog) #Calculate hedged portfolio return factors = objComputeICs.GetFactorNames() #print factors[0] tm1 = time.time() #objComputeICs.GetZScores("ZScores","1,2","20120723",'2') #print objComputeICs.zscores #print objComputeICs.zscoresDay #objComputeICs.GetStockReturn(1,20) #print factors #for fct in factors: # objComputeICs.ComputeIC(fct) #tm2 = time.time() #print tm2-tm1 #objComputeICs.ComputeICsAndSave("ZScores","HS300",'2',[1,5],[1,10],[1,15],[1,20],[1,30],[1,40],[1,50]) objComputeICs.ExploreICDecay("FactorICs_HS300", "20100304", "20151013", [5, 10, 15, 20, 30, 40, 50])
def MainFunc(): """""" #Set up a file log myLog = logging.Logger("BuildPITFundamentalDatabase", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler( "BuildPITFundamentalDatabase.log") fh = myLogHandler[0] ch = myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) objGetFactorValues = modGetFactorValues.GetFactorValues(myLog) dbNameFactor = "TestFactorDatabase.db" factorTypes = ["Fundamental"] objGetFactorValues.LoadFactorTablesIntoMemory(dbNameFactor, factorTypes) objGetFactorValues.ChooseFactors(["EBIT2EV_TTM"], ["FRet60d"], []) v = objGetFactorValues.GetFactorValues("600723", "20140826", 90) print type(v["RptType"])
#!/usr/bin/env python #coding:utf-8 """ Author: Wusf --<*****@*****.**> Purpose: Created: 2016/4/27 """ import os, sys, logging root = os.path.abspath("D:\\MyQuantLib\\") sys.path.append(root) import SynchronizeDatabase.Db_Goal_CICC.SyncAnalystData as SyncAnalystData import Tools.LogOutputHandler as LogHandler os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK' logHandlers = LogHandler.LogOutputHandler("SyncAnalystData.log") sync = SyncAnalystData.SyncData(logHandlers) sync.SetStartDate("20020301") sync.ConvertDatesToMonths() sync.LoadDataTableConfigs("Configs\\AnalystData_Goal_CICC.cfg") sync.ConnRmtDb() #sync.CheckRmtDb() localDbName = "AnalystData\\AnalystData_Wind_CICC.db" sync.ConnLocalDb(localDbName) sync.CheckLocalDb() sync.Sync(1)
def __init__(self, dbPathMarketData, dbPathConstituentData, conn=None, logger=None): """Constructor""" #Create log file if logger == None: self.logger = LogHandler.LogOutputHandler( "CalculateTechnicalFactorValues.log") else: self.logger = logger #Load data into in-memory database if conn != None: self.conn = conn else: self.conn = lite.connect(":memory:", check_same_thread=False) self.conn.text_factory = str cur = self.conn.cursor() self.logger.info( "<{}>-Load local database into in-memory database...".format( __name__.split('.')[-1])) locDbPath = GetPath.GetLocalDatabasePath() _dbPathMarketData = locDbPath["EquityDataRaw"] + dbPathMarketData cur.execute("ATTACH '{}' AS MktData".format(_dbPathMarketData)) _dbPathConstituentData = locDbPath[ "EquityDataRaw"] + dbPathConstituentData cur.execute("ATTACH '{}' AS ConstituentData".format( _dbPathConstituentData)) self.logger.info("<{}>-Load table MarketData".format( __name__.split('.')[-1])) cur.execute( """CREATE TABLE MktData AS SELECT StkCode,Date,TC,LC,TC_Adj,Vol,Amt,Statu, SmallOrderDiff,MiddleOrderDiff,BigOrderDiff,InstOrderDiff,InBOrderDiff, SmallOrderDiffActive,MiddleOrderDiffActive,BigOrderDiffActive,InstOrderDiffActive,InBOrderDiffActive, NetInFlow,NetInFlowRatio FROM MktData.AStockData WHERE Date>='20060101'""" ) self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Load talbe MarketCap".format( __name__.split('.')[-1])) cur.execute( "CREATE TABLE MktCap AS SELECT * FROM MktData.MarketCap") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Load talbe IndexData".format( __name__.split('.')[-1])) cur.execute( "CREATE TABLE IndexData AS SELECT Date,StkCode,TC FROM MktData.IndexData" ) self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Load talbe ConstituentData".format( __name__.split('.')[-1])) cur.execute( "CREATE TABLE Constituent AS SELECT StkCode,StkName,IncDate,IndusCode,IndusName FROM ConstituentData.SWIndustry1st" ) self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table MarketData".format( __name__.split('.')[-1])) cur.execute("CREATE INDEX mId ON MktData (StkCode,Date)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table IndexData".format( __name__.split('.')[-1])) cur.execute("CREATE INDEX iId ON IndexData (StkCode,Date)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table MarketCap".format( __name__.split('.')[-1])) cur.execute("CREATE INDEX cId ON MktCap (StkCode,Date)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1])) self.logger.info("<{}>-Create index on table Constituent".format( __name__.split('.')[-1])) cur.execute("CREATE INDEX csId ON Constituent (StkCode,IncDate)") self.logger.info("<{}>-Done".format(__name__.split('.')[-1]))
#coding:utf-8 """ Author: Wusf --<*****@*****.**> Purpose: Created: 2016/5/26 """ import os,sys,logging,time,decimal,codecs,numpy,re,sqlite3 root = os.path.abspath("D:\\PyQuantLib\\") sys.path.append(root) import Tools.LogOutputHandler as LogHandler import UpdateFactorDatabase.FundamentalFactors.ComputeFactorValues as modComputeFactor import FactorModel.ClassicModels.MagicFormula as MF myLog = logging.Logger("mf", level="DEBUG") myLogHandler = LogHandler.LogOutputHandler("ComputeFactorICs.log") fh=myLogHandler[0] ch=myLogHandler[1] myLog.addHandler(fh) myLog.addHandler(ch) mf = MF.MagicFormula(myLog) mf.LoadFactorDatabase("TestFactorDatabase.db",["Fundamental"]) addrssDBIndexConstituent = "\\MktGenInfo\\IndexConstituent_Wind_CICC.db" constituentIndex = ["000001","399106"] mf.SetStockUniverse(addrssDBIndexConstituent,constituentIndex) mf.SetRebalanceDate("20080101","20150101","quarterly",1) mf.GenerateTradeList(0)
#!/usr/bin/env python #coding:utf-8 """ Author: Wusf --<*****@*****.**> Purpose: Created: 2015/12/15 """ import os, sys, logging root = os.path.abspath("D:\\MyQuantLib\\") sys.path.append(root) import SynchronizeDatabase.Db_Wind_CICC.SyncIndexComp as SyncIndexComp import SynchronizeDatabase.Db_Wind_CICC.SyncTradeDay as SyncTradeDay import Tools.LogOutputHandler as LogHandler #os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK' logHandlers = LogHandler.LogOutputHandler("SyncIndexComp.log") sync = SyncTradeDay.SyncData(logHandlers) sync.ConnRmtDb() localDbName = "MktGenInfo\\TradeDate_Wind_CICC.db" sync.ConnLocalDb(localDbName) sync.Sync()
#!/usr/bin/env python #coding:utf-8 """ Author: Wusf --<*****@*****.**> Purpose: Created: 2015/11/25 """ import os,sys,logging root = os.path.abspath("D:\\PyQuantLib\\") sys.path.append(root) import SynchronizeDatabase.Db_Wind_CICC.SyncFinRptData as SyncFinRpt import SynchronizeDatabase.Db_Wind_CICC.SyncMktData as SyncMktData import Tools.LogOutputHandler as LogHandler #os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK' logHandlers = LogHandler.LogOutputHandler("SyncFinRpt.log") sync = SyncFinRpt.SyncData(logHandlers) sync.SetStartDate("20020301") sync.ConvertDatesToMonths() sync.LoadDataTableConfigs("Configs\\FinRptData_Wind_CICC.cfg") sync.ConnRmtDb() sync.CheckRmtDb() localDbName = "FinRptData\\FinRptData_Wind_CICC.db" sync.ConnLocalDb(localDbName) sync.CheckLocalDb() sync.Sync(1)