Ë
    ¾qµj)6  ã                  óÞ  — d Z ddlmZ ddlZddlZddlmZ ddlZddlZddl	Z
ddlZ ee«      j                  «       j                  d   Zej"                  j%                  d ee«      «       ddlmZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z) edz  Z*g d¢Z+dZ,dd„Z-dd„Z.dd„Z/d d„Z0d!d„Z1d"d„Z2d#d„Z3d$d„Z4d%d„Z5d&d„Z6d'd„Z7d(d„Z8e9dk(  r e8«        yy))zJFreeze BTC6H research candidates and append observations without retuning.é    )ÚannotationsN)ÚPathé   )ÚSCORE_STARTÚTRAIN_START)Únet_returnsÚwindow_metrics)Údigest)Úassess_stabilityÚstability_periods)Úconfirmed_score_structure)Ú_score_to_signalsÚgenerate_signals)Ú	evaluatorÚFROZENÚ
MODEL_HASHÚhashesÚprotected_hashesz1results/mlp_threshold_comparison_2026_09_21/final)z	config.pyzstrategies/mlp_accounting.pyzstrategies/mlp_comparison.pyz%strategies/mlp_execution_stability.pyz!strategies/strategy_mlp_scores.pyz(strategies/strategy_activation_scores.pyz'strategies/library_activation_scores.pyz#strategies/mlp_temporal_features.pyz!strategies/mlp_score_structure.pyztools/run_mlp_deep_sweep.pyz&tools/run_mlp_entry_loss_experiment.pyztools/mlp_observation.pyz)docs/mlp_validation_upgrade_2026_09_24.md)Ú	incumbentÚ
hybrid9090Úhigher_low_3c                 óB   — t         j                  j                  d¬«      S )NÚUTC)Útz)ÚpdÚ	TimestampÚnow© ó    ú@/Users/jameslopez/projects/TradingBot25/tools/mlp_observation.pyÚnow_utcr!   !   s   € Ü�<‰<×Ñ˜uÐÓ%Ð%r   c                óZ   — | j                  t        j                  |ddd¬«      dz   «       y )NTé   F)Ú	sort_keysÚindentÚ	allow_nanÚ
)Ú
write_textÚjsonÚdumps)ÚpathÚvalues     r    Úsaver-   %   s#   € Ø‡O�O”D—J‘J˜u°¸QÈ%ÔPÐSWÑWÕXr   c                ó¶  — dd l }t        j                  |j                  | «      «      }|j                  j
                  j                  «       j
                  j                  «       |_        t        j                  j                  j                  |j                  «      rdnd }t        j                  |j                  |d¬«      j                  j                  d «      |d<   t        |«      dk  sf|j                  j!                  «       j#                  «       s>|j                  j%                  «       j#                  «       s|j                  j&                  st)        d«      ‚|j*                  d d j-                  «       j/                  d¬	«      }|j                  t        j0                  d
¬«      z   |j3                  d «      kD  j#                  «       rt)        d«      ‚|S )Nr   ÚsT)ÚunitÚutcÚtimer#   z!Invalid chart timestamps/coverageéÿÿÿÿ)Údropé   ©Úhoursz/Retained chart contains unclosed or future bars)Úior   Úread_csvÚBytesIOÚcolumnsÚstrÚlowerÚstripÚapiÚtypesÚis_numeric_dtyper2   Úto_datetimeÚdtÚtz_localizeÚlenÚisnaÚanyÚ
duplicatedÚis_monotonic_increasingÚ
ValueErrorÚilocÚcopyÚreset_indexÚ	TimedeltaÚ
tz_convert)ÚrawÚasofr8   Úframer0   s        r    Ú
read_chartrS   )   sG  € ÛÜ�K‰K˜Ÿ
™
 3›Ó(€EØ—M‘M×%Ñ%×+Ñ+Ó-×1Ñ1×7Ñ7Ó9€E„MÜ—&‘&—,‘,×/Ñ/°·
±
Ô;‰3À€DÜ—N‘N 5§:¡:°D¸dÔC×FÑF×RÑRÐSWÓX€Eˆ&�MÜ
ˆ5ƒz�A‚~˜Ÿ™Ÿ™Ó*×.Ñ.Ô0°E·J±J×4IÑ4IÓ4K×4OÑ4OÔ4QÐY^×YcÑYc×Y{ÒY{ÜÐ<Ó=Ð=Ø�J‰J�s˜ˆO× Ñ Ó"×.Ñ.°DÐ.Ó9€EØ�
‰
”R—\‘\¨Ô*Ñ*¨T¯_©_¸TÓ-BÑB×GÑGÔIÜÐJÓKÐKØ€Lr   c           
     ón  — g }| dg|z      j                  dd ¬«      D ]�  }t        j                  |d   «      j                  «       }|dd  D �cg c]  }t	        |«      j                  «       ‘Œ }}|j                  |t        t        j                  |d¬«      j                  «       «      g«       Œ’ |S c c}w )Nr2   F)ÚindexÚnamer   r   )Ú,Ú:)Ú
separators)Ú
itertuplesr   r   Ú	isoformatÚfloatÚhexÚappendr
   r)   r*   Úencode)rR   r;   ÚresultÚrowr2   ÚvÚvaluess          r    Ú
row_hashesrd   7   s£   € Ø€FØ�f�X Ñ'Ñ(×3Ñ3¸%ÀdÐ3ÖKˆÜ�|‰|˜C ™FÓ#×-Ñ-Ó/ˆØ*-¨a¨b©'Ó2©' Q”%˜“(—,‘,•.¨'ˆÐ2Ø�‰�tœV¤D§J¡J¨vÀ*Ô$M×$TÑ$TÓ$VÓWÐXÕYð Lð €Mùò 3s   Á B2c                óZ   ‡— t        |«      Št        ˆfd„| D «       «      rt        d«      ‚y )Nc              3  óL   •K  — | ]  \  }}‰j                  |«      |k7  –— Œ y ­w©N)Úget)Ú.0r2   r,   Úlookups      €r    Ú	<genexpr>z"require_history.<locals>.<genexpr>B   s$   øè ø€ Ð
A¹©¨¨uˆ6�:‰:�dÓ˜uÕ$¹ùs   ƒ!$zRCaptured history changed or is missing; preserve this export for a revision review)ÚdictrG   rJ   )ÚexpectedÚactualrj   s     @r    Úrequire_historyro   @   s,   ø€ Ü�&‹\€FÜ
Ó
A¹Ó
AÔAÜÐmÓnÐnð Br   c                ó*   — | dk  ry| dk\  r|dk\  rdS dS )Nr   Úawaiting_dataé´   é
   Úready_for_reviewÚinsufficient_coverager   )ÚdaysÚ	completeds     r    Úcoverage_statusrx   F   s%   € Øˆq‚yØØ!%¨¢°¸b²ÐÐ]ÐF]Ð]r   c                ó   ‡ — ˆ fd„}|S )Nc                ó”   •— ‰dk(  rd n/t        | j                  j                  «       ‰‰¬«      j                  }t	        | |||||¬«      S )Nr   )ÚleftÚright)Ú
entry_gate)r   Úactivation_scoreÚto_numpyÚbullish_stater   )ÚscoredÚparamsÚstochÚcloseÚhighÚgateÚwidths         €r    Úsignalzpolicy_signal.<locals>.signalM   sK   ø€ Ø ’z‰tÔ'@Ø×#Ñ#×,Ñ,Ó.°UÀ%ô(IßIVÉð 	ä  ¨°¸¸tÐPTÔUÐUr   r   )r‡   rˆ   s   ` r    Úpolicy_signalr‰   L   s   ø€ ôVð €Mr   c                óâ  — t        t        |«      t        | j                  «      z
  «      }|rt        d|› �«      ‚| j                  | j
                  t        j                  t        «      k\     }|j                  s:t        j                  ||   j                  t        ¬«      «      j                  «       st        d«      ‚|ddg   dk  j                  «       j                  «       rt        d«      ‚y )NzMissing observation features: )Údtypez'Missing or nonfinite observation valuesr„   r…   r   zNonpositive observation prices)ÚsortedÚsetr;   rJ   Úlocr2   r   r   r   ÚemptyÚnpÚisfiniter   r\   ÚallrG   )rR   ÚrequiredÚmissingÚmeasureds       r    Úvalidate_featuresr–   T   sÃ   € Ü”S˜“]¤S¨¯©Ó%7Ñ7Ó8€GÙÜÐ9¸'¸ÐCÓDÐDØ�y‰y˜Ÿ™¤r§|¡|´KÓ'@Ñ@ÑA€HØ‡~‚~œRŸ[™[¨°(Ñ);×)DÑ)DÌ5Ð)DÓ)QÓR×VÑVÔXÜÐBÓCÐCØ�'˜6Ð"Ñ# qÑ(×-Ñ-Ó/×3Ñ3Ô5ÜÐ9Ó:Ð:ð 6r   c                ó,  — t        j                  | dz  j                  «       «      }|j                  «       D ]2  \  }}t	        | |z  j                  «       «      |k7  sŒ&t        d|› �«      ‚ t        j                  | dz  j                  «       «      }|d   D �cg c]  }|d   ‘Œ	 c}t        t        «      k7  rt        d«      ‚|d   j                  «       D ]6  \  }}t	        t        |z  j                  «       «      |k7  sŒ*t        d|› �«      ‚ |S c c}w )	Nú	seal.jsonzFrozen bundle changed: úmanifest.jsonÚpoliciesÚidzUnexpected frozen policiesÚsource_hasheszFrozen evaluator source drift: )
r)   ÚloadsÚ	read_textÚitemsr
   Ú
read_bytesrJ   ÚlistÚIDSÚREPO)ÚbundleÚsealr+   rm   ÚmanifestÚps         r    Úcheck_bundler¨   _   s  € Ü�:‰:�v Ñ+×6Ñ6Ó8Ó9€DØŸ*™*ž,‰ˆˆhÜ�6˜D‘=×,Ñ,Ó.Ó/°8Ó;ÜÐ6°t°fÐ=Ó>Ð>ð 'ô �z‰z˜6 OÑ3×>Ñ>Ó@ÓA€HØ! *Ò-Ó.Ñ-�Aˆˆ$‹Ð-Ñ.´$´s³)Ò;ÜÐ5Ó6Ð6Ø" ?Ñ3×9Ñ9Ö;‰ˆˆhÜ”4˜$‘;×*Ñ*Ó,Ó-°Ó9ÜÐ>¸t¸fÐEÓFÐFð <ð €Oùò /s   ÂDc                ó˜  ‡&— | j                  «       rt        d«      ‚t        «       }i }dD ]z  }t        j                  t
        j                  |gt        dd¬«      }t        |j                  |j                  |j                  z   ¬«      ||<   |j                  sŒnt        d|› �«      ‚ t        «       }|j                  |j                  d«      «      Š&t        ˆ&fd„t!        j"                  «       D «       «      s,t%        t'        ‰&d	   «      j)                  «       «      t*        k7  rt        d
«      ‚t-        j.                  t0        dz  j3                  «       «      }t5        d„ |d   D «       «      }|j                  |«      }	t%        t'        |	d	   «      j)                  «       «      |d   k7  rt        d«      ‚|	d   dk7  rt        d«      ‚t7        «       }
|j)                  «       }t9        ||
«      }t;        t        j=                  t-        j.                  t'        ‰&d	   «      j)                  «       «      d   g d¢z   «      «      }|	j?                  d«      s‰&j?                  d«      r|jA                  d«       tC        ||«       | jE                  d¬«       | dz  jE                  «        g }g }d‰&dfd|	dfd‰&dffD �])  \  }}}d|› d�}t'        |d	   «      j)                  «       }| |z  jG                  |«       |j#                  «       D ��ci c]  \  }}||jH                  v sŒ|d	k7  sŒ||“Œ }}}t        |||t%        |«      |¬«      }|jA                  |«       t        |tK        | |z  «      tL        ¬ «      }tO        |jP                  |jR                  tU        jV                  tX        «      k\     j[                  «       fi |¤Ž}t]        |«      }t_        |||j`                  jc                  «       |jd                  jc                  «       |jf                  jc                  «       |ti        «       «      } ||j[                  «       ||j`                  jc                  «       |jd                  jc                  «       |jf                  jc                  «       «      }|jA                  t        |d|ti        «       D ��� cg c]  \  }}} t        d<d!|itk        ||| ¬"«      ¤Ž‘Œ! c} }}¬#«      «       �Œ, t7        «       }!t        d$|!jm                  «       |!jo                  d%«      tU        jp                  d&¬'«      z   jm                  «       d(dd)d*|t%        |«      |jR                  jr                  d+   jm                  «       tu        tv        D �"cg c]  }"t        |"z  ‘Œ c}"«      |d,d-¬.«      }#ty        | d/z  |#«       ty        | d0z  t{        ||«      «       ty        | d1z  |«       ty        | d2z  |«       ty        | d3z  |«       tv        D ]M  }$| d4z  |$z  }%|%j|                  jE                  dd¬5«       |%jG                  t        |$z  j)                  «       «       ŒO |t        «       k7  s|j)                  «       |k7  rt        d6«      ‚ty        | d7z  t        | j�                  d8«      «      D �"ci c]E  }"|"jƒ                  «       sŒtK        |"j…                  | «      «      t%        |"j)                  «       «      “ŒG c}"«       t‡        | «       t‰        t-        jŠ                  t        tK        | «      |#d9   d:t;        tŒ        «      ¬;«      «      «       y c c}}w c c} }}w c c}"w c c}"w )=Nz9Freeze directory already exists; never overwrite a freeze)ztools/sync_params.pyztools/check_pine.pyT)ÚcwdÚtextÚcapture_output)Ú
returncodeÚoutputzPreflight failed: Ú6Hc              3  ó4   •K  — | ]  \  }}‰|   |k7  –— Œ y ­wrg   r   )ri   Úkrb   r   s      €r    rk   zfreeze.<locals>.<genexpr>y   s   øè ø€ Ð
8©¡  Aˆ9�Q‰<˜1Õ©ùs   ƒÚmlp_weights_filezOriginal incumbent changedzsummary.jsonc              3  ó8   K  — | ]  }|d    dk(  sŒ|d   –— Œ y­w)ÚmodelÚhybrid_grouped_v1_seed9090Úbest_rankedNr   )ri   Úms     r    rk   zfreeze.<locals>.<genexpr>|   s$   è ø€ ÐpÑ0A¨1ÀQÀwÁZÐSoÓEo�a˜Õ&Ñ0Aùs   ‚�
ÚmodelsÚArtifact_SHA256z Original hybrid artifact changedÚ-i_long_exit_activation_confirmation_thresholdi&ýÿÿz!Original hybrid threshold changedÚfeature_cols)r„   r…   Ústoch_peak_normÚi_mvrv_suppress_bearÚmvrv_regime)Úparentsr   r   r   r   é   zmodels/z.json)r›   r‚   r´   Úmodel_sha256Úentry_pivot_width©r²   Ú_pine_time_startrV   )ÚstartÚend)r›   Úhistorical_onlyÚ	stabilityÚperiodsr   Ú6hr5   r6   ÚCOINBASE_BTCUSDrs   rr   r3   FÚnot_established)ÚversionÚ	frozen_atÚobservation_startÚassetÚ	timeframeÚminimum_completed_tradesÚminimum_daysÚrequired_columnsÚanchor_data_sha256Úlast_anchor_barrœ   rš   Úpromotions_allowedÚparity_statusr™   úanchor_rows.jsonzhistorical_validation.jsonzpreflights.jsonzprotected_hashes.jsonÚsource_snapshot©r¿   Úexist_okz+Protected/input files changed during freezer˜   Ú*rÎ   Úfrozen)r¤   rÎ   Ústatusrš   r   )GÚexistsrJ   r   Ú
subprocessÚrunÚsysÚ
executabler£   rl   r­   ÚstdoutÚstderrr   Únormalise_paramÚload_winnerrG   r   rŸ   r
   r   r    r   r)   r�   Ú	REFERENCErž   Únextr!   rS   r¡   Úfromkeysrh   r^   r–   ÚmkdirÚwrite_bytesÚ
PARAM_COLSr<   r   r   rŽ   r2   r   r   r   rL   r‰   r   r¼   r   r„   r…   r   r	   r[   ÚfloorrN   rK   r   ÚSOURCESr-   rd   ÚparentrŒ   ÚrglobÚis_fileÚrelative_tor¨   Úprintr*   r¢   )'r¤   ÚdataÚ	protectedÚlogsÚscriptrâ   ÚmoduleÚsummaryÚ
hybrid_rowÚhybridrQ   rP   rR   r“   rš   Ú
historicalrV   r‚   r‡   r+   Úmodel_bytesr±   rb   Úfrozen_paramsÚpolicyÚreplay_paramsr�   rˆ   Úreportrn   Únr/   ÚerÎ   r§   r¦   ÚrelativeÚtargetr   s'                                         @r    Úfreezer  m   si  ø€ Ø‡}�}„ÜÐTÓUÐUÜ Ó"€IØ€DÛAˆÜ�n‰nœcŸn™n¨fÐ5¼4ÀdÐ[_Ô`ˆÜ s§~¡~¸c¿j¹jÈ3Ï:É:Ñ>UÔVˆˆV‰Ø�>‹>ÜÐ1°&°Ð:Ó;Ð;ð	 Bô
 ‹[€FØ×&Ñ& v×'9Ñ'9¸$Ó'?Ó@€IÜ
Ó
8¬¯©¬Ó
8Ô8¼FÄ4È	ÐRdÑHeÓCf×CqÑCqÓCsÓ<tô  yCò  =CÜÐ5Ó6Ð6Ü�j‰jœ) nÑ4×?Ñ?ÓAÓB€GÜÑp°¸Ò0AÓpÓp€JØ×#Ñ# JÓ/€FÜŒd�6Ð,Ñ-Ó.×9Ñ9Ó;Ó<À
ÐK\Ñ@]Ò]ÜÐ;Ó<Ð<ØÐ=Ñ>À$ÒFÜÐ<Ó=Ð=Ü‹9€DØ
�/‰/Ó
€CÜ�s˜DÓ!€EÜ”D—M‘M¤$§*¡*¬T°)Ð<NÑ2OÓ-P×-[Ñ-[Ó-]Ó"^Ð_mÑ"nò  rVñ  #Vó  Wó  X€HØ‡z�zÐ(Ô)¨Y¯]©]Ð;QÔ-RØ�‰˜Ô&Ü�e˜XÔ&Ø
‡L�L˜€LÔØˆhÑ×ÑÔØ€HØ€JØ!,¨i¸Ð ;¸lÈFÐTUÐ=VÐYgÐirÐtuÐXvÔwÑˆˆf�eØ˜˜˜eÐ$ˆÜ˜6Ð"4Ñ5Ó6×AÑAÓCˆØ	�$‰×#Ñ# KÔ0Ø*0¯,©,¬.Ôo©.¡$ ! Q¸AÀ×ARÑARÒ<RÐWXÐ\nÓWn˜˜A™¨.ˆÑoÜ˜ m¸4ÌfÐU`ÓNaÐuzÔ{ˆØ�‰˜ÔÜ˜]¼SÀÈÁÓ=MÔ`kÔlˆÜ! %§)¡)¨E¯J©J¼"¿,¹,Ä{Ó:SÑ,SÑ"T×"YÑ"YÓ"[ÑmÐ_lÑmˆÜ˜uÓ%ˆÜ! &¨-¸×9OÑ9O×9XÑ9XÓ9ZØ�L‰L×!Ñ!Ó# V§[¡[×%9Ñ%9Ó%;¸VÔEVÓEXóZˆá˜Ÿ™› }°f×6LÑ6L×6UÑ6UÓ6WÐY_×YeÑYe×YnÑYnÓYpÐrx×r}Ñr}÷  sGñ  sGó  sIó  JˆØ×Ñœ$ $¸ÈÜYjÔYlÕmÑYlÑPUÐPQÐRSÐTU”TÑK˜qÐK¤N°6ÀÈÔ$JÓKÐYlÓmôoö 	pð  xô  “	€IÜ˜A¨×)<Ñ)<Ó)>Ø$Ÿ?™?¨4Ó0´2·<±<ÀaÔ3HÑH×SÑSÓUÐ]nÐz~Ø!#°#ÈÜ! #›;¸¿
¹
¿¹ÈÑ8K×8UÑ8UÓ8WÜ­gÓ6©g¨œd 1›f¨gÑ6Ó7À(Ø Ð0AôC€Hô 	ˆ�Ñ	 Ô*ÜˆÐ"Ñ	"¤J¨u°hÓ$?Ô@ÜˆÐ,Ñ	,¨jÔ9ÜˆÐ!Ñ	! 4Ô(ÜˆÐ'Ñ	'¨Ô3ßˆØÐ+Ñ+¨hÑ6ˆØ�‰×Ñ D°4ÐÔ8Ø×ÑœD ™M×5Ñ5Ó7Õ8ð ð Ô$Ó&Ò&¨$¯/©/Ó*;¸sÒ*BÜÐFÓGÐGÜˆ�Ñ	ÔY_Ð`f×`lÑ`lÐmpÓ`qÔYró  CÑYrÐTUÐvw×vÑvõ  wBœc !§-¡-°Ó"7Ó8¼ÀÇÁÃÓ9OÑOÐYrñ  Cô  DÜ�ÔÜ	Œ$�*‰*”T¤ V£¸ÀÑ8MÐV^ÔimÔnqÓirÔsÓ
tÕuùóA pùô nùò 7ùò Cs*   Ì\5Ì\5Ì%\5Ò/$\;Õ:] Ú]
Ú*4]
c                ó”  — t        | «      }t        «       }|j                  «       }t        ||«      }t	        ||d   «       t        ||d   «      }t        t        j                  | dz  j                  «       «      |«       | dz  }|j                  «       rt        |j                  d«      «      ng }d }	|D ]Í  }
t        j                  |
j                  «       «      }|d   t        | dz  j                  «       «      k7  rt        d«      ‚|d   |	k7  rt        d	«      ‚|d
   j                  «       D ]9  \  }}t        |
j                   |z  j                  «       «      |k7  sŒ0t        d«      ‚ t        |
j                  «       «      }	ŒÏ |r¥t        t        j                  |d   j                   dz  j                  «       «      |«       t        j                  |d   j                  «       «      d   t        |«      k(  r3t        j                  |d   j                   dz  j                  «       «      S t#        j$                  |d   «      j'                  d «      }|j(                  |j*                  |k\     }|j,                  st|j*                  j.                  d   |k7  sM|j*                  j1                  «       j3                  «       t#        j4                  d¬«      k7  j7                  «       rt        d«      ‚g i }}|j,                  rdnC|j*                  j.                  d   t#        j4                  d¬«      z   |z
  j9                  «       dz  }|d   D �]·  }|j,                  r"|j;                  t=        |d   dd d¬«      «       Œ2t=        |d   t?        | |d   z  «      t?        |«      ¬«      }tA        |j(                  |j*                  t#        j$                  tB        «      k\     jE                  «       fi |¤Ž} tG        |d   «      |jE                  «       ||jH                  jK                  «       |jL                  jK                  «       |jN                  jK                  «       «      }tQ        |«      |d<   |j(                  |j*                  |k\     jE                  «       }tS        |t?        |«      ¬ «      }tU        |jV                  jY                  «       «      }|j;                  t=        |d   t[        ||«      ||¬«      «       |||d   <   �Œº t=        |j]                  «       |d!   |d   |j*                  j.                  d   j]                  «       |||j,                  rdnd"d#d$tU        |j*                  j1                  «       j3                  «       t#        j4                  d¬«      kD  jY                  «       «      ¬%«
      }|t_        |«      d&z   d'›z  }|ja                  d(d#¬)«       tc        |dz  |«       tc        |dz  |«       |j                  «       D ]  \  }}|je                  ||› d*�z  d#¬+«       Œ  t        | «       tc        |d,z  t=        t        |«      t        | dz  j                  «       «      |	|jg                  «       D �ci c]7  }|ji                  «       sŒ|jj                  t        |j                  «       «      “Œ9 c}¬-«      «       |S c c}w ).NrÔ   rÙ   Úobservationsz*/receipt.jsonÚbundle_seal_sha256r˜   z0Observation belongs to a different frozen bundleÚprevious_receipt_sha256zObservation chain changedÚfileszPrevious observation changedr3   z	rows.jsonÚdata_sha256zreport.jsonrÏ   r   r5   r6   z@Missing forward bars; cannot evaluate a continuous frozen policyg        i€Q rš   r›   rq   )r›   rß   ÚmetricsÚcompleted_tradesr‚   r´   rÃ   rÂ   Ú
net_return)rÅ   rÎ   Ú	observingFrÌ   )
Úobserved_atrÎ   rÏ   Úlast_closed_barÚcalendar_daysrš   rß   r×   rØ   Úhistorical_gap_countr   Ú06dTrÛ   z	_bars.csv)rU   zreceipt.json)r  r  r  r  )6r¨   r!   r    rS   r–   rd   ro   r)   r�   rž   rà   rŒ   Úglobr
   rJ   rŸ   rñ   r   r   rO   rŽ   r2   r�   rK   ÚdiffÚdropnarN   rG   Útotal_secondsr^   rl   r<   r   r   rL   r‰   r¼   r   r„   r…   r   r	   ÚintÚexecute_exitÚsumrx   r[   rE   rì   r-   Úto_csvÚiterdirró   rV   )r¤   rö   r¦   rQ   rP   rR   Úactual_hashesr
  ÚpreviousÚlast_digestÚpriorÚ	prior_rowr+   rm   rÅ   ÚforwardÚreportsÚtracesrv   r  r‚   r�   Útracer  rw   r  r®   rV   r§   s                                r    Úobserver*  ´   sø  € Ü˜FÓ#€HÜ‹9€DØ
�/‰/Ó
€CÜ�s˜DÓ!€EÜ�e˜XÐ&8Ñ9Ô:Ü˜u hÐ/AÑ&BÓC€MÜ”D—J‘J Ð'9Ñ 9×DÑDÓFÓGÈÔWØ˜NÑ*€LØ>J×>QÑ>QÔ>SŒv�l×'Ñ'Ð(8Ó9Ô:ÐY[€HØ€KÛˆÜ—J‘J˜uŸ™Ó0Ó1ˆ	ØÐ)Ñ*¬f°f¸[Ñ6H×5TÑ5TÓ5VÓ.WÒWÜÐOÓPÐPØÐ.Ñ/°;Ò>ÜÐ8Ó9Ð9Ø'¨Ñ0×6Ñ6Ö8‰NˆD�(Ü�u—|‘| DÑ(×4Ñ4Ó6Ó7¸8ÓCÜ Ð!?Ó@Ð@ð 9ô ˜U×-Ñ-Ó/Ó0‰ð ñ ÜœŸ
™
 H¨R¡L×$7Ñ$7¸Ñ$C×#NÑ#NÓ#PÓQÐS`ÔaÜ�:‰:�h˜r‘l×,Ñ,Ó.Ó/°Ñ>Ä&ÈÃ+ÒMÜ—:‘:˜x¨™|×2Ñ2°=Ñ@×KÑKÓMÓNÐNÜ�L‰L˜Ð"5Ñ6Ó7×BÑBÀ4ÓH€EØ�i‰i˜Ÿ
™
 eÑ+Ñ,€GØ�=Š=˜gŸl™l×/Ñ/°Ñ2°eÒ;ÀÇÁ×@QÑ@QÓ@S×@ZÑ@ZÓ@\Ô`b×`lÑ`lÐstÔ`uÑ@u×?zÑ?zÔ?|ÜÐ[Ó\Ð\Ø˜"ˆV€GØ—’‰2 W§\¡\×%6Ñ%6°rÑ%:¼R¿\¹\ÐPQÔ=RÑ%RÐUZÑ%Z×$iÑ$iÓ$kÐlqÑ$q€DØ˜:Õ&ˆØ�=Š=Ø�N‰Nœ4 6¨$¡<¸ÐQUÐhiÔjÔkØÜ�f˜XÑ&¼¸VÀFÈ7ÁOÑ=SÓ9TÔgjÐkpÓgqÔrˆÜ! %§)¡)¨E¯J©J¼"¿,¹,Ä{Ó:SÑ,SÑ"T×"YÑ"YÓ"[ÑfÐ_eÑfˆØ:”˜fÐ%8Ñ9Ó:¸6¿;¹;»=È&ÐRX×RhÑRh×RqÑRqÓRsÐu{÷  vBñ  vB÷  vKñ  vKó  vMð  OU÷  OZñ  OZ÷  Ocñ  Ocó  Oeó  fˆÜ)¨%Ó0ˆˆlÑØ—	‘	˜%Ÿ*™*¨Ñ-Ñ.×3Ñ3Ó5ˆÜ  ¬c°%«jÔ9ˆÜ˜×*Ñ*×.Ñ.Ó0Ó1ˆ	Ø�‰”t˜v d™|´OÀDÈ)Ó4TÐ^eð  yBô  Cô  	DØ$ˆˆv�d‰|Óð 'ô ˜dŸn™nÓ.¸(À;Ñ:OÐckÐlñ  dAØŸ
™
Ÿ™¨Ñ+×5Ñ5Ó7ÀtÐV]Ø")§-¢-‰°[ÐUZØ'¼cÀ5Ç:Á:Ç?Á?ÓCT×C[ÑC[ÓC]Ô`b×`lÑ`lÐstÔ`uÑCu×BzÑBzÓB|Ó>}ô€Fð œs 8›}¨Q™¨sÐ3Ñ4€FØ
‡L�L˜¨€LÔ.Üˆ�Ñ	˜vÔ&Üˆ�Ñ	˜]Ô+Ø—|‘|–~‰ˆˆeØ�‰�V˜t˜f IÐ.Ñ.°eˆÕ<ð &ä�ÔÜˆ�Ñ	¤´¸³ÔQWÐY_Ð`kÑYk×XwÑXwÓXyÓQzØ +Ð[a×[iÑ[iÔ[kÓ3{Ñ[kÐVWÐop×oxÑoxÕoz°A·F±F¼6À!Ç,Á,Ã.Ó;QÑ4QÐ[kÑ3{ô!}ô ~à€Mùò 4|s   Ù;[Ú&[c            	     ó<  — t        j                  t        ¬«      } | j                  dddg¬«       | j                  dt        d¬«       | j                  d	t        t
        d
z  ¬«       | j                  «       }|j                  dk(  r=t        |j                  j                  «       |j                  j                  «       «       y t        t        j                  t        |j                  j                  «       |j                  j                  «       «      d¬«      «       y )N)ÚdescriptionÚcommandr  r*  )Úchoicesz--bundleT)Útyper“   z--dataz!data/mlp/COINBASE_BTCUSD, 360.csv)r/  Údefaultr#   )r%   )ÚargparseÚArgumentParserÚ__doc__Úadd_argumentr   r£   Ú
parse_argsr-  r  r¤   Úresolverö   rõ   r)   r*   r*  )ÚparserÚargss     r    Úmainr9  ð   sÍ   € Ü×$Ñ$´Ô9€FØ
×Ñ˜	¨H°iÐ+@ÐÔAØ
×Ñ˜
¬¸ÐÔ=Ø
×Ñ˜¤t´TÐ:]Ñ5]ÐÔ^Ø×ÑÓ€DØ‡|�|�xÒÜˆt�{‰{×"Ñ"Ó$ d§i¡i×&7Ñ&7Ó&9Õ:äŒd�j‰jœ §¡×!4Ñ!4Ó!6¸¿	¹	×8IÑ8IÓ8KÓLÐUVÔWÕXr   Ú__main__)Úreturnúpd.Timestamp)r+   r   r,   Úobjectr;  ÚNone)rP   ÚbytesrQ   r<  r;  úpd.DataFrame)rR   r@  r;   ú	list[str]r;  zlist[list[str]])rm   r¡   rn   r¡   r;  r>  )rv   r\   rw   r  r;  r<   )r‡   r  )rR   r@  r“   rA  r;  r>  )r¤   r   r;  rl   )r¤   r   rö   r   r;  r>  )r¤   r   rö   r   r;  rl   )r;  r>  ):r3  Ú
__future__r   r1  r)   Úpathlibr   rá   rã   Únumpyr�   Úpandasr   Ú__file__r6  r¿   r£   r+   Úinsertr<   Úconfigr   r   Ústrategies.mlp_accountingr   r	   Ústrategies.mlp_comparisonr
   Ú"strategies.mlp_execution_stabilityr   r   Ústrategies.mlp_score_structurer   Ústrategies.strategy_mlp_scoresr   r   Ú#tools.run_mlp_entry_loss_experimentr   r   r   r   r   ré   rð   r¢   r!   r-   rS   rd   ro   rx   r‰   r–   r¨   r  r*  r9  Ú__name__r   r   r    Ú<module>rP     sÝ   ðÙ PÝ "ã Û Ý Û Û 
ã Û áˆHƒ~×ÑÓ×'Ñ'¨Ñ*€Ø ‡�‡��‘3�t“9Ô ß +ß AÝ ,ß RÝ Dß Nß gÕ gàÐFÑF€	òM€ð 2€ó&óYóóóoó^óó;óóDvóN9óx	Yð ˆzÒÙ…Fð r   