Ejemplo n.º 1
0
def CFNOTTMIncomeTTMYOYDaily(beg_date, end_date):
    """
    因子说明: 经营活动现金净流量(TTM)/营业收入(TTM)  同比增速
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'CFNOTTMIncomeTTMYOYDaily'
    ipo_num = 90

    # read data
    #################################################################################
    operate_cash = Stock().get_factor_h5("NetOperateCashFlow", None,
                                         "primary_mfc")
    income = Stock().get_factor_h5("OperatingIncome", None, "primary_mfc")

    operate_cash_ttm = StockFactorOperate(
    ).change_single_quarter_to_ttm_quarter(operate_cash)
    income_ttm = StockFactorOperate().change_single_quarter_to_ttm_quarter(
        income)

    [operate_cash_ttm, income_ttm
     ] = Stock().make_same_index_columns([operate_cash_ttm, income_ttm])
    ratio = operate_cash_ttm.div(income_ttm).T
    ratio_4 = ratio.shift(4)
    ratio_yoy = ratio / ratio_4 - 1.0
    ratio_yoy = ratio_yoy.T

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

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

    # calculate data
    #################################################################################

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

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Ejemplo n.º 2
0
def GrossProfitTTMMarketValueDaily(beg_date, end_date):
    """
    因子说明: 毛利润TTM/总市值
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'GrossProfitTTMMarketValueDaily'
    ipo_num = 90

    # read data
    #################################################################################
    income = Stock().get_factor_h5("OperatingIncome", None, "primary_mfc")
    cost = Stock().get_factor_h5("OperatingCost", None, "primary_mfc")
    total_mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc")

    [income, cost] = Stock().make_same_index_columns([income, cost])
    gross_profit = income - cost

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

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

    ratio = gross_profit.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
Ejemplo n.º 3
0
def ROATTMDaily(beg_date, end_date):
    """
    因子说明: ROA
    披露日期 为 最近财报
    """

    # param
    #################################################################################
    factor_name = 'ROATTMDaily'
    ipo_num = 90

    # read data
    #################################################################################
    net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc")
    asset = Stock().get_factor_h5("TotalAsset", None, "primary_mfc")
    net_profit_ttm = StockFactorOperate().change_single_quarter_to_ttm_quarter(
        net_profit)
    asset = StockFactorOperate().change_single_quarter_to_ttm_quarter(
        asset) / 4.0

    [net_profit_ttm,
     asset] = Stock().make_same_index_columns([net_profit_ttm, asset])
    roa = net_profit_ttm.div(asset)

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

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

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

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

    # save data
    #############################################################################
    Stock().write_factor_h5(res, factor_name, "alpha_dfc")
    return res
Ejemplo n.º 4
0
def ROETTM(beg_date, end_date):

    """
    因子说明: ROE
    披露日期 为 统一财报季
    """

    # param
    #################################################################################
    factor_name = 'ROETTM'
    ipo_num = 90

    # read data
    #################################################################################
    net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc")
    holder = Stock().get_factor_h5("TotalShareHoldeRequity", None, "primary_mfc")
    net_profit_ttm = StockFactorOperate().change_single_quarter_to_ttm_quarter(net_profit)
    holder_ttm = StockFactorOperate().change_single_quarter_to_ttm_quarter(holder) / 4.0

    [net_profit_ttm, holder_ttm] = Stock().make_same_index_columns([net_profit_ttm, holder_ttm])
    roe = net_profit_ttm.div(holder_ttm)

    roe = StockFactorOperate().change_quarter_to_daily_with_report_date(roe, 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