def roe(): ''' 年度ROE(平均) =净利润/净资产 =归母净利润/(期初+期末归母净资产)/2 =每股净利润/每股净资产 =销售净利率*总资产周转率*杠杆系数 ''' return MetricsMeta( 'f_roe', expr.Div( expr.Get('n_income_attr_p'), expr.Div( expr.Sum( expr.Get('total_hldr_eqy_exc_min_int'), expr.Get('total_hldr_eqy_exc_min_int', period_begin=True)), expr.Value(2))))
def exp_3_ratio(): '''三费占比''' return MetricsMeta('f_exp_3.r', expr.Div( expr.Sum(expr.Get('sell_exp'), expr.Get('admin_exp'), expr.Get('fin_exp')), expr.Get('revenue')), display='三费占比')
def interest_bearing_liab_ratio_y(): ''' 有息负债率 = 有息负债 / 总资产 同行比较,越高风险越大 ''' return MetricsMeta('f_interest_bearing_liab_y.r', expr.Div(expr.Get('f_interest_bearing_liab_y'), expr.Get('f_total_assets_y')), display='有息负债率')
def days_prepayment_y(): '''预付账款周转天数''' return MetricsMeta('f_days_prepayment_y', expr.Div( expr.Multi(expr.Get('f_prepayment_ave_y'), expr.Value(360)), expr.Get('oper_cost', period='y')), display='预付账款周转天数')
def days_adv_receipts_y(): '''预收账款周转天数''' return MetricsMeta('f_days_adv_receipts_y', expr.Div( expr.Multi(expr.Get('f_adv_receipts_ave_y'), expr.Value(360)), expr.Get('revenue', period='y')), display='预收账款周转天数')
def days_inventory_y(): '''存货周转天数''' return MetricsMeta('f_days_inventory_y', expr.Div( expr.Multi(expr.Get('f_inventory_ave_y'), expr.Value(360)), expr.Get('oper_cost', period='y')), display='存货周转天数')
def gross_profit_ratio(): '''毛利率%''' return MetricsMeta('f_gross_profit.r', expr.Sub( expr.Value(1), expr.Div(expr.Get('oper_cost'), expr.Get('revenue'))), display='毛利率')
def inventroy_ave_y(): '''平均存货''' return MetricsMeta( 'f_inventory_ave_y', expr.Div( expr.Sum( expr.Get('inventories', period='y'), expr.Before(expr.Get('inventories', period='y'), past_year=1)), expr.Value(2)))
def assets_liab_ratio_y(): ''' 资产负债率 >50%需小心 同行比较,越高风险越大 ''' return MetricsMeta( 'f_assets_liab_y.r', expr.Div(expr.Get('total_liab', period='y'), expr.Get('f_total_assets_y')))
def days_acct_payable_y(): '''应付账款周转天数''' return MetricsMeta('f_days_acct_payable_y', expr.Div( expr.Multi(expr.Get('f_acct_payable_ave_y'), expr.Value(360)), expr.Sub(expr.Get('oper_cost', period='y'), expr.Get('inventories', period='y'))), display='应付账款周转天数')
def adv_receipts_ave_y(): '''平均预收账款''' return MetricsMeta( 'f_adv_receipts_ave_y', expr.Div( expr.Sum( expr.Get('adv_receipts', period='y'), expr.Before(expr.Get('adv_receipts', period='y'), past_year=1)), expr.Value(2)))
def prepayment_ave_y(): '''平均预付账款''' return MetricsMeta( 'f_prepayment_ave_y', expr.Div( expr.Sum( expr.Get('prepayment', period='y'), expr.Before(expr.Get('prepayment', period='y'), past_year=1)), expr.Value(2)))
def leverage(): ''' 杠杆倍数 = 资产/所有者权益 = 资产/(资产-负债) = 1/(1-资产负债率) ''' return MetricsMeta('f_leverage', expr.Div(expr.Get('f_total_assets'), expr.Get('total_hldr_eqy_exc_min_int')), display='杠杆倍数')
def accounts_receiv_ave_y(): '''平均应收账款''' return MetricsMeta( 'f_accounts_receiv_ave_y', expr.Div( expr.Sum( expr.Get('accounts_receiv', period='y'), expr.Before(expr.Get('accounts_receiv', period='y'), past_year=1), expr.Get('notes_receiv', period='y'), expr.Before(expr.Get('notes_receiv', period='y'), past_year=1)), expr.Value(2)))
def acct_payable_ave_y(): '''平均应付账款''' return MetricsMeta( 'f_acct_payable_ave_y', expr.Div( expr.Sum( expr.Get('acct_payable', period='y'), expr.Get('notes_payable', period='y'), expr.Before(expr.Get('acct_payable', period='y'), past_year=1), expr.Before(expr.Get('notes_payable', period='y'), past_year=1)), expr.Value(2)))
def cashflow_free_pay_10_years_ratio(): '''10年自由现金流/10年资本开支比''' return MetricsMeta( 'f_cashflow_free_pay_10_y.r', expr.Div( expr.Sum(expr.Get('f_cashflow_free_y'), [ expr.Before(expr.Get('f_cashflow_free_y'), past_year=n) for n in range(1, 10) ]), expr.Sum(expr.Get('c_pay_acq_const_fiolta', period='y'), [ expr.Before(expr.Get('c_pay_acq_const_fiolta', period='y'), past_year=n) for n in range(1, 10) ])), display='10年自由现金流与资本开支比')
def roe_ttm(): ''' 年度ROE(加权平均) 根据中国证监会发布的《公开发行证券公司信息披露编报规则》第9号的通知的规定:加权平均净资产收益率(ROE)的计算公式如下:ROE= P/(E0 + NP÷2 + Ei×Mi÷M0 - Ej×Mj÷M0) 其中: P为报告期利润; NP为报告期净利润; E0为期初净资产; Ei为报告期发行新股或债转股等新增净资产; Ej为报告期回购或现金分红等减少净资产; M0为报告期月份数; Mi为新增净资产下一月份起至报告期期末的月份数; Mj为减少净资产下一月份起至报告期期末的月份数。 ''' return MetricsMeta('f_roe_ttm', expr.Div( expr.Get('f_income_attr_p_ttm'), expr.Div( expr.Sum( expr.Get('total_hldr_eqy_exc_min_int'), expr.Before( expr.Get('total_hldr_eqy_exc_min_int'), past_quarter=4)), expr.Value(2))), display='ROE(滚动)')
def net_profit_growth_pay_10_years_ratio(): '''10年净利润增长/10年资本开支比''' return MetricsMeta( 'f_n_income_attr_p_pay_10_y.r', expr.Div( expr.Sub( expr.Get('n_income_attr_p', period='y'), expr.Before(expr.Get('n_income_attr_p', period='y'), past_year=9)), expr.Sum(expr.Get('c_pay_acq_const_fiolta', period='y'), [ expr.Before(expr.Get('c_pay_acq_const_fiolta', period='y'), past_year=n) for n in range(1, 10) ])), display='10年净利润增长与资本开支比')
def price_share(market_cap: expr.Expr): '''估算单价''' return expr.Div(market_cap, expr.Get('total_share'))
def sale_cash_ratio(): '''营销:销售收现率%''' return MetricsMeta('f_sale_cash.r', expr.Div(expr.Get('c_fr_sale_sg'), expr.Get('revenue')), display='销售收现率')
def adv_receipt_ratio(): '''营销:预收率%''' return MetricsMeta('f_adv_receipt.r', expr.Div(expr.Get('adv_receipts'), expr.Get('revenue')), display='预收率')
def fin_exp_revenue_ratio(): '''财务费用占比''' return MetricsMeta('f_fin_exp_revenue.r', expr.Div(expr.Get('fin_exp'), expr.Get('revenue')), display='财务费用占比')
def sale_credit_ratio(): '''营销:赊销率(白条率)''' return MetricsMeta('f_sale_credit.r', expr.Div(expr.Get('f_receivables'), expr.Get('revenue')), display='赊销率')
def admin_revenue_ratio(): '''管理费用占比''' return MetricsMeta('f_admin_revenue.r', expr.Div(expr.Get('admin_exp'), expr.Get('revenue')), display='管理费用占比')
def fin_exp_revenue_ratio_y(): '''财务费用占比''' return MetricsMeta('f_fin_exp_revenue_y.r', expr.Div(expr.Get('fin_exp', period='y'), expr.Get('revenue', period='y')), display='财务费用占比')
def admin_revenue_ratio_y(): '''管理费用占比''' return MetricsMeta('f_admin_revenue_y.r', expr.Div(expr.Get('admin_exp', period='y'), expr.Get('revenue', period='y')), display='管理费用占比')
def sell_revenue_ratio(): '''销售费用占比''' return MetricsMeta('f_sell_revenue.r', expr.Div(expr.Get('sell_exp'), expr.Get('revenue')), display='销售费用占比')
def sell_revenue_ratio_y(): '''销售费用占比''' return MetricsMeta('f_sell_revenue_y.r', expr.Div(expr.Get('sell_exp', period='y'), expr.Get('revenue', period='y')), display='销售费用占比')
def income_tax_ratio(): '''所得税占比''' return MetricsMeta('f_income_tax.r', expr.Div(expr.Get('income_tax'), expr.Get('revenue')), display='所得税占比')
def income_tax_ratio_y(): '''所得税占比''' return MetricsMeta('f_income_tax_y.r', expr.Div(expr.Get('income_tax', period='y'), expr.Get('revenue', period='y')), display='所得税占比')