示例#1
0
def NetProfitYOY(beg_date, end_date):
    """
    因子说明: 当季净利润的同比增长
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'NetProfitYOY'
    ipo_num = 90

    # read data
    #################################################################################
    net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T
    net_profit_4 = net_profit.shift(4)
    netprofit_yoy = net_profit / net_profit_4 - 1.0

    netprofit_yoy = netprofit_yoy.T
    netprofit_yoy = StockFactorOperate(
    ).change_quarter_to_daily_with_report_date(netprofit_yoy, beg_date,
                                               end_date)
    # data precessing
    #################################################################################
    pass

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

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

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
示例#2
0
def NetprofitYOYBiasDaily(beg_date, end_date):
    """
    因子说明:当季 净利润 同比增长 的 环减值
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'NetprofitYOYBiasDaily'
    ipo_num = 90

    # read data
    #################################################################################
    profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T
    profit_4 = profit.shift(4)
    profit_yoy = profit / profit_4 - 1.0
    profit_yoy_speed = profit_yoy.diff().T
    report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate",
                                        'primary_mfc')
    profit_yoy_speed = StockFactorOperate().\
        change_quarter_to_daily_with_disclosure_date(profit_yoy_speed, report_data, beg_date, end_date)

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

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

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

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
示例#3
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
示例#4
0
def IncomeYOYDaily(beg_date, end_date):

    """
    因子说明: 当季营收的同比增长
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'IncomeYOYDaily'
    ipo_num = 90

    # read data
    #################################################################################
    net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T
    net_profit_4 = net_profit.shift(4)
    netprofit_yoy = net_profit / net_profit_4 - 1.0

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

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

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

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

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
示例#5
0
文件: PEG.py 项目: rlcjj/quant
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):

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

        profit = Stock().read_factor_h5("TotalAsset").T
        profit_4 = profit.shift(4)
        profit_yoy = profit / profit_4 - 1.0

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

        res = profit_yoy.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("OperatingIncome").T
        profit_4 = profit.shift(4)
        profit_yoy = profit / profit_4 - 1.0

        yoy_bias = profit_yoy.diff().T
        report_data = Stock().read_factor_h5("ReportDateDaily")
        yoy_bias = Stock().change_quarter_to_daily_with_disclosure_date(yoy_bias, report_data, beg_date, end_date)

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

        income = Stock().read_factor_h5("OperatingIncome").T
        income_4 = income.shift(4)
        income_yoy = income / income_4 - 1.0

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

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

        cfno = Stock().read_factor_h5("NetOperateCashFlow").T
        cfno_4 = cfno.shift(4)
        cfno_yoy = cfno / cfno_4 - 1.0

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

        res = cfno_yoy.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)
    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)
示例#11
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        advance = Stock().read_factor_h5("AdvanceReceipts").T
        advance_4 = advance.shift(4)
        advance_yoy = advance / advance_4 - 1.0

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

        res = advance_yoy.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)
示例#13
0
    def cal_factor_exposure(self, beg_date, end_date):
        """ 计算因子暴露 """

        # read data
        debt = Stock().read_factor_h5("TotalCurrentLiability").T
        debt_4 = debt.shift(4)
        debt_yoy = debt / debt_4 - 1.0

        debt_yoy = debt_yoy.T
        report_data = Stock().read_factor_h5("ReportDateDaily")
        advance_yoy = Stock().change_quarter_to_daily_with_disclosure_date(
            debt_yoy, report_data, beg_date, end_date)

        res = advance_yoy.T.dropna(how='all').T
        self.save_alpha_factor_exposure(res, self.raw_factor_name)