
    bAjd                         d Z ddlmZ ddlmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ  ee      Z e       Ze G d d	             Ze G d
 d             Z G d d      Z e       Zy)z9Quantitative go/no-go criteria for production activation.    )	dataclass)datetime	timedeltatimezone)Decimal)AnyOptional)get_settings)
get_loggerc                   p    e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   d	Z
eed
<   dZeed<   dZeed<   y)GoNoGoCriteria2   
min_tradesg      ?
min_sharpeg      $@max_drawdown_pctg?min_profit_factorg      ?max_slippage_diff_pct   min_paper_daysr   max_critical_incidentsN)__name__
__module____qualname__r   int__annotations__r   floatr   r   r   r   r        ?C:\xampp\htdocs\tradingbinance\backend\app\services\go_no_go.pyr   r      sL    JJ"e""u"#&5&NC"#C#r   r   c                   Z    e Zd ZU eed<   eeef   ed<   eeef   ed<   ee   ed<   e	ed<   y)GoNoGoResultpassedchecksmetricsfailuresevaluated_atN)
r   r   r   boolr   dictstrr   listr   r   r   r   r!   r!      s3    LdO#s(^3ir   r!   c                   h    e Zd ZdZddee   fdZ	 	 	 	 	 ddee   dee	   de
ded	e	d
e	de	de	defdZy)GoNoGoEvaluatorzx
    Evaluate paper trading performance against production thresholds.
    Does NOT guarantee future profitability.
    Ncriteriac                 J    |xs t        t        j                        | _        y )N)r   )r   settingsmin_paper_trading_daysr-   )selfr-   s     r   __init__zGoNoGoEvaluator.__init__)   s      
N#::%
r   tradesequity_curvepaper_startcritical_incidentsavg_slippage_diff_pctsharpemax_drawdownprofit_factorreturnc	                 2   i }	g }
t        j                  t        j                        |z
  j                  }|| j
                  j                  k\  |	d<   |	d   s,|
j                  d| d| j
                  j                   d       t        |      }|| j
                  j                  k\  |	d<   |	d   s+|
j                  d| d| j
                  j                          || j
                  j                  k\  |	d<   |	d   s,|
j                  d	|d
d| j
                  j                          || j
                  j                  k  |	d<   |	d   s-|
j                  d|d
d| j
                  j                   d       || j
                  j                  k\  |	d<   |	d   s,|
j                  d|d
d| j
                  j                          || j
                  j                  k  |	d<   |	d   s|
j                  d|d
d       || j
                  j                  k  |	d<   |	d   s|
j                  | d       t        |	j!                               }t#        ||	|||||||d|
t        j                  t        j                              }t$        j'                  d||
       |S )Nr   zPaper trading only zd, need dr   zOnly z trades, need r8   zSharpe z.2fz < drawdownz	Drawdown z% > %r:   zProfit factor slippagezSlippage diff z% exceeds thresholdno_critical_incidentsz critical incidents detected)trade_count
paper_daysr8   r9   r:   slippage_diff_pctr6   )r"   r#   r$   r%   r&   go_no_go_evaluated)r"   r%   )r   nowr   utcdaysr-   r   appendlenr   r   r   r   r   r   allvaluesr!   loggerinfo)r1   r3   r4   r5   r6   r7   r8   r9   r:   r#   r%   rC   rB   r"   results                  r   evaluatezGoNoGoEvaluator.evaluate.   s{    #% ll8<<0;>DD
#-1M1M#M &'OO1*XdmmFbFbEccdef&k*dmm.F.FF|l#OOeK=t}}?W?W>XYZ!T]]%=%==xhOOgfS\T]]5M5M4NOP)T]]-K-KKzj!OOiS'9dmm>\>\=]]^_`"/4==3R3R"Ro&OOn]3,?s4==CbCbBcde2dmm6Y6YYzj!OOn-B3,GGZ[\*<@d@d*d&'-.OO122NOPV]]_%*(  ,!.%:&8 !hll3
 	((Kr   )N)r           rQ   rQ   rQ   )r   r   r   __doc__r	   r   r2   r*   r(   r   r   r   r!   rP   r   r   r   r,   r,   #   s    

.!9 
 #$'*!"=T
= 5k= 	=
  =  %= = = = 
=r   r,   N)rR   dataclassesr   r   r   r   decimalr   typingr   r	   app.core.configr
   app.core.loggingr   r   rM   r/   r   r!   r,   go_no_go_evaluatorr   r   r   <module>rY      sx    ? ! 2 2    ( '	H	> $ $ $   H HV %& r   