
    GCj                     d    d dl Zd dlmc mZ d dlmZ d dlm	Z	m
Z
 d
dZd
dZd
dZd
dZd
d	ZdS )    N)effective_required_drop_pct)load_strategy_presetspreset_to_configreturnc                     t                      } | d         }|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}}|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}}|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}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j	                    v st          j
        |          rt          j        |          ndt          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}d S )Ncandidate_v63_loose_fast_decayflash_crash_trigger_pctg      @==z%(py1)s == %(py4)spy1py4assert %(py6)spy6dead_fish_time_limit_mins   v_shape_trail_dist_pct      ?zsweep-winnerinz,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.tags
}presetr   py3py5assert %(py7)spy7)r   
parameters
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationtags@py_builtinslocals_should_repr_global_name)
presetsr   @py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert4@py_format6@py_format8s
             ]/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_strategy_registry_candidates.py-test_candidate_v63_sweep_winner_is_registeredr3      s   #%%G56F67>3>73>>>>>>>>>>73>>>>>7>>>>3>>>>>>>>>>>>>>>>>>>>>>>>>>>89?R?9R??????????9R?????9????R???????????????????????????56=#=6#==========6#=====6====#===========================(V[(>[((((((((((>[(((((>(((((((((((V(((((V(((((([(((((((((((((((((((((((((((((    c            	      .
   t                      } | d         }| d         }||fD ]}d}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd	|iz  }t          t          j	        |                    d x}x}}d
}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd	|iz  }t          t          j	        |                    d x}x}}|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}}	|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}|j
        d         }||k    }d}||k    }	|r|	st          j        d||	fd|||f          t          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}x}	x}}|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}}	|j
        d         }|j
        d         }	||	k    }|slt          j        d|fd ||	f          t          j        |          t          j        |	          dz  }
dd|
iz  }t          t          j	        |                    d x}x}}	|j
        d!         }|j
        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%candidate_v64_squeeze_survival_strict#candidate_v64_squeeze_survival_widezpre-handover-lessonsr   r   r   r   r   r   
paper-onlyr      <=z%(py1)s <= %(py4)sr   r   r   max_hard_stop_pct      @g?break_even_activation_pct      ?)r;   r;   )z%(py1)s <= %(py5)sz%(py5)s <= %(py7)s)r   r   r   zassert %(py9)spy9trade_size_usdg      I@r	   )>=)z%(py1)s >= %(py4)sr   r   r%   r    r!   r"   r&   r'   r(   r#   r$   r   )r)   strictwider   r*   r/   r,   r0   r1   r+   r-   r.   @py_assert6@py_format10s                 r2   5test_candidate_v64_uses_pre_handover_survival_lessonsrI      sU   #%%G<=F89D4. ; ;%44%4444444444%44444%4444444444444444444444444444444444444444444444444*v{*|{**********|{*****|***********v*****v******{*************************** !<=CC=CCCCCCCCCC=CCCCC=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC !45<<5<<<<<<<<<<5<<<<<5<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Lf'(CDLsDLLLDLLLLLLLLLLLLLsDLLLLLsLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL !12:d:2d::::::::::2d:::::2::::d::::::::::::::::::::::::::::67e4?Kd;ee7;eeeeeeeeeee7;eeeeee7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e56c$/Jb:cc6:ccccccccccc6:cccccc6cccc:ccccccccccccccccccccccccccccccr4   c                     t                      } | d         }| d         }||fD ]}d}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd	|iz  }t          t          j	        |                    d x}x}}d
}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd	|iz  }t          t          j	        |                    d x}x}}d}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd	|iz  }t          t          j	        |                    d x}x}}|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|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}}	|j
        d         }|j
        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)candidate_v65_signal_sampler_conservative'candidate_v65_signal_sampler_aggressiver8   r   r   r   r   r   r   research-samplernot-championrB         4@r:   r<   r   r   r   position_sizing_moderiskr
   r   wallet_equity_usdc     @@risk_per_trade_pctr   max_position_margin_pctg      $@max_total_trades   r   
   r=          @r?   gffffff?cooldown_minutes-   r	   r>         @)<)z%(py1)s < %(py4)srD   )r)   conservative
aggressiver   r*   r/   r,   r0   r1   r+   r-   r.   s               r2   4test_candidate_v65_signal_samplers_are_research_onlyr`   !   s   #%%GFGLBCJ, ; ;*v{*|{**********|{*****|***********v*****v******{***************************!0V[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0V00000V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,,~,,,,,,,,,,~,,,,,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, !12:d:2d::::::::::2d:::::2::::d::::::::::::::::::::::::::: !78BFB8FBBBBBBBBBB8FBBBBB8BBBBF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 !56?%?6%??????????6%?????6????%??????????????????????????? !56=#=6#==========6#=====6====#=========================== !:;CtC;tCCCCCCCCCC;tCCCCC;CCCCtCCCCCCCCCCCCCCCCCCCCCCCCCCC !34994999999999949999949999999999999999999999999999999 !<=CC=CCCCCCCCCC=CCCCC=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC !45<<5<<<<<<<<<<5<<<<<5<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< !<=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EEEEEEEEEEEEEEEEE !34::4::::::::::4:::::4::::::::::::::::::::::::::::::::"#<=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 !:;BsB;sBBBBBBBBBB;sBBBBB;BBBBs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 !12^\5LM]5^^25^^^^^^^^^^^25^^^^^^2^^^^5^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^r4   c                  	   t                      } t          | d                   }t          | d                   }d}t          ||          }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j
        |                    d x}x}x}}d}t          ||          }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j
        |                    d x}x}x}}d}t          ||          }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j
        |                    d x}x}x}}d}t          ||          }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j
        |                    d x}x}x}}d S )NrK   rL   WLDr>   r
   )z9%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == %(py8)sr   r^   )py0r   r   r   py8zassert %(py10)spy10HYPEr\   r_   )r   r   r   r    r!   r&   r'   r(   r"   r#   r$   )	r)   r^   r_   r,   r/   @py_assert7rG   @py_format9@py_format11s	            r2   Itest_candidate_v65_sampler_roe_normalization_preserves_sampler_thresholdsrj   :   s1   #%%G#G,W$XYYL!'*S"TUUJ5:B&|U;;BsB;sBBBBBBBBBB;s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BBB|BBBBB|BBBBBBUBBBB;BBBBs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BB5;C&|V<<CC<CCCCCCCCCC<CCCCCCCCCCCC&CCCCC&CCCCCCCCCCCCC|CCCCC|CCCCCCVCCCC<CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC38@&z599@S@9S@@@@@@@@@@9S@@@@@@@@@@@@&@@@@@&@@@@@@@@@@@@@z@@@@@z@@@@@@5@@@@9@@@@S@@@@@@@@@@@@@@@@@@@@@@@@@@@@@39A&z6::AcA:cAAAAAAAAAA:c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AzAAAAAzAAAAAA6AAAA:AAAAc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Ar4   c                     t                      } | d         }t          |          }d}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d	}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d
}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d}|j        }||v }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d}||k    }	|	st          j        d|	fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d }||k    }	|	st          j        d|	fd!||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d"}||k    }	|	st          j        d|	fd#||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}|j        }d$}||k    }	|	st          j        d|	fd%||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}	}d S )&N&candidate_v66_squeeze_breakout_samplerr8   r   r   r   r   r   r   rM   rN   zsqueeze-breakoutvolatility_squeeze_breakoutr
   )z7%(py2)s
{%(py2)s = %(py0)s.strategy_family
} == %(py5)scfg)rc   py2r   rQ   )z<%(py2)s
{%(py2)s = %(py0)s.position_sizing_mode
} == %(py5)srS   )z:%(py2)s
{%(py2)s = %(py0)s.wallet_equity_usdc
} == %(py5)sr@   )z:%(py2)s
{%(py2)s = %(py0)s.risk_per_trade_pct
} == %(py5)srO   )z?%(py2)s
{%(py2)s = %(py0)s.max_position_margin_pct
} == %(py5)sg      .@r:   )z6%(py2)s
{%(py2)s = %(py0)s.trade_size_usd
} <= %(py5)srW   )z8%(py2)s
{%(py2)s = %(py0)s.max_total_trades
} <= %(py5)sr\   )zB%(py2)s
{%(py2)s = %(py0)s.squeeze_max_band_width_pct
} == %(py5)sg333333?)z<%(py2)s
{%(py2)s = %(py0)s.squeeze_breakout_pct
} == %(py5)s   )zA%(py2)s
{%(py2)s = %(py0)s.dead_fish_time_limit_mins
} <= %(py5)srY   )z9%(py2)s
{%(py2)s = %(py0)s.max_hard_stop_pct
} <= %(py5)s)r   r   r%   r    r!   r"   r&   r'   r(   r#   r$   strategy_familyrP   rR   rT   rU   rB   rV   squeeze_max_band_width_pctsqueeze_breakout_pctr   r=   )
r)   r   rn   r*   r/   r,   r0   r1   @py_assert1r+   s
             r2   <test_candidate_v66_squeeze_breakout_sampler_is_research_onlyru   E   sT   #%%G=>F
6
"
"C&6;&<;&&&&&&&&&&<;&&&&&<&&&&&&&&&&&6&&&&&6&&&&&&;&&&&&&&&&&&&&&&&&&&&&&&&&&&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,(V[(>[((((((((((>[(((((>(((((((((((V(((((V(((((([(((((((((((((((((((((((((((,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,?"??"???????????"?????????????3?????3??????????"????????????????????????????#-v-#v----------#v------------3-----3------#----v---------------------------!*U*!U**********!U************3*****3******!****U***************************!)T)!T))))))))))!T))))))))))))3)))))3))))))!))))T)))))))))))))))))))))))))))&.$.&$..........&$............3.....3......&....$...........................%%%%%%%%%%%%%%%%%%%%%%%%3%%%%%3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$1$1$$$$$$$$$$1$$$$$$$$$$$$3$$$$$3$$$$$$$$$$1$$$$$$$$$$$$$$$$$$$$$$$$$$$)0S0)S0000000000)S0000000000003000003000000)0000S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#*s*#s**********#s************3*****3******#****s***************************(.B.(B..........(B............3.....3......(....B........................... 'C' C'''''''''' C''''''''''''3'''''3'''''' ''''C'''''''''''''''''''''''''''''r4   )r   N)builtinsr&   _pytest.assertion.rewrite	assertionrewriter    	near_missr   strategy_registryr   r   r3   rI   r`   rj   ru    r4   r2   <module>r}      s                  1 1 1 1 1 1 E E E E E E E E) ) ) )d d d d$_ _ _ _2B B B B( ( ( ( ( (r4   