a
    ¯Z$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 ddlmZ ddl	m
Z
 ddlmZ ddlZe d¡ ddlmZ ejjdd	d
� d\ZZddhZe edƒ¡Zdd„ eeƒD ƒZdd„ eD ƒZejdd„ d� dd„ Zeeƒ ƒZ eeƒZ!e"dd„ eD ƒƒZ#e$de%eƒ› de#› �ƒ e$de d d›de d e e d  d!›d"�ƒ e$d#e!d d›de!d e e d  d!›d"�ƒ ej&d$d%�\Z'Z(e(j)e*e%e ƒƒe d&d'd(e d d)›d*e d e e d  d!›d"�d+� e(j)e*e%e!ƒƒe!d,d'd-e!d d)›d*e!d e e d  d!›d"�d+� e(j+ed.d/d0d1d2� e( ,d3¡ e( -d4¡ e( .d5¡ e(j/d6d7� e(j0d8d9d:� e' 1¡  e 2¡ Z3e'j4e3d;d<d=� e 5e'¡ e3 6¡ Z7ed>ƒ 8e7¡ d?d@„ Z9e9dAƒZ:edBƒZ;dCe d d)›dDe!d d)›�e;dE< e: <dFdG¡e;dH< e: <dIdG¡e;dJ< edKƒZ=e; >e=¡ e= >e
dLe d d›dMe d e e d  d!›dNe#› dOe!d d›dMe!d e e d  d!›dP�dQƒ¡ ee7d;dR�Z?e? @dSdT¡ e?j@dUdVdWdX� e; >e?¡ e AdYdZ¡�>ZBeB Ce:dF e:d[ ¡ eB De:dF e:dI e; E¡ ¡ W d  ƒ n1 �sÞ0    Y  e$d\ƒ dS )]a@  
Counterfactual equity: compounded 1/4-Kelly Kalshi paper path, full history vs.
excluding USL+BSA. Replays each resolved paper bet chronologically using the
historical Kelly fraction (orig_stake/1000) against a running bankroll from
$1000 -- same engine that reproduced the fixed tracker to the cent.
Emails the chart.
é    N)ÚPath)ÚMIMEMultipart)ÚMIMEText)Ú	MIMEImageZAggzutf-8Úreplace)ÚencodingÚerrors)ç     @�@g      Ð?ZUSLZBSAzE:\soccer\data\bet_history.jsonc                 C   s   i | ]\}}t |ƒ|“qS © )Úid)Ú.0ÚiÚbr
   r
   ú+E:\soccer\research\analysis\_equity_excl.pyÚ
<dictcomp>   ó    r   c                 C   s(   g | ] }|  d ¡r|  d¡dur|‘qS )Úkalshi_stakeZ
kalshi_pnlN)Úget©r   r   r
   r
   r   Ú
<listcomp>   r   r   c                 C   s   |   d¡pdtt| ƒ fS )NÚdateÚ )r   Úidxr   )r   r
   r
   r   Ú<lambda>   r   r   )Úkeyc                 C   s®   t g}t }tD ]š}| d¡| v r"q|d }|r|dkr8qt|d d tƒ}t|| dƒ}|dk rdd}||krvt|dƒ}d| | }|| d	¡r–|| n| 7 }| |¡ q|S )
NÚdivZ
kalshi_askr   r   r	   é   g      ð?é   Zwon)ÚSTARTÚpaperr   ÚminÚMAX_BET_PCTÚroundÚappend)Zskip_leaguesÚeqÚrunr   ZaskZfracZstakeZbor
   r
   r   Úreplay   s$    
r&   c                 c   s    | ]}|  d ¡tv rdV  qdS )r   r   N)r   ÚEXCLr   r
   r
   r   Ú	<genexpr>2   r   r(   zall paper bets: z  | USL+BSA removed: zFULL    final: $éÿÿÿÿz,.2fz  (éd   z+.1fz%)zex-USL/BSA   : $)é   g      @)Zfigsizez#d62728r   zAll leagues  ($z,.0fz, )ÚcolorÚlwZlabelz#2077b4zExcl USL+BSA  ($Zgrayz--r   g333333ã?)r,   Zlsr-   Úalphaz
Bet numberzBankroll ($)u9   Kalshi compounded equity â€” full vs. excluding USL + BSAZbest)ZlocTg333333Ó?)r.   Úpngéx   )ÚformatZdpizE:\soccer\_equity_excl.pngc                 C   sT   i }t | ƒD ]B}| ¡ }|r| d¡sd|v r| dd¡\}}| ¡ || ¡ < q|S )Nú#ú=r   )ÚopenÚstripÚ
startswithÚsplit)ÚpÚeZlnÚkÚvr
   r
   r   Ú_envF   s    "r<   zE:\soccer\.envZrelatedzEquity: full $z vs ex-USL/BSA $ZSubjectZEMAIL_SENDERr   ZFromZEMAIL_RECIPIENTZToZalternativez:<html><body><h3>Kalshi compounded equity</h3><p>Full: <b>$z</b> (z%)<br>Excl USL+BSA (z bets removed): <b>$z=%)</p><img src="cid:eq" style="max-width:100%"></body></html>Zhtml)Z_subtypez
Content-IDz<eq>zContent-DispositionZinlinez
equity.png)Úfilenamezsmtp.gmail.comiÑ  ZEMAIL_APP_PASSWORDzemailed.)FÚ__doc__ZjsonÚioZsmtplibÚsysÚpathlibr   Zemail.mime.multipartr   Zemail.mime.textr   Zemail.mime.imager   Z
matplotlibZuseZmatplotlib.pyplotZpyplotZpltÚstdoutÚreconfigurer   r!   r'   Úloadr4   ZbetsÚ	enumerater   r   Úsortr&   ÚsetZfullZexclÚsumZn_excl_betsÚprintÚlenZsubplotsZfigZaxZplotÚrangeZaxhlineZ
set_xlabelZ
set_ylabelZ	set_titleZlegendZgridZtight_layoutÚBytesIOZbufZsavefigÚcloseÚgetvaluer/   Zwrite_bytesr<   ÚenvÚmsgr   ZaltZattachZimgZ
add_headerZSMTP_SSLÚsZloginZsendmailZ	as_stringr
   r
   r
   r   Ú<module>   s|    

..(ÿ(ÿ
"  ÿÿþþýü: