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
Exemple #2
0
 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)
Exemple #3
0
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')
Exemple #4
0
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")