a
    cOj)	                     @   s   d Z ddlZdd ZdS )u2   
主业亏损靠非经常性损益信号计算。
    Nc                 C   s  d}t j|| dtid}|jr.t jg ddS ddlm} g }|dD ]\\}}|||rp||ddd qH|j	dd	d
dd
 }g d}	|	D ]4}
|
|jvrd||
< qt j||
 ddd||
< q|d |d  |d  |d  |d  |d< |d |d  |d< |d dk|d dk@ |d< |d tjdd t|d< |d}d}d}|d D ]$}|r~|d7 }t||}nd}q`|||dkrdnd|d qHt |S )u6   计算所有股票主业亏损靠非经常性损益。u5  
    SELECT code, report_date, item_name, value::double precision AS value
    FROM financial_reports
    WHERE statement_type = 'profit'
      AND item_name IN ('利润总额', '营业外收入', '其他收益', '投资收益', '资产处置收益', '营业外支出')
      AND report_date LIKE '%1231'
    code)dtype)r   core_profit_unsustainable_flagcore_profit_max_streak)columnsr   )is_financialreport_date	item_namevaluefirst)indexr   valuesaggfunc)   利润总额   营业外收入   其他收益   投资收益   资产处置收益   营业外支出g        coerce)errorsr   r   r   r   r   Znon_recurringr   Zrecurring_profitZis_badN   year      )pdread_sqlstrempty	DataFrameocf.core.industryr   groupbyappendpivot_tablereset_indexr   
to_numericfillnaastypeintsort_valuesmax)connindustry_mapsqldfr   resultsr   gpivotitemscolZstreakZ
max_streakflag r5   1/Users/admin/quant_ocf/ocf/signals/core_profit.pyfetch_core_profit   sF    


&"

r7   )__doc__pandasr   r7   r5   r5   r5   r6   <module>   s   