
    0 Pj                    h    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ZddZd Zd Zd Zd ZdS )    )annotationsN)trader_desk_shadow_runnerBTCwatch_shadowlong10010198104c                8    | ||dd||dd||dddg |dk    d	d	d
S )N78.00trend_retest_continuationretest_limit_zone)lowhighstyle108test)tp1tp2
managementtiny_live_candidateF)coinaction	directionscoresetup
entry_zone	stop_losstake_profitblockersrequires_preflightlive_order_allowedmainnet_signed_action )r   r   r   r   r   stopr   s          Z/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_trader_desk_shadow_runner.py_planr(      sP    ,!4:MNN"5GG$(==#!&      2026-06-30T00:00:00+00:00c                T    | | nt                      g} ddd|ddddddd	| d
d
dd
d
dS )Nokr   ztrader_desk.v1"read_only_professional_trader_deskrisk_onr      &keep_shadow_watch_and_collect_evidence)tiny_live_candidatesr   blocked	next_stepF)schema_version	timestampmodemarket_regimesummaryplansr#   r$   )statussourcereportr#   r$   )r(   r9   r5   s     r'   _payloadr>      sm    &EEUWWIE."8&011QR  bJ  K  K"'%*	
 	
 $!&  r)   c                   |dz  }|                      t          d|           |                      t          d|dz             |                      t          d|dz             |                      t          d|dz             |                      t          d	|d
z             |                      t          d|dz             |                      t          d|dz             |S )Ntrader_desk_shadowRUNTIME_DIR
STATE_PATH
state.json	DECISIONSdecision_journal.jsonlOUTCOMESoutcome_journal.jsonlHEALTHruntime_health.jsonlLATEST_REPORTtrader_desk_latest.jsonPID_PATHz
runner.pid)setattrrunner)monkeypatchtmp_pathruntime_dirs      r'   _patch_runtimerR   -   s    11K{;;;kL.HIII[;S-STTT
K:Q,QRRR+8N*NOOO?X1XYYY
K,,FGGGr)   c                   t          | |          }|dz  dz  }|                     t          dd            t          j        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}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|d         }d}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|d         }d}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|j	        }
 |
            }|sddt          j                    v st	          j        |          rt	          j        |          ndt	          j        |
          t	          j        |          dz  }t          t	          j        |                    d x}
}t          j        |                                          }|d         d         }d}||u }|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}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}d! |d"z                                                                  D             }d# |d$z                                                                  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}||u }|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'}||k    }|slt	          j        d	|fd
||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}t          j        |d(z                                            }d)}|d*         }||v }|slt	          j        d+|fd,||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}|d         }d}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}d S )-NfinancerK   build_reportc                     t                      S Nr>   _kwargss    r'   <lambda>zXtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<lambda><   
    (** r)   r   coinsfinance_outputr:   r,   ==z%(py1)s == %(py4)spy1py4assert %(py6)spy6	decisionsr/   openedclosedr   
paper_onlyTisz%(py1)s is %(py4)sr#   Fr$   zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}finance_target)py0py2rf   safety_boundaryexecution_allowedtrade_intentsdashboard_executes_ordersc                6    g | ]}t          j        |          S r%   jsonloads.0lines     r'   
<listcomp>zZtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<listcomp>K   s"    pppdD!!pppr)   rE   c                6    g | ]}t          j        |          S r%   rx   r{   s     r'   r~   zZtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<listcomp>L   "    nnnT
4  nnnr)   rG   eventdesk_decisionshadow_openrC   r   	positions)in)z%(py1)s in %(py4)s)rR   rM   rN   run_once
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationexists@py_builtinslocals_should_repr_global_namery   rz   	read_text
splitlines)rO   rP   rQ   rp   result@py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert1finance_payloadri   outcomesstates                  r'   Ftest_shadow_runner_journals_decisions_opens_shadow_and_exports_financer   9   s
    h77K	),EEN0L0LMMM_8NKKKF(#t#t##########t#########t###########################+#!#!##########!#########!###########################( q q          q         q                           ( q q          q         q                           ,'4'4''''''''''4'''''''''4'''''''''''''''''''''''''''&'050'50000000000'500000'00005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)*3e3*e3333333333*e33333*3333e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 "  """"""""""""""">""""">"""""" """"""""""""""""""""""""j!9!9!;!;<<O,-.ABKeKBeKKKKKKKKKKBeKKKKKBKKKKeKKKKKKKKKKKKKKKKKKKKKKKKKKK?+A./JKTuTKuTTTTTTTTTTKuTTTTTKTTTTuTTTTTTTTTTTTTTTTTTTTTTTTTTTpp{=U/U.`.`.b.b.m.m.o.opppInnk<S.S-^-^-`-`-k-k-m-mnnnHQ< 3O3 O3333333333 O33333 3333O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Q<,-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A;w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000000000000000000000Jl2==??@@E&E+&&5&&&&&&&&&&&5&&&&&&5&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$&$&&&&&&&&&&$&&&&&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&r)   c                2   t          | |          }|                     t          dd            |dz  dz  }t          j        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          dd            t          j        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}||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}||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z  	                                
                                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!}||u }|slt	          j        d"|fd#||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}t          j        |d$z  	                                          }d%}|d&         }||v}|slt	          j        d'|fd(||f          t	          j        |          t	          j        |          dz  }dd|iz  }	t          t	          j        |	                    d x}x}}d S ))NrU   c                     t                      S rW   rX   rY   s    r'   r[   zCtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<lambda>W   r\   r)   rT   rK   r]   r^   rj   r/   ra   rc   rd   rg   rh   c                 H    t          t          dddd          gd          S )N97r
   r   )r   r   r&   r   z2026-06-30T00:05:00+00:00r=   )r>   r(   rY   s    r'   r[   zCtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<lambda>_   s6    (%Dt$TY*Z*Z*Z)[  hC  D  D  D r)   rk   shadow_performanceclosed_hypotheseslossesc                6    g | ]}t          j        |          S r%   rx   r{   s     r'   r~   zEtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<listcomp>f   r   r)   rG   r   shadow_closereasonshadow_stop_hitr   r   r   r   source_actionr   r$   Frm   ro   rC   r   r   )not in)z%(py1)s not in %(py4)s)rR   rM   rN   r   r   r   r   r   r   r   r   ry   rz   )rO   rP   rQ   rp   firstr   r   r   r   r   secondr   closer   s                 r'   1test_shadow_runner_closes_shadow_position_on_stopr   U   s6    h77K0L0LMMM	),EENO(>JJJE?a?a?a?a 	D  	D  
 _8NKKKF( q q          q         q                           &'(;<AA<AAAAAAAAAA<AAAAA<AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&'16Q61Q66666666661Q6666616666Q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nnk<S.S-^-^-`-`-k-k-m-mnnnHRLE>+^+>^++++++++++>^+++++>++++^+++++++++++++++++++++++++++?///?///////////?//////?////////////////////////////////>888>88888888888>888888>88888888888888888888888888888888>$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()2U2)U2222222222)U22222)2222U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Jl2==??@@E*k**5***********5******5**********************************r)   c                   t          | |          }|                     t          j        dd            d }|                     t          d|           t          j        }g d} ||          }d}||k    }	|	st          j        d|	fd||f          d	t          j                    v st          j	        t                    rt          j
        t                    nd	t          j
        |          t          j
        |          t          j
        |          t          j
        |          d
z  }
dd|
iz  }t          t          j        |                    d x}x}x}x}	}t          j        |                                j                  }|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}||u }|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}||u }|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}||u }|slt          j        d|fd||f          t          j
        |          t          j
        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d |dz                                                                  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 S ) Nsleepc                    d S rW   r%   )_secondss    r'   r[   zTtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.<lambda>t   s    t r)   c                      t          d          )NzNo route to host)ConnectionErrorrY   s    r'   brokenzRtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.brokenv   s    0111r)   rU   )z--coinsr   z--iterations1z--jsonz--no-export-financer   ra   )zJ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.main
}(%(py4)s)
} == %(py9)srN   )rq   rr   rf   rh   py9zassert %(py11)spy11r:   degradedrc   rd   rg   rh   resultsentries_blockedTrm   ro   rl   r$   Fc                6    g | ]}t          j        |          S r%   rx   r{   s     r'   r~   zVtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.<listcomp>   s"    kkk4djkkkr)   rI   r   r   shadow_tick_degraded)rR   rM   rN   timemainr   r   r   r   r   r   r   r   ry   rz   
readouterroutr   r   )rO   rP   capsysrQ   r   r   r   @py_assert5@py_assert8@py_assert7@py_format10@py_format12payloadr   r   r   r   healths                     r'   Btest_shadow_runner_main_records_degraded_without_live_side_effectsr   r   sK    h77KW.C.CDDD2 2 2 777;e___e;;_``edee`deeeeeeeeeee`deeeeeeeeeeeee6eeeee6eeeeee;eeee_eeee`eeeedeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeej**,,011G8*
*
**********
*********
***************************9a !23;t;3t;;;;;;;;;;3t;;;;;3;;;;t;;;;;;;;;;;;;;;;;;;;;;;;;;;9a .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9a !89BUB9UBBBBBBBBBB9UBBBBB9BBBBUBBBBBBBBBBBBBBBBBBBBBBBBBBBkkK:P,P+[+[+]+]+h+h+j+jkkkF":g8"88"88888888888"8888888888"888888888888888888888888888888r)   )r   r   r   r   r	   r
   r   )Nr*   )
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   ry   	src.toolsr   rN   r(   r>   rR   r   r   r   r%   r)   r'   <module>r      s    " " " " " "               9 9 9 9 9 9   "   (	 	 	' ' '8+ + +:9 9 9 9 9r)   