Ë
    WM±j¤3  ã                  ó  — 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ddlZ ee«      j                  «       j                   j                   Ze	j$                  j'                  d ee«      «       ddlmZmZmZ ddlmZmZmZ ddlmZ ddlm Z  dd	l!m"Z"m#Z# d
Z$dZ%dZ&dd„Z'dd„Z(dd„Z)dd„Z*e+dk(  rK ejX                  e ¬«      Z-e-j]                  deedz  ¬«        e*e-j_                  «       j`                  «       yy)zBBounded BTC 4H ATR-stop screen. No promotion or production writes.é    )ÚannotationsN)ÚPath)ÚSCORE_STARTÚ	WFO_FOLDSÚ	OOS_START)Úevent_studyÚreplay_stopÚ
volatility)Ú_score_to_signals)Ú
load_input)ÚdigestÚwindow_metricsz/docs/mlp_volatility_stop_protocol_2026_09_21.mdz
2020-12-31)Úatr_5Úatr_7_5c                ó®  — | j                   t        j                  t        «      k\  | j                   t        j                  d«      k  z  }|j                  |   j                  «       }t        |«      r;t        j                  |«      j                  «       rt        j                  |«      dk  rt        d«      ‚t        | |t        t        ¬«      \  }}||j                  j                  dd¬«      j!                  t"        «      z  }|j%                  «       st        d«      ‚t'        t        j                  |«      «      }dd	i}	i }
t)        t*        d
«      D ]¹  \  }}||z  }t        j,                  |j                  j                  «       |z  dd«      }t'        t        j.                  || j0                  ¬«      j                  d«      |   j3                  «       «      }||	|<   t        j4                  t        | «      |«      |	d|z   <   |||dœ|
|<   Œ» |	t        t        t7        |j9                  «       «      t7        |j9                  «       «      |dd|d   |
dœ	fS )zJOnly training bars enter any estimated constant, including control widths.z
2021-01-01r   zInvalid training volatility)ÚstartÚendé   )Ú
fill_valuez-No training holding bars for matched controlsÚbaselineN)çš™™™™™©?g333333³?gš™™™™™™?gš™™™™™¹?©ÚindexÚfixed_)Útarget_medianÚscaleÚmatched_fixed_widthÚtrail)	r   r   ÚbarsÚholding_barsÚatr_price_medianÚ	min_widthÚ	max_widthÚmax_threshold_lossÚ
candidates)ÚtimeÚpdÚ	Timestampr   Ú	atr_priceÚto_numpyÚlenÚnpÚisfiniteÚallÚmedianÚ
ValueErrorr	   Ú	TRAIN_ENDÚpositionÚshiftÚastypeÚboolÚanyÚfloatÚzipÚ	ATR_NAMESÚclipÚSeriesr   ÚmeanÚfullÚintÚsum)ÚframeÚopportunitiesÚvolÚtrainÚvaluesr   Ú_Úactiver/   ÚvariantsÚdetailsÚnameÚtargetr   ÚwidthsÚmatcheds                   úS/Users/jameslopez/projects/TradingBot25/tools/run_mlp_volatility_stop_experiment.pyÚ	calibraterN      sç  € à�Z‰Zœ2Ÿ<™<¬Ó4Ñ4¸¿¹ÄbÇlÁlÐS_ÓF`Ñ9`Ña€EØ�]‰]˜5Ñ!×*Ñ*Ó,€FÜˆvŒ;œbŸk™k¨&Ó1×5Ñ5Ô7¼2¿9¹9ÀVÓ;LÐPQÒ;QÜÐ6Ó7Ð7Ü˜e ]¼+Ì9ÔU�K€HˆaØ�X×&Ñ&×,Ñ,¨Q¸1Ð,Ó=×DÑDÄTÓJÑJ€FØ�:‰:Œ<ÜÐHÓIÐIÜ”2—9‘9˜VÓ$Ó%€FØ˜DÐ!€HØ€GÜœI {Ö3‰ˆˆfØ�v‘ˆÜ—‘˜Ÿ™×/Ñ/Ó1°%Ñ7¸¸sÓCˆÜœŸ	™	 &°·±Ô<×BÑBÀ1ÓEÀfÑM×RÑRÓTÓUˆØˆ�‰Ü"$§'¡'¬#¨e«*°gÓ">ˆ�˜$‘ÑØ*0¸5ÐY`Ñaˆ�Šð 4ð œ{´9ÄcÈ%Ï)É)Ë+ÓFVÜ&)¨&¯*©*«,Ó&7ÈVØ#'°cÐQ^Ð_fÑQgØ$+ñ-ð -ð -ó    c           	     óD  ‡
— | | j                   dk(     j                  ddg«      }g i c}Š
t        D �]L  }|j                  |d¬«      }dt	        |j
                  j                  «       dk\  «      i}dd|z   fD ]µ  }|j                  |d¬«      }|g d	¢   |g d	¢   z
  }t        |j                  j                  «       «      t        |j                  j                  «       «      t        |j                  d
kD  j                  «       «      t        |j                  j                  «       «      dœ||<   Œ· |d   xr  t        d„ |j                  «       D «       «      }	t	        |	«      |d<   |‰
|<   |	s�Œ<|j!                  |«       �ŒO |j#                  ˆ
fd„¬«       |r|d
   ndd‰
dœS )z<Frozen validation-only rule; test/later rows are never read.Ú
validationÚwindowÚvariant)ÚlevelÚenough_entriesé   r   r   )Úpnl_pctÚcalmarÚdd_pctr   )Úmedian_pnl_deltaÚmedian_calmar_deltaÚpnl_winsÚworst_dd_deltac              3  óx   K  — | ]2  \  }}|d k7  r(|d   dkD  xr |d   dkD  xr |d   dk\  xr |d   dk\  –— Œ4 y­w)	rU   rZ   r   r[   r\   é   r]   éþÿÿÿN© )Ú.0ÚkeyÚxs      rM   Ú	<genexpr>znominate.<locals>.<genexpr>D   sm   è ø€ ð 2Eñ )‘��Q¨CÐ3CÒ,Cð Ð Ñ! AÑ%ò =¨!Ð,AÑ*BÀQÑ*Fò =Øˆj‰M˜QÑò=Ø#$Ð%5Ñ#6¸"Ñ#<ó=á(ùs   ‚8:Úeligiblec                óL   •— ‰|    d| z      d    t         j                  | «      fS )Nr   r[   )r9   r   )rI   Úauditss    €rM   Ú<lambda>znominate.<locals>.<lambda>L   s-   ø€  V¨D¡\°(¸4±-Ñ%@ÐAVÑ%WÐ$WÔYb×YhÑYhÐimÓYnÑ#orO   )rc   NT)Ú	nominatedÚvalidation_onlyÚchecks)ÚstageÚ	set_indexr9   Úxsr5   Úentriesr?   r7   rW   r/   rX   r>   rY   Úminr.   ÚitemsÚappendÚsort)ÚmetricsÚvalrf   rI   Ú	candidaterl   ÚcontrolÚ	referenceÚdeltaÚpassedrh   s             @rM   Únominater|   6   s”  ø€ à
�'—-‘- <Ñ/Ñ
0×
:Ñ
:¸HÀiÐ;PÓ
Q€CØ˜2Ð€Hˆfß�	ˆØ—F‘F˜4 y�FÓ1ˆ	Ø"¤D¨×):Ñ):×)>Ñ)>Ó)@ÀBÑ)FÓ$GÐHˆØ" H¨T¡MÓ2ˆGØŸ™˜w¨i˜Ó8ˆIØÒ=Ñ>¸yÒIhÑ?iÑiˆEÜ38¸¿¹×9MÑ9MÓ9OÓ3PÜ6;¸E¿L¹L×<OÑ<OÓ<QÓ6RÜ+.°·±ÀÑ0A×/FÑ/FÓ/HÓ+IÜ16°u·|±|×7GÑ7GÓ7IÓ1JñLˆF�7ŠOð 3ð Ð(Ñ)ò E¬cñ 2Eð !Ÿ,™,œ.ó2Eó /Eˆô " &›\ˆˆzÑØˆˆt‰ÛØ�O‰O˜DÖ!ð# ð$ ‡M�MÓo€MÔpÙ(0˜ !š°dÈtÐ_eÑfÐfrO   c                óX   — | j                  t        j                  |dd¬«      dz   «       y )Nr_   F)ÚindentÚ	allow_nanÚ
)Ú
write_textÚjsonÚdumps)ÚpathÚvalues     rM   Ú	save_jsonr†   P   s    € Ø‡O�O”D—J‘J˜u¨Q¸%Ô@ÀÑEÕFrO   c                óh  — | j                  dd¬«       | dz  j                  «       rt        d«      ‚i }dD ]ˆ  }t        j                  t
        j                  t        t        dz  |z  «      gt        dd¬«      }|j                  |j                  |j                  dœ||<   t        | d	z  |«       |j                  «        ŒŠ t        d
«      \  }}}|d   dk7  rt        d«      ‚t        |«      }t!        |||«      \  }}	t        | dz  |	«       d|d<   d|d<   g g g }}}
ddt"        t$        fg}t'        t(        «      D ](  \  }\  }}}|j+                  |dk  rdnd|d d ||f«       Œ* |j+                  ddt,        t        |j.                  j0                  d   j3                  «       «      f«       d }|D �]&  \  }}}}|dk(  r;|€9t        | dz  t5        t7        j8                  |
«      «      «       t;        | dz  «      }d }|j=                  «       D �]µ  \  }}t?        |||||¬«      \  }}|j.                  t7        j@                  |«      k\  |j.                  t7        j@                  |«      t7        jB                  d¬«      z   k  z  }|dk(  �r¬i |d   ¥|t        t7        j@                  |«      t7        jB                  d¬«      z   t7        jB                  d¬ «      z
  «      d!œ¥}tE        |jG                  «       ||jH                  jK                  «       |jL                  jK                  «       |jN                  jK                  «       «      }t?        ||||tQ        jR                  tU        |«      |d   «      ¬«      \  }}d"D ]N  }tP        jV                  jY                  ||   ||   «       tP        jV                  jY                  ||   ||   «       ŒP tP        jV                  jY                  |jZ                  |jZ                  «       t]        |||«      t]        |||«      k(  sJ ‚|jZ                  jK                  «       }|j^                  ||j`                  jc                  «       z     }|je                  d#«      D ]œ  \  }} | j`                  jg                  «       ji                  «       d$k\  jk                  «       sJ ‚| j`                  |jL                  j0                  tm        | jn                  j0                  d%   «         d&z  d'z
  k\  jk                  «       rŒœJ ‚ t]        |||«      }!|
j+                  |||||d(œ|!¥tq        d)„ |D «       «      tq        d*„ |D «       «      tq        d+„ |D «       «      tq        d,„ |D «       «      tq        d-„ |D «       «      ts        |j^                  |d.f   j0                  d   «      ts        |j^                  |d/f   j0                  d   «      d0œ¥«       |j^                  |g d1¢f   jG                  «       }"tQ        jt                  |«      |"d2<   |||c|"d3<   |"d4<   |"d5<   |jZ                  jK                  «       |   ||   z
  |"d6<   |j+                  |"«       tw        ||||«      }#tU        |#«      s�Œgt7        j8                  |«      g d7¢   }$|#jy                  |$d2d8¬9«      }#|||c|#d3<   |#d4<   |#d5<   |j+                  |#«       �Œ¸ t{        |› d:|› d;�d¬<«       �Œ) t;        | dz  «      |k(  sJ ‚t7        j8                  |
«      }!g }%|D ]Ê  }|dk(  rŒ	dg|t|        v rd=|z   gng z   D ]«  }|!|!j~                  |k(     j�                  d4«      }&|!|!j~                  |k(     j�                  d4«      }'|&g d>¢   |'g d>¢   z
  }(|(jƒ                  d?«      j…                  «       }(||c|(d5<   |(d@<   |&j†                  jK                  «       |(d3<   |%j+                  |(«       Œ­ ŒÌ |!j‰                  | dAz  d¬B«       t7        jŠ                  |%d¬C«      j‰                  | dDz  d¬B«       t7        jŠ                  |d¬C«      j‰                  | dEz  ddFd%dGœ¬H«       t7        jŠ                  |d¬C«      })|)j‰                  | dIz  d¬B«       g }*dJD ]z  }+|)|)jŒ                  |+dKk(  r|)jŽ                  ndz     },|,je                  g dL¢«      j‘                  dMdNdOdPdQ„ fdRdSdTdUdVdWdXdY¬Z«      j…                  «       }-|+|-d[<   |*j+                  |-«       Œ| t7        jŠ                  |*d¬C«      j‰                  | d\z  d¬B«       t’        d]t        t•        t–        «      j™                  t        «      «      d^d_d`h}.t›        t
        jœ                  jŸ                  «       «      D ]�  }/t¡        |/dad «      }0|0sŒt•        |0«      j£                  «       }1|1j¥                  t        «      sŒBdb|1j¦                  vsŒQ|1j¨                  dck(  sŒa|.j«                  t        |1j™                  t        «      «      «       Œ� g dd¢}2t        | dz  dt’        |t­        |«      ||t¯        j°                  «       tP        j²                  t6        j²                  deœtµ        |.«      D �ci c]  }|t;        t        |z  «      “Œ c}|2D �ci c]  }|t;        | |z  «      “Œ c}dfœ	«       |!S c c}w c c}w )gNT)ÚparentsÚexist_okzmanifest.jsonz<Use a new output directory to preserve previous run evidence)zsync_params.pyzcheck_pine.pyzvalidate_chart_data.pyÚtools)ÚcwdÚcapture_outputÚtext)Ú
returncodeÚstdoutÚstderrúprerequisites.jsonÚ4Hr   r   zGProtocol requires the frozen 5% baseline; do not silently change designúcalibration.jsonFÚfreshÚ	untouchedÚtrainingé   rQ   Úhistorical_evaluationé   Úpreviously_inspected_laterÚ
later_2026éÿÿÿÿúselection.json)r   r   rK   r   )Údaysr   Úparams)Únanoseconds)Ú_pine_time_startÚ_pine_time_end)r2   Úexecute_entryÚexecute_exitÚ	entry_barg»½×Ùß|Û½r   gffffffî?ç»½×Ùß|Û=)rm   rR   r   r   rS   c              3  ó&   K  — | ]	  }|d    –— Œ y­w©Ústop_hitNra   ©rb   Úds     rM   re   zrun.<locals>.<genexpr>Š   s   è ø€ Ð5WÉYÈ°a¸
µmÉYùs   ‚c              3  ó(   K  — | ]
  }|d     –— Œ y­wr¨   ra   rª   s     rM   re   zrun.<locals>.<genexpr>‹   s   è ø€ Ð0VÉIÀq°Q°z±]Ô1BÉIùs   ‚c              3  ó4   K  — | ]  }|d    xr |d   –— Œ y­w)r©   Ú
score_exitNra   rª   s     rM   re   zrun.<locals>.<genexpr>Œ   s$   è ø€ Ð*`ÑV_ÐQR¨1¨Z©=Ò+L¸Q¸|¹_Ó+LÑV_ùs   ‚c              3  ó,   K  — | ]  }|d    dkD  –— Œ y­w)Úthreshold_overshoot_pctr¦   Nra   rª   s     rM   re   zrun.<locals>.<genexpr>�   s    è ø€ Ð4mÑclÐ^_°QÐ7PÑ5QÐTYÕ5YÑclùó   ‚c              3  ó,   K  — | ]  }|d    dkD  –— Œ y­w)Úentry_bound_breach_pctr¦   Nra   rª   s     rM   re   zrun.<locals>.<genexpr>Ž   s    è ø€ Ð4lÑbkÐ]^°QÐ7OÑ5PÐSXÕ5XÑbkùr±   r2   r£   )Ú
stop_exitsÚscore_only_exitsÚ
both_exitsÚthreshold_overshootsÚentry_bound_breachesÚopen_at_endÚterminal_unfilled_entry)
r&   Úcloser2   r£   r¤   r¥   Ú
trade_highÚ
stop_priceÚrequested_widthÚstrategy_returnÚbarrm   rR   rS   Úpaired_bar_return)rÀ   r°   r³   Úmany_to_one)ÚonÚvalidatez: z	 complete)Úflushr   )rW   rX   rY   rp   Úexposure_pctÚdelta_rx   úmetrics.csvr   )Úignore_indexúpaired_metrics.csvúbar_traces.csv.gzÚgzip)ÚmethodÚmtime)r   Úcompressionú
events.csv)r.   Ú
nonoverlaprÑ   )rm   rS   ÚreasonÚhorizon_bars)rÀ   Úsize)Úterminal_return_pctr<   )rÕ   r/   rÕ   c                ó:   — t        | dkD  j                  «       «      S )Nr   )r7   r<   )rd   s    rM   ri   zrun.<locals>.<lambda>·   s   € ÄÀqÈ1ÁuÇlÁlÃnÔ@UrO   )Úterminal_loss_avoided_pctr<   )Úmissed_recovery_pctr<   )Úsubsequent_decline_pctr<   )Úholding_hoursr/   )Úentry_atr_pctr/   )Úexit_atr_pctr/   )Úentry_rv_pctr/   )Úexit_rv_pctr/   )ÚcountÚmean_terminal_pctÚmedian_terminal_pctÚrecovery_fractionÚmean_loss_avoided_pctÚmean_missed_recovery_pctÚmean_decline_pctÚmedian_holding_hoursÚmedian_entry_atr_pctÚmedian_exit_atr_pctÚmedian_entry_rv_pctÚmedian_exit_rv_pctÚsubsetúevent_summary.csvz!tests/test_mlp_volatility_stop.pyztools/sync_params.pyztools/check_pine.pyztools/validate_chart_data.pyÚ__file__z.venvz.py)r‘   r“   r�   rÈ   rÊ   rË   rÐ   rì   )ÚpythonÚnumpyÚpandas)	Únon_promotingÚprotocolÚinputsrG   ÚwindowsÚ"selection_sha256_before_evaluationÚenvironmentÚsource_sha256Úoutputs_sha256)[ÚmkdirÚexistsr0   Ú
subprocessÚrunÚsysÚ
executableÚstrÚREPOrŽ   r�   r�   r†   Úcheck_returncoder   r
   rN   r   r1   Ú	enumerater   rs   r   r&   ÚilocÚdater|   r'   Ú	DataFramer   rr   r	   r(   Ú	Timedeltar   ÚcopyÚstoch_peak_normr*   r»   Úhighr,   r=   r+   ÚtestingÚassert_array_equalr¿   r   Úlocr½   ÚnotnaÚgroupbyÚdiffÚdropnar.   r>   r¥   r?   r5   Úflatnonzeror   ÚmergeÚprintr9   rS   rn   Ú
add_prefixÚreset_indexrm   Úto_csvÚconcatÚvalidrÑ   ÚaggÚPROTOCOLr   rí   Úrelative_toÚtupleÚmodulesrD   ÚgetattrÚresolveÚis_relative_toÚpartsÚsuffixÚaddÚlistÚplatformÚpython_versionÚ__version__Úsorted)3Úoutputrl   ÚtoolÚcheckr@   rA   Ú
provenancerB   rG   ÚcalibrationÚrowsÚtracesÚeventsrô   ÚirE   r   r   Úselection_hashrm   ÚlabelÚbaseline_returnsrI   rK   ÚsignalsÚ	decisionsÚmaskrŸ   Ú	canonicalrx   ÚcolÚactive_traceÚtraderu   ÚtraceÚeventÚexit_detailsÚpairedrw   ry   rz   Ú
all_eventsÚ	summariesrë   r  ÚgroupedÚsourcesÚmoduleÚsourcer„   Úoutputss3                                                      rM   rü   rü   T   sF
  € Ø
‡L�L˜¨€LÔ-ØˆÑ×&Ñ&Ô(ÜÐWÓXÐXØ€FÛMˆÜ—‘¤§¡´´D¸±LÀÑ4EÓ0FÐGÌTØ.2¸ô?ˆà&+×&6Ñ&6À%Ç,Á,ÐZ_×ZfÑZfÑgˆˆt‰Ü�&Ð-Ñ-¨vÔ6Ø×ÑÕ ð Nô (2°$Ó'7Ñ$€Eˆ=˜*Ø�WÑ Ò$ÜÐbÓcÐcÜ
�UÓ
€CÜ% e¨]¸CÓ@Ñ€HˆkÜˆfÐ'Ñ'¨Ô5Ø€JˆwÑØ#€Jˆ{ÑØ˜r 2�&ˆ&€DØ˜J¬´YÐ?Ð@€GÜ'¬	Ö2Ñˆ‰?ˆAˆu�cØ�‰¨¨Aª™Ð3JÈEÐRTÐSTÈIÐW\Ð^aÐbÕcð 3à‡N�NÐ0°,Ä	Ì3ÈuÏzÉzÏÉÐ_aÑOb×OgÑOgÓOiÓKjÐkÔlØ€NÜ$+Ñ ˆˆu�e˜SàÐ+Ò+°Ð0FÜ�fÐ-Ñ-¬x¼¿¹ÀTÓ8JÓ/KÔLÜ# FÐ+;Ñ$;Ó<ˆNØÐØ$ŸN™N×,‰LˆD�&Ü!,¨U°MÈÐTWÐ`fÔ!gÑˆG�YØ—J‘J¤"§,¡,¨uÓ"5Ñ5¸%¿*¹*ÄrÇ|Á|ÐTWÓGXÔY[×YeÑYeÐklÔYmÑGmÑ:mÑnˆDØ�zÓ!ðu˜J xÑ0ð uÀeÜ,/´·±¸SÓ0AÄ"Ç,Á,ÐTUÔBVÑ0VÔWY×WcÑWcÐpqÔWrÑ0rÓ,sòu�ä-¨e¯j©j«l¸FÀE×DYÑDY×DbÑDbÓDdØ-2¯[©[×-AÑ-AÓ-CÀUÇZÁZ×EXÑEXÓEZó\�	ä(¨°ÀUÐPSÜ02·±¼¸E»
ÀMÐRYÑDZÓ0[ô]‘
�˜ãH�CÜ—J‘J×1Ñ1°'¸#±,À	È#ÁÔOÜ—J‘J×1Ñ1°'¸#±,ÀÈÁÕMð Iô —
‘
×-Ñ-¨g×.EÑ.EÀw×G^ÑG^Ô_Ü% i°¸Ó<ÄÈwÐX]Ð_bÓ@cÒcÐcÐcØ#*×#:Ñ#:×#CÑ#CÓ#EÐ à"Ÿ;™; t¨g×.@Ñ.@×.FÑ.FÓ.HÑ'HÑIˆLØ(×0Ñ0°Ö=‘��5Ø×(Ñ(×-Ñ-Ó/×6Ñ6Ó8¸FÑB×GÑGÔIÐIÐIØ×(Ñ(¨E¯K©K×,<Ñ,<¼SÀÇÁ×AUÑAUÐVWÑAXÓ=YÑ,ZÐ[^Ñ,^Ð_dÑ,dÑd×iÑiÕkÐkÐkð >ô % W¨e°SÓ9ˆGØ�K‰K %°5À5ÐQTÐaeñ gØ"ðgÜ25Ñ5WÉYÓ5WÓ2WÜ-0Ñ0VÉIÓ0VÓ-VÜ'*Ñ*`ÑV_Ó*`Ó'`Ü14Ñ4mÑclÓ4mÓ1mÜ14Ñ4lÑbkÓ4lÓ1lÜ(,¨W¯[©[¸¸zÐ9IÑ-J×-OÑ-OÐPRÑ-SÓ(TÜ48¸¿¹ÀTÈ?ÐEZÑ9[×9`Ñ9`ÐacÑ9dÓ4eògô hð —K‘K ò 'uð !uñ vßvzÑvzÓv|ð äŸ>™>¨$Ó/ˆE�%‰LØ@EÀuÈdÐ=ˆE�'‰N˜E (™O¨U°9Ñ-=Ø)0×)@Ñ)@×)IÑ)IÓ)KÈDÑ)QÐRbÐcgÑRhÑ)hˆEÐ%Ñ&Ø�M‰M˜%Ô Ü  y°#°sÓ;ˆEÜ�5ŽzÜ!Ÿ|™|¨IÓ6Ò7sÑt�ØŸ™ L°UÀ]˜ÓS�ØDIÈ5ÐRVÐA��g‘  h¡°°yÑ1AØ—‘˜eÖ$ðS -ôT 	���r˜%˜ 	Ð*°$×7ða %,ôb �&Ð)Ñ)Ó*¨nÒ<Ð<Ð<Ü�l‰l˜4Ó €GØ€FÛˆØ�:ÒØØ"�|¸$Ä)Ñ:K¨°©¡ÐQSÔTˆGØ §¡°4Ñ 7Ñ8×BÑBÀ8ÓLˆIØ §¡°7Ñ :Ñ;×EÑEÀhÓOˆIØÒXÑYÐZcò  e_ñ  [`ñ  `ˆEØ×$Ñ$ XÓ.×:Ñ:Ó<ˆEØ15°wÐ.ˆE�)Ñ˜e IÑ.Ø&Ÿ_™_×5Ñ5Ó7ˆE�'‰NØ�M‰M˜%Õ ñ Uð ð ‡N�N�6˜-Ñ'¨u€NÔ5Ü‡I�Iˆf 4Ô(×/Ñ/°Ð7KÑ0KÐSXÐ/ÔYÜ‡I�Iˆf 4Ô(×/Ñ/°Ð7JÑ0JÐRWÐpvð  BCñ  fDÐ/ô  EÜ—‘˜6°Ô5€JØ×Ñ�f˜\Ñ)°ÐÔ7Ø€IÛ'ˆØ˜:×+Ñ+ÈÐR^ÒH^¨z×/DÒ/DÐdhÑiÑjˆØ—-‘-Ò NÓO×SÑSØ!Ð5TØ AØ4Ñ6UÐVØ"GØ%DØ?ÐVqØ!<ÐRlØ :ÐOhð Tó j÷ kvÑjuÓjwð 	ð #ˆ�ÑØ×Ñ˜Õ!ð (ô ‡I�Iˆi dÔ+×2Ñ2°6Ð:MÑ3MÐUZÐ2Ô[äÐ<¼cÄ$ÄxÃ.×B\ÑB\Ô]aÓBbÓ>cØ%Ð'<Ð>\ð^€GäœŸ™×*Ñ*Ó,Ö-ˆÜ˜ ¨TÓ2ˆÚÜ˜“<×'Ñ'Ó)ˆDØ×"Ñ"¤4Õ(¨W¸D¿J¹JÒ-FÈ4Ï;É;ÐZ_ÓK_Ø—‘œC × 0Ñ 0´Ó 6Ó7Õ8ð .òG€Gäˆf�_Ñ$¸Ì(Ð^hÜ˜x›.°WÐdrÜ(0×(?Ñ(?Ó(AÌBÏNÉNÔfh×ftÑftÑuÜDJÈ7ÄOÓTÁO¸D ¤f¬T°$©YÓ&7Ñ 7ÀOÑTÙGNÓ OÁw¸t ¤v¨f°T©kÓ':Ñ!:ÀwÑ Oñ	'Qô Rð
 €Nùò  UùÚ Os   é)j*ê	j/Ú__main__)Údescriptionz--outputz'results/mlp_experiments/volatility_stop)ÚtypeÚdefault)r@   úpd.DataFramerA   ÚdictrB   rK  Úreturnztuple[dict, dict])ru   rK  rM  rL  )r„   r   r…   rL  rM  ÚNone)r)  r   rM  rK  )1Ú__doc__Ú
__future__r   Úargparser‚   Úpathlibr   r%  rû   rý   rï   r,   rð   r'   rí   r  Úparentr   r„   Úinsertrÿ   Úconfigr   r   r   Ústrategies.mlp_volatility_stopr   r	   r
   Ústrategies.strategy_mlp_scoresr   Ú%tools.run_mlp_learned_exit_experimentr   Ú%tools.run_mlp_state_policy_experimentr   r   r  r1   r9   rN   r|   r†   rü   Ú__name__ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsr)  ra   rO   rM   Ú<module>r_     sæ   ðÙ HÝ "ã Û Ý Û Û Û 
ã Û áˆHƒ~×ÑÓ×&Ñ&×-Ñ-€Ø ‡�‡��‘3�t“9Ô ç 4Ñ 4ß OÑ OÝ <Ý <ß Hà<€Ø€	Ø €	ó-ó4gó4Gó|ð~ ˆzÒØ$ˆX×$Ñ$°Ô9€FØ
×Ñ˜
¨°tÐ<eÑ7eÐÔfÙˆ×ÑÓ×"Ñ"Õ#ð rO   