a
    %áj}  ã                   @   s4  d Z ddlZddlZddlZddlmZ ejjddd� ee d¡ƒZ	dd	„ Z
eeƒZe	D �]Zeed
ddd��ÜZe e¡D ]ÀZe d¡dkr�q|e
edƒZedu s|edkr¬q|dD ]ŠZe
ede› �ƒZe
ede› d�ƒZer°er°de  k ròdk r°n q°de  k �rdk r°n q°eed ed ed ef  e eef¡ q°q|W d  ƒ qZ1 �sT0    Y  qZe ¡ D ]Ze ¡  �qhg d¢Zg d¢Zdd„ eD ƒZe ¡ D �]tZeeƒdk �r¶�qžed \ZZ Z!ed \Z"Z#Z$ee" dk �rä�qže e! d Z%e#e$ d Z&eD �]Z'e'd e%  k�r&e'd k �r n näee' Z(e(d  d7  < e(d   e%7  < e(d!  e&7  < e(d"  e$e! d 7  < e(d#  e#e  d 7  < e)e$e  ƒe)e!e  ƒk �r¼e(d$  d7  < e)e#e! ƒe)e e! ƒk �ræe(d%  d7  < e)e&ƒe)e%ƒk �re(d&  d7  <  �qž�q �qže*d'ƒ e*d(ƒ e*d)d*›d+d,›d-d.›d/d.›d0d.›d1d.›d2d.›d3d4›d5d4›�	ƒ e*d6ƒ e+eeƒD ]¸\Z'Z,ee' Z(e(d �s”�qve(d Z-e*e,d*›e-d,›e(d  e- d7›d8e(d! e- d7›d8de(d&  e- d9›d:e(d" e- d7›d8e(d# e- d7›d8de(d$  e- d;›d:de(d%  e- d;›d:�ƒ �qvdS )<a\  
Conditional convergence: do LARGE Kalshi-vs-Pinnacle gaps close by kickoff, and
who moves -- Kalshi toward Pinnacle (catch-up) or Pinnacle toward Kalshi?
Bucket each fixture/side by its EARLIEST-PRE signed gap (pin_fair - kalshi_mid),
then compare to its LATEST-PRE snapshot. Signed gap > 0 = Kalshi underpricing
that side (the direction we bet).
é    N)Údefaultdictzutf-8Úreplace)ÚencodingÚerrorszE:\soccer\live_data\*.csvc              	   C   s0   zt |  |d¡ƒW S  ttfy*   Y d S 0 d S )NÚ )ÚfloatÚgetÚ	TypeErrorÚ
ValueError)ÚrÚk© r   ú3E:\soccer\research\analysis\_kalshi_convergence2.pyÚfval   s    r   r   )Únewliner   r   ZstatusZPREÚelapsed)ÚhomeÚawayZ	pin_fair_Zkalshi_Z_midé   Z	game_dater   r   ))i�ÿÿÿéýÿÿÿ)r   éÿÿÿÿ)r   r   )r   é   )r   é   )r   éc   )z<-3z-3..-1z-1..1z1..3z3..5z>5c                 C   s$   i | ]}|d ddd d ddd dœ“qS )r   g        )ÚnÚg0Úg1Ú
kal_to_pinÚ
pin_to_kalÚkalmoveÚpinmoveÚclosedr   )Ú.0Úbr   r   r   Ú
<dictcomp>%   ó    r$   é   r   é<   éd   r   r   r   r   r    r   r   r!   zTBucketed by EARLY signed gap (pin_fair - kalshi_mid). Tracking earliest->latest PRE.z<(+gap = Kalshi underpricing that side = the side we'd back)
Zbandz>8ÚNz>6ZearlyGapz>9ZlateGapzclosed%ZKalMoveZPinMovezK->P%z>7zP->K%zI-------------------------------------------------------------------------z>+8.2fÚcz>8.0fú%z>6.0f).Ú__doc__ZcsvZglobÚsysÚcollectionsr   ÚstdoutÚreconfigureÚsortedÚfilesr   ÚlistZseriesÚfpÚopenÚfZ
DictReaderr   r   ZelZsideZpfZkmÚappendÚvaluesÚvÚsortZbandsZblabZaggÚlenZm0Zpf0Zkm0Zm1Zpf1Zkm1r   r   r#   ÚaÚabsÚprintÚzipZlabr   r   r   r   r   Ú<module>   s„   

:P
$ **" ÿÿÿÿBÿÿÿÿ