+
    _5j
  c                   ^    ^ RI t^ RIHu Ht ^ RIHtHtH	t	 ^ RI
Ht R tR tR tR tR tR# )	    N)aggregate_fold_scorerobust_objective_scorethreshold_fragility_count)resolve_worker_countc                     . ROp Rp\        W4      pRpRqCV,          qRV8H  qf'       EgI   \        P                  ! RV3RW%34      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P
                  ! V 4      '       d   \        P                  ! V 4      MRR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;rERp\        W4      pRq2V8H  qf'       Eg3   \        P                  ! RV3RW#34      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P
                  ! V 4      '       d   \        P                  ! V 4      MRR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;p;p;rcRp\        W4      pRpRpRqTV,          qV,          qV8H  qf'       Eg_   \        P                  ! RV3RW,34      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P
                  ! V 4      '       d   \        P                  ! V 4      MRR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;p;rR# )      ?              @meang      @py0r   py1calmarspy3py5py8py10assert %(py13)spy13Nminzassert %(py10)smean_mingffffff?py12zassert %(py16)spy16)r   r   r	   ==)zF%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == (%(py8)s / %(py10)s))z9%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == %(py8)s)zS%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == (%(py8)s * (%(py10)s / %(py12)s)))	r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r   @py_assert2@py_assert4@py_assert7@py_assert9@py_assert11@py_assert6@py_format12@py_format14@py_format9@py_format11@py_assert13@py_assert14@py_format15@py_format17s                  ?/Users/jameslopez/projects/TradingBot25/tests/test_train_mlp.pytest_aggregate_fold_score_modesr1   	   s[   G)/=0=C=#=#I=I=====0===========================0===C===#=========).6/6363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6366666666)3I4IIsISISyIy8II8IIIIII4IIIIIIIIIIIIIIIIIIIIIIIIIII4IIIIIIsIIISIIIIIIIII    c                     . ROp . ROpRp\        WV4      p^qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P
                  ! V 4      '       d   \        P                  ! V 4      MRRR\        P                  ! 4       9   g   \        P
                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;rTRp\        WV4      p^qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRRR\        P                  ! 4       9   g   \        P
                  ! V 4      '       d   \        P                  ! V 4      MRRR\        P                  ! 4       9   g   \        P
                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;rTR# )r   g?r   r   r   scorespy2
thresholdspy4py6py9zassert %(py11)spy11Ng)\(?)g      {Gzg{Gz?g?       @)r   r         $@r   )zB%(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py2)s, %(py4)s)
} == %(py9)s)	r   r   r   r   r   r   r   r    r!   )r4   r6   @py_assert3@py_assert5@py_assert8r$   @py_format10r(   s           r0   5test_threshold_fragility_count_uses_nearest_thresholdrB      s   *F!J9=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CVCCCCVCCCCCCCZCCCCZCCCCCC>CCC!CCCCCCCC9=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CVCCCCVCCCCCCCZCCCCZCCCCCC>CCC!CCCCCCCCr2   c            	      z   R R.p R^RRRRRR /R^RRRR RR/.pR^RRRRRR/R^RRRRRR/.p\        W. RO. RO^
4      w  r4\        W. RO. RO^
4      w  rVWS8  qw'       g   \        P                  ! RV3RWS34      RR	\        P                  ! 4       9   g   \        P
                  ! V4      '       d   \        P                  ! V4      MR	R
R\        P                  ! 4       9   g   \        P
                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p	\        \        P                  ! V	4      4      hRpVR,          p
RqV8H  q'       gy   \        P                  ! R V3R!W34      R\        P                  ! V
4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p
;rVR,          p
R qV8H  q'       gy   \        P                  ! R V3R!W34      R\        P                  ! V
4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p
;rVR,          qR,          qV8  q'       gy   \        P                  ! R"V3R#W34      R\        P                  ! V
4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p
;rVR,          qR,          qV8  q'       gy   \        P                  ! R"V3R#W34      R\        P                  ! V
4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p
;rVR,          qR,          qV8  q'       gy   \        P                  ! R"V3R#W34      R\        P                  ! V
4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p
;rR# )$r         ?zTotal TradeszMax Drawdown %zP&L/DD Ratior<   zCalmar Ratior   r   
weak_scorer5   clean_scorezassert %(py4)sr7   Npnl_dd_penaltyr   zassert %(py6)sr8   drawdown_penaltytrade_penaltyfragility_penaltyg      >g     Ag     Qgٿg      N)r=   g      4@g      >@)r   r   r<   r   )r;   rD   gGz?)<)z%(py0)s < %(py2)sr   )z%(py1)s == %(py4)s)>)z%(py1)s > %(py4)s)	r   r   r   r   r   r   r   r    r!   )r   clean_metricsweak_metricsrF   clean_penaltiesrE   weak_penalties@py_assert1@py_format3@py_format5@py_assert0r>   r"   @py_format7s                 r0   Dtest_robust_objective_penalizes_drawdown_pnl_dd_trades_and_fragilityrV      s   CjG	-unc>[^_	-unc>[^_M
 
,e^S.Z^_	,e^S.Z]^L
 $: 24H"$ K "813G"J #####:######:####:###################+,3333333,333,33333333333*+2s2s22222+222+222s22222222,-S@R0SS0SSSSSS-SSS-SSS0SSSSSSSSS/*M_-MM-MMMMMM*MMM*MMM-MMMMMMMMM-.UAT1UU1UUUUUU.UUU.UUU1UUUUUUUUUr2   c                  
   ^ p ^dpRp^p\        WW#R7      p^qTV8H  qf'       Eg'   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;p;re^ p ^pRp^p\        WW#R7      p^qTV8H  qf'       Eg'   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;p;re^ p ^dpRp^p\        WW#R7      p^qTV8H  qf'       Eg'   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;p;reR# )r   rD   )workload_sizeworker_fraction	cpu_countr   r   r5   r7   r8   r   r   r   zassert %(py15)spy15Ng      ?r   )zv%(py10)s
{%(py10)s = %(py0)s(%(py2)s, workload_size=%(py4)s, worker_fraction=%(py6)s, cpu_count=%(py8)s)
} == %(py13)s	r   r   r   r   r   r   r   r    r!   )	rQ   r>   r?   r$   r%   @py_assert12r&   r)   @py_format16s	            r0   =test_resolve_worker_count_auto_uses_fraction_and_workload_capr_   3   sH    !]]c]UW]cX]\]]\]]]]]]X]]]]]]]]]]]]]]]]]]]c]]]UW]]]X]]]\]]]]]]]]]] ![[C[SU[CV[Z[[Z[[[[[[V[[[[[[[[[[[[[[[[[[[C[[[SU[[[V[[[Z[[[[[[[[[[ !^^d^VX^dY^]^^]^^^^^^Y^^^^^^^^^^^^^^^^^^^d^^^VX^^^Y^^^]^^^^^^^^^^r2   c                  n   ^p ^dp^p\        WVR7      p^qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;rT^p ^p^p\        WVR7      p^qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;rT^p ^dp^p\        WVR7      p^qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P
                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;rTR# )   )rX   rZ   r   r   r5   r7   r8   r   r:   r   r   Nr   )z[%(py8)s
{%(py8)s = %(py0)s(%(py2)s, workload_size=%(py4)s, cpu_count=%(py6)s)
} == %(py11)sr\   )rQ   r>   r?   r$   @py_assert10r%   r(   r)   s           r0   Dtest_resolve_worker_count_manual_overrides_auto_and_caps_to_workloadrc   9   s	    !HHHCHqHqHHHHHCHHHHHHHHHHHHHHHHHHHHHHCHHHqHHHHHHHHH !FFbFbAFQFQFFFFFAFFFFFFFFFFFFFFFFFFFbFFFAFFFQFFFFFFFFF !HHHCHqHqHHHHHCHHHHHHHHHHHHHHHHHHHHHHCHHHqHHHHHHHHHr2   )builtinsr   _pytest.assertion.rewrite	assertionrewriter   tools.train_mlpr   r   r   tools.worker_utilsr   r1   rB   rV   r_   rc    r2   r0   <module>rk      s7        
 4JDV4_Ir2   