a
    ÅïjQ
  ã                   @   s€  d 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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�rZedu�rZde  k �r2dk �rZn n$e�rZed  ed ed eef¡ erÂeed< qÂq†W d  ƒ qb1 �s€0    Y  qbe ¡ D ]Zed  ¡  �q”dd„ Zed d!›d"d#›d$d%›d&d'›d(d)›d*d)›d+d,›�ƒ ed-ƒ d.D ]Œ\Z Z!ee e!ƒ\Z"Z#Z$Z%e"�rde$ e" ndZ&ee › d/e!› �d!›e"d#›e#d%›e"�rNde# e" ndd0›e&d1›e%d2›de%e  e d3›�ƒ �qîdS )4zô
Replay live_data with a CLV BAND filter [floor, cap]: for each fixture+side,
enter at the FIRST pre-kickoff snapshot where floor <= Kalshi CLV <= cap,
settle via ftr. Report flat ROI and compounded 1/4-Kelly bankroll.
Compare candidate bands.
é    N)Údefaultdictz	E:\soccerzlive_data\*.csv)ç      Ð?r   g     @�@c                   C   s
   g d dœS )N)ÚrowsÚftr© r   r   r   ú/E:\soccer\research\analysis\_clv_band_replay.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	timestampéd   c                    s\  g }t  ¡ D ]t\}}|d sq|d |d dkr4dndk}t‡ ‡fdd„|d D ƒd ƒ}|d u rbq| |d	 |d
 |d |f¡ q|jdd„ d� d	 }}d}	t}
|D ]¨\}}}}|d
7 }d
| | }t|| d
|  | dƒ}tt|t	 t
ƒ|
 dƒ}|dk �rd}||
k�rt|
dƒ}|�r>|d
7 }|	|7 }	|
|| 7 }
q¦|	d
8 }	|
|8 }
q¦|||	|
fS )Nr   é   r   ÚHÚAc                 3   s8   | ]0\}}}}ˆ|  kr"ˆ krn q|||fV  qd S )Nr   )Ú.0ÚtsÚcÚaskÚpf©ÚcapÚfloorr   r   Ú	<genexpr>.   r	   zreplay.<locals>.<genexpr>r   r   r   é   c                 S   s   | d S )Nr   r   )Úxr   r   r   r   2   r	   zreplay.<locals>.<lambda>)Úkeyg        g      ð?)ÚseriesÚitemsÚnextÚappendÚsortÚSTARTÚmaxÚroundÚminÚ
KELLY_MULTÚMAX_BET_PCT)r$   r#   Zentriesr(   ÚdÚwinÚeÚnÚwÚflatÚbrr   r    r!   ÚbÚfZstaker   r"   r   Úreplay(   s,     r=   ZBANDz>8ÚNz>6ÚWz>5zWR%z>7zflatROI%z>10zKelly$zKelly%z>9z7-------------------------------------------------------))é   é   )é   é   )rB   rA   )r@   rC   )rB   é
   )rB   é   ú-z>6.1fz>+10.1fz>10.0fz>+9.1f)'Ú__doc__ZcsvZglobÚosÚcollectionsr   ÚchdirÚsortedÚfilesr2   r3   r.   r)   r   ÚfpÚopenr<   Z
DictReaderr   r   Úbaser   ZsideZclvr    r!   r4   r,   Úvaluesr-   r=   Úprintr$   r#   r7   r8   r9   r:   Zflatroir   r   r   r   Ú<module>   sL   


6.26ÿÿÿ