a
    îÕjE  ã                '   @   s\  d Z ddlZddl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Ze d¡ ddlmZ ddlmZ dcdd	„Zeƒ Ze d
d¡Ze dd¡Ze dd¡Zedƒ�Ze e¡ZW d  ƒ n1 sÞ0    Y  e edd„ d�Zg g  Z!Z"g g  Z#Z$dZ%e! &d¡ e" &e%¡ e# &d¡ e$ &e%¡ e%Z'e%Z(e)edd�D ]V\Z*Z+de+v �rfe+d Z'e! &e*¡ e" &e'¡ de+v �rŒe+d Z(e# &e*¡ e$ &e(¡ �qLe'e% Z,e(e% Z-e,e% d Z.e-e% d Z/e0eƒZ1e2dd„ eD ƒƒZ3e1�røe3e1 d ndZ4dd„ eD ƒZ5e2dd„ e5D ƒƒZ6e5�r2e6e0e5ƒ d ndZ7ej8dd�\Z9Z:e:j;e!e"dd d!e'd"›d#e.d$›d%�d&� e:j;e#e$d'd d(e(d"›d#e/d$›d%�d&� e:j<e%d)d*dd+d,� e: =d-¡ e: >d.¡ e: ?d/ed d0 › d1ed2 d0 › d3e1› d4�¡ e:j@d5d6d7� e:jAd6d8d9� e9 B¡  e C¡ ZDe9jEeDd:d;d<� eD Fd¡ eD G¡ ZHe Ie9¡ d=ed d0 › d>ed2 d0 › d?e1› d@e'd"›dAe,dk�rzdBndC› dDe,dE›dAe,dk�r–dBndC› dDe.d$›dFe4dG›dHe3› dIe1› dJe(d"›dAe-dk�rÎdBndC› dDe-dE›dAe-dk�rêdBndC› dDe/d$›dFe7dG›dHe6› dIe0e5ƒ› dK�'ZJe	dLƒZKdMed2 d0 › dNe1› dOe.d$›dPe/d$›d%�	eKdQ< eeKdR< eeKdS< e	dTƒZLeK MeL¡ eL MeeJdUƒ¡ eeHd:dV�ZNeN OdWdX¡ eNjOdYdZd[d\� eK MeN¡ e�rºe�sÊePd]ƒ eQdƒ‚e Rd^d_¡�.ZSeS Tee¡ eS UeeeK V¡ ¡ W d  ƒ n1 �s0    Y  ePd`e› �ƒ ePdae'd"›dNe.d$›d%�ƒ ePdbe(d"›dNe/d$›d%�ƒ dS )dzNOne-shot: email the strategy equity path (B365 + Kalshi) as an embedded chart.é    N)ÚMIMEMultipart)ÚMIMEText)Ú	MIMEImageZAggúE:/soccer/.envc                 C   sž   i }z‚t | ƒ�f}|D ]P}| ¡ }|r| d¡sd|vr8q| dd¡\}}| ¡  d¡ d¡|| ¡ < qW d   ƒ n1 sz0    Y  W n ty˜   Y n0 |S )Nú#ú=é   ú"ú')ÚopenÚstripÚ
startswithÚsplitÚFileNotFoundError)ÚpathÚoutÚfÚlineÚkÚv© r   ú+E:\soccer\misc\archive\email_equity_path.pyÚ	_load_env   s    
@r   ZEMAIL_SENDERÚ ÚEMAIL_RECIPIENTÚEMAIL_APP_PASSWORDzE:/soccer/bet_history.jsonc                 C   s   |   d¡p| d | d fS )NZresolved_atÚdate©Úget)Úxr   r   r   Ú<lambda>%   ó    r    )Úkeyg     @�@r   )ÚstartZbankroll_afterÚkalshi_bankroll_afteréd   c                 c   s    | ]}|  d ¡du rdV  qdS ©ZwonTr   Nr   ©Ú.0r   r   r   r   Ú	<genexpr>?   r!   r)   c                 C   s   g | ]}d |v r|‘qS )r$   r   r'   r   r   r   Ú
<listcomp>B   r!   r*   c                 c   s    | ]}|  d ¡du rdV  qdS r&   r   r'   r   r   r   r)   C   r!   )é   é   )Zfigsizez#1f77b4é   zB365  ($z,.2fz, z+.1fz%))ÚcolorÚ	linewidthZlabelz#d62728z
Kalshi  ($Zgrayz--g333333ã?)r.   Z	linestyler/   Úalphaz
Bet numberzBankroll ($)u   Live equity path â€” r   z to éÿÿÿÿz  (z bets)ZbestT)ZlocZframeong333333Ó?)r0   Zpngéx   )ÚformatZdpizx
<html><body style="font-family: -apple-system, Segoe UI, sans-serif;">
<h2>Strategy Equity Path</h2>
<p><b>Window:</b> z &rarr; z<br>
<b>Bets resolved:</b> aG  </p>

<table cellpadding="6" style="border-collapse: collapse; margin: 12px 0;">
  <tr style="background:#f0f0f0;">
    <th align="left">Book</th><th align="right">Final $</th><th align="right">P&amp;L</th><th align="right">ROI</th><th align="right">Win rate</th>
  </tr>
  <tr>
    <td><b>B365</b></td>
    <td align="right">$z)</td>
    <td align="right" style="color:ZgreenZredz;">z+.2fz%</td>
    <td align="right">z.1fz% (ú/zH)</td>
  </tr>
  <tr>
    <td><b>Kalshi</b></td>
    <td align="right">$a$  )</td>
  </tr>
</table>

<p><img src="cid:equitychart" alt="equity path" style="max-width:100%;"></p>

<p style="color:#888;font-size:12px;">Both books started at $1,000.
Bets ordered by resolution date. Kalshi line only updates on bets where a Kalshi position was placed.</p>
</body></html>
Zrelatedu   Equity path â€” z (z bets, B365 z% / Kalshi ZSubjectZFromZToZalternativeÚhtml)Z_subtypez
Content-IDz<equitychart>zContent-DispositionZinlinez
equity.png)Úfilenameu)   Email creds missing in .env â€” aborting.zsmtp.gmail.comiÑ  zSent equity path email -> z	B365:   $z	Kalshi: $)r   )WÚ__doc__ÚosZjsonÚioÚbase64ZsmtplibZdatetimeZdtZemail.mime.multipartr   Zemail.mime.textr   Zemail.mime.imager   Z
matplotlibZuseZmatplotlib.pyplotZpyplotZpltZmatplotlib.datesZdatesZmdatesr   Úenvr   ZEMAIL_ADDRESSr   r   r   r   ÚloadZhistÚsortedZb365_xZb365_yZkalshi_xZkalshi_yZSTARTÚappendZ	last_b365Zlast_kalshiÚ	enumerateÚiZbetZb365_pnlZ
kalshi_pnlZb365_roiZ
kalshi_roiÚlenZn_betsÚsumZn_b365_winsZb365_wrZk_betsZk_winsZk_wrZsubplotsZfigZaxZplotZaxhlineZ
set_xlabelZ
set_ylabelZ	set_titleZlegendZgridZtight_layoutÚBytesIOZbufZsavefigÚseekÚgetvalueZ	img_bytesÚcloser5   ÚmsgZaltZattachZimgZ
add_headerÚprintÚ
SystemExitZSMTP_SSLÚsZloginZsendmailZ	as_stringr   r   r   r   Ú<module>   sä   0


(



&&

.


ý
ýüôóóòòñññíììëëêêê!.

2