
    9j                     >    d dl Zd dlmc mZ d dlZd dlm	Z
 d Zd Zy)    Nc                    d	d}| j                  t        d|       t        j                  t        j                               \  }}}}||||f}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 )
Nc                      |dk(  rdddS dddS )Nz
2021-01-01
   r   g      ?)Total TradesCalmar Ratio _signalsstart_ends      T/Users/jameslopez/projects/TradingBot25/tests/test_mlp_score_structure_experiment.pyone_valid_foldzUtest_wfo_requires_the_canonical_minimum_number_of_valid_folds.<locals>.one_valid_fold   s     &+|&;TWXXTWXX    _metrics)        g     X   F==z%(py1)s == %(py4)spy1py4assert %(py6)spy6N)
setattr
experiment_wfopd	DataFrame
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanation)monkeypatchr   meanminimumcounteligible@py_assert0@py_assert3@py_assert2@py_format5@py_format7s              r   =test_wfo_requires_the_canonical_minimum_number_of_valid_foldsr0      s    Y 
J?%/__R\\^%D"D'5('5(+E/EE+/EEEEE+/EEEE+EEE/EEEEEEEEr   c           	         dd}| j                  t        d|       | j                  t        dd        t        j                  dt        j                  dt        j
                  dg      i            }|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}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y )Nc                 B    |t         j                  k(  rddddS dddddS )	Nr   g      $g      (@)r   r   Total P&L %         ?g      Y@)r   r   r3   zMax Drawdown %)r   	OOS_STARTr	   s      r   metricszBtest_summary_normalizes_a_zero_trade_oos_sentinel.<locals>.metrics   s-    J((($%uTRR "Cafggr   r   r   c                      y)N)r5   g      ?   Tr   )r
   s    r   <lambda>zCtest_summary_normalizes_a_zero_trade_oos_sentinel.<locals>.<lambda>   s    =Pr   testtimez
2020-01-01
oos_calmarr   r   r   r   r   r   oos_pnl_pctwfo_eligibleT)is)z%(py1)s is %(py4)sr   )r   r   _summaryr   r    to_datetimer!   r"   r#   r$   r%   )r&   r7   summaryr+   r,   r-   r.   r/   s           r   1test_summary_normalizes_a_zero_trade_oos_sentinelrD      sQ   h
 
J8
F,PQ!!&",,P\~@^7_*`aG< 'C' C'''' C''' '''C'''''''=!(S(!S((((!S(((!(((S(((((((>"*d*"d****"d***"***d*******r   )builtins@py_builtins_pytest.assertion.rewrite	assertionrewriter!   pandasr   (tools.run_mlp_score_structure_experiment"run_mlp_score_structure_experimentr   r0   rD   r   r   r   <module>rM      s        =F+r   