Ë
    tqµj¼  ã                   ó~   — d dl Zd dlmc mZ d dlZd dlZ	d dl
Z
d„ Zd„ Zd„ Ze
j                  d„ «       Zd„ Zd„ Zd„ Zy)	é    Nc                  óê  — ddl m}  t        j                  t        j                  ddd¬«      j                  d«      j                  d«      d	z  g d
¢dœ«      }|j                  d¬«      j                  «       } | |t        j                  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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}}t'        j(                  t*        d¬«      5   | |t        j                  dd¬«      «       d d d «       y # 1 sw Y   y xY w)Nr   )Ú
read_chartú
2026-09-24é   Ú6h©ÚperiodsÚfreqÚnsÚint64é Êš;©ç      Y@g     @Y@g     €Y@©ÚtimeÚcloseF)Úindexz2026-09-24 12:01ÚUTC©Útzé   ©ú==)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚgot)Úpy0Úpy1Úpy3Úpy6zassert %(py8)sÚpy8zunclosed|future©Úmatchz2026-09-24 06:01)Útools.mlp_observationr   ÚpdÚ	DataFrameÚ
date_rangeÚas_unitÚastypeÚto_csvÚencodeÚ	Timestampr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚpytestÚraisesÚ
ValueError)	r   ÚframeÚdatar   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9s	            úE/Users/jameslopez/projects/TradingBot25/tests/test_mlp_observation.pyÚ4test_closed_rows_exclude_unconfirmed_and_future_datar?      s5  € Ý0Ü�L‰L¤"§-¡-°ÀaÈdÔ"S×"[Ñ"[Ð\`Ó"a×"hÑ"hÐipÓ"qÐsxÑ"xÚ#5ñ7ó 8€Eà�<‰<˜eˆ<Ó$×+Ñ+Ó-€DÙ
�Tœ2Ÿ<™<Ð(:¸uÔEÓ
F€CÜˆs‹8Ð�qÐˆ8�q‰=××Õˆ8�q×××××ÑŒ3××ÓŒ3×××××Òˆs××Óˆs××Ôˆ8××Ò�q××××××ÓÜ	�‰”zÐ):Ö	;Ù�4œŸ™Ð&8¸UÔCÔD÷ 
<×	;Ñ	;ús   ÇG)Ç)G2c                  óÒ  — ddl m} m} t        j                  t        j
                  ddd¬«      g d¢dœ«      } | |d	g«      } |||«       |j                  «       }d
|j                  d<   t        j                  t        d¬«      5   || | |d	g«      «       d d d «       t        j                  t        d¬«      5   |||dd  «       d d d «       y # 1 sw Y   Œ:xY w# 1 sw Y   y xY w)Nr   )Ú
row_hashesÚrequire_historyr   r   r   r   r   r   r   g     ÀX@)é   r   Úhistoryr!   rC   )r#   rA   rB   r$   r%   r&   ÚcopyÚlocr4   r5   r6   )rA   rB   r7   ÚoriginalÚaltereds        r>   Ú5test_history_hashes_reject_revisions_and_missing_rowsrI      s³   € ßAÜ�L‰L¤"§-¡-°ÀaÈdÔ"SÒ]mÑnÓo€EÙ˜% ' Ó+€HÙ�H˜hÔ'Ø�j‰j‹l€GØ €G‡K�K�	ÑÜ	�‰”z¨Ö	3Ù˜¡*¨W°w°iÓ"@ÔA÷ 
4ä	�‰”z¨Ö	3Ù˜ (¨1¨2 ,Ô/÷ 
4Ð	3÷ 
4Ð	3úç	3Ð	3ús   ÂCÂ;CÃCÃC&c                  ó¸  — ddl m}  d}d} | ||«      }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                  |«      t        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}x}x}}d
}d} | ||«      }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                  |«      t        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}x}x}}d}d} | ||«      }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                  |«      t        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}x}x}}d}d} | ||«      }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                  |«      t        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}x}x}}y )Nr   )Úcoverage_statusÚawaiting_datar   )z9%(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
} == %(py9)srK   )r   Úpy2Úpy4r   Úpy9úassert %(py11)sÚpy11éÈ   é	   Úinsufficient_coverageé³   é
   é´   Úready_for_review)
r#   rK   r,   r-   r.   r/   r0   r1   r2   r3   )rK   Ú@py_assert1Ú@py_assert3r:   Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s           r>   Ú0test_coverage_requires_days_and_completed_tradesr_      s`  € Ý5ØÐ2˜QÐ2‰?˜1˜QÓÐ2 ?Ð2Ð ?Ñ2×2×2Õ2Ð ?×2×2×2×2×2Ñ2ˆ?×2×2Ó2ˆ?×2×2Ô2˜1×2×2Ò2˜Q×2×2Ò2Ð×2×2Ò2 ?×2×2×2×2×2×2×2ØÐ<˜qÐ<‰?˜3˜qÓ!Ð<Ð%<Ð<Ð!Ð%<Ñ<×<×<Õ<Ð!Ð%<×<×<×<×<×<Ñ<ˆ?×<×<Ó<ˆ?×<×<Ô<˜3×<×<Ò<˜q×<×<Ò<Ð!×<×<Ò<Ð%<×<×<×<×<×<×<×<ØÐ=˜rÐ=‰?˜3˜rÓ"Ð=Ð&=Ð=Ð"Ð&=Ñ=×=×=Õ=Ð"Ð&=×=×=×=×=×=Ñ=ˆ?×=×=Ó=ˆ?×=×=Ô=˜3×=×=Ò=˜r×=×=Ò=Ð"×=×=Ò=Ð&=×=×=×=×=×=×=×=ØÐ8˜rÐ8‰?˜3˜rÓ"Ð8Ð&8Ð8Ð"Ð&8Ñ8×8×8Õ8Ð"Ð&8×8×8×8×8×8Ñ8ˆ?×8×8Ó8ˆ?×8×8Ô8˜3×8×8Ò8˜r×8×8Ò8Ð"×8×8Ò8Ð&8×8×8×8×8×8×8×8Ð8ó    c                 óŒ   — ddl m} |j                  |dd„ «       | dz  }|j                  dz  }|j	                  ||«       |||fS )Nr   )Úmlp_observationÚnow_utcc                  ó0   — t        j                  dd¬«      S )Nz2026-08-22 01:00r   r   ©r$   r+   © r`   r>   Ú<lambda>zfrozen_bundle.<locals>.<lambda>)   ó   € ´R·\±\ÐBTÐY^Õ5_r`   Úfrozenz!data/mlp/COINBASE_BTCUSD, 360.csv)Útoolsrb   ÚsetattrÚREPOÚfreeze)Útmp_pathÚmonkeypatchÚobserverÚbundler8   s        r>   Úfrozen_bundlerr   &   sL   € å1Ø×Ñ˜ )Ñ-_Ô`Ø˜Ñ €FØ�=‰=Ð>Ñ>€DØ‡O�O�F˜DÔ!Ø�V˜TÐ!Ð!r`   c                 ó¶  — dd l }| \  }}}|j                  ||«      }|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
   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}}|j                  } |||«      }||k(  }|�spt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      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                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}d}||z  }|j                  }d} ||«      }t        |«      }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dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      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}x}x}}|j                  |dz  j                  «       «      }|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   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}x}}|d(z  j!                  d)«       t#        j$                  t&        d*¬+«      5  |j                  ||«       d d d «       y # 1 sw Y   y xY w),Nr   ÚstatusrL   r   ©z%(py1)s == %(py4)s©r   rN   úassert %(py6)sr   c              3   ó*   K  — | ]  }|d    du –— Œ y­w)ÚmetricsNrf   ©Ú.0Úps     r>   Ú	<genexpr>z?test_actual_freeze_no_data_repeat_and_tamper.<locals>.<genexpr>5   s   è ø€ Ð@Ñ-?¨ˆq�‰|˜tÔ#Ñ-?ùs   ‚Úpoliciesú,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall©r   rM   rN   )zV%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.observe
}(%(py3)s, %(py4)s)
} == %(py8)srp   rq   r8   Úreport)r   rM   r   rN   r   r    zassert %(py10)sÚpy10Úobservationsz*/receipt.jsonrC   )z™%(py15)s
{%(py15)s = %(py0)s(%(py13)s
{%(py13)s = %(py1)s(%(py11)s
{%(py11)s = %(py7)s
{%(py7)s = (%(py2)s / %(py4)s).glob
}(%(py9)s)
})
})
} == %(py18)sr   Úlist)
r   r   rM   rN   Úpy7rO   rQ   Úpy13Úpy15Úpy18zassert %(py20)sÚpy20zmanifest.jsonÚobservation_startz2026-08-22T06:00:00+00:00ÚparamsÚ-i_long_exit_activation_confirmation_thresholdiÚ  )z%(py1)s == -%(py4)szassert %(py7)sr†   zmodels/hybrid9090.jsonz{}zFrozen bundle changedr!   )ÚjsonÚobserver,   r-   r1   r2   r3   r€   r.   r/   r0   Úglobr…   r   ÚloadsÚ	read_textÚ
write_textr4   r5   r6   )rr   rŽ   rp   rq   r8   r‚   Ú@py_assert0rZ   r9   Ú@py_format5r<   rY   r:   r\   r=   Ú@py_format11Ú@py_assert6r[   Ú@py_assert10Ú@py_assert12Ú@py_assert14Ú@py_assert17Ú@py_assert16Ú@py_format19Ú@py_format21ÚmanifestÚ@py_format6Ú@py_format8s                               r>   Ú,test_actual_freeze_no_data_repeat_and_tamperr¢   0   sù  € ÛØ*Ñ€Hˆf�dØ×Ñ˜f dÓ+€FØ�(ÑÐ.˜Ð.Ð˜Ñ.×.×.Õ.Ð˜×.×.Ó.Ð×.×.Ò.˜×.×.×.×.×.×.Ó.Ù@¨V°JÒ-?Ó@Ð@Œ3Ð@Ó@Ð@Ñ@×@×@×@×@Õ@Œ3×@×@Ó@Œ3×@×@Ô@Ð@×@×@Ò@Ð@×@×@×@×@×@Ò@Ø×ÑÐ3Ñ˜F DÓ)Ð3Ð)¨VÑ3×3×3Ö3Ð)¨V×3×3×3×3×3Ñ3ˆ8×3×3Ó3ˆ8×3×3Ô3Ð×3×3×3×3×3Ð3˜F×3×3Ó3˜F×3×3×3×3×3Ò3 D×3×3Ó3 D×3×3Ô3Ð)×3×3×3×3×3Ð3¨V×3×3Ó3¨V×3×3×3×3×3×3Õ3Ø*ÐI�V˜NÑ*ÐIÐ*×0Ñ0ÐIÐ1AÐIÑ0Ð1AÓBÐIŒtÐBÓCÐIŒ3ÐCÓDÐIÈÐIÐDÈÑI×I×IÖIÐDÈ×I×I×I×I×IÑIŒ3×I×IÓIŒ3×I×I×I×I×IÒIŒt×I×IÓIŒt×I×I×I×I×IÒI�V×I×IÓI�V×I×IÔI˜N×I×IÒIÐ0×I×IÒIÐ1A×I×IÒIÐB×I×IÒIÐC×I×IÒIÐD×I×IÒIÈ×I×I×I×I×I×I×I×IØ�z‰z˜6 /Ñ1×<Ñ<Ó>Ó?€HØÐ'Ñ(ÐGÐ,GÐGÐ(Ð,GÑG×G×GÕGÐ(Ð,G×G×GÓGÐ(×G×GÒGÐ,G×G×G×G×G×G×GÓGØ�JÑ Ñ" 8Ñ,Ð-\Ñ]ÐeÐbeÐeÐbeÐaeÐeÐ]ÐaeÑe×e×eÕeÐ]Ðae×e×eÓeÐ]×e×eÒeÐbe×e×e×e×e×e×eÕeØÐ$Ñ$×0Ñ0°Ô6Ü	�‰”zÐ)@Ö	AØ×Ñ˜ Ô&÷ 
B×	AÑ	Aús   Ø3YÙYc                 ó†
  — | \  }}}|j                  ||«       |j                  «       j                  «       j                  «       }t	        j
                  |«      }t	        j                  ddd¬«      }t	        j                  |j                  dg   gt        |«      z  d¬«      }	|j                  d«      j                  d	«      d
z  |	d<   |dz  }
|
j                  dj                  |d d «      dz   |	j                  dd¬«      z   «       |j                  |dd„ «       |j                  ||
«      }|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/        j0                  «       v st!        j2                  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"   D «       }t5        |«      }|s•d#d$t/        j0                  «       v st!        j2                  t4        «      rt!        j$                  t4        «      nd$t!        j$                  |«      t!        j$                  |«      d%œz  }t'        t!        j(                  |«      «      ‚d x}}d&„ |d"   D «       }t5        |«      }|s•d#d$t/        j0                  «       v st!        j2                  t4        «      rt!        j$                  t4        «      nd$t!        j$                  |«      t!        j$                  |«      d%œz  }t'        t!        j(                  |«      «      ‚d 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}}|	j7                  «       }|j8                  d*xx   d+z  cc<   |
j                  dj                  |d d «      dz   |j                  dd¬«      z   «       t+        j:                  t<        d,¬-«      5  |j                  ||
«       d d d «       y # 1 sw Y   y xY w).Nú2026-08-21 12:00z2026-08-24 00:00r   ©r
   éþÿÿÿT©Úignore_indexr   r   r   r   zsynthetic.csvÚ
éÿÿÿÿF©r   Úheaderrc   c                  ó0   — t        j                  dd¬«      S )Nz2026-08-24 01:00r   r   re   rf   r`   r>   rg   zVtest_synthetic_forward_extension_is_continuous_and_cannot_be_revised.<locals>.<lambda>L   rh   r`   rt   Ú	observingr   ru   rv   rw   r   Úcalendar_daysg      ü?©zL%(py1)s == %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.approx
}(%(py7)s)
}r4   ©r   r   Úpy5r†   rO   rP   rQ   c              3   ó,   K  — | ]  }|d    dk(  –— Œ y­w)rt   rT   Nrf   rz   s     r>   r}   zWtest_synthetic_forward_extension_is_continuous_and_cannot_be_revised.<locals>.<genexpr>P   s   è ø€ ÐRÑ?Q¸!ˆq�‰{Ð5Õ5Ñ?Qùs   ‚r~   r   r€   r�   c              3   ó0   K  — | ]  }|d    d   du –— Œ y­w)ry   Úcarry_inFNrf   rz   s     r>   r}   zWtest_synthetic_forward_extension_is_continuous_and_cannot_be_revised.<locals>.<genexpr>Q   s!   è ø€ ÐMÑ:L°Qˆq�‰|˜JÑ'¨5Ô0Ñ:Lùs   ‚Úpromotions_allowed)Úis)z%(py1)s is %(py4)s)é   r   g)\�Âõ(ð?rD   r!   )r�   r’   ÚstripÚ
splitlinesr$   Úread_csvr&   ÚconcatÚilocr   r'   r(   r“   Újoinr)   rk   r,   r-   r1   r2   r3   r4   Úapproxr.   r/   r0   r€   rE   rF   r5   r6   )rr   rn   ro   rp   rq   r8   Úrawr7   ÚtimesÚextraÚextendedr‚   r”   rZ   r9   r•   r<   r;   r—   r[   r]   r^   rY   Úchangeds                           r>   ÚDtest_synthetic_forward_extension_is_continuous_and_cannot_be_revisedrÅ   @   s•  € Ø*Ñ€Hˆf�dØ×Ñ�V˜TÔ"ð �.‰.Ó
×
 Ñ
 Ó
"×
-Ñ
-Ó
/€CÜ�K‰K˜Ó€EÜ�M‰MÐ,Ð.@ÀtÔL€EÜ�I‰I�u—z‘z 2 $Ñ'Ð(¬3¨u«:Ñ5ÀDÔI€EØ—M‘M $Ó'×.Ñ.¨wÓ7¸5Ñ@€Eˆ&�MØ˜Ñ'€HØ×Ñ˜Ÿ	™	 # c r (Ó+¨DÑ0°·±ÀEÐRW°Ó1XÑXÔYØ×Ñ˜ )Ñ-_Ô`Ø×Ñ˜f hÓ/€FØ�(ÑÐ*˜{Ð*Ð˜{Ñ*×*×*Õ*Ð˜{×*×*Ó*Ð×*×*Ò*˜{×*×*×*×*×*×*Ó*Ø�/Ñ"Ð9¤f§m¡mÐ9°DÐ9¡m°DÓ&9Ð9Ð"Ð&9Ñ9×9×9Õ9Ð"Ð&9×9×9Ó9Ð"×9×9×9×9×9Ð9¤f×9×9Ó9¤f×9×9Ô9 m×9×9Ò9°D×9×9Ò9Ð&9×9×9×9×9×9×9×9ÙR¸vÀjÒ?QÓRÐRŒ3ÐRÓRÐRÑR×R×R×R×RÕRŒ3×R×RÓRŒ3×R×RÔRÐR×R×RÒRÐR×R×R×R×R×RÒRÙM¸&ÀÒ:LÓMÐMŒ3ÐMÓMÐMÑM×M×M×M×MÕMŒ3×M×MÓMŒ3×M×MÔMÐM×M×MÒMÐM×M×M×M×M×MÒMØÐ&Ñ'Ð0¨5Ð0Ð'¨5Ð0×0×0Õ0Ð'¨5×0×0Ó0Ð'×0×0Ò0¨5×0×0×0×0×0×0Ó0Ø�j‰j‹l€GØ‡K�K�	Ó˜dÑ"ÓØ×Ñ˜Ÿ	™	 # c r (Ó+¨DÑ0°·±ÀeÐTY°Ó1ZÑZÔ[Ü	�‰”z¨Ö	3Ø×Ñ˜ Ô*÷ 
4×	3Ñ	3ús   ÔT7Ô7U c                 óz  ‡‡‡‡— | \  }}}|j                  «       j                  «       j                  «       Št        j                  |«      Št        j
                  d«      Šˆfd„}|j                  |d|«       ˆˆˆˆfd„}|j                  |dd„ «       |j                  | |d«      «      d   d	   }|d
   d   }	|	s8ddt        j                  |	«      iz  }
t        t        j                  |
«      «      ‚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}}|j                  |dd„ «       |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}}|d
   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 )Nz2026-08-22 06:00c                 óV   •— t        j                  | j                  ‰k  dd«      | d<   | S )Ng     @�@g     8�ÀÚactivation_score)ÚnpÚwherer   )r7   rŒ   Ústarts     €r>   Úknown_scoreszQtest_observation_updates_retain_open_position_and_entry_fee.<locals>.known_scores_   s)   ø€ Ü$&§H¡H¨U¯Z©Z¸%Ñ-?ÀÈÓ$NˆÐ Ñ!Øˆr`   Úgenerate_signalsc                 ó°  •— t        j                  d| d¬«      }t        j                  ‰j                  dg   gt	        |«      z  d¬«      }|j                  d«      j                  d«      d	z  |d
<   t        j                  |‰k  dd«      |d<   |d   |d<   ‰dz  }|j                  dj                  ‰d d «      dz   |j                  dd¬«      z   «       |S )Nr¤   r   r¥   r¦   Tr§   r   r   r   r   r   g     €[@r   Úhighzposition.csvr©   rª   Fr«   )r$   r&   r¼   r½   r   r'   r(   rÉ   rÊ   r“   r¾   r)   )ÚlastrÁ   rÂ   ÚpathrG   rÀ   rË   rn   s       €€€€r>   ÚcapturezLtest_observation_updates_retain_open_position_and_entry_fee.<locals>.captured   sÈ   ø€ Ü—‘Ð0°$¸TÔBˆÜ—	‘	˜8Ÿ=™=¨"¨Ñ.Ð/´#°e³*Ñ<È4ÔPˆØŸ™ dÓ+×2Ñ2°7Ó;¸uÑDˆˆf‰ÜŸ™ %¨5¡.°$¸Ó=ˆˆg‰Ø˜g™ˆˆf‰Ø˜.Ñ(ˆØ�‰˜Ÿ	™	 # c r (Ó+¨DÑ0°·±ÀEÐRW°Ó1XÑXÔYØˆr`   rc   c                  ó0   — t        j                  dd¬«      S )Nz2026-08-22 12:01r   r   re   rf   r`   r>   rg   zMtest_observation_updates_retain_open_position_and_entry_fee.<locals>.<lambda>m   rh   r`   z2026-08-22 12:00r~   r   ry   Úopen_at_endzassert %(py1)sr   ÚentriesrC   r   ru   rv   rw   r   c                  ó0   — t        j                  dd¬«      S )Nz2026-08-22 18:01r   r   re   rf   r`   r>   rg   zMtest_observation_updates_retain_open_position_and_entry_fee.<locals>.<lambda>q   rh   r`   z2026-08-22 18:00Úcompleted_tradesÚpnl_pctg      "@r°   r4   r±   rP   rQ   )r’   r¹   rº   r$   r»   r+   rk   r�   r,   r1   r2   r3   r-   r4   r¿   r.   r/   r0   )rr   rn   ro   rp   rq   r8   rÌ   rÒ   Úfirstr”   Ú@py_format2rZ   r9   r•   r<   Úsecondr;   r—   r[   r]   r^   rG   rÀ   rË   s    `                   @@@r>   Ú;test_observation_updates_retain_open_position_and_entry_feerÜ   Z   sR  û€ Ø*Ñ€Hˆf�dØ
�.‰.Ó
×
 Ñ
 Ó
"×
-Ñ
-Ó
/€CÜ�{‰{˜4Ó €HÜ�L‰LÐ+Ó,€Eôð ×Ñ˜Ð"4°lÔC÷ð ×Ñ˜ )Ñ-_Ô`Ø×Ñ˜V¡WÐ-?Ó%@ÓAÀ*ÑMÈaÑP€EØ�Ñ˜MÑ*Ð*Ñ*×*×*Ð*Ð*×*×*×*×*×*Ø�Ñ˜IÑ&Ð+¨!Ð+Ð&¨!Ñ+×+×+Õ+Ð&¨!×+×+Ó+Ð&×+×+Ò+¨!×+×+×+×+×+×+Ó+Ø×Ñ˜ )Ñ-_Ô`Ø×Ñ˜f¡gÐ.@Ó&AÓBÀ:ÑNÈqÑQ€FØÐ$Ñ%Ð*¨Ð*Ð%¨Ñ*×*×*Õ*Ð%¨×*×*Ó*Ð%×*×*Ò*¨×*×*×*×*×*×*Ó*Ø�)Ñ˜YÑ'Ð<¬6¯=©=Ð<¸Ð<©=¸Ó+<Ð<Ð'Ð+<Ñ<×<×<Õ<Ð'Ð+<×<×<Ó<Ð'×<×<×<×<×<Ð<¬6×<×<Ó<¬6×<×<Ô<¨=×<×<Ò<¸×<×<Ò<Ð+<×<×<×<×<×<×<×<Ð<r`   )Úbuiltinsr.   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter,   ÚnumpyrÉ   Úpandasr$   r4   r?   rI   r_   Úfixturerr   r¢   rÅ   rÜ   rf   r`   r>   Ú<module>rä      sJ   ðß  „ Ó Û Û òEò
0ò9ð ‡�ñ"ó ð"ò'ò +ó4=r`   