
    TDj<                    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 )Nz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'   r8   r4   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_runtimerQ   -   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financerJ   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_outputr9   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py2re   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(   rD   c                6    g | ]}t          j        |          S r$   rw   rz   s     r&   r}   zZtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<listcomp>L   "    nnnT
4  nnnr(   rF   eventdesk_decisionshadow_openrB   r   	positions)in)z%(py1)s in %(py4)s)rQ   rL   rM   run_once
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationexists@py_builtinslocals_should_repr_global_namerx   ry   	read_text
splitlines)rN   rO   rP   ro   result@py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert1finance_payloadrh   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                
   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}||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 )#NrT   c                     t                      S rV   rW   rX   s    r&   rZ   zCtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<lambda>W   r[   r(   rS   rJ   r\   r]   ri   r.   r`   rb   rc   rf   rg   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'   rX   s    r&   rZ   zCtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<lambda>_   s6    (%Dt$TY*Z*Z*Z)[  hC  D  D  D r(   rj   shadow_performanceclosed_hypotheseslossesc                6    g | ]}t          j        |          S r$   rw   rz   s     r&   r}   zEtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<listcomp>f   r   r(   rF   r   shadow_closereasonshadow_stop_hitr#   Frl   rn   rB   r   r   )not in)z%(py1)s not in %(py4)s)rQ   rL   rM   r   r   r   r   r   r   r   r   rx   ry   )rN   rO   rP   ro   firstr   r   r   r   r   secondr   closer   s                 r&   1test_shadow_runner_closes_shadow_position_on_stopr   U   s?    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>+^+>^++++++++++>^+++++>++++^+++++++++++++++++++++++++++?///?///////////?//////?////////////////////////////////()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 rV   r$   )_secondss    r&   rZ   zTtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.<lambda>q   s    t r(   c                      t          d          )NzNo route to host)ConnectionErrorrX   s    r&   brokenzRtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.brokens   s    0111r(   rT   )z--coinsr   z--iterations1z--jsonz--no-export-financer   r`   )zJ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.main
}(%(py4)s)
} == %(py9)srM   )rp   rq   re   rg   py9zassert %(py11)spy11r9   degradedrb   rc   rf   rg   resultsentries_blockedTrl   rn   rk   r#   Fc                6    g | ]}t          j        |          S r$   rw   rz   s     r&   r}   zVtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.<listcomp>~   s"    kkk4djkkkr(   rH   r   r   shadow_tick_degraded)rQ   rL   rM   timemainr   r   r   r   r   r   r   r   rx   ry   
readouterroutr   r   )rN   rO   capsysrP   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   o   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   rx   	src.toolsr   rM   r'   r=   rQ   r   r   r   r$   r(   r&   <module>r      s    " " " " " "               9 9 9 9 9 9   "   (	 	 	' ' '8+ + +49 9 9 9 9r(   