def get_factor_return(self, trading_day_list, freq='day'): factor_return_dict = {} trading_day_list.sort() for i, date in enumerate(trading_day_list): if freq == 'day': factor_return_dict[date] = DataAPI.RMFactorRetDayGet( tradeDate=date, field=u"", pandas="1")[DATAYES_FACTOR_ORDER].T[0] else: if i > 0: last_period_end = trading_day_list[i - 1] df = DataAPI.RMFactorRetDayGet(beginDate=last_period_end, endDate=date, field=u"", pandas="1") df['tradeDate'] = df['tradeDate'].apply( lambda x: x.replace('-', '')) df = df[df['tradeDate'] > last_period_end] df.drop(['tradeDate', 'updateTime'], axis=1, inplace=True) df += 1 factor_return_dict[date] = df.prod() - 1 return factor_return_dict
def RMFactorRet(self, i): data = DataAPI.RMFactorRetDayGet(tradeDate="%s" % i, beginDate=u"", endDate=u"", field=u"", pandas="1") del data['tradeDate'] path = '%s/RMFactorRet' % self.dirpath if not os.path.exists(path): os.mkdir(path) if not data.empty: data.to_csv('%s/%s.csv' % (path, i), encoding='gb18030', index=None)
def update_uqer_risk_model(ds, **kwargs): ref_date, this_date = process_date(ds) flag = check_holiday(this_date) if not flag: return df = api.RMExposureDayGet(tradeDate=ref_date) df.rename(columns={ 'tradeDate': 'trade_date', 'ticker': 'code' }, inplace=True) df.code = df.code.astype(int) del df['secID'] engine.execute( delete(RiskExposure).where(RiskExposure.trade_date == this_date)) data_info_log(df, RiskExposure) format_data(df) df.to_sql(RiskExposure.__table__.name, engine, index=False, if_exists='append') df = api.RMFactorRetDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'trade_date'}, inplace=True) engine.execute( delete(RiskReturn).where(RiskReturn.trade_date == this_date)) data_info_log(df, RiskReturn) format_data(df) df.to_sql(RiskReturn.__table__.name, engine, index=False, if_exists='append') df = api.RMSpecificRetDayGet(tradeDate=ref_date) df.rename(columns={ 'tradeDate': 'trade_date', 'ticker': 'code' }, inplace=True) df.code = df.code.astype(int) del df['secID'] engine.execute( delete(SpecificReturn).where(SpecificReturn.trade_date == this_date)) data_info_log(df, SpecificReturn) format_data(df) df.to_sql(SpecificReturn.__table__.name, engine, index=False, if_exists='append') df = api.RMCovarianceDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'trade_date'}, inplace=True) engine.execute( delete(RiskCovDay).where(RiskCovDay.trade_date == this_date)) data_info_log(df, RiskCovDay) format_data(df) df.to_sql(RiskCovDay.__table__.name, engine, index=False, if_exists='append') df = api.RMCovarianceShortGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'trade_date'}, inplace=True) engine.execute( delete(RiskCovShort).where(RiskCovShort.trade_date == this_date)) data_info_log(df, RiskCovShort) format_data(df) df.to_sql(RiskCovShort.__table__.name, engine, index=False, if_exists='append') df = api.RMCovarianceLongGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'trade_date'}, inplace=True) engine.execute( delete(RiskCovLong).where(RiskCovLong.trade_date == this_date)) data_info_log(df, RiskCovLong) format_data(df) df.to_sql(RiskCovLong.__table__.name, engine, index=False, if_exists='append') df = api.RMSriskDayGet(tradeDate=ref_date) df.rename(columns={ 'tradeDate': 'trade_date', 'ticker': 'code' }, inplace=True) df.code = df.code.astype(int) del df['secID'] engine.execute( delete(SpecificRiskDay).where(SpecificRiskDay.trade_date == this_date)) data_info_log(df, SpecificRiskDay) format_data(df) df.to_sql(SpecificRiskDay.__table__.name, engine, index=False, if_exists='append') df = api.RMSriskShortGet(tradeDate=ref_date) df.rename(columns={ 'tradeDate': 'trade_date', 'ticker': 'code' }, inplace=True) df.code = df.code.astype(int) del df['secID'] engine.execute( delete(SpecificRiskShort).where( SpecificRiskShort.trade_date == this_date)) data_info_log(df, SpecificRiskShort) format_data(df) df.to_sql(SpecificRiskShort.__table__.name, engine, index=False, if_exists='append') df = api.RMSriskLongGet(tradeDate=ref_date) df.rename(columns={ 'tradeDate': 'trade_date', 'ticker': 'code' }, inplace=True) df.code = df.code.astype(int) del df['secID'] engine.execute( delete(SpecificRiskLong).where( SpecificRiskLong.trade_date == this_date)) data_info_log(df, SpecificRiskLong) format_data(df) df.to_sql(SpecificRiskLong.__table__.name, engine, index=False, if_exists='append')
def update_uqer_risk_model(ds, **kwargs): ref_date, this_date = process_date(ds) table = 'risk_exposure' df = api.RMExposureDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date', 'ticker': 'Code'}, inplace=True) df.Code = df.Code.astype(int) del df['secID'] engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'risk_return' df = api.RMFactorRetDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date'}, inplace=True) engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'specific_return' df = api.RMSpecificRetDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date', 'ticker': 'Code'}, inplace=True) df.Code = df.Code.astype(int) del df['secID'] engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'risk_cov_day' df = api.RMCovarianceDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date'}, inplace=True) engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'risk_cov_short' df = api.RMCovarianceShortGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date'}, inplace=True) engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'risk_cov_long' df = api.RMCovarianceLongGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date'}, inplace=True) engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'specific_risk_day' df = api.RMSriskDayGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date', 'ticker': 'Code'}, inplace=True) df.Code = df.Code.astype(int) del df['secID'] engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'specific_risk_short' df = api.RMSriskShortGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date', 'ticker': 'Code'}, inplace=True) df.Code = df.Code.astype(int) del df['secID'] engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append') table = 'specific_risk_long' df = api.RMSriskLongGet(tradeDate=ref_date) df.rename(columns={'tradeDate': 'Date', 'ticker': 'Code'}, inplace=True) df.Code = df.Code.astype(int) del df['secID'] engine2.execute("delete from {0} where Date = '{1}';".format(table, ref_date)) df.to_sql(table, engine2, index=False, if_exists='append')
# 取出文件夹下所有文件的名称 filename = pd.DataFrame() filename['filename'] = os.listdir(path) l = len(filename) IndustrySummary = pd.DataFrame() PESummary = pd.DataFrame( index=['<0', '0-15', '15-25', '25-40', '40-50', '50-100', '>100']) MVSummary = pd.DataFrame(index=[ '<100', '100-150', '150-200', '200-250', '250-400', '400-700', '>700' ]) Summary = pd.DataFrame(index=[ u'股票个数', u'仓位(%)', "PE(TTM)", "PB", u'市值(亿)', u'个股最大持仓(%)', u'个股持仓中位数(%)' ]) # 取通联的因子作为Index FactorIndex = DataAPI.RMFactorRetDayGet(tradeDate=date, field='').iloc[:, 1:40].columns FactorSummary = pd.DataFrame(index=FactorIndex) # Expo*Ret表 FactorRetSummary = pd.DataFrame() # 因子时间序列 ExpoSummary = pd.DataFrame(index=FactorIndex) # 基金数据处理 for U in range(0, l): date = filename.loc[U, 'filename'][-13:-5] data = pd.read_excel(path + "\\" + filename.loc[U, 'filename'], sheetname='Sheet1', header=2) filename.loc[U, 'Date'] = date shstock = data.loc[data[data[u'科目名称'] == u'上交所A股成本'].index[0] + 1:data[data[u'科目名称'] == u'上交所A股估值增值'].index[0] - 1, :] # 取两个字符间的所有行,SH shstock['wind_code'] = shstock[u'科目代码'].apply(lambda x: x[-6:] + ".SH")