a
    -íj‡
  ã                
   @   sP  d Z ddlZddlZddlZddlZddlZddlmZ e d¡ e	e d¡ƒZ
d\ZZZdZe d¡ ed	d
„ ƒZdd„ Ze
D �] Zeedddd��úZe e¡D ]ÞZe d¡dkr¶q¢ed ed ed fZe d¡pØdZdD ] Zeede› �ƒZeede› d�ƒZeede› �ƒZeeef  Zedu�rredu�rrde  k �rNdk �rrn n e�rred  ed eeef¡ erÞeed< qÞq¢W d  ƒ q€1 �s˜0    Y  q€e  ¡ D ]Zed  !¡  �q¬dd „ Z"e#e› d!�ƒ e#d"d#›d$d%›d&d'›d(d)›d*d)›d+d)›�ƒ e#d,ƒ e$dd-ƒD �]4Z%e%d. Z&g Z'e (¡ D ]t\Z)Zed Ze�sH�q.ee)d/ dk�r\d0nd1kZ*e+d2d3„ ed D ƒdƒZ,e,du �rˆ�q.e' e,d e,d e*f¡ �q.g Z-e$eƒD ]Z.e /e'¡ e- e"e'ƒ¡ �q°e- !¡  e 0e-¡Z1e-e2d4e ƒ Z3e-e2d5e ƒ Z4e5d6d3„ e-D ƒƒe Z6e#e%d#›e7e'ƒd%›e1d7›e3d8›e4d8›e6d9›�ƒ �qdS ):a8  
Monte-Carlo the compounded 1/4-Kelly floor sweep. The single-path result is
order-dependent; here we shuffle the bet order N times per threshold to get a
distribution of final bankrolls (median + 5th/95th percentile). The SET of bets
per threshold is fixed (first-crossing entries); only their sequence varies.
é    N)Údefaultdictz	E:\soccerzlive_data\*.csv)ç      Ð?r   g     @�@iÐ  é*   c                   C   s
   g d dœS )N)ÚrowsÚftr© r   r   r   ú,E:\soccer\research\analysis\_clv_floor_mc.pyÚ<lambda>   ó    r	   c              	   C   s0   zt |  |d¡ƒW S  ttfy*   Y d S 0 d S )NÚ )ÚfloatÚgetÚ	TypeErrorÚ
ValueError)ÚrÚkr   r   r   Úfval   s    r   r   zutf-8Úreplace)ÚnewlineÚencodingÚerrorsZstatusZPREZ	game_dateÚhomeÚawayr   )r   r   Zclv_kalshi_Zkalshi_Z_askZ	pin_fair_é   r   Z	timestampc                 C   sŽ   t }| D ]€\}}}d| | }t|| d|  | dƒ}tt|t tƒ| dƒ}|dk r\d}||krnt|dƒ}|r€||| 7 }q||8 }q|S )Nr   g        é   g      ð?)ÚSTARTÚmaxÚroundÚminÚ
KELLY_MULTÚMAX_BET_PCT)ÚseqÚbrÚaskÚpfÚwinÚbÚfZstaker   r   r   Úrun*   s    
r(   z shuffles per threshold
zX%z>3ÚNz>6zmedian$z>10zp5$z>9zp95$zP(loss)z.----------------------------------------------é   g      Y@é   ÚHÚAc                 c   s&   | ]\}}}}|t kr||fV  qd S )N)Úthr)Ú.0ZtsÚclvr#   r$   r   r   r   Ú	<genexpr>@   r
   r1   gš™™™™™©?gffffffî?c                 c   s   | ]}|t k rd V  qdS )r   N)r   )r/   Úxr   r   r   r1   K   r
   z>10.0fz>9.0fz>8.0%)8Ú__doc__ZcsvZglobÚosZrandomZ
statisticsÚcollectionsr   ÚchdirÚsortedÚfilesr   r    r   ZNSIMZseedZseriesr   ÚfpÚopenr'   Z
DictReaderr   r   Úbaser   Zsider0   r#   r$   ÚdÚappendÚvaluesÚsortr(   ÚprintÚrangeÚXr.   ZbetsÚitemsÚkeyr%   ÚnextÚeZfinalsÚ_ZshuffleZmedianZmedÚintZp5Zp95ÚsumZplossÚlenr   r   r   r   Ú<module>   sf   (



6.,


