示例#1
0
    def getRMCovarianceShort(self, i):
        if self.fre_type == 'short':
            data = DataAPI.RMCovarianceShortGet(tradeDate="%s" % i, beginDate=u"", \
                                                endDate=u"", Factor=u"", field=u"", pandas="1")
        elif self.fre_type == 'long':
            data = DataAPI.RMCovarianceLongGet(tradeDate="%s" % i, beginDate=u"", \
                                               endDate=u"", Factor=u"", field=u"", pandas="1")
        del data['tradeDate']
        del data['FactorID']
        del data['updateTime']
        path = '%s/Covariance' % self.dirpath
        if not os.path.exists(path):
            os.mkdir(path)
        if not data.empty:
            df1 = pd.DataFrame([np.nan] + data.columns[1:].tolist())
            df1 = df1.T
            df1.columns = data.columns

            df_new = pd.concat([df1, data])
            df_new.iloc[1:, 1:] = df_new.iloc[1:, 1:] / 10000.0
            df_new.to_csv('%s/Covariance_%s.csv' % (path, i),
                          encoding='gb18030',
                          index=None,
                          header=None)
            self.check1 = df_new
示例#2
0
    def get_risk_model(self, trading_day_list, universe):
        result = {}
        specific_return = {}
        for date in trading_day_list:
            result[date] = {}
            result[date]['exposure'] = DataAPI.RMExposureDayGet(
                secID=universe, tradeDate=date).set_index('secID').iloc[:,
                                                                        4:-1]
            result[date]['factor_covariance'] = DataAPI.RMCovarianceShortGet(
                tradeDate=date).set_index('Factor').iloc[:, 2:-1] / 10000.
            result[date]['specific_risk'] = \
             DataAPI.RMSriskShortGet(secID=universe, tradeDate=date).set_index('secID')['SRISK'] / 100.
            specific_return[date] = \
             DataAPI.RMSpecificRetDayGet(secID=universe, tradeDate=date).set_index('secID')['spret']

        return result, specific_return
示例#3
0
    def getRMCovarianceShort(self, i):
        if self.fre_type == 'short':
            data = DataAPI.RMCovarianceShortGet(tradeDate="%s"%i,beginDate=u"",\
                endDate=u"",Factor=u"",field=u"",pandas="1")
        elif self.fre_type == 'long':
            data = DataAPI.RMCovarianceLongGet(tradeDate="%s"%i,beginDate=u"",\
                endDate=u"",Factor=u"",field=u"",pandas="1")
        del data['tradeDate']
        del data['FactorID']

        path = '%s/getRMCovariance' % 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)
示例#4
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')
示例#5
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')