
    j
                     6    d dl mZ d dlmZ d Zd Zd Zd ZdS )    )	BotConfig)Candlec                      ddl m} m} t          dddddi          } ||d	          d
k    sJ  | |d	          dk    sJ  ||d          dk    sJ  | |d          dk    sJ d S )Nr   )effective_required_drop_pctroe_crash_required_drop_pct      @      .@   HYPE   )flash_crash_trigger_pctcrash_roe_trigger_pctdefault_leverageleverage_by_coinBTCg      @      @)	near_missr   r   r   )r   r   cfgs      'tests/test_near_miss_crash_frequency.pyFtest_leverage_normalized_threshold_gets_stricter_for_low_leverage_coinr      s    RRRRRRRR
Ct^_sy{|r}
~
~
~C&&sE22c9999&&sE22c9999&&sF33s::::&&sF33s::::::    c                      ddl m}  t          dddddid	          }d
dg} | d|dddt                      i d|	  	        }|j        du sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   )should_enter_flash_crashr   r	   r
   r   r      )r   r   r   r   min_volume_24hg      ?      Y@)       @W@r   
   r   g      $@)	coinhistorycurrent_price
volume_24hbaseline_priceopen_positions	cooldownsnow_tsr   Fno_flash_crashr   )strategyr   r   setenterreasonleveragerequired_drop_pct)r   r   r"   decisions       r   <test_flash_crash_entry_uses_coin_specific_leverage_thresholdr1      s    111111
Ct^_sy{|r}  OP  Q  Q  QC[)G''uu
 
 
H >U""""?.....!!!!%,,,,,,r   c            	          ddl m}  t          ddd          } | ddd	d
gdd|d          }|J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   )build_near_miss_eventr   r	   r
   r   r   r   testr   r   )r         X@r6   r)   r   )strategy_idr!   r"   r#   r-   r   r(   g      g      4g      ?)r   r3   r   drop_pctroe_drop_pctr/   distance_pct)r3   r   events      r   )test_near_miss_event_records_roe_distancer<   (   s    //////
Ct^_
`
`
`C!!f5<YdJeuy  CS  Y\  eh  i  i  iE>T!!!!&&&&"c))))$$$$$$r   c                  L   ddl m}  t          ddd          }t          ddddd          t          d	ddd
d
          t          dd
dd
d          t          ddddd          t          ddddd          g} | d||dd          }|j        dk    sJ |j        dk    sJ d S )Nr   )count_crash_eventsr   r	   r
   r4   d   )tsopenhighlowclosei,  _   iX  `   g     W@i  e   i  r      )r   window_minutesinterval_minutes   g      )crash_frequencyr>   r   r   eventsworst_drop_pct)r>   r   candlesresults       r   +test_crash_frequency_counts_distinct_eventsrQ   5   s    222222
Ct^_
`
`
`C!#CS<<<#Ccr<<<#BRRt<<<#Ds3???$Ss"===G  wC]^___F=A D((((((r   N)configr   historical_replayr   r   r1   r<   rQ    r   r   <module>rU      so          $ $ $ $ $ $; ; ;- - -0
% 
% 
%) ) ) ) )r   