def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        cfo = Stock().read_factor_h5("NetOperateCashFlow")
        cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo)

        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        report_data = Stock().read_factor_h5("ReportDateDaily")

        # data precessing
        cfo_ttm = Stock().change_quarter_to_daily_with_disclosure_date(
            cfo_ttm, report_data, beg_date, end_date)
        [total_share,
         price_unadjust] = FactorPreProcess().make_same_index_columns(
             [total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust) / 100000000
        [cfo_ttm,
         total_mv] = Stock().make_same_index_columns([cfo_ttm, total_mv])
        cfno2p = cfo_ttm.div(total_mv)

        # save data
        cfno2p = cfno2p.T.dropna(how='all').T
        self.save_alpha_factor_exposure(cfno2p, self.raw_factor_name)
Beispiel #2
0
def TotalAssetTurnBias(beg_date, end_date):

    # 总资产周转率环减
    # 因子说明:当季度(营业收入TTM / 总资产加权)- 本季度(营业收入TTM / 总资产加权)
    # TTM 为统一财报期

    # param
    #################################################################################
    factor_name = 'TotalAssetTurnBias'
    ipo_num = 90

    # read data
    #################################################################################

    income_q = Stock().get_factor_h5("OperatingIncome", None, 'primary_mfc')
    total_asset = Stock().get_factor_h5("TotalAsset", None, 'primary_mfc')
    total_asset = StockFactorOperate().change_single_quarter_to_ttm_quarter(total_asset)
    total_asset /= 4.0

    turnover = income_q.div(total_asset)
    turnover_qoq = turnover.T.diff().T
    turnover_qoq = StockFactorOperate().change_quarter_to_daily_with_report_date(turnover_qoq, beg_date, end_date)

    # code set & date set
    #################################################################################
    pass

    res = turnover_qoq.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #3
0
    def cal_factor_barra_growth_5years_sales_growth(self, beg_date, end_date):

        """  过去5年每股营收 回归 等差数列 的系数 除以 每股盈利的平均值 """

        report_data = Stock().read_factor_h5("ReportDateDaily")
        total_income = Stock().read_factor_h5("OperatingIncomeTotal")
        total_share = Stock().read_factor_h5("TotalShare") / 100000000

        normal_date_series = Date().get_normal_date_series(total_share.columns[0], total_share.columns[-1])
        total_share = total_share.loc[:, normal_date_series]
        total_share = total_share.T.fillna(method='pad', limit=10).T

        total_share, total_income = StockFactor().make_same_index_columns([total_share, total_income])
        income_pre_share = total_income.div(total_share).T

        ips_ttm_growth = income_pre_share.rolling(4).sum()

        month = ips_ttm_growth.index[-1][4:6]
        ips_ttm_quarter = ips_ttm_growth.index
        ips_ttm_year = list(filter(lambda x: x[4:6] == month, list(ips_ttm_growth.index)))
        ips_ttm_growth = ips_ttm_growth.loc[ips_ttm_year, :]

        ips_ttm_growth = ips_ttm_growth.rolling(5).apply(self.slope)
        ips_ttm_growth = ips_ttm_growth.loc[ips_ttm_quarter, :]
        ips_ttm_growth = ips_ttm_growth.fillna(method='pad', limit=3).T
        ips_ttm_growth = StockFactor().change_quarter_to_daily_with_disclosure_date(ips_ttm_growth, report_data,
                                                                                    beg_date, end_date)

        self.save_risk_factor_exposure(ips_ttm_growth, self.raw_factor_name_5y_sale)
        ips_ttm_growth = FactorPreProcess().remove_extreme_value_mad(ips_ttm_growth)
        ips_ttm_growth = FactorPreProcess().standardization(ips_ttm_growth)
        self.save_risk_factor_exposure(ips_ttm_growth, self.factor_name_5y_sale)
Beispiel #4
0
def EBITIncomeBias(beg_date, end_date):
    """
    因子说明: 息税前利润/营业总收入 环比增长率
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'EBITIncomeBias'
    ipo_num = 90

    # read data
    #################################################################################
    ebit = Stock().get_factor_h5("EBIT", None, "primary_mfc")
    income = Stock().get_factor_h5("OperatingIncome", None, "primary_mfc")
    [income, ebit] = Stock().make_same_index_columns([income, ebit])
    margin = ebit.div(income).T
    margin = margin.diff().T

    margin = StockFactorOperate().change_quarter_to_daily_with_report_date(
        margin, beg_date, end_date)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################
    res = margin.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #5
0
def RetainMarketValue(beg_date, end_date):
    """
    因子说明: 留存收益 / 总市值
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'RetainMarketValue'
    ipo_num = 90

    # read data
    #################################################################################
    retain = Stock().get_factor_h5("RetainedEarnings", None, "primary_mfc")
    mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc")
    retain = StockFactorOperate().change_quarter_to_daily_with_report_date(
        retain, beg_date, end_date)
    [retain, mv] = Stock().make_same_index_columns([retain, mv])

    retain_ratio = retain.div(mv)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################

    res = retain_ratio.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #6
0
def CashMarketValue(beg_date, end_date):
    """
    因子说明: 货币资金/总市值, 根据最新财报更新数据
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'CashMarketValue'
    ipo_num = 90

    # read data
    #################################################################################
    cash = Stock().get_factor_h5("CashEquivalents", None, "primary_mfc")
    total_mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc")

    cash = StockFactorOperate().change_quarter_to_daily_with_report_date(
        cash, beg_date, end_date)

    [cash, total_mv] = Stock().make_same_index_columns([cash, total_mv])
    cash_price = cash.div(total_mv)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################

    res = cash_price.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #7
0
def NetProfitQOQ(beg_date, end_date):
    """
    因子说明: 净利润环比增长率
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'NetProfitQOQ'
    ipo_num = 90

    # read data
    #################################################################################
    netprofit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T
    netprofit_1 = netprofit.shift(1)
    netprofit_qoq = netprofit.div(netprofit_1) - 1.0
    netprofit_qoq = netprofit_qoq.T

    netprofit_qoq = StockFactorOperate(
    ).change_quarter_to_daily_with_report_date(netprofit_qoq, beg_date,
                                               end_date)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################
    res = netprofit_qoq.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #8
0
def PEG(beg_date, end_date):
    """
    因子说明:PE_TTM / 净利润增长速度

    当两者都是负数的时候 结果也为负数
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'PEG'
    ipo_num = 90

    # read data
    #################################################################################
    net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc")
    net_profit = StockFactorOperate().change_single_quarter_to_ttm_quarter(
        net_profit).T
    net_profit_4 = net_profit.shift(4)
    net_profit_g = net_profit / net_profit_4 - 1.0
    net_profit_g_mean = net_profit_g.rolling(window=4).median().T

    report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate",
                                        'primary_mfc')
    net_profit_g_mean = StockFactorOperate().\
        change_quarter_to_daily_with_disclosure_date(net_profit_g_mean, report_data, beg_date, end_date)

    pe_ttm = Stock().get_factor_h5("PE_ttm", None, "primary_mfc")

    [pe_ttm, net_profit_g_mean
     ] = Stock().make_same_index_columns([pe_ttm, net_profit_g_mean])

    pe_ttm_negative = pe_ttm < 0.0
    net_profit_g_mean_negative = net_profit_g_mean < 0.0
    double_negative = pe_ttm_negative & net_profit_g_mean_negative
    peg = pe_ttm.div(net_profit_g_mean)
    peg[double_negative] = -peg[double_negative]

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################

    res = peg.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        income = Stock().read_factor_h5("OperatingIncome")
        income_ttm = Stock().change_single_quarter_to_ttm_quarter(income).T
        income_ttm_1 = income_ttm.shift(1)
        income_qoq = income_ttm.div(income_ttm_1) - 1.0
        income_qoq = income_qoq.T

        report_data = Stock().read_factor_h5("ReportDateDaily")
        income_qoq = Stock().change_quarter_to_daily_with_disclosure_date(
            income_qoq, report_data, beg_date, end_date)

        res = income_qoq.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        profit = Stock().read_factor_h5("NetProfitDeducted")
        profit_ttm = Stock().change_single_quarter_to_ttm_quarter(profit).T
        profit_ttm_1 = profit_ttm.shift(1)
        profit_qoq = profit_ttm.div(profit_ttm_1) - 1.0
        profit_qoq = profit_qoq.T

        report_data = Stock().read_factor_h5("ReportDateDaily")
        profit_qoq = Stock().change_quarter_to_daily_with_disclosure_date(
            profit_qoq, report_data, beg_date, end_date)

        res = profit_qoq.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
    def cal_factor_barra_leverage_debt_to_asset(self):
        """ 资产负债比 = 总负债/总资产 """

        total_debt = Stock().read_factor_h5("TotalLiabilityDaily")
        total_asset = Stock().read_factor_h5('TotalAssetDaily')

        debt_to_asset = total_debt.div(total_asset)
        debt_to_asset = debt_to_asset.T.dropna(how='all').T

        self.save_risk_factor_exposure(debt_to_asset,
                                       self.raw_factor_name_debt_to_asset)
        debt_to_asset = FactorPreProcess().remove_extreme_value_mad(
            debt_to_asset)
        debt_to_asset = FactorPreProcess().standardization(debt_to_asset)
        self.save_risk_factor_exposure(debt_to_asset,
                                       self.factor_name_debt_to_asset)
Beispiel #12
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        net_profit = Stock().read_factor_h5("NetProfitDeducted")
        asset = Stock().read_factor_h5("TotalAsset") / 100000000.0

        [net_profit,
         asset] = Stock().make_same_index_columns([net_profit, asset])
        roe = 4 * net_profit.div(asset)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        roe = Stock().change_quarter_to_daily_with_disclosure_date(
            roe, report_data, beg_date, end_date)

        res = roe.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
Beispiel #13
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        income = Stock().read_factor_h5("OperatingIncome")
        total_asset = Stock().read_factor_h5("TotalAsset") / 100000000
        report_data = Stock().read_factor_h5("ReportDateDaily")
        income_ttm = Stock().change_single_quarter_to_ttm_quarter(income)
        total_asset = Stock().change_single_quarter_to_ttm_quarter(
            total_asset) / 4.0

        turnover = income_ttm.div(total_asset)
        at_bias = turnover.T.diff().T
        at_bias = Stock().change_quarter_to_daily_with_disclosure_date(
            at_bias, report_data, beg_date, end_date)

        at_bias = at_bias.T.dropna(how='all').T
        self.save_alpha_factor_exposure(at_bias, self.raw_factor_name)
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # param
        cfo = Stock().read_factor_h5("NetOperateCashFlow")
        cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo)

        debt = Stock().read_factor_h5("TotalLiability") / 100000000
        debt_ttm = Stock().change_single_quarter_to_ttm_quarter(debt) / 4.0

        cfo2d = cfo_ttm.div(debt_ttm)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        cfo2d = Stock().change_quarter_to_daily_with_disclosure_date(
            cfo2d, report_data, beg_date, end_date)

        res = cfo2d.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
Beispiel #15
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # param
        cfo = Stock().read_factor_h5("NetOperateCashFlow")
        cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        cfo_ttm = Stock().change_quarter_to_daily_with_disclosure_date(
            cfo_ttm, report_data, beg_date, end_date)
        ev = Stock().read_factor_h5("Ev2") / 100000000

        # data precessing
        [cfo_ttm, ev] = Stock().make_same_index_columns([cfo_ttm, ev])
        res = cfo_ttm.div(ev)

        res = res.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # param
        cfo = Stock().read_factor_h5("NetOperateCashFlow")
        cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo)

        income = Stock().read_factor_h5("OperatingIncome")
        income_ttm = Stock().change_single_quarter_to_ttm_quarter(income) / 4.0

        cfo2income = cfo_ttm.div(income_ttm)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        cfo2income = Stock().change_quarter_to_daily_with_disclosure_date(
            cfo2income, report_data, beg_date, end_date)

        res = cfo2income.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
    def cal_predicted_earnings_to_price_ratio(self):
        """ 预期盈利 / 总市值 """

        e1_predicted = Stock().read_factor_h5("FE_1")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")

        e1_predicted, price_unadjust = FactorPreProcess(
        ).make_same_index_columns([e1_predicted, price_unadjust])
        ep1_predicted = e1_predicted.div(price_unadjust)
        ep1_predicted = ep1_predicted.T.dropna(how='all').T

        self.save_risk_factor_exposure(ep1_predicted,
                                       self.raw_factor_name_predicted)
        ep1_predicted = FactorPreProcess().remove_extreme_value_mad(
            ep1_predicted)
        ep1_predicted = FactorPreProcess().standardization(ep1_predicted)
        self.save_risk_factor_exposure(ep1_predicted,
                                       self.factor_name_predicted)
Beispiel #18
0
    def cal_factor_exposure(self, beg_date, end_date):

        """ 计算因子暴露 """

        # read data
        advance = Stock().read_factor_h5("AdvanceReceipts")
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        report_data = Stock().read_factor_h5("ReportDateDaily")

        # data precessing
        advance = Stock().change_quarter_to_daily_with_disclosure_date(advance, report_data, beg_date, end_date)
        [total_share, price_unadjust] = Stock().make_same_index_columns([total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust)
        [advance, total_mv] = Stock().make_same_index_columns([advance, total_mv])
        ar2p = advance.div(total_mv)

        res = ar2p.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
    def cal_factor_exposure(self, beg_date, end_date):

        """ 计算因子暴露 """

        # read data
        cfo = Stock().read_factor_h5("NetOperateCashFlow")
        cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo)

        asset = Stock().read_factor_h5("TotalAsset") / 100000000.0
        asset_ttm = Stock().change_single_quarter_to_ttm_quarter(asset) / 4.0

        [cfo_ttm, asset_ttm] = Stock().make_same_index_columns([cfo_ttm, asset_ttm])
        roa = cfo_ttm.div(asset_ttm)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        roa = Stock().change_quarter_to_daily_with_disclosure_date(roa, report_data, beg_date, end_date)

        res = roa.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
Beispiel #20
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        net_profit = Stock().read_factor_h5("NetProfitDeducted")
        holder = Stock().read_factor_h5("TotalShareHoldeRequity") / 100000000.0
        holder_ttm = Stock().change_single_quarter_to_ttm_quarter(holder) / 4.0
        # holder_ttm[holder_ttm < 1.0] = np.nan

        [net_profit, holder_ttm
         ] = Stock().make_same_index_columns([net_profit, holder_ttm])
        roe = 4 * net_profit.div(holder_ttm)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        roe = Stock().change_quarter_to_daily_with_disclosure_date(
            roe, report_data, beg_date, end_date)

        res = roe.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
Beispiel #21
0
def CFNOTTMTotalDebt(beg_date, end_date):
    """
    因子说明: 经营活动现金净流量(TTM)/负债合计, 根据最新财报更新数据
    披露日期 为 最近财报
    总负债可能是负值 000637.SZ 20120331 应交税费为负值 导致整体负债为负值
    """

    # param
    #################################################################################
    factor_name = 'CFNOTTMTotalDebt'
    ipo_num = 90

    # read data
    #################################################################################
    operate_cash = Stock().get_factor_h5("NetOperateCashFlow", None,
                                         "primary_mfc")
    total_liability = Stock().get_factor_h5("TotalLiability", None,
                                            "primary_mfc")
    operate_cash = StockFactorOperate().change_single_quarter_to_ttm_quarter(
        operate_cash) / 4

    [operate_cash, total_liability
     ] = Stock().make_same_index_columns([operate_cash, total_liability])
    total_liability[total_liability < 0.0] = np.nan
    cfo_td = operate_cash.div(total_liability)

    cfo_td = StockFactorOperate().change_quarter_to_daily_with_report_date(
        cfo_td, beg_date, end_date)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################

    res = cfo_td.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #22
0
    def cal_factor_exposure(self, beg_date, end_date):

        """ 计算因子暴露 """

        # read data
        holder = Stock().read_factor_h5("TotalShareHoldeRequity")
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        report_data = Stock().read_factor_h5("ReportDateDaily")

        # data precessing
        holder = Stock().change_quarter_to_daily_with_disclosure_date(holder, report_data, beg_date, end_date)
        [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust)
        [holder, total_mv] = Stock().make_same_index_columns([holder, total_mv])
        bp = holder.div(total_mv)

        # save data
        bp = bp.T.dropna(how='all').T
        self.save_alpha_factor_exposure(bp, self.raw_factor_name)
Beispiel #23
0
    def cal_factor_exposure(self, beg_date, end_date):

        """ 计算因子暴露 """

        # read data
        cash = Stock().read_factor_h5("CashEquivalents")
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        report_data = Stock().read_factor_h5("ReportDateDaily")

        # data precessing
        cash = Stock().change_quarter_to_daily_with_disclosure_date(cash, report_data, beg_date, end_date)
        [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust)
        [cash, total_mv] = Stock().make_same_index_columns([cash, total_mv])
        cp = 4 * cash.div(total_mv)

        # save data
        cp = cp.T.dropna(how='all').T
        self.save_alpha_factor_exposure(cp, self.raw_factor_name)
    def cal_factor_exposure(self, beg_date, end_date):

        """ 计算因子暴露 """

        # read data
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        income = Stock().read_factor_h5("OperatingIncome")
        income = Stock().change_single_quarter_to_ttm_quarter(income)
        report_data = Stock().read_factor_h5("ReportDateDaily")
        income = Stock().change_quarter_to_daily_with_disclosure_date(income, report_data, beg_date, end_date)

        # data precessing
        [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust) / 100000000
        [income, total_mv] = Stock().make_same_index_columns([income, total_mv])
        sp = income.div(total_mv)

        # save data
        sp = sp.T.dropna(how='all').T
        self.save_alpha_factor_exposure(sp, self.raw_factor_name)
Beispiel #25
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        research = Stock().read_factor_h5("ResearchDevelopmentExpense")
        research = research.fillna(0.0)
        income = Stock().read_factor_h5("OperatingIncome")

        research_ttm = Stock().change_single_quarter_to_ttm_quarter(research)
        income_ttm = Stock().change_single_quarter_to_ttm_quarter(income) / 4.0

        [research_ttm, income_ttm
         ] = Stock().make_same_index_columns([research_ttm, income_ttm])
        roa = research_ttm.div(income_ttm)

        report_data = Stock().read_factor_h5("ReportDateDaily")
        roa = Stock().change_quarter_to_daily_with_disclosure_date(
            roa, report_data, beg_date, end_date)

        res = roa.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
Beispiel #26
0
def ROEQuarterDaily(beg_date, end_date):
    """
    因子说明: ROE 单季
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'ROEQuarterDaily'
    ipo_num = 90
    beg_date = Date().get_trade_date_offset(beg_date, -250)

    # read data
    #################################################################################
    net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc")
    holder = Stock().get_factor_h5("TotalShareHoldeRequity", None,
                                   "primary_mfc")

    [net_profit,
     holder] = Stock().make_same_index_columns([net_profit, holder])
    roe = net_profit.div(holder)

    report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate",
                                        'primary_mfc')
    roe = StockFactorOperate().change_quarter_to_daily_with_disclosure_date(
        roe, report_data, beg_date, end_date)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################

    res = roe.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Beispiel #27
0
def EPQuarterDaily(beg_date, end_date):
    """
    因子说明: 当季净利润EP
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'EPQuarterDaily'
    ipo_num = 90

    # read data
    #################################################################################
    netprofit = Stock().get_factor_h5("NetProfit", None, "primary_mfc")
    total_mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc")

    report_data = Stock().get_factor_h5("OperatingIncome" + "Daily",
                                        "ReportDate", 'primary_mfc')
    netprofit = StockFactorOperate(
    ).change_quarter_to_daily_with_disclosure_date(netprofit, report_data,
                                                   beg_date, end_date)

    [total_mv,
     netprofit] = Stock().make_same_index_columns([total_mv, netprofit])
    total_mv /= 100000000

    ratio = netprofit.div(total_mv)

    # data precessing
    #################################################################################
    pass

    # calculate data daily
    #################################################################################
    res = ratio.T.dropna(how='all').T

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
    def cal_cash_earnings_to_price_ratio(self, beg_date, end_date):
        """ 经营性现金流净额 / 总市值 """

        nocf = Stock().read_factor_h5("NetOperateCashFlow")
        report_data = Stock().read_factor_h5("ReportDateDaily")
        nocf = Stock().change_single_quarter_to_ttm_quarter(nocf)
        nocf = Stock().change_quarter_to_daily_with_disclosure_date(
            nocf, report_data, beg_date, end_date)
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")

        result = FactorPreProcess().make_same_index_columns(
            [nocf, total_share, price_unadjust])
        nocf, total_share, price_unadjust = result
        total_mv = total_share.mul(price_unadjust) / 100000000
        nocf_mv = nocf.div(total_mv)

        nocf_mv = nocf_mv.T.dropna(how='all').T
        self.save_risk_factor_exposure(nocf_mv, self.raw_factor_name_cash)
        nocf_mv = FactorPreProcess().remove_extreme_value_mad(nocf_mv)
        nocf_mv = FactorPreProcess().standardization(nocf_mv)
        self.save_risk_factor_exposure(nocf_mv, self.factor_name_cash)
    def cal_factor_exposure(self, beg_date, end_date):

        """ 计算因子暴露 """

        # read data
        income = Stock().read_factor_h5("OperatingIncome")
        cost = Stock().read_factor_h5("OperatingCost")
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        report_data = Stock().read_factor_h5("ReportDateDaily")
        profit = income.sub(cost)

        # data precessing
        profit = Stock().change_quarter_to_daily_with_disclosure_date(profit, report_data, beg_date, end_date)
        [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust) / 100000000
        [profit, total_mv] = Stock().make_same_index_columns([profit, total_mv])
        gross_ep = 4 * profit.div(total_mv)

        # save data
        gross_ep = gross_ep.T.dropna(how='all').T
        self.save_alpha_factor_exposure(gross_ep, self.raw_factor_name)
Beispiel #30
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        retain = Stock().read_factor_h5("RetainedEarnings")
        total_share = Stock().read_factor_h5("TotalShare")
        price_unadjust = Stock().read_factor_h5("Price_Unadjust")
        report_data = Stock().read_factor_h5("ReportDateDaily")

        # data precessing
        retain = Stock().change_quarter_to_daily_with_disclosure_date(
            retain, report_data, beg_date, end_date)
        [total_share,
         price_unadjust] = FactorPreProcess().make_same_index_columns(
             [total_share, price_unadjust])
        total_mv = total_share.mul(price_unadjust) / 100000000
        [retain,
         total_mv] = Stock().make_same_index_columns([retain, total_mv])
        retain2p = 4 * retain.div(total_mv)

        # save data
        retain2p = retain2p.T.dropna(how='all').T
        self.save_alpha_factor_exposure(retain2p, self.raw_factor_name)