
    _5j
                     \    d dl Zd dlmc mZ d dlmZmZm	Z	 d dl
mZ d Zd Zd Zd Zd Zy)	    N)aggregate_fold_scorerobust_objective_scorethreshold_fragility_count)resolve_worker_countc            
         g d} d}t        | |      }d}d}||z  }||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                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}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}d}d}||z  }||z  }||k(  }|s2t        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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}x}x}}y )N)      ?              @meang      @r
   ==)zF%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == (%(py8)s / %(py10)s)r   calmars)py0py1py3py5py8py10assert %(py13)spy13minr	   )z9%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == %(py8)s)r   r   r   r   r   zassert %(py10)sr   mean_mingffffff?)zS%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == (%(py8)s * (%(py10)s / %(py12)s)))r   r   r   r   r   r   py12zassert %(py16)spy16)	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_modesr2   	   sJ   G)/=0=C=#=C#I=0I====0I========================0===C===#========).6/636/36666/3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)3I4IIsISIsSyIy8II48IIIII48I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    c            	         g d} g d}d}t        | ||      }d}||k(  }|sKt        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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(  }|sKt        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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}}y )N)g      {Gzg{Gz?g?       @)r	   r         $@g?   r   )zB%(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py2)s, %(py4)s)
} == %(py9)sr   scores
thresholds)r   r   py2py4py6py9zassert %(py11)spy11g)\(?   )	r   r   r   r   r   r   r    r!   r"   )r9   r:   @py_assert3@py_assert5@py_assert8r%   @py_format10r)   s           r1   5test_threshold_fragility_count_uses_nearest_thresholdrE      s   *F!J9=C$VZ>C!C>!CCCC>!CCCCCC$CCC$CCCCCCVCCCVCCCCCCZCCCZCCCCCC>CCC!CCCCCCC9=C$VZ>C!C>!CCCC>!CCCCCC$CCC$CCCCCCVCCCVCCCCCCZCCCZCCCCCC>CCC!CCCCCCCr3   c                  L   ddg} ddddddddddg}dd	d
ddddd
ddg}t        | |g dg dd      \  }}t        | |g dg dd      \  }}||k  }|st        j                  d|fd||f      dt        j                         v st        j
                  |      rt        j                  |      nddt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }	t        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   }|
|kD  }|slt        j                  d |fd!|
|f      t        j                  |
      t        j                  |      dz  }	dd|	iz  }t        t        j                  |            d x}
x}}|d"   }
|d"   }|
|kD  }|slt        j                  d |fd!|
|f      t        j                  |
      t        j                  |      dz  }	dd|	iz  }t        t        j                  |            d x}
x}}|d#   }
|d#   }|
|kD  }|slt        j                  d |fd!|
|f      t        j                  |
      t        j                  |      dz  }	dd|	iz  }t        t        j                  |            d x}
x}}y )$Nr         ?   g      >r6   )zTotal TradeszMax Drawdown %zP&L/DD RatiozCalmar Ratiog     A   g     Qr	   gٿ   g      N)r7   g      4@g      >@)r	   r   r6   r	   
   )r5   rG   gGz?)<)z%(py0)s < %(py2)s
weak_scoreclean_score)r   r;   zassert %(py4)sr<   pnl_dd_penaltyr   )z%(py1)s == %(py4)s)r   r<   zassert %(py6)sr=   drawdown_penalty)>)z%(py1)s > %(py4)strade_penaltyfragility_penalty)	r   r   r   r   r   r   r    r!   r"   )r   clean_metricsweak_metricsrN   clean_penaltiesrM   weak_penalties@py_assert1@py_format3@py_format5@py_assert0rA   r#   @py_format7s                 r1   Dtest_robust_objective_penalizes_drawdown_pnl_dd_trades_and_fragilityr]      s   CjGuc[^_uc[^_M
 eSZ^_eSZ]^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*+2s2+s2222+s222+222s2222222,-S@R0SS-0SSSSS-0SSSS-SSS0S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-.UAT1UU.1UUUUU.1UUUU.UUU1UUUUUUUUr3   c            
      <   d} d}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	t        j                  |       t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x} x}x}x}x}x}}d} d}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	t        j                  |       t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x} x}x}x}x}x}}d} d}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	t        j                  |       t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x} x}x}x}x}x}}y )Nr   d   rG      )workload_sizeworker_fraction	cpu_countrJ   r   )zv%(py10)s
{%(py10)s = %(py0)s(%(py2)s, workload_size=%(py4)s, worker_fraction=%(py6)s, cpu_count=%(py8)s)
} == %(py13)sr   )r   r;   r<   r=   r   r   r   zassert %(py15)spy15r@   g      ?   	r   r   r   r   r   r   r    r!   r"   )	rX   rA   rB   r%   r&   @py_assert12r'   r*   @py_format16s	            r1   =test_resolve_worker_count_auto_uses_fraction_and_workload_capri   3   sN    !]]c]UW]cUWX]\]]X\]]]]]X\]]]]]]]]]]]]]]]]]]]c]]]UW]]]X]]]\]]]]]]]]] ![[C[SU[CSUV[Z[[VZ[[[[[VZ[[[[[[[[[[[[[[[[[[[C[[[SU[[[V[[[Z[[[[[[[[[ !^^d^VX^dVXY^]^^Y]^^^^^Y]^^^^^^^^^^^^^^^^^^^d^^^VX^^^Y^^^]^^^^^^^^^r3   c            	         d} d}d}t        | ||      }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                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }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                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}d} d}d}t        | ||      }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                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}x}}y )N   r_   r`   )ra   rc   r   )z[%(py8)s
{%(py8)s = %(py0)s(%(py2)s, workload_size=%(py4)s, cpu_count=%(py6)s)
} == %(py11)sr   )r   r;   r<   r=   r   r?   r   r   re      rf   )rX   rA   rB   r%   @py_assert10r&   r)   r*   s           r1   Dtest_resolve_worker_count_manual_overrides_auto_and_caps_to_workloadrn   9   s    !HHHCHqHCqHHHHCq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 !FFbFbAFQFAQFFFFAQ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 !HHHCHqHCqHHHHCq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Hr3   )builtinsr   _pytest.assertion.rewrite	assertionrewriter   tools.train_mlpr   r   r   tools.worker_utilsr   r2   rE   r]   ri   rn    r3   r1   <module>rv      s7        
 4JDV4_Ir3   