+
    0.jd                         R t ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHt ]! ]4      t]! 4       t] ! R R4      4       t] ! R	 R
4      4       t ! R R4      t]! 4       tR# )z9Quantitative go/no-go criteria for production activation.)	dataclass)datetime	timedeltatimezone)Decimal)AnyOptional)get_settings)
get_loggerc                   H   a  ] tR t^t o ^2tRtRtRtRt^t	^ t
V 3R ltRtV tR# )GoNoGoCriteriag      ?g      $@g?g      ?c                n   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[ ;R&   S[ ;R&   # )   
min_trades
min_sharpemax_drawdown_pctmin_profit_factormax_slippage_diff_pctmin_paper_daysmax_critical_incidents)intfloat)format__classdict__s   "?C:\xampp\htdocs\tradingbinance\backend\app\services\go_no_go.py__annotate__GoNoGoCriteria.__annotate__   s^         "	 
 "  !&     #      N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   __annotate_func____static_attributes____classdictcell__r   s   @r   r   r      s3     JJ""#&N"#  r   r   c                   ,   a  ] tR t^t o V 3R ltRtV tR# )GoNoGoResultc                   < V ^8  d   Qh/ S[ ;R&   S[S[S[ 3,          ;R&   S[S[S[3,          ;R&   S[S[,          ;R&   S[;R&   # )r   passedchecksmetricsfailuresevaluated_at)booldictstrr   listr   )r   r   s   "r   r   GoNoGoResult.__annotate__   sW     L  dO  #s(^	 
 3i   r   r   N)r   r    r!   r"   r#   r$   r%   r&   s   @r   r(   r(      s      r   r(   c                   P   a  ] tR t^#t o RtRV 3R lR lltR	V 3R lR lltRtV tR# )
GoNoGoEvaluatorzl
Evaluate paper trading performance against production thresholds.
Does NOT guarantee future profitability.
Nc                0   < V ^8  d   QhRS[ S[,          /# )r   criteria)r   r   )r   r   s   "r   r   GoNoGoEvaluator.__annotate__)   s     
 
.!9 
r   c                X    T;'       g    \        \        P                  R 7      V n        R# ))r   N)r   settingsmin_paper_trading_daysr7   )selfr7   s   &&r   __init__GoNoGoEvaluator.__init__)   s#      
 
N#::%
r   c                p   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[RS[RS[RS[RS[RS[R	S[/	# )
r   tradesequity_curvepaper_startcritical_incidentsavg_slippage_diff_pctsharpemax_drawdownprofit_factorreturn)r2   r0   r   r   r   r(   )r   r   s   "r   r   r8   .   sm     = =T
= 5k= 	=
  =  %= = = = 
=r   c	                   / p	. p
\         P                  ! \        P                  4      V,
          P                  pWP
                  P                  8  V	R &   V	R ,          '       g-   V
P                  RV RV P
                  P                   R24       \        V4      pWP
                  P                  8  V	R&   V	R,          '       g,   V
P                  RV RV P
                  P                   24       W`P
                  P                  8  V	R&   V	R,          '       g-   V
P                  RVR	 R
V P
                  P                   24       WpP
                  P                  8*  V	R&   V	R,          '       g.   V
P                  RVR	 RV P
                  P                   R24       WP
                  P                  8  V	R&   V	R,          '       g-   V
P                  RVR	 R
V P
                  P                   24       WPP
                  P                  8*  V	R&   V	R,          '       g   V
P                  RVR	 R24       W@P
                  P                  8*  V	R&   V	R,          '       g   V
P                  V R24       \        V	P!                  4       4      p\#        VV	RVRVRVRVRVRVRV/V
\         P                  ! \        P                  4      R7      p\$        P'                  RWR7       V# )r   zPaper trading only zd, need dr   zOnly z trades, need rE   zSharpe z.2fz < drawdownz	Drawdown z% > %rG   zProfit factor slippagezSlippage diff z% exceeds thresholdno_critical_incidentsz critical incidents detectedtrade_count
paper_daysrF   slippage_diff_pctrC   )r*   r+   r,   r-   r.   go_no_go_evaluated)r*   r-   )r   nowr   utcdaysr7   r   appendlenr   r   r   r   r   r   allvaluesr(   loggerinfo)r<   r@   rA   rB   rC   rD   rE   rF   rG   r+   r-   rP   rO   r*   results   &&&&&&&&&      r   evaluateGoNoGoEvaluator.evaluate.   s    #% ll8<<0;>DD
#-1M1M#M &''OO1*XdmmFbFbEccdef&k*mm.F.FF|l##OOeK=t}}?W?W>XYZ!]]%=%==xhOOgfS\T]]5M5M4NOP)]]-K-KKzj!!OOiS'9dmm>\>\=]]^_`"/==3R3R"Ro&&OOn]3,?s4==CbCbBcde2mm6Y6YYzj!!OOn-B3,GGZ[\*<@d@d*d&'-..OO122NOPV]]_%{j&#%:$&8 !hll3
 	(Kr   )r7   )N)            r`   r`   r`   )	r   r    r!   r"   __doc__r=   r]   r$   r%   r&   s   @r   r5   r5   #   s#     

 

= = =r   r5   N)ra   dataclassesr   r   r   r   decimalr   typingr   r   app.core.configr	   app.core.loggingr
   r   rZ   r:   r   r(   r5   go_no_go_evaluatorr   r   r   <module>rh      sx    ? ! 2 2    ( '	H	> $ $ $   H HV %& r   