a
    /N$jÇ  ã                   @   s  d Z ddl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 d¡ d\ZZg d	¢Zd
d„ e d¡D ƒZejedd�Zejed ddd�ed< eed  ¡  Zeed dked dk @   ¡ Zdd„ Zdd„ Zdd„ Zedƒ eeeƒZedƒ edeƒ ed ƒ d!D ],\ZZed"ed#›d$ed#›d%�eeeƒƒ �qed&ƒ e d'¡d(  ¡   ¡ j!D ]Z"ee"eej#e"k ƒ �qZed)ƒ ed*ƒ eeeƒZ$e%e&e$ƒd+ ƒZ'ee$j(e'd… d( j)ƒ\Z*Z+ed,e$j(e'd… ƒ ed)ƒ ed-ƒ g Z,d.D ]–Z-d/e-› �Z.eee. ekee. ek @   ¡ Z/e/  d¡j0ed0d1�Z/e-e/d2< e/e. e/d3< e/d4e-› d5� e/d6< e/d7 d8d9d.œe- k 1e%¡e/d:< e, 2e/¡ �qèeje,dd�Z,e,j d3d;d<�j0ed0d1�Z,e 3e,d6 dkd=e,d6  ej4¡e,d>< e,j5d>d7gd?�j6dd@�Z,e 3e,d: dAke,d> dA dB¡e,d(< edCe,ƒ dS )DaN  
Does the Kalshi CLV signal work on the DRAW outcome? The live strategy is home/away only.
Reconstruct draw signals with the SAME rules (clv_kalshi_draw in [5,12)%, first band entry,
dedupe per game), settle vs ftr=='D', and score ROI/significance. Also try the wider band
and a train/test split so the read is honest. Pure analysis.
é    N)Ústatszutf-8Úreplace)ÚencodingÚerrorsz	E:\soccer)çš™™™™™©?ç¸…ëQ¸¾?)Z	game_dateÚhomeÚawayc                 C   s,   g | ]$}|  d ¡r|dkrt d| ¡‘qS )z.csvztest.csvz
live_data/)ÚendswithÚpdZread_csv)Ú.0Úf© r   ú*E:\soccer\research\analysis\_draw_check.pyÚ
<listcomp>   s   ÿr   Z	live_dataT)Zignore_indexZ	timestampZmixedZcoerce)Úformatr   ÚtsZstatusZPREÚelapsedc                 C   sâ   d}t t | | kt | |k @   ¡ }| d¡jtdd�}|| |d< |d |d< |d |d	< t |d d
kd|d  tj¡|d< |d dk t	¡|d< |j
g d¢d�jdd�}t |d dk|d d d¡|d< | d¡jdd�S )NZclv_kalshi_drawr   Úfirst©ZkeepÚclvZkalshi_draw_askÚaskZpin_fair_drawÚp_winr   ç      ð?ÚoddsÚftrÚDÚwon)r   r   r   ©ZsubsetT©Zdropé   ç      ð¿Únet)ÚpreÚcopyÚsort_valuesÚdrop_duplicatesÚGAMEÚnpÚwhereÚnanÚastypeÚintÚdropnaÚreset_index)ÚloÚhiÚcÚqr   r   r   Úbuild   s     $"r3   c                 C   sR   t | ƒ}|dk r tdƒtdƒfS |  ¡ | jdd�t |¡  }|dtj |¡ fS )Né   r*   r    )Zddof)	ÚlenÚfloatÚmeanZstdr(   Zsqrtr   ZnormZcdf)r"   ÚnÚzr   r   r   Úzp$   s    r:   c                 C   sœ   t |ƒdkr"td| d›d�ƒ d S t|d jƒ\}}td| d›dt |ƒd›d|j ¡ d	›d
|j ¡ d›d|j ¡ d›d|j ¡ d›d|d›d|d›�ƒ d S )Nr   z  z<26z n=  0r"   z n=z>4z | WR z>5.1%z | ROI z>+7.1%z | net z>+7.1fzu | mean odds z>4.2fz | z=z+.2fz p=z.3f)	r5   Úprintr:   Úvaluesr   r7   r"   Úsumr   )ÚnameÚsr9   Úpr   r   r   Úreport*   s    4
ÿ
ÿÿÿrA   zNDRAW outcome -- does the CLV signal carry?  (live strategy is home/away only)
z"Same rules as live (band [5,12)%):zdraws [5,12)%zW
Wider/alt bands (draws sit in a narrow prob region, so the band may bite differently):))ç¸…ëQ¸ž?r   )r   ç{®Gáz´?)rC   r   )r   çš™™™™™É?)r   rD   )rB   g333333Ó?ú[z.0%ú,ú)z
Per-league (band [5,12)%):Úleaguer"   zQ
================================================================================zLHonest train/test on the [5,12)% draw set (first 60% TRAIN / last 40% TEST):g333333ã?zTEST (last 40%)zAFor reference -- HOME/AWAY (the live edge) on the same data/band:)r   r	   Zclv_kalshi_r   r   Úsider   Zkalshi_Z_askr   r   ÚHÚAr   F)Z	ascendingr   r   r   r   r    r!   zhome/away [5,12)%)7Ú__doc__ÚosÚsysZnumpyr(   Zpandasr   Zscipyr   ÚstdoutÚreconfigureÚchdirZEDGE_LOZEDGE_HIr'   ÚlistdirZdfsÚconcatZdfZto_datetimeZnotnar$   r#   r3   r:   rA   r;   Zsigr/   r0   Úgroupbyr=   r%   ÚindexZlgrH   r?   r,   r5   ZcutZilocr<   ZztZptZharI   r1   r2   r&   r+   Úappendr)   r*   r-   r.   r   r   r   r   Ú<module>   s`   
 

&

  $"