a
    0�Yj   ã                   @   sŽ  d Z ddlZddlZej dd¡ ddlZejZdd„ Z	e 
¡ Zdd„ dd	„ eD ƒD ƒZejd
d„ d� dd„ eD ƒZedd„ eD ƒdd„ eD ƒ dd„ d�Zedeeƒ› �ƒ d,dd„Zdd„ Zeedd„ dd� eedd„ dd� eedd„ dd� eedd„ d d� eed!d„ d"d� d#d„ eD ƒZed$d	„ eD ƒƒZed%e› d&eeƒ› d'�ƒ ed(eeƒeeƒd)  d*›d+eeƒeeƒ d*›�ƒ dS )-a#  Flat vs Kelly sizing on the exact 286-bet xlow (rerouted-to-Kalshi) stream.

Reuses kalshi_only_execution's loader/rule verbatim; only the staking differs.
p_win = pin_fair (same as live _kelly_stake), price = Kalshi ask, fee mirrors
the research convention (0.07 * (1-px) per unit staked).
é    NzE:\soccer\researchc                 C   sŠ  | d D �]z}t  | d¡¡t  | d¡¡t  | d¡¡  }}}d |||fv s|dkr|dkr|dksjqt  |||f¡}g }dD �]æ\}}t  | d|› d�¡¡}	t  | d|› d	�¡¡}
t  | d
|› d�¡¡}|	d u s‚|d u s‚d|	  k rødk r‚n q‚d|  k �rdk �sq‚ q‚|	|k�r^d|	|
�rLd|
  k �rDdk �rLn n|
n|	|f\}}}}nd||t  |¡ |	f\}}}}|| | ||  }|| | ||  }||k r‚t j|  k�rÈt jk �sÌq‚ q‚t j|  k�rèt jk �rîq‚ nq‚| d dk�r|dk�p| d dk�o|dk}|
�rBd|
  k �r:dk �rBn n|
n|	}| t||||| d ||| d�¡ q‚|rt	|dd„ d�  S qd S )NZpreZpin_homeZpin_drawZpin_awayé   ))Úhomer   )Úawayé   Zkalshi_Z_midZ_askZpoly_Z_pricer   ÚkalshiÚpolyZftrÚHr   ÚAr   Úgd)ÚclvÚpxÚbookÚwonr
   Ú
kalshi_askÚpfc                 S   s   | d S )Nr   © )Údr   r   ú)E:\soccer\research\xlow_sizing_compare.pyÚ<lambda>   ó    zxlow_pf.<locals>.<lambda>©Úkey)
ÚKZ_fÚgetZ	fair_multZhalf_spreadZLOZHIÚappendÚdictÚmax)ZfxÚrZphZpd_Zpar   ZcandsZsideZsiZkmZkaZpmr   Zmidr   Úotherr   Zoclvr   Zkalshi_ask_herer   r   r   Úxlow_pf   s(    4(0DF((".*ÿ
r   c                 C   s   g | ]}|r|‘qS r   r   ©Ú.0Úbr   r   r   Ú
<listcomp>#   r   r#   c                 c   s   | ]}t |ƒV  qd S )N)r   )r!   Úfr   r   r   Ú	<genexpr>#   r   r%   c                 C   s   | d S ©Nr
   r   ©r"   r   r   r   r   $   r   r   r   c                 C   s   g | ]}|d  dkr|‘qS )r   r   r   r    r   r   r   r#   %   r   c                 C   s   g | ]}|d  dkr|‘qS )r   r   r   r    r   r   r   r#   &   r   c                 C   s   g | ]}t ||d  d�‘qS )r   )r   )r   r    r   r   r   r#   '   r   c                 C   s   | d S r&   r   r'   r   r   r   r   '   r   z	stream n=ç     @�@Ú c              
   C   sØ   ||ddf\}}}}| D ]†}|d }	|||ƒ}
|
dkr@|d7 }q|d rz|
d|	  |	 }dd|	  |
 d }||| 7 }n||
8 }t ||ƒ}t ||| | ƒ}qt|d›d	|d
›d|| d›d|d d›d|› �	ƒ |S )Ng        r   r   r   r   gìQ¸…ë±?ç      ð?Z44sz end=$z9.2fz  net=z+8.2fz  maxDD=éd   z5.1fz%  skipped=)r   Úprint)ÚstreamZstake_fnÚstartÚlabelÚbankZpeakZmaxddZskippedr"   r   ÚsZgrossZfeer   r   r   Úrun*   s    
4r2   c                 C   s2   | d | d  }}d| | }|| d|  | S )Nr   r   r   r   )r"   r   ÚpÚor   r   r   Úkelly_f:   s    r5   c                 C   s   dS )Ng      $@r   ©r0   r"   r   r   r   r   @   r   zFLAT $10/bet (1% of start))r/   c                 C   s   dS )Ng      4@r   r6   r   r   r   r   A   r   zFLAT $20/bet (2% of start)c                 C   s0   t |ƒdkr,tt| d | d t |ƒ ƒdƒS dS )Nr   g      Ð?r*   ©r5   r   Úminr6   r   r   r   r   B   r   z*0.25-KELLY compounding (live paper scheme)c                 C   s(   t |ƒdkr$ttddt |ƒ ƒdƒS dS )Nr   g      @ç     @o@r*   r7   r6   r   r   r   r   D   r   z,0.25-KELLY fixed $1k notional, $5 cap (auto)c                 C   s   | d S )Ng{®Gáz„?r   r6   r   r   r   r   F   r   z FLAT-FRACTION 1% of current bankc                 C   s$   g | ]}t |ƒd krdt |ƒ ‘qS )r   r9   ©r5   r    r   r   r   r#   I   r   c                 c   s   | ]}t |ƒd krdV  qdS )r   r   Nr:   r    r   r   r   r%   J   r   z
kelly f<=0 on ú/z' bets (skipped by Kelly, taken by flat)z+uncapped 0.25-kelly stake off $1k: median $r   z.2fz, mean $)r(   r)   )Ú__doc__ÚsysZmathÚpathÚinsertZkalshi_only_executionr   ZxlowZ
_orig_xlowr   ÚloadÚFZbetsÚsortZ	poly_origÚsortedr-   r,   Úlenr2   r5   ZksÚsumÚnegr   r   r   r   Ú<module>   s<   ÿÿ

ÿ
ÿ