o
    Ï_¸jO  ã                   @   s˜   d Z ddlZddlZddlZddlmZ ddlmZ eeƒ 	¡ j
Zej deej
ƒ¡ ddlZedƒZdddd	œZd
d„ Zdd„ ZedkrJeƒ  dS dS )zý
analyze.py -- [2026-09-26] results of run_tick20.sh (20-day tick replay):
setup J vs J + entry_rules PASS gate vs gate with 15-min lockout, per day
and per trade, plus the shadow-feature study on J's own snapshots
(labeled from the 20-day 1-min bars).
é    N)Údefaultdict)ÚPathz(/var/www/screener/trade/data/simulationsÚ Ú	_gatepassÚ_gatepass_gb15)ÚbaseÚgateÚgate15c                 C   sh   i }t t ttd d ƒ¡ƒD ]"}t|ƒj}t|› dt|  › d� }| ¡ r1t	 
t|ƒ¡d ||< q|S )NÚcandsz*.jsonÚ:_sim_maxpos99_gr_r25_es0p_rs45_plan_ctx_rr20_rt1_ext_msk25z_cf.jsonÚtrades)ÚsortedÚglobÚstrÚHEREr   ÚstemÚSIMÚVARIANTSÚexistsÚjsonÚloadÚopen)ÚvÚoutÚfÚdÚp© r   ú=/var/www/screener/trade/reports/open_window/tick20/analyze.pyÚload_trades   s   
€r   c                     sR  dd„ t D ƒ‰tˆd ƒ} tt| ƒ› d�ƒ tdd›d dd	„ t D ƒ¡ ƒ td
d„ ƒ}| D ]d‰ ˆ d›}t D ]W}ˆ|  ˆ ¡}|d u rJ|dd›7 }q6tdd	„ |D ƒƒ}tdd	„ |D ƒƒ}|| d  t|ƒ7  < || d  |7  < || d  |7  < |t|ƒ› d|› d|d›�d›7 }q6t|ƒ q.tdƒ tdd›d dd	„ | ¡ D ƒ¡ ƒ | 	¡ D ] \}\}}}|rÍtd|d›d|| d d›d|| d›d�ƒ q­td ƒ | D ]R‰ ˆd ˆ  D ]I‰‡ ‡‡fd!d„d"D ƒ}tdˆ › d#ˆd$ d%›d#ˆd& d'd(… › d)ˆd* d+›d,|d- �r
d.nd/› d0|d1 �rd.nd/› d2ˆ d3d¡d d4… › d5�ƒ qÜqÔtd6ƒ d"D ]E}| D ]?‰ ˆ|  ˆ g ¡D ]3‰t
‡fd7d	„ˆd ˆ  D ƒƒ�smtd|d%›d#ˆ › d#ˆd$ d%›d#ˆd& d'd(… › d)ˆd* d+›�
ƒ �q;�q1�q-td8 ‰ ˆ  ¡ �r§t ˆ t ¡ ¡\}	}
d9d:„ ˆd  ¡ D ƒ}|D ]	‰ˆd* ˆd;< �q“t d<|	|
|¡ d S d S )=Nc                 S   s   i | ]}|t |ƒ“qS r   )r   ©Ú.0r   r   r   r   Ú
<dictcomp>    s    zmain.<locals>.<dictcomp>r   z days replayed
ÚdayÚ12r   c                 s   s   � | ]}|d ›V  qdS )ú>22Nr   r    r   r   r   Ú	<genexpr>#   ó   € zmain.<locals>.<genexpr>c                   S   s   g d¢S )N)r   r   g        r   r   r   r   r   Ú<lambda>$   s    zmain.<locals>.<lambda>ú-r%   c                 s   s   � | ]}|d  V  qdS )Ú
pl_dollarsNr   ©r!   Útr   r   r   r&   +   r'   c                 s   s   � | ]	}|d  dkV  qdS )r*   r   Nr   r+   r   r   r   r&   +   s   € r   é   é   út úW $ú+.2fzN------------------------------------------------------------------------------ÚTOTALc                 s   s0   � | ]\}}}|› d |› d|d›�d›V  qdS )r/   r0   r1   r%   Nr   )r!   ÚnÚwÚplr   r   r   r&   0   ó   €. z  Ú7z
 win rate éd   z.0fz%  avg $z/tradez*
J trades and what the gate did with them:c              	      s0   i | ]}|t ‡fd d„ˆ|  ˆ g ¡D ƒƒ“qS )c                 3   ó0   � | ]}|d  ˆ d  ko|d ˆ d kV  qdS ©ÚsymbolÚ
entry_timeNr   )r!   Úg)r,   r   r   r&   8   s   € (ÿz"main.<locals>.<dictcomp>.<genexpr>)ÚanyÚgetr    )r   Úresr,   r   r   r"   8   s
    ÿÿ)r   r	   ú r;   Ú6r<   é   é   z $r*   z+8.2fz  gate:r   ÚkeptzBLOCKED/movedz	  gate15:r	   z  (Úexit_reasoné-   ú)zI
Trades the gated runs took that J did not (delayed / different entries):c                 3   r9   r:   r   r+   )r=   r   r   r&   A   r6   Úshadow_basec                 S   s   g | ]	}|D ]}|‘qqS r   r   )r!   Útrr,   r   r   r   Ú
<listcomp>G   s    zmain.<locals>.<listcomp>r5   z620-day TICK replay, setup J (full order-flow features))r   r   ÚprintÚlenÚjoinr   r?   ÚsumÚvaluesÚitemsr>   r   r   Úsar   Ú
bar_sourceÚreport)ÚdaysÚtotÚrowr   rJ   r5   r4   r3   rE   ÚsnapsÚoutsr   r   )r   r=   r@   r,   r   Úmain   sh    $@$
$.€ÿ4ÿÿþý @€þÿ
ûrZ   Ú__main__)Ú__doc__r   r   ÚsysÚcollectionsr   Úpathlibr   Ú__file__ÚresolveÚparentr   ÚpathÚinsertr   Úshadow_analysisrR   r   r   r   rZ   Ú__name__r   r   r   r   Ú<module>   s     
.
ÿ