Example #1
0
def factor_financial_quality(cur_date):
    # 获取经营性现金流(ttm)
    val_pcf_ocfttm = om.get_index_val_pcf_ocfttm(cur_date)
    # 单季度.净资产收益率,-1列为rank,-2列为所需要的
    qfa_roe = om.get_qfa_roe(cur_date)
    # 净资产收益率(ttm),-1列为rank,-2列为所需要的
    fa_roe = om.get_fa_roe(cur_date)
    # 单季度.总资产净利润,-1列为rank,-2列为所需要的
    qfa_roa = om.get_qfa_roa(cur_date)
    # 总资产净利润(ttm),-1列为rank,-2列为所需要的
    fa_roa = om.get_fa_roa(cur_date)
    # 单季度.销售毛利率,-1列为rank,-2列为所需要的
    qfa_grossprofitmargin = om.get_qfa_grossprofitmargin(cur_date)
    # 销售毛利率(ttm),-1列为rank,-2列为所需要的
    fa_grossprofitmargin = om.get_fa_grossprofitmargin(cur_date)
    # 扣除非经常损益后的净利润/净利润,-1列为rank,-2列为所需要的
    deductedprofittoprofit = om.get_deductedprofittoprofit(cur_date)
    # 总资产周转率(ttm),-1列为rank,-2列为所需要的
    fa_assetsturn = om.get_fa_assetsturn(cur_date)
    # 获取经营性现金流(lyr)
    val_pcf_ocf = om.get_index_val_pcf_ocf(cur_date)

    roe_q = qfa_roe.iloc[:, -2]
    roe_ttm = fa_roe.iloc[:, -2]
    roa_q = qfa_roa.iloc[:, -2]
    roa_ttm = fa_roa.iloc[:, -2]
    grossprofitmargin_q = qfa_grossprofitmargin.iloc[:, -2]
    grossprofitmargin_ttm = fa_grossprofitmargin.iloc[:, -2]
    profitmargin_ttm = deductedprofittoprofit.iloc[:, -2]
    assetturnover_ttm = fa_assetsturn.iloc[:, -2]
    operationcashflowratio_q = val_pcf_ocf.iloc[:, -1] / qfa_roa.iloc[:, -2]
    operationcashflowratio_ttm = val_pcf_ocfttm.iloc[:, -1] / fa_roa.iloc[:, -2]
    # 入库
    stock_list = om.get_all_stock(cur_date)
    roe_q_flag = fh.df_to_list(cur_date, roe_q, 'roe_q', stock_list)
    roe_ttm_flag = fh.df_to_list(cur_date, roe_ttm, 'roe_ttm', stock_list)
    roa_q_flag = fh.df_to_list(cur_date, roa_q, 'roa_q', stock_list)
    roa_ttm_flag = fh.df_to_list(cur_date, roa_ttm, 'roa_ttm', stock_list)
    grossprofitmargin_q_flag = fh.df_to_list(cur_date, grossprofitmargin_q, 'grossprofitmargin_q', stock_list)
    grossprofitmargin_ttm_flag = fh.df_to_list(cur_date, grossprofitmargin_ttm, 'grossprofitmargin_ttm', stock_list)
    profitmargin_ttm_flag = fh.df_to_list(cur_date, profitmargin_ttm, 'profitmargin_ttm', stock_list)
    assetturnover_ttm_flag = fh.df_to_list(cur_date, assetturnover_ttm, 'assetturnover_ttm', stock_list)
    operationcashflowratio_q_flag = fh.df_to_list(cur_date, operationcashflowratio_q, 'operationcashflowratio_q', stock_list)
    operationcashflowratio_ttm_flag = fh.df_to_list(cur_date, operationcashflowratio_ttm, 'operationcashflowratio_ttm', stock_list)

    if roe_q_flag & roe_ttm_flag & roa_q_flag & roa_ttm_flag & grossprofitmargin_q_flag & grossprofitmargin_ttm_flag \
            & profitmargin_ttm_flag & assetturnover_ttm_flag & operationcashflowratio_q_flag & operationcashflowratio_ttm_flag != 1:
        gl.logger.error('factor_financial_quality insert fail')
        return 0
    else:
        gl.logger.info('factor_financial_quality insert successful')
        return 1
Example #2
0
def factor_value(cur_date):
    # 获取EP(TTM),净利润/总市值(带index),(若净利润<=0,则返回空)
    inverse_ep = om.get_index_ep(cur_date)
    # 获取ps,市销率(PS,TTM)
    ps = om.get_ps(cur_date)
    # 获取pb值  也就是需要的bp,的倒数
    inverse_bp = om.get_index_val_pb_new(cur_date)
    # 获取净现金流
    val_pcf_ncfttm = om.get_index_val_pcf_ncfttm(cur_date)
    # 获取经营性现金流(ttm)
    val_pcf_ocfttm = om.get_index_val_pcf_ocfttm(cur_date)
    # 获取个股市值(带index)
    index_mkvalue = om.get_index_mkvalue(cur_date)

    ep = 1 / inverse_ep.iloc[:, -1]
    bp = 1 / inverse_bp.iloc[:, -1]
    sp = 1 / ps.iloc[:, -1]
    ncfp = val_pcf_ncfttm.iloc[:, -1] / index_mkvalue.iloc[:, -1]
    ocfp = val_pcf_ocfttm.iloc[:, -1] / index_mkvalue.iloc[:, -1]
    # 分红放在最后面了,主要是不是我写的
    # 红利(近12个月股息率),首先拼接一年前的日期
    struct_time = time.strptime(str(cur_date), '%Y%m%d')
    y = struct_time.tm_year - 1
    m = struct_time.tm_mon
    d = struct_time.tm_mday
    year_before = str(date(y, m, d).replace(year=y))
    year_before = year_before.replace('-', '')
    divdend = om.get_dps(year_before, str(cur_date))
    divdend.index = divdend.iloc[:, 0]
    dp = divdend.iloc[:, -1]
    # 入库
    stock_list = om.get_all_stock(cur_date)
    ep_flag = fh.df_to_list(cur_date, ep, 'ep', stock_list)
    bp_flag = fh.df_to_list(cur_date, bp, 'bp', stock_list)
    sp_flag = fh.df_to_list(cur_date, sp, 'sp', stock_list)
    ncfp_flag = fh.df_to_list(cur_date, ncfp, 'ncfp', stock_list)
    ocfp_flag = fh.df_to_list(cur_date, ocfp, 'ocfp', stock_list)
    dp_flag = fh.df_to_list(cur_date, dp, 'dp', stock_list)

    if ep_flag & bp_flag & sp_flag & ncfp_flag & ocfp_flag & dp_flag != 1:
        gl.logger.error('factor_value insert fail')
        return 0
    else:
        gl.logger.info('factor_value insert successful')
        return 1