Пример #1
0
    def __init__(self):

        AlphaFactor.__init__(self)
        self.exposure_path = self.data_path
        self.raw_factor_name = 'alpha_raw_profit_yoy'
    def __init__(self):

        AlphaFactor.__init__(self)
        self.exposure_path = self.data_path
        self.raw_factor_name = 'alpha_raw_illiquidity'
Пример #3
0
    def __init__(self):

        AlphaFactor.__init__(self)
        self.exposure_path = self.data_path
        self.raw_factor_name = 'alpha_raw_amount_ln_20d'
Пример #4
0
    def split_alpha(self,
                    beg_date,
                    end_date,
                    factor_name,
                    period="W",
                    stock_pool_name="AllChinaStockFilter"):
        """ 计算残差Alpha 回归风格因子和行业 计算在风格和行业上的暴露 """

        alpha = AlphaFactor().get_standard_alpha_factor(factor_name)
        date_series = Date().get_trade_date_series(beg_date,
                                                   end_date,
                                                   period=period)
        barra_date_series = Barra().get_exposure_date_series()
        date_series = list(
            set(date_series) & set(alpha.columns) & set(barra_date_series))
        date_series.sort()

        res_alpha = pd.DataFrame()
        exposure_risk = pd.DataFrame()

        for i_date in range(len(date_series)):

            date = date_series[i_date]

            alpha_date = pd.DataFrame(alpha[date])
            alpha_date.columns = ['Alpha']
            alpha_date = alpha_date.dropna()

            risk_exposure = Barra().get_factor_exposure_date(
                date, type_list=['STYLE', 'INDUSTRY', "COUNTRY"])

            stock_pool = Stock().get_invest_stock_pool(
                date=date, stock_pool_name=stock_pool_name)
            stock_pool = list(
                set(stock_pool) & set(risk_exposure.index)
                & set(alpha_date.index))
            stock_pool.sort()

            alpha_date = alpha_date.loc[stock_pool, "Alpha"]
            risk_exposure = risk_exposure.loc[stock_pool, :]

            concat_data = pd.concat([alpha_date, risk_exposure], axis=1)
            concat_data = concat_data.dropna()

            if len(concat_data) > self.min_stock_number:

                factor_val = concat_data.iloc[:, 0]
                neutral_val = concat_data.iloc[:, 1:]
                print("Split %s Alpha Exposure At %s %s" %
                      (factor_name, date, stock_pool_name))

                model = sm.OLS(factor_val.values, neutral_val.values)
                regress = model.fit()

                params = pd.DataFrame(regress.params,
                                      index=neutral_val.columns,
                                      columns=['param'])
                factor_res = factor_val - regress.predict(neutral_val)

                params = pd.DataFrame(params)
                params.columns = [date]
                res_alpha_date = pd.DataFrame(factor_res)
                res_alpha_date.columns = [date]

                exposure_risk = pd.concat([exposure_risk, params], axis=1)
                res_alpha = pd.concat([res_alpha, res_alpha_date], axis=1)

            else:
                print("Split %s Alpha Exposure At %s %s is Null" %
                      (factor_name, date, stock_pool_name))

        res_alpha = FactorPreProcess().remove_extreme_value_mad(res_alpha)
        res_alpha = FactorPreProcess().standardization(res_alpha)
        self.save_alpha_risk_exposure(exposure_risk, factor_name,
                                      stock_pool_name)
        self.save_alpha_res_exposure(res_alpha, factor_name, stock_pool_name)
    def __init__(self):

        AlphaFactor.__init__(self)
        self.exposure_path = self.data_path
        self.raw_factor_name = 'alpha_raw_average_holder'
Пример #6
0
    def __init__(self):

        AlphaFactor.__init__(self)
        self.exposure_path = self.data_path
        self.raw_factor_name = 'alpha_raw_to_bias_6m'