a
    JOj                     @   s   d Z ddlZdd ZdS )uD   
OCF/NI 信号计算。

口径：动态最近 5 年年报累计。
    Nc              
   C   s>  d}t j|| dtid}|jr&t  S |d tjdd t|d< g }|dD ]\}}|d}|d 	 }||d |d k }t
|dk r||dddd	t
|d
 qV|d  }|d  }	|	dkr||	 ntd}
|	dks|dks|
dk rd}n|
dk rd}nd}||||	|
|t
|d
 qVt |S )u8   从 financial_summary 计算最近 5 年年报 OCF/NI。z
    SELECT code, report_date, ocf, net_profit
    FROM financial_summary
    WHERE report_date LIKE '%1231' AND ocf IS NOT NULL AND net_profit IS NOT NULL
    code)dtypereport_dateN   year   insufficient)r   
ocf_cum_5ynet_profit_cum_5yocf_ni_ratio_5yocf_ni_status
data_yearsocf
net_profitr   nang      ?	unhealthy   watchhealthy)pdread_sqlstrempty	DataFrameastypeintgroupbysort_valuesmaxlenappendsumfloat)connsqldfresultsr   glatest_yearrecentZocf_cumZnp_cumZratiostatus r+   4/tmp/quant_ocf_run_20260709_v2/ocf/signals/ocf_ni.pyfetch_ocf_ni
   sJ    "


	r-   )__doc__pandasr   r-   r+   r+   r+   r,   <module>   s   