Ë
    èD±j„  ã                   ó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
 d dlmZ d„ Zd„ Zy)é    N)Úwindow_metrics)Úvalidate_filec                 ó"  — | dz  }t        j                  ddgddgddgddgddgdœ«      j                  |d¬	«       t        t	        |«      «      \  }}}|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 «       }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}}y )NzCOINBASE_BTCUSD, 360.csvi€ ’eiàT’eéd   ée   éc   )ÚtimeÚopenÚhighÚlowÚcloseF)ÚindexÚfirstz
2024-01-01©ú==)zO%(py1)s == %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.Timestamp
}(%(py7)s)
}Úpd)Úpy1Úpy3Úpy5Úpy7Úpy9zassert %(py11)sÚpy11c              3   ó$   K  — | ]  }d |v –— Œ
 y­w)Ú	TRUNCATEDN© )Ú.0Úerrors     úQ/Users/jameslopez/projects/TradingBot25/tests/test_mlp_state_policy_experiment.pyÚ	<genexpr>zKtest_validator_reads_unix_seconds_and_detects_truncation.<locals>.<genexpr>   s   è ø€ Ð8±¨ˆ{˜eÔ#±ùs   ‚z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)Úpy0Úpy2Úpy4)r   Ú	DataFrameÚto_csvr   ÚstrÚ	TimestampÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚAssertionErrorÚ_format_explanationr    )Útmp_pathÚpathÚerrorsÚ_ÚstatsÚ@py_assert0Ú@py_assert4Ú@py_assert6Ú@py_assert8Ú@py_assert2Ú@py_format10Ú@py_format12Ú@py_assert1Ú@py_assert3Ú@py_format5s                  r   Ú8test_validator_reads_unix_seconds_and_detects_truncationr?      s]  € ØÐ0Ñ0€DÜ‡L�L˜: zÐ2¸SÀ#¸JØ ˜*¨b°"¨XÀÀcÀ
ñLó MßMSÉVÐTXÐ`eÈVÔMfÜ$¤S¨£YÓ/Ñ€FˆAˆuØ�‰>Ð7œRŸ\™\Ð7¨,Ð7™\¨,Ó7Ð7ˆ>Ð7Ñ7×7×7Õ7ˆ>Ð7×7×7Ó7ˆ>×7×7×7×7×7Ð7œR×7×7Ó7œR×7×7Ô7˜\×7×7Ò7¨,×7×7Ò7Ð7×7×7×7×7×7×7×7Ù8±Ó8Ð8Œ3Ð8Ó8Ð8Ñ8×8×8×8×8Õ8Œ3×8×8Ó8Œ3×8×8Ô8Ð8×8×8Ò8Ð8×8×8×8×8×8Ó8ó    c                  óÞ  — t        j                  t        j                  g d¢«      g d¢dgdz  dgdz  g d¢dœ«      } t        | 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}}|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}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}x}	}
y )N)z2025-12-31 18:00z2026-01-01 00:00z2026-01-01 18:00)é   rB   rB   Fé   )r   éZ   éP   )r	   ÚpositionÚexecute_entryÚexecute_exitr   z
2026-01-01Úentriesr   r   )z%(py1)s == %(py4)s)r   r#   zassert %(py6)sÚpy6Úpnl_pcté   )zO%(py1)s == %(py10)s
{%(py10)s = %(py5)s
{%(py5)s = %(py3)s.approx
}(-%(py7)s)
}Úpytest)r   r   r   r   Úpy10zassert %(py12)sÚpy12Údd_pct)r   r$   Úto_datetimer   r(   r)   r*   r.   r/   rM   Úapproxr+   r,   r-   )ÚframeÚresultr5   r=   r9   r>   Ú@py_format7r6   r7   r8   Ú@py_assert9Ú@py_format11Ú@py_format13s                r   ÚFtest_window_includes_last_day_and_carry_in_returns_without_new_entriesrY      sé  € Ü�L‰L¤"§.¡.Ò1mÓ"nÚ&/À5À'È!Á)Ø+0¨'°!©)ºmñMó N€Eô ˜E <°Ó>€FØ�)ÑÐ! Ð!Ð Ñ!×!×!Õ!Ð ×!×!Ó!Ð×!×!Ò! ×!×!×!×!×!×!Ó!Ø�)ÑÐ2¤§¡Ð2¨rÐ2¨r¨cÐ2¡¨cÓ 2Ð2ÐÐ 2Ñ2×2×2Õ2ÐÐ 2×2×2Ó2Ð×2×2×2×2×2Ð2¤×2×2Ó2¤×2×2Ô2 ×2×2Ò2¨r×2×2Ò2Ð 2×2×2×2×2×2×2×2Ñ2Ø�(ÑÐ1œvŸ}™}Ð1¨bÐ1¨b¨SÐ1™}¨SÓ1Ð1ÐÐ1Ñ1×1×1Õ1ÐÐ1×1×1Ó1Ð×1×1×1×1×1Ð1œv×1×1Ó1œv×1×1Ô1˜}×1×1Ò1¨b×1×1Ò1Ð1×1×1×1×1×1×1×1Ò1r@   )Úbuiltinsr+   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter(   Úpandasr   rM   Ú%tools.run_mlp_state_policy_experimentr   Útools.validate_chart_datar   r?   rY   r   r@   r   Ú<module>ra      s    ðß  „ Ó Û å @Ý 3ò9ó2r@   