
    BMj	                     r    d dl Zd dlmc mZ d dlZd dlZ	d dl
mZmZmZ d dlmZmZ d	dZd Zd Zd Zd Zy)
    N)SlowRouterConfigregime_head_scoresslow_regime_states)_parse_chart_timefit_residual_headsc           
          t        j                  t        j                  dd|       t        j                  |       t        j
                  |       t        j                  dd|       d      S )Ngg?g      Y@g     @`@)mvrv_zscore_cont	rvol_normfed_net_liq_signclose)pd	DataFramenplinspacezerosones)ns    L/Users/jameslopez/projects/TradingBot25/tests/test_mlp_slow_regime_router.py_framer      sN    <<KKc15XXa[GGAJUE1-	      c                     t        ddddd      t               } t        |       }| j                         }d|j                  dd df<   t
        j                  j                  |d d t        |      d d        t        j                  t        j                  |      d	k7        dz   }fd
t        ||dd        D        }t        |      }|sddt        j                         v st        j                  t              rt        j                   t              ndt        j                   |      t        j                   |      dz  }t#        t        j$                  |            d x}}y )N   皙?皙?   )smoothing_spantrend_windowenter_thresholdexit_thresholdmin_dwell_barsg         r	   r   c              3   H   K   | ]  \  }}||z
  j                   k\    y w)N)r    ).0previouscurrentconfigs      r   	<genexpr>zFtest_slow_router_is_causal_and_honors_minimum_dwell.<locals>.<genexpr>   s)     nTm?Pxw!V%:%::Tms   "z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)py0py2py4)r   r   r   copylocr   testingassert_array_equalflatnonzerodiffzipr(   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanation)framestateschanged_futurechanges@py_assert1@py_assert3@py_format5r&   s          @r   3test_slow_router_is_causal_and_honors_minimum_dwellrA      s   QQPS-1!EFHEv.FZZ\N15Nqr--.JJ!!&!*.@QW.XY[Z[.\]nnRWWV_12Q6GnTWX_ahijikalTmnn3nnnnnnnnn3nnn3nnnnnnnnnnnnnnr   c                     t        j                  ddgddgddgg      } t        j                  ddgg      t        j                  dg      f}t        j                  d      t        j                  d	      f}t        j                  g d
      }t        | |||      }t        j                  | |d   j
                  z  |d   z         j                         dz  }t         j                  j                  ||       y )Nr   g333333ӿg?g?gɿgffffff?r   )r      r   r   r   r   r   g     @@)	r   arrayr   r   tanhTravelr.   assert_allclose)trunk	base_headheadsr;   scoresexpecteds         r   ?test_tiny_heads_reduce_to_shared_output_when_residuals_are_zerorP   "   s    HHsDkC:c{;<EC;-("((D6*:;IXXfrxx{+EXXj!Fvy%@Fwwuy|~~-	!<=CCENHJJvx0r   c                     t         j                  j                  d      } | j                  d      }t        j                  g dd      }t        j
                  |d d df   dz        }t        j                  dt        	      }t        j                  t        j                  d
dd            }t        j                  d      t        j                  d      f}t        ||||||d|j                  d   d	      \  }}|d   }	|	j                  }
d}|
|k(  }|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}}|d   }	|	j                  }
d}|
|k(  }|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}}|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}
}y )!N   )0   r!   )sizerD      r   r   rS   )dtypez
2025-01-016h)periodsfreq)r   r!   r   r   $   rC   )seed	val_startepochs)r   r!   ==)z-%(py3)s
{%(py3)s = %(py1)s.shape
} == %(py6)s)py1py3py6zassert %(py8)spy8)r   
train_bars)z%(py1)s == %(py4)s)r`   r+   zassert %(py6)srb   val_bars   )r   randomdefault_rngnormalrepeatrG   r   boolr   Series
date_ranger   r   ilocshaper5   _call_reprcomparer7   r8   r9   )rngrK   r;   yvalidtimesrL   rM   metadata@py_assert0@py_assert2@py_assert5@py_assert4@py_format7@py_format9r?   r@   s                    r   Htest_residual_head_fit_keeps_the_shared_trunk_out_of_the_trainable_shaper|   .   s+   
))


"CJJGJ$EYYz2&F
adc!"AGGBd#EIIbmmL"4HIE&!288A;/I(vy!UE**R.OE8
 8#8>>#V#>V####>V###8###>###V#######8!8>>!T!>T!!!!>T!!!8!!!>!!!T!!!!!!!L!'R'!R''''!R'''!'''R'''''''J%2%2%%%%2%%%%%%2%%%%%%%r   c                  p   t        t        j                  dg            } | j                  d   }t        j                  }d} ||      }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}x}}y )
NiMYr   z2017-10-15 12:00:00r^   )zO%(py1)s == %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.Timestamp
}(%(py7)s)
}r   )r`   ra   py5py7py9zassert %(py11)spy11)r   r   rl   rn   	Timestampr5   rp   r7   r3   r4   r6   r8   r9   )parsedrv   ry   @py_assert6@py_assert8rw   @py_format10@py_format12s           r   :test_experiment_accepts_tradingview_unix_second_timestampsr   B   s    ryy*67F;;q>@R\\@*?@\*?@@>@@@@@>@@@@>@@@@@@R@@@R@@@\@@@*?@@@@@@@@@@@@r   )rf   )builtinsr3   _pytest.assertion.rewrite	assertionrewriter5   numpyr   pandasr   !strategies.mlp_slow_regime_routerr   r   r   )tools.run_mlp_slow_regime_head_experimentr   r   r   rA   rP   r|   r    r   r   <module>r      s;         
 \
o	1&(Ar   