
    i                     Z   d dl Z d dlmZ  ed      5 Z e j
                  e      Zddd        ed ee               e         ed       Z	eD ]  Z
e
d   Ze	e   dxx   dz  cc<   e	e   d	xx   e
d
   d kD  rdnd z  cc<   e	e   dxx   e
d   z  cc<   e	e   dxx   e
d
   z  cc<   e	e   dxx   e
j                  dd       z  cc<   e	e   dxx   e
j                  dd       z  cc<     ed       ddddddddddddddddddddddddd dZ ee        ed! ee      z          ee	j                         d" d#$      D ]  \  ZZed   Zed   ez  Zed   ez  Zed   d kD  red   ed   z  d%z  nd Zed   ez  Zd&Zed   d'k  red(k\  rd)Zned   d*kD  r
ed	   ek(  rd+Z eeddedded	   ddeed	   z
  dded   d,ded-d.ed/d.ed0d.ed1d2e          e         ed3        ed4       ZeD ]  Z
e
d5   Zee   dxx   dz  cc<   ee   d	xx   e
d
   d kD  rdnd z  cc<   ee   dxx   e
d   z  cc<   ee   d
   j3                  e
d
          ee   d6   j3                  e
j                  d7d              ee   d   j3                  e
j                  dd               ej                         D ]  \  ZZ eed6          eed6         z  Z eed
          eed
         z  Z eed          eed         z  Zed	   ed   z  d%z  Z ee d8ed    d9ed	    d:ed   ed	   z
   d;ed<d=ed   d>d?ed@dAedBdCedDdE         e         edF        edG       ZeD ]J  Z
e
dH   jA                  dI      d    jC                         Z"ee"   dxx   dz  cc<   ee"   dJxx   e
d   z  cc<   L  eej                         dK L      D ],  \  Z#Z$ ee$d   ddMe#dNdOe$dJ   d>d?e$dJ   e$d   z  d>dP       .  e         edQ       g g g g g dRZ%eD ]  Z
e
j                  dd       Z&e
d   Z'e&d(k  re%dS   j3                  e'       4e&d*k  re%dT   j3                  e'       Ne&dUk  re%dV   j3                  e'       he&dWk  re%dX   j3                  e'       e%dY   j3                  e'        e%j                         D ]Y  \  Z#Z(e(s	 edZ e(D              Z) ee#d[d8 ee(       d\e) ee(      z  d%z  d<d] ee(      d>d^ ee(       ee(      z  d>dP
       [  e         ed_       eD  cg c]6  } | j                  dd       d`kD  s| d
   | j                  dd      z  d`k  s5| 8 c} Z* eda ee*       db ee              e*D ]S  Z
e
d
   e
j                  dd      z  d%z  Z ede
d   ddce
d   dDdde
d
   d@deed<dfe
j                  dd       dgd2       U  e        e	j                         D ci c]  \  }}|d   d(k\  s|d   d'k  s|| c}}Z+ edh e,e+j[                                       eD  cg c]#  } | j                  d7d       dik\  s| d
   d k  s"| % c} Z. edj ee.       db eeD  cg c]  } | j                  d7d       dik\  s|  c}               e.D ]Y  Z
 ede
d   ddke
d7   dBdle
d
   d@dme
j                  dd       dDdne
dH   jA                  dI      d    jC                          
       [ y# 1 sw Y   xY wc c} w c c}}w c c} w c c} w )o    N)defaultdictzespion_history.jsonzTotal SPY trades: c                      dddddddS )Nr   )nwpnl_usdtpnl_pct_summax_pnl_sumhold_sum r       ./analyze_spy_30d.py<lambda>r      s    qAATUabc r   symbolr      r   pnl_pctr   r   r	   max_pnlr
   hold_minutesu&   === PAR COIN (trié par PnL total) ===Symbolz<20 Nz>3WLz  	TotalUSDTz>10AvgPctz>8	AvgMaxPnlz	Captured%AvgHold-c                     | d   d   S )Nr   r   r   xs    r   r   r      s    !A$z2B r   T)keyreversed       u    ⚠ PERDANT CHRONIQUE   u    ✅ EXCELLENTz>+10.2fz>+7.3fz%  z>10.3fz>9.0fz>7.1fminz=== SURGE TYPE ===c                      dddg g g dS )Nr   )r   r   r   r   strengthr   r   r   r   r   r   r   (   s    !Qr\^_ r   
surge_typer*   surge_strengthz: N=z W=z L=z
  WinRate=z.0fz%  PnL=z+.2fz
USDT  avg=z+.3fz%  avgStrength=z.2fzx  avgMaxPnl=z.3f%z=== EXIT REASONS ===c                      dddS )Nr   )r   pnlr   r   r   r   r   r   :   s
    O r   exit_reason(r/   c                     | d   d    S )Nr   r   r   r   s    r   r   r   ?   s    1c
 r   )r!   zx  z<35z  TotalPnL=z
USDT/tradez=== HOLD TIME vs PnL ===)<2min2-5min5-10min10-15min>15minr3   r4   
   r5      r6   r7   c              #   ,   K   | ]  }|d kD  s	d  yw)r   r   Nr   ).0ps     r   	<genexpr>r=   O   s     *AE1*s   
z<12z  WR=z%  TotalPnL=zUSDT  avgPnL=z)=== HYPOTHESE: PRE-SELECTION CRITERES ===g333333?z<Trades avec max_pnl>0.3% mais capture<30% (entree tardive): /z maxPnl=z	% actual=z
% capture=z% hold=z.1fz/Perdants chroniques (>=2 trades, PnL<-1 USDT): g       @z&
Surges fortes (>=2x) mais perdantes: z
 strength=zx  pnl=z
%  maxPnl=z%  exit=)/jsoncollectionsr   openfloadhprintlencoinstsgetheadersorteditemssymdr   avg_maxavg_holdcapavg_pctflagstypesappendstsumavg_stravg_pwrexitssplitstripr!   kvbucketsmr<   pswinsbad_capturechronic_loserslistkeysstrong_surges_lost)rH   rN   rO   s   000r   <module>rj      s
    #	
  A		!A 3q6(# $  	cd	
 5A	(A	!HSMQM	!HSM!I,*Q1M	!HZAjM)	!H]q|+	!H]quuY22	!HZAEE.!445 . /S>3r(!C81SHB{36Gr(SUVXYdehXiiklwx{k||~  @I  JL  M  
N f c#f+o U[[](BDQ aFC	#A"G}q H787G!7K!M
Q}-
-
3QRC"GD}ra1f'	
:	qv{	SIQqfAafR[!AcF(2b:w8OrRYZ`Qaadelmsdttwx{  }B  xC  CF  GO  PU  FV  VY  Z^  Y_  `  aa   	_	`	
 5A	,A
1IcNaN
1IcN1Y<!+a2N
1IjQz]*
1Ii)-
1Ij  '7!;<
1Iii 345 \\^ vEB!J- 3q}#55G)AiL 11E!I,#a	l"33G	
3!C&3	B	RDQsVHC#xs1S6!C&=/Bs87STU_S`aeRffpqvw{p|  }L  MT  UX  LY  Yf  gn  or  fs  st  u  vv   +,	
 'A
M

 
 
%a
(
.
.
0C	#JsOqO	#Ju:&' 5;;=&:; hDAq	QsVBKs1S'QuXdO:ahqQTvoVZE[[e
fgh    !rB"b
I	
 -A	na A	*A1u ''*	
Q!((+	
R#**1-	
R$++A."))!,- ]]_ IEAr	*b**3tCG9E$s2w,s*:3)?|CPRGTX>Yfgjkmgnorsuovgvw{f|  }G  H  	II
  1 2dQquuYq1C7AiL155QZ[\K]<]`c<cqd DSEUDVVWX[\]X^W_` a	 RA
I,y+
+c
1C	Bq{3x)S'91Y<PTBUU_`cdg_hhopqpupu  wE  FG  qH  IL  pM  MP  Q  RR ',{{}[VS!#!*XZHZ#q&[ 7^=P=P=R8S7TU V "#\Aaee,<Q&?3&F1Y<Z[K[a\  /4F0G/H#Z[N~UV_`_d_deuvw_xz}_}qN~J  JA  B  C	 qA	Bq{3z!,<*=c)B'!I,W[I\\fghglglmvwxgyz}f~  G  HI  JW  HX  H^  H^  _b  Hc  de  Hf  Hl  Hl  Hn  Go  p  qq b e \ ]N~sM   \3\\*\=\\\\#\#'\# \(\(\