a
    <ïjÄ  ã                
   @   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�rTedu�rTde  k �r0dk �rTn n e�rTed  ed eeef¡ erÀeed< qÀq„W d  ƒ qb1 �sz0    Y  qbe ¡ D ]Zed  ¡  �qŽedeeƒ› d�ƒ edd ›d!d"›d#d$›d%d&›d'd(›d)d*›d+d,›�ƒ ed-ƒ e dd.ƒD �]ØZ!e!d/ Z"g Z#e $¡ D ]~\Z%Zed Ze�s.�qe%d0 Zeedk�rFd1nd2kZ&e'd3d4„ ed D ƒdƒZ(e(du �rr�qe(\Z)ZZZe# e)eee&f¡ �qe#jd5d„ d6� d Z*Z+d7Z,eZ-e#D ]®\Z)ZZZ&e*d7 Z*de e Z.e/ee. de  e. d7ƒZe0ee	 e
ƒZ1e2e1e- d8ƒZ3e3d9k �rd9Z3e3e-k�r0e2e-d8ƒZ3e&�rTe+d7 Z+e,e.7 Z,e-e3e. 7 Z-ne,d8 Z,e-e38 Z-�q¸e*�rzd:e, e* ndZ4d:e-e  e Z5ee!d ›e*d"›e+d$›e*�r´d:e+ e* ndd;›e4d<›e-d=›e5d>›�ƒ �qúdS )?aœ  
What-if sweep: lower the CLV entry floor, measured both flat-unit and as a
COMPOUNDED 1/4-Kelly bankroll. Using live_data/*.csv pre-kickoff snapshots,
for each fixture+side find the FIRST moment Kalshi CLV >= X%, enter at that
snapshot's ask, settle via ftr. Sweep X = 1..12.

Kelly: p = pin_fair_<side> at entry, b = (1-ask)/ask,
       f = max((p*b-(1-p))/b, 0), stake = min(f*0.25, 0.25)*bankroll, floor $1.
é    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_floor_sweep.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	timestampzfixture-sides observed: Ú
zX%z>3ÚNz>6ÚWz>5zWR%z>7zflatROI%z>10zKellyBR$z>11zKelly%z>9z3---------------------------------------------------é   g      Y@é   ÚHÚAc                 c   s*   | ]"\}}}}|t kr||||fV  qd S )N)Úthr)Ú.0ÚtsÚclvÚaskÚpfr   r   r   Ú	<genexpr>;   r	   r&   c                 C   s   | d S )Nr   r   )Úxr   r   r   r   @   r	   )Úkeyg        é   g      ð?éd   z>6.1fz>+10.1fz>11.2fz>+9.1f)6Ú__doc__ZcsvZglobÚosÚcollectionsr   ÚchdirÚsortedÚfilesZ
KELLY_MULTZMAX_BET_PCTZSTARTZseriesr   ÚfpÚopenÚfZ
DictReaderr   r   Úbaser   Zsider#   r$   r%   ÚdÚappendÚvaluesÚsortÚprintÚlenÚrangeÚXr    ZentriesÚitemsr(   ÚwinÚnextÚer"   ÚnÚwZflatÚbrÚbÚmaxÚminZfracÚroundZstakeZflatroiZkpctr   r   r   r   Ú<module>   s‚   	


6.2



