Ë
    ÁS±jt  ã                   óŒ   — d dl Zd dlmc mZ d dlZd dlZd dl	Z
d dlZd dlmZ d dlmZ d„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zy)é    N)Ú	train_mlp)Úrun_mlp_pipeline_comparisonc                  ó  — t        j                  t        j                  ddd¬«      «      } t        j                  dt
        ¬«      }t        j                  || | j                  d   d«      }t        j                  } ||«      }|j                  } |«       }d}t        |«      }t        |«      }	||	k(  }
|
�sìt        j                  d	|
fd
||	f«      dt        j                   «       v st        j"                  t        «      rt        j$                  t        «      ndt        j$                  |«      dt        j                   «       v st        j"                  |«      rt        j$                  |«      ndt        j$                  |«      t        j$                  |«      t        j$                  |«      dt        j                   «       v st        j"                  t        «      rt        j$                  t        «      nd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}x}
x}x}}	| j+                  d«      |   }| j                  d   }||k  }|j,                  } |«       }|s”t        j                  d|fd||f«      t        j$                  |«      t        j$                  |«      dœz  }d|t        j$                  |«      t        j$                  |«      dœz  }t'        t        j(                  |«      «      ‚d x}x}x}x}}y )Nú
2020-01-01é(   Ú4h©ÚperiodsÚfreq)Údtypeé   é
   é   ©ú==)zÇ%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.flatnonzero
}(%(py3)s)
}.tolist
}()
} == %(py18)s
{%(py18)s = %(py11)s(%(py16)s
{%(py16)s = %(py12)s(%(py14)s)
})
}ÚnpÚmaskÚlistÚrange)Úpy0Úpy2Úpy3Úpy5Úpy7Úpy9Úpy11Úpy12Úpy14Úpy16Úpy18zassert %(py20)sÚpy20iöÿÿÿ)Ú<)z%(py1)s < %(py4)s©Úpy1Úpy4z@assert %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.all
}()
})Úpy6Úpy8Úpy10)ÚpdÚSeriesÚ
date_ranger   ÚonesÚboolr   Úpurged_training_maskÚilocÚflatnonzeroÚtolistr   r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚshiftÚall)ÚtimesÚvalidr   Ú@py_assert1Ú@py_assert4Ú@py_assert6Ú@py_assert8Ú@py_assert13Ú@py_assert15Ú@py_assert17Ú@py_assert10Ú@py_format19Ú@py_format21Ú@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_assert7Ú@py_assert9Ú@py_format5Ú@py_format11s                       úM/Users/jameslopez/projects/TradingBot25/tests/test_mlp_pipeline_comparison.pyÚ3test_purge_removes_exact_labels_crossing_validationrP      s  € Ü�I‰I”b—m‘m L¸"À4ÔHÓI€EÜ�G‰G�BœdÔ#€EÜ×)Ñ)¨%°¸¿
¹
À2¹ÈÓK€DÜ�>‰>Ð;‰>˜$ÓÐ;Ð×&Ñ&Ð;Ñ&Ó(Ð;°rÐ;´°r³Ð;¬D°«OÐ;Ð(¨OÑ;×;×;Ö;Ð(¨O×;×;×;×;×;Ñ;Œ2×;×;Ó;Œ2×;×;Ô;ˆ>×;×;×;×;×;Ð;˜$×;×;Ó;˜$×;×;Ô;Ð×;×;Ò;Ð&×;×;Ò;Ð(×;×;×;×;×;Ð;¬D×;×;Ó;¬D×;×;×;×;×;Ò;´×;×;Ó;´×;×;Ô;°r×;×;Ò;°×;×;Ò;¨O×;×;×;×;×;×;×;Õ;Ø�K‰K˜Ó˜TÑ"Ð: U§Z¡Z°¡^Ð:Ð" ^Ñ3Ñ:×8Ñ8Ð:Ñ8Ó:Ð:Ñ:×:×:Ò:Ð" ^×:×:Ó:Ð"×:×:Ò: ^×:×:×:Ñ:Ð8×:×:Ò:Ð:×:×:×:×:×:×:Ñ:ó    c           	      óô  — t        j                  ddd¬«      }| dz  }t        j                  |D �cg c]  }t        |j	                  «       «      ‘Œ c}ddœ«      j                  |d¬	«       |j                  t        j                  d
d«       |j                  t        j                  dd«       t        j                  |«      }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                   |«      dœz  }	dd|	iz  }
t#        t        j$                  |
«      «      ‚d x}x}}|j&                  j(                  d   }t         j*                  }d} ||«      }||k(  }|sÝt        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 c c}w )Nr   é   r   r	   z	input.csvé   )ÚtimeÚcloseF©ÚindexÚTRAIN_STARTÚ	TRAIN_ENDú
2020-01-02é   r   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚgot)r   r$   r   r&   zassert %(py8)sr'   éÿÿÿÿz2020-01-02 20:00©zO%(py1)s == %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.Timestamp
}(%(py7)s)
}r)   ©r$   r   r   r   r   úassert %(py11)sr   )r)   r+   Ú	DataFrameÚintÚ	timestampÚto_csvÚsetattrr   ÚconfigÚ	load_datar]   r2   r3   r4   r5   r6   r7   r8   r9   rU   r/   Ú	Timestamp)Útmp_pathÚmonkeypatchr<   ÚpathÚtr^   rJ   Ú@py_assert5r?   Ú@py_format7Ú@py_format9rH   r@   rA   Ú@py_format10Ú@py_format12s                   rO   Ú-test_training_loader_epoch_and_full_final_dayrt      sÖ  € Ü�M‰M˜,°¸Ô>€EØ�kÑ!€DÜ‡L�L±uÓ=±u°!œ3˜qŸ{™{›}Õ-°uÑ=ÈÑJÓK×RÑRÐSWÐ_dÐRÔeØ×Ñœ	×(Ñ(¨-¸ÔFØ×Ñœ	×(Ñ(¨+°|ÔDÜ
×
Ñ
˜dÓ
#€CÜˆs‹8Ð�rÐˆ8�r‰>××Õˆ8�r×××××ÑŒ3××ÓŒ3×××××Òˆs××Óˆs××Ôˆ8××Ò�r××××××ÓØ�8‰8�=‰=˜ÑÐ@¤§¡Ð@Ð-?Ð@¡Ð-?Ó @Ð@ÐÐ @Ñ@×@×@Õ@ÐÐ @×@×@Ó@Ð×@×@×@×@×@Ð@¤×@×@Ó@¤×@×@Ô@ ×@×@Ò@Ð-?×@×@Ò@Ð @×@×@×@×@×@×@×@Ð@ùò >s   ± K5c                  óf  ‡— t         j                  D �]  } t         j                  D �]  }t        j                  | |«      Š‰d   }‰d   }||k  }‰d   }||k  }‰d   }||k  }‰d   }	||	k  }
|r|r|r|
s®t	        j
                  d||||
fd|||||	f«      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}x}}	ˆfd„‰d   D «       }t        |«      }|s•d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}}|dk(  s�ŒÊ‰d   }‰d   }t        j                  }d} ||¬«      }||z
  }	||	k(  }|sñt	        j
                  d|fd||	f«      t	        j                  |«      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}x}x}}	‰d   }t        j                  }d} ||«      }||k\  }|sÝt	        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}}�Œ	 �Œ  t         j                  }t!        |«      }t         j                  }t!        |«      }||z  }	t         j"                  }t!        |«      }|	|z  }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                  t         «      rt	        j                  t         «      nd"t	        j                  |«      t	        j                  |«      d!t        j                  «       v st	        j                  t         «      rt	        j                  t         «      nd!d"t        j                  «       v st	        j                  t         «      rt	        j                  t         «      nd"t	        j                  |«      t	        j                  |«      d!t        j                  «       v st	        j                  t         «      rt	        j                  t         «      nd!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}x}	x}x}x}x}}y )&NÚstartÚ
validationÚcalibrationÚoriginÚend)r"   r"   r"   r"   )z%(py1)s < %(py7)sz%(py7)s < %(py9)sz%(py9)s < %(py11)sz%(py11)s < %(py13)s)r$   r   r   r   Úpy13zassert %(py15)sÚpy15c              3   ó`   •K  — | ]%  \  }}‰d    |cxk  xr |cxk  xr ‰d   k  nc –— Œ' y­w)rv   rx   N© )Ú.0ÚaÚbÚps      €rO   Ú	<genexpr>z?test_splits_exclude_outer_from_all_selection.<locals>.<genexpr>#   s1   øè ø€ ÐVÉ:Á4À1Àa�q˜‘z QÖ>¨Ö>¨a°Ñ.>×>Ð>É:ùs   ƒ+.Úfoldsz,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}r;   )r   r   r%   Ú	five_yearé   )Úyearsr   )zd%(py1)s == (%(py4)s - %(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s.DateOffset
}(years=%(py9)s)
})r)   )r$   r%   r   r   r   r   zassert %(py14)sr   z
2017-12-01)ú>=)zO%(py1)s >= %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.Timestamp
}(%(py7)s)
}ra   rb   r   é   )zÝ((%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.YEARS
})
} * %(py11)s
{%(py11)s = %(py6)s(%(py9)s
{%(py9)s = %(py7)s.ARMS
})
}) * %(py18)s
{%(py18)s = %(py13)s(%(py16)s
{%(py16)s = %(py14)s.SEEDS
})
}) == %(py22)sr]   Úpipeline)r   r$   r   r   r&   r   r   r   r{   r   r   r    Úpy22zassert %(py24)sÚpy24)rŠ   ÚYEARSÚARMSÚ
split_planr2   r3   r7   r8   r9   r;   r4   r5   r6   r)   Ú
DateOffsetrj   r]   ÚSEEDS)ÚyearÚarmrH   r@   rJ   rA   rI   rE   r?   Ú@py_assert12ro   Ú@py_format14Ú@py_format16r>   rM   Ú@py_format13Ú@py_format15rr   rs   rC   rD   Ú@py_assert19Ú@py_assert21Ú@py_assert20Ú@py_format23Ú@py_format25r‚   s                             @rO   Ú,test_splits_exclude_outer_from_all_selectionrž      sJ  ø€ Ü—•ˆÜ—=•=ˆCÜ×#Ñ# D¨#Ó.ˆAØ�W‘:Ð[  ,¡Ð[�: Ñ[Ð[°!°MÑ2BÐ[ Ð2BÑ[Ð[ÀQÀxÁ[Ð[Ð2BÀ[Ñ[Ð[ÐSTÐUZÑS[Ð[À[ÐS[Ñ[×[×[×[Ö[�: Ð2BÀ[ÐS[×[×[Ó[�:×[×[Ò[ ×[×[Ò[Ð2B×[×[Ò[À[×[×[Ò[ÐS[×[×[×[×[×[×[×[×[ÛVÈ1ÈWÊ:ÓVÐV”3ÐVÓVÐVÑV×V×V×V×VÕV”3×V×VÓV”3×V×VÔVÐV×V×VÒVÐV×V×V×V×V×VÒVØ�kÔ!Ø˜‘zÐI Q x¡[ÐI´2·=±=ÐIÀqÐI±=ÀqÔ3IÐI [Ð3IÑ%IÐI�zÐ%IÑI×I×IÕI�zÐ%I×I×IÓI�z×I×IÒI [×I×I×I×I×IÐI´2×I×IÓI´2×I×IÔI°=×I×IÒIÀq×I×IÒIÐ3I×I×I×I×I×I×I×IÓIØ˜‘zÐ?¤R§\¡\Ð?°,Ð?¡\°,Ó%?Ð?�zÐ%?Ñ?×?×?Õ?�zÐ%?×?×?Ó?�z×?×?×?×?×?Ð?¤R×?×?Ó?¤R×?×?Ô? \×?×?Ò?°,×?×?Ò?Ð%?×?×?×?×?×?×?×?Ñ?ò !ð ô �~‰~ÐOŒ3ˆ~ÓÐO¤X§]¡]ÐO¤ ]Ó!3ÐOÐÐ!3Ñ3ÐO¼(¿.¹.ÐO´c¸.Ó6IÐOÐ3Ð6IÑIÐOÈRÐOÐIÈRÑO×O×OÖOÐIÈR×O×O×O×O×OÑOŒ3×O×OÓOŒ3×O×O×O×O×OÒOŒx×O×OÓOŒx×O×OÔOˆ~×O×OÒOÐ×O×O×O×O×OÐO¤×O×OÓO¤×O×O×O×O×OÒO¤X×O×OÓO¤X×O×OÔO ]×O×OÒOÐ!3×O×O×O×O×OÐO´c×O×OÓO´c×O×O×O×O×OÒO¼(×O×OÓO¼(×O×OÔO¸.×O×OÒOÐ6I×O×OÒOÈR×O×O×O×O×O×O×O×OÒOrQ   c            
      ó^  — t        t        j                  g d¢«      «      } t        t        j                  g d¢«      «      }t        | «      }t        |«      }||k(  }d}||k(  }|r|�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                  |«      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                  |«      d	œz  }d
d|iz  }t        t	        j                  |«      «      ‚d x}x}x}x}}t        j                  j                  | dd  |dd  «       y )N)rT   é   é   é   )r†   é   é   é   é€   )r   r   )zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py9)s
{%(py9)s = %(py6)s(%(py7)s)
}z1%(py9)s
{%(py9)s = %(py6)s(%(py7)s)
} == %(py11)sr]   r€   r�   )r   r$   r   r&   r   r   r   úassert %(py13)sr{   rT   )r   rŠ   Úthreshold_candidatesr]   r2   r3   r4   r5   r6   r7   r8   r9   r   ÚtestingÚassert_array_equal)	r€   r�   rJ   rA   r?   rE   ro   rs   r•   s	            rO   Ú&test_equal_threshold_budgets_and_drawsr«   *   s9  € ÜŒX×*Ñ*ª<Ó8Ó9€AÜŒX×*Ñ*ª<Ó8Ó9€AÜˆq‹6Ð"”S˜“VÐ"ˆ6�VÑ"Ð"˜sÐ"�V˜sÑ"×"×"×"Ñ"ˆ6�V˜s×"×"×"×"×"Ñ"Œ3×"×"Ó"Œ3×"×"×"×"×"Ò"ˆq×"×"Ó"ˆq×"×"Ô"ˆ6×"×"×"×"×"Ð"”S×"×"Ó"”S×"×"×"×"×"Ò"˜×"×"Ó"˜×"×"Ô"�V×"×"Ò"˜s×"×"×"×"×"×"×"Ü‡J�J×!Ñ! ! A B %¨¨1¨2¨Õ/rQ   c           
      óÈ  — t         j                  }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                  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}}t         j                  }t        |«      }t        |«      }d	}	||	k(  }
|
�sot        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                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}
}	| dz  }t        j                  ddgddgddgdœ«      j                  |d¬«       t        j                   t"        d¬«      5  t        j$                  |«       d d d «       y # 1 sw Y   y xY w)Né7   r   )zR%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.FEATURE_COLS
})
} == %(py8)sr]   rŠ   )r   r$   r   r   r'   zassert %(py10)sr(   é5   )zq%(py8)s
{%(py8)s = %(py0)s(%(py6)s
{%(py6)s = %(py1)s(%(py4)s
{%(py4)s = %(py2)s.FEATURE_COLS
})
})
} == %(py11)sÚset)r   r$   r   r%   r&   r'   r   r§   r{   zbad.csvrT   r    ©rU   rV   ÚhighFrW   ÚMissing©Úmatch)rŠ   ÚFEATURE_COLSr]   r2   r3   r4   r5   r6   r7   r8   r9   r¯   r)   rc   rf   ÚpytestÚraisesÚ
ValueErrorÚload_inputs)rk   rJ   r?   rK   r@   rq   rN   rI   ro   rE   rL   rs   r•   rm   s                 rO   Ú5test_schema_keeps_duplicate_slots_and_rejects_missingrº   1   sê  € Ü×$Ñ$Ð+Œ3Ð$Ó%Ð+¨Ð+Ð%¨Ñ+×+×+Ö+Ð%¨×+×+×+×+×+Ñ+Œ3×+×+Ó+Œ3×+×+×+×+×+Ò+Œx×+×+Ó+Œx×+×+Ô+Ð$×+×+Ò+Ð%×+×+Ò+¨×+×+×+×+×+×+Õ+Ü×(Ñ(Ð0ŒsÐ(Ó)Ð0Œ3Ð)Ó*Ð0¨bÐ0Ð*¨bÑ0×0×0Ö0Ð*¨b×0×0×0×0×0Ñ0Œ3×0×0Ó0Œ3×0×0×0×0×0Ò0Œs×0×0Ó0Œs×0×0×0×0×0Ò0”8×0×0Ó0”8×0×0Ô0Ð(×0×0Ò0Ð)×0×0Ò0Ð*×0×0Ò0¨b×0×0×0×0×0×0×0Ø�iÑ€DÜ‡L�L˜1˜a˜&¨A¨q¨6¸A¸q¸6ÑBÓC×JÑJÈ4ÐW\ÐJÔ]Ü	�‰”z¨Ö	3Ü×Ñ˜TÔ"÷ 
4×	3Ñ	3ús   Ì9MÍM!c           
      óX  — t        dt        ddd¬«      dd¬«      t        d	t        d
dd¬«      dd¬«      g}| dz  }t        j                  ||t        j                  dd«      «      }|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}}t        j                  }	|j                  }
 |
«       } |	|«      }||k(  }|�s_t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |	«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |
«      t	        j                  |«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}	x}
x}x}}d }||v}|s™t	        j
                  d!|fd"||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndd#œz  }d$d%|iz  }t        t	        j                  |«      «      ‚d x}}y )&Née   rT   r†   éûÿÿÿ)ÚcalmarÚpnl_pctÚdd_pctÚxÚabc)ÚseedÚmetricsÚartifactÚsha256éÊ   r    r¢   éþÿÿÿÚyÚdefzselection.jsoniç  r…   ÚselectedrÃ   r   ©z%(py1)s == %(py4)sr#   úassert %(py6)sr&   )z‚%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.read_text
}()
})
} == %(py11)sÚjsonrm   Úfrozen)r   r   r   r   r   r   r   r§   r{   Úouter)únot in)z%(py1)s not in %(py3)s)r$   r   zassert %(py5)sr   )ÚdictrŠ   Úfreeze_selectionr�   r2   r3   r7   r8   r9   rÎ   ÚloadsÚ	read_textr4   r5   r6   )rk   Úrowsrm   rÏ   rH   rI   rJ   rM   rp   r>   r?   r@   rA   rE   rs   r•   Ú@py_format4Ú@py_format6s                     rO   Ú/test_selection_freeze_contains_no_outer_metricsrÙ   :   s÷  € Ü�c¤4¨q¸!ÀBÔ#GÐRUÐ^cÔdÜ�c¤4¨q¸!ÀBÔ#GÐRUÐ^cÔdðf€DàÐ&Ñ&€DÜ×&Ñ& t¨T´8×3FÑ3FÀtÈ[Ó3YÓZ€FØ�*Ñ˜fÑ%Ð,¨Ð,Ð%¨Ñ,×,×,Õ,Ð%¨×,×,Ó,Ð%×,×,Ò,¨×,×,×,×,×,×,Ó,Ü�:‰:Ð1�d—n‘nÐ1‘nÓ&Ð1‰:Ð&Ó'Ð1Ð'¨6Ñ1×1×1Ö1Ð'¨6×1×1×1×1×1Ñ1Œ4×1×1Ó1Œ4×1×1Ô1ˆ:×1×1×1×1×1Ð1�d×1×1Ó1�d×1×1Ô1�n×1×1Ò1Ð&×1×1Ò1Ð'×1×1×1×1×1Ð1¨6×1×1Ó1¨6×1×1×1×1×1×1×1Ñ1ØÐ ˆ7˜&Ð × × Õ ˆ7˜&× × Ó ˆ7× × × × × Ð ˜&× × Ó ˜&× × × × × × Ô rQ   c                  ó\  — t        j                  t        j                  ddd¬«      t        j                  d«      dz   t        j                  d«      dz   dœ«      } | j                  «       }d|j                  d	<   t        j                  | | j                  j                  d
   d«      }t        j                  || j                  j                  d
   d«      }|j                  j                  d   }|j                  j                  d   }||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                   |«      «      ‚d x}x}}|j                  j                  d   }|j                  j                  d   }||k7  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                   |«      «      ‚d x}x}}y )Nr   éÒ   ÚDr	   g      $@g      &@r°   g{®Gáz„?)éÍ   rV   éÈ   ÚtrendrÝ   r   rÌ   r#   rÍ   r&   éÎ   )ú!=)z%(py1)s != %(py4)s)r)   rc   r+   r   ÚarangeÚcopyÚlocrŠ   Úbaseline_signalsrU   r/   Úpositionr2   r3   r7   r8   r9   )	ÚframeÚalteredÚfirstÚsecondrH   rI   rJ   rM   rp   s	            rO   Ú-test_trend_baseline_cannot_use_same_day_closerë   D   s   € Ü�L‰L¤"§-¡-°ÀcÐPSÔ"TÔ_a×_hÑ_hÐilÓ_mÐpsÑ_sÔ}÷  ~Gñ  ~Gð  HKó  ~Lð  MPñ  ~Pñ  Qó  R€EØ�j‰j‹l€GØ #€G‡K�K�ÑÜ×%Ñ% e¨U¯Z©Z¯_©_¸SÑ-AÀ7ÓK€EÜ×&Ñ& w°·
±
·±ÀÑ0DÀgÓN€FØ�>‰>×Ñ˜sÑ#Ð@ v§¡×';Ñ';¸CÑ'@Ð@Ð#Ð'@Ñ@×@×@Õ@Ð#Ð'@×@×@Ó@Ð#×@×@Ò@Ð'@×@×@×@×@×@×@Ó@Ø�>‰>×Ñ˜sÑ#Ð@ v§¡×';Ñ';¸CÑ'@Ð@Ð#Ð'@Ñ@×@×@Õ@Ð#Ð'@×@×@Ó@Ð#×@×@Ò@Ð'@×@×@×@×@×@×@Ô@rQ   c           
      ón  ‡— t        j                  t        j                  ddd¬«      «      }t        j                  |dddœ«      }t	        j
                  d«      t	        j
                  d	«      fg}t        j                  t        j                  |«      g d
¢f   }t        j                  |t	        j
                  d«      dd	g|d d dgd	d	d«      }| j                  t        dd„ «       i Šˆfd„}| j                  t        d|«       t        j                  ||«       ‰d   }|j                  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   }t         j$                  }d} ||«      }||k(  }	|	sÝt        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}}‰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 )$Nr   r‰   r   r	   g      Y@g     @Y@r°   )rT   r   rT   )ç        rí   rí   rí   )r‰   r   r   é   )Nr[   z
2020-01-03rí   Ú_score_to_signalsc                 ó   — | S )Nr~   )ÚdÚargss     rO   Ú<lambda>zMtest_fitness_preserves_preboundary_history_and_full_end_day.<locals>.<lambda>U   s   € ÉrQ   c                 ó    •— | j                   j                  d   ‰d<   | j                   j                  d   ‰d<   ‰j                  |«       dddœS )Nr   ré   r_   Úlastg      ð?rT   )zCalmar RatiozTotal Trades)rU   r/   Úupdate)ÚslÚkwargsÚseens     €rO   rÄ   zLtest_fitness_preserves_preboundary_history_and_full_end_day.<locals>.metricsW   sE   ø€ ØŸ™Ÿ™ Q™ˆˆW‰Ø—w‘w—|‘| BÑ'ˆˆV‰Ø�‰�FÔØ "°AÑ6Ð6rQ   Úcalculate_metricsré   r   r   rÌ   r#   rÍ   r&   rõ   z2020-01-03 20:00r`   r)   ra   rb   r   Úscore_startr[   )r)   r*   r+   rc   r   ÚzerosÚr_r   Úflatten_layersÚmake_fitness_contextrg   Úevaluate_thetar/   r2   r3   r7   r8   r9   rj   r4   r5   r6   )rl   r<   rç   ÚlayersÚthetaÚcontextrÄ   rH   rI   rJ   rM   rp   r?   r@   rA   rr   rs   rù   s                    @rO   Ú;test_fitness_preserves_preboundary_history_and_full_end_dayr  N   s2  ø€ Ü�I‰I”b—m‘m L¸"À4ÔHÓI€EÜ�L‰L %°$ÀÑEÓF€EÜ�x‰x˜Ó ¤"§(¡(¨1£+Ð.Ð/€FÜ�E‰E”)×*Ñ*¨6Ó2Ò4DÐDÑE€EÜ×,Ñ,¨U´B·H±H¸XÓ4FÈÈQÈÐQVÐWZÐXZÐQ[Ø	+Ð,¨a°°Bó8€Gà×Ñœ	Ð#6Ñ8JÔKØ€Dô7ð
 ×Ñœ	Ð#6¸Ô@Ü×Ñ˜U GÔ,Ø�‰=Ð)˜EŸJ™J q™MÐ)ˆ=˜MÑ)×)×)Õ)ˆ=˜M×)×)Ó)ˆ=×)×)Ò)˜M×)×)×)×)×)×)Ó)Ø�‰<Ð;œ2Ÿ<™<Ð;Ð(:Ð;™<Ð(:Ó;Ð;ˆ<Ð;Ñ;×;×;Õ;ˆ<Ð;×;×;Ó;ˆ<×;×;×;×;×;Ð;œ2×;×;Ó;œ2×;×;Ô;˜<×;×;Ò;Ð(:×;×;Ò;Ð;×;×;×;×;×;×;×;Ø�ÑÐ. ,Ð.Ð ,Ñ.×.×.Õ.Ð ,×.×.Ó.Ð×.×.Ò. ,×.×.×.×.×.×.Ô.rQ   c                 ó°  — ddl m} | dz  }|j                  d«       t        j                  t
        d¬«      5  t        j                   |t        | «      ¬«      «       d d d «       |j                  } |«       }d}||k(  }|sÁt        j                  d|fd	||f«      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 # 1 sw Y   ŒïxY w)Nr   )ÚSimpleNamespacezpartial.jsonÚoriginalÚnonemptyr³   )Úoutr   )zH%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}()
} == %(py7)sÚmarker)r   r   r%   r   zassert %(py9)sr   )Útypesr  Ú
write_textr¶   r·   r¸   rŠ   ÚrunÚstrrÕ   r2   r3   r4   r5   r6   r7   r8   r9   )	rk   r  r
  r>   rI   r@   ro   Ú@py_format8rr   s	            rO   Ú,test_nonempty_output_refused_before_mutationr  c   sÕ   € Ý%Ø˜Ñ&€FØ
×Ñ�jÔ!Ü	�‰”z¨Ö	4Ü�‰‘_¬¨X«Ô7Ô8÷ 
5à×ÑÐ+ÑÓÐ+ Ð+Ð Ñ+×+×+Õ+Ð ×+×+×+×+×+Ñ+ˆ6×+×+Ó+ˆ6×+×+Ô+Ð×+×+Ò+Ð×+×+Ò+ ×+×+×+×+×+×+Ö+÷ 
5Ð	4ús   ¸&EÅE)Úbuiltinsr4   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter2   rÎ   Únumpyr   Úpandasr)   r¶   Útoolsr   r   rŠ   rP   rt   rž   r«   rº   rÙ   rë   r  r  r~   rQ   rO   Ú<module>r     sK   ðß  „ ƒã Û Û å Ý 9ò;òAò	Pò0ò#ò!òAò/ó*,rQ   