
    DBjK                        d dl mZ d dlZd dlmc mZ d dlZd dl	m
Z
 d dlmZmZmZmZmZmZmZ d dlmZ ddZddZddZddZd ZdS )    )annotationsN)Path)format_v76_anti_chase_impactformat_v76_lifecycle_reportformat_v76_lifecycle_scorecardformat_market_confluence_linesummarize_v76_anti_chase_impactsummarize_v76_lifecycle!summarize_v76_lifecycle_scorecard)	STRICT_IDpathr   rowdictreturnNonec                    | j                             dd           |                     dd          5 }|                    t	          j        |          dz              d d d            d S # 1 swxY w Y   d S )NT)parentsexist_okazutf-8)encoding
)parentmkdiropenwritejsondumps)r   r   fhs      U/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_v76_lifecycle_report.py_appendr       s    KdT222	3	)	) )R
C4'((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   +A,,A03A0tmp_pathc                
    | dz  t           z  }t          |dz  ddddd           t          |dz  dddd	d
dddd           t          |dz  ddddddddd           |dz                      t          j        ddddiii                     t          t           |           }|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d         }d }||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d!         }ddi}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d"         }ddd#}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d$         }d%}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d&         }d	dd'}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d(         }dd	d)}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d*         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d+         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d,         }d	}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d-         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d.         }d/}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d0         }d1}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d2         }d }||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}t          |          }d3}||v }|st          j        d4|fd5||f          t          j        |          d6t          j                    v st          j        |          rt          j        |          nd6d7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}}d:}||v }|st          j        d4|fd5||f          t          j        |          d6t          j                    v st          j        |          rt          j        |          nd6d7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}}d;}||v }|st          j        d4|fd5||f          t          j        |          d6t          j                    v st          j        |          rt          j        |          nd6d7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}}t          |          }|d<         }d=}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d>         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|d?         }d@}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|dA         }dB}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|dC         }d%}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}dD}|dE         }||v }|slt          j        d4|fdF||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}t!          |          }dG}||v }|st          j        d4|fd5||f          t          j        |          dHt          j                    v st          j        |          rt          j        |          ndHd7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}}dI}||v }|st          j        d4|fd5||f          t          j        |          dHt          j                    v st          j        |          rt          j        |          ndHd7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}}dJ}||v }|st          j        d4|fd5||f          t          j        |          dHt          j                    v st          j        |          rt          j        |          ndHd7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}}d S )KNexperimentstrade_journal.jsonlentryBTCF)eventcoinlive_order_allowedmainnet_signed_actionexittake_profit0.25z1.50z-0.40)r'   r(   exit_reasonnet_pnl_usdmfe_pctmae_pctr)   r*   ETH	stop_lossz-0.10z0.30z-1.20z
state.jsonopen_positionsSOL100entries   ==z%(py1)s == %(py4)spy1py4assert %(py6)spy6exits   legacy_synthetic_exitsr   open_by_coinexit_reasons)r,   r3   closed_net_pnl_usdz0.15pnl_by_coin)r&   r2   pnl_by_exit_reason)r3   r,   winning_exitslosing_exitsgross_wins_usdgross_losses_usdavg_mfe_pctz0.90avg_mae_pctz-0.80live_order_allowed_countz)v76 Lifecycle: entries=1, exits=2, open=1inz%(py1)s in %(py3)sliner=   py3assert %(py5)spy5zavg_mfe=0.90%zlive_flags=0evidence_sourcetrue_lifecycle_exits_onlyclosed_tradeswinrate_pct50.00profit_factorz2.50r/   lifecycle_sample_too_smallblockers)z%(py1)s in %(py4)szv76 Lifecycle Scorecard:scorecard_linez source=true_lifecycle_exits_only	live=nein)r   r    
write_textr   r   r
   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationr   @py_builtinslocals_should_repr_global_namer   r   )r!   rootsummary@py_assert0@py_assert3@py_assert2@py_format5@py_format7rS   @py_format4@py_format6	scorecardr`   s                r   @test_summarize_v76_lifecycle_counts_entries_exits_open_positionsru      s   m#i/DD((#!&	+ +    D(($#!&	+ 	+ 	 	 	 D(("#!&	+ 	+ 	 	 	 
L$$TZ1AEGUZK[C\0]%^%^___%i::G9""""""""""""""""""""""""""""""""""""""""""""""""7 q q          q         q                           +,11,1111111111,11111,1111111111111111111111111111111#$))$))))))))))$)))))$)))))))))))))))))))))))))))))))>"0uaj0"j0000000000"j00000"0000j000000000000000000000000000>"Haa&H&HH"&HHHHHHHHHHH"&HHHHHH"HHHH&HHHHHHHHHHHHHHHHHHHHHHHHHHHH'(2F2(F2222222222(F22222(2222F222222222222222222222222222=!DVG%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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'(Y'RX,Y,YY(,YYYYYYYYYYY(,YYYYYY(YYYY,YYYYYYYYYYYYYYYYYYYYYYYYYYYY?#(q(#q((((((((((#q(((((#((((q(((((((((((((((((((((((((((>"'a'"a''''''''''"a'''''"''''a'''''''''''''''''''''''''''#$..$..........$.....$...............................%&1'1&'1111111111&'11111&1111'111111111111111111111111111=!+V+!V++++++++++!V+++++!++++V+++++++++++++++++++++++++++=!,W,!W,,,,,,,,,,!W,,,,,!,,,,W,,,,,,,,,,,,,,,,,,,,,,,,,,,-.3!3.!3333333333.!33333.3333!333333333333333333333333333&w//D6>6$>>>>>>>>>>6$>>>>>6>>>>>>>>>>>$>>>>>$>>>>>>>>>>>>>>>>>>>>>>>>>>>"?d""""""""""?d"""""?"""""""""""d"""""d"""""""""""""""""""""""""""!>T!!!!!!!!!!>T!!!!!>!!!!!!!!!!!T!!!!!T!!!!!!!!!!!!!!!!!!!!!!!!!!!1'::I&'F+FF'+FFFFFFFFFFF'+FFFFFF'FFFF+FFFFFFFFFFFFFFFFFFFFFFFFFFFF_%**%**********%*****%*******************************]#.w.#w..........#w.....#....w..........................._%//%//////////%/////%///////////////////////////////]#-v-#v----------#v-----#----v---------------------------'@9Z+@@'+@@@@@@@@@@@'+@@@@@@'@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@3I>>N%7%7777777777%77777%7777777777777777777777777777777777777777777-?-??????????-?????-???????????????????????????????????????????(;.((((((((((;.(((((;(((((((((((.(((((.(((((((((((((((((((((((((((((    c           	        | dz  t           z  }t          |dz  dddddd           t          t           |           }|d	         }d
}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )Nr#   r$   r+   r&   r,   r-   T)r'   r(   r.   r/   r)   rO   r8   r9   r;   r<   r?   r@   )r   r    r
   rc   rd   re   rf   rg   )r!   rk   rl   rm   rn   ro   rp   rq   s           r   0test_summarize_v76_lifecycle_warns_on_live_flagsrx   [   s   m#i/DD(($"+ +    &i::G-.3!3.!3333333333.!33333.3333!33333333333333333333333333333rv   c           	        | dz  t           z  }t          |dz  dddg d           t          |dz  ddd	d
gd           t          |dz  ddddgd           t          |dz  dddddd           t          |dz  dddddd           t          |dz  dddddd           t          t           |           }|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d"         }d#}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d         }d$}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d%         }d&}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d'         }d$d$d(}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d)         }d&}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d*         }d+}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d,         }d-}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}|d.         }d$d$d/}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }d d!|iz  }t          t          j        |                    d x}x}}t          |          }d0}||v }|st          j        d1|fd2||f          t          j        |          d3t          j
                    v st          j        |          rt          j        |          nd3d4z  }	d5d6|	iz  }
t          t          j        |
                    d x}}d7}||v }|st          j        d1|fd2||f          t          j        |          d3t          j
                    v st          j        |          rt          j        |          nd3d4z  }	d5d6|	iz  }
t          t          j        |
                    d x}}d8}||v }|st          j        d1|fd2||f          t          j        |          d3t          j
                    v st          j        |          rt          j        |          nd3d4z  }	d5d6|	iz  }
t          t          j        |
                    d x}}d S )9Nr#   zsignal_journal.jsonlz2026-06-29T10:00:00+00:00r&   paper_opened_lifecycle)	timestampr(   final_decisionblock_reasonz2026-06-29T11:00:00+00:00r2   z)blocked:anti_chase_overextended_no_retest!anti_chase_overextended_no_retestz2026-06-29T11:05:00+00:00r5   z$blocked:anti_chase_no_retest_reclaimanti_chase_no_retest_reclaimr$   z2026-06-29T10:30:00+00:00r+   r,   z0.50)r{   r'   r(   r.   r/   z2026-06-29T11:30:00+00:00r3   z-0.20z2026-06-29T11:45:00+00:00trailing_stopz0.40status
collectingr9   r;   r<   r?   r@   signals_seen   r8   anti_chase_blocked_totalrB   anti_chase_blockers)r~   r   post_filter_exitspost_filter_net_pnl_usdz0.20post_filter_winrate_pctr\   post_filter_exit_reasons)r3   r   zv76 Anti-Chase Impact:rP   rR   rS   rT   rV   rW   zblocked_total=2ra   )r   r    r	   rc   rd   re   rf   rg   r   rh   ri   rj   )r!   rk   impactrm   rn   ro   rp   rq   rS   rr   rs   s              r   Htest_summarize_v76_anti_chase_impact_counts_blocks_and_post_filter_exitsr   j   s	   m#i/DD))02	, ,    D))0E<=	, ,    D))0@78	, ,    D((0$+ +    D((0"+ +    D((0&+ +    -YAAF(+|+|++++++++++|+++++++++|+++++++++++++++++++++++++++.!&Q&!Q&&&&&&&&&&!Q&&&&&!&&&&Q&&&&&&&&&&&&&&&&&&&&&&&&&&&*+0q0+q0000000000+q00000+0000q000000000000000000000000000,-22-2222222222-22222-2222222222222222222222222222222'(wRSuv,w,ww(,wwwwwwwwwww(,wwwwww(wwww,wwwwwwwwwwwwwwwwwwwwwwwwwwww%&+!+&!++++++++++&!+++++&++++!++++++++++++++++++++++++++++,66,6666666666,66666,6666666666666666666666666666666+,77,7777777777,77777,7777777777777777777777777777777,-UqST1U1UU-1UUUUUUUUUUU-1UUUUUU-UUUU1UUUUUUUUUUUUUUUUUUUUUUUUUUUU'//D#+#t++++++++++#t+++++#+++++++++++t+++++t+++++++++++++++++++++++++++$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;$;$;$$rv   c                    ddddddddddd	dd
di} t          |           }d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}d S )N
confluencerisk_onrB   z82.50paper_candidate)final_scorerecommendationz77.00z42.00block_new_entry)r&   r2   WLD)market_regimeeligible_countscoreszMarket Confluence Light:rP   rR   rS   rT   rV   rW   zregime=risk_onz
eligible=2r&   ra   )	r   rc   rd   re   rh   ri   rj   rf   rg   )payloadrS   rm   ro   rr   rs   s         r   :test_format_market_confluence_line_renders_latest_snapshotr      s.   &'.BSTT'.BSTT'.BSTT 
 

G )11D%-%----------%-----%-------------------------------------------#t##########t################t#####t###########################<4<4<445D=5D5DD;$;$;$$rv   )r   r   r   r   r   r   )r!   r   r   r   )
__future__r   builtinsrh   _pytest.assertion.rewrite	assertionrewriterc   r   pathlibr   "src.tools.hyperliquid_daily_reportr   r   r   r   r	   r
   r   src.tools.v76_paper_runtimer   r    ru   rx   r   r    rv   r   <module>r      s)   " " " " " "                                      2 1 1 1 1 1) ) ) )@) @) @) @)F4 4 4 48 8 8 8v    rv   