a
    ô_‚j¬  ã                   @   st   d Z ddlZddlZej dd¡ ddlZddlZddl	Z
e
j	 e
jj¡e
jdd�  ¡ Zdd„ Zedkrpeƒ  dS )	a;  Running P&L for the live maker, decomposed and surviving settlement.

Reading it off open positions does not work: a book that settles drops out of
the position list, so completions keep vanishing from the tally and the total
silently shrinks. This reconstructs every book from the FILL history, which is
permanent, and marks each one either at its settled result or at the current
market.

Splits completions from partials, because they are different animals: a
completed book is locked and outcome-independent, a partial is a directional
bet we did not intend to make.
é    NzE:\soccer\mainé   )Zhoursc                     s´  t  dd„ ¡‰ t ¡  d¡pg D ]Æ} t|  dd¡ƒtk r:q |  d¡s t|  dd¡ƒ ¡ dkr^q t|  d	d¡ƒ ¡ d
krxq ˆ | d  }t|  d¡p’dƒ}|d  |7  < |d  t|  d¡p¼dƒ| 7  < |d  t|  d¡pÞdƒ7  < q t  t	¡}ˆ D ]&}|d 
| d¡d d… ¡  |¡ qödd„ t ¡  d¡�p6g D ƒ‰d }}d }}g }	g }
t| ¡ ƒD �]r\}}t‡ fdd„|D ƒƒ}t‡ fdd„|D ƒƒ}‡ fdd„|D ƒ‰‡fdd„|D ƒ}t‡fdd„|D ƒƒ}| dd¡d d… }t‡fd d„|D ƒƒ}t|ƒd!k�rn|�rn|�sn|d7 }|| d" }||7 }|
 d#|d$›d%|d& d'›d(|d& d)›d*�|�rbd+nd ¡ �q`|�r‚|	 ||f¡ d}d,}|D ]Î}zDt |¡�p¢i  d-i ¡}| d.¡}| d/¡}| d0¡�pÎd ¡ }W n  t�yö   d1}Y  �q^Y n0 ˆ| }|d2v �r.|ˆ | d |dk�r$|nd 7 }n,|d u�rV|ˆ | d |t|ƒ  7 }nd1}�qŽ|�rh�q`|d7 }||| 7 }|
 d3t|ƒ› d4|d$›d%|d& d'›d(|| d& d)›d*�	|�r¼d5nd |�rÊd+nd ¡ �q`td6 
|
¡ƒ tƒ  td7|d8›d9|d& d:›d*�ƒ td;|d8›d9|d& d:›d*�ƒ td3dd<›d=�ƒ td3d>d?›d@|| d& d:›d*�ƒ |	�r~tdAdB 
dCd„ |	D ƒ¡› �ƒ t ¡ }|d u�r°tdD|dE›dF|tj dG›dH�ƒ d S )INc                   S   s   g d¢S )N)ç        r   r   © r   r   r   ú$E:\soccer\research\mm_session_pnl.pyÚ<lambda>   ó    zmain.<locals>.<lambda>ÚfillsZcreated_timeÚ Zis_takerZsideÚyesÚactionZsellÚtickerZcount_fpr   é   Zyes_price_dollarsé   Zfee_costú-c                 S   s$   i | ]}|d  t | d¡pdƒ“qS )r   Zposition_fpr   )ÚfloatÚget)Ú.0Úpr   r   r   Ú
<dictcomp>/   s   ÿzmain.<locals>.<dictcomp>Zmarket_positionsr   c                 3   s   | ]}ˆ | d  V  qdS )r   Nr   ©r   Út©r   r   r   Ú	<genexpr>7   r   zmain.<locals>.<genexpr>c                 3   s   | ]}ˆ | d  V  qdS )r   Nr   r   r   r   r   r   8   r   c                    s   i | ]}|ˆ | d  “qS )r   r   r   r   r   r   r   9   r   c                    s   g | ]}ˆ | d kr|‘qS )gq¬‹Ûh ð?r   r   ©Úqtyr   r   Ú
<listcomp>:   r   zmain.<locals>.<listcomp>c                 3   s"   | ]}t ˆ  |d ¡ƒdk V  qdS )r   g•Ö&è.>N)Úabsr   r   )Úposr   r   r   <   r   ZKXé   c                 3   s   | ]}ˆ | d kV  qdS )g+‡ÙÎ÷ï?Nr   r   r   r   r   r   C   r   é   g      ð?z  COMPLETE Z30ú éd   z>5.0fzc  z>+6.2fÚcz  (settled)FZmarketZyes_ask_dollarsZstatusÚresultT)r
   Znoz  z/3      z  OVER-SOLDÚ
z  completed books : z>3z   z>+8.2fz  partial books   : Z16z        ----------Zsessionz>16z        z%
  over-sold legs (duplicate fills): z, c                 s   s,   | ]$\}}|D ]}|  d d¡d V  qqdS )r   r   N)Úrsplit)r   Ú_Útsr   r   r   r   r   r   r   z
  account equity $z.2fz  (z+.2fz vs funded))ÚcollectionsÚdefaultdictÚktZ	get_fillsr   ÚstrÚSINCEÚlowerr   ÚlistÚjoinÚsplitÚappendZget_positionsÚsortedÚitemsÚsumÚallÚreplaceÚlenZ
get_marketÚstripÚ	ExceptionÚprintÚMLZaccount_equityZ
FUNDED_USD)ÚfÚaÚqZbooksr   Zcomp_nZpart_nZcomp_pnlZpart_pnlZoversoldÚlinesZevr'   ZcollZfeeZoverZsettledÚnameZfullr   ZmtmÚunknownÚmÚnowÚstÚresÚeqr   )r   r   r   r   Úmain   s¨    "" 
$ÿÿÿ


$
$ÿþý
"ÿ
rG   Ú__main__)Ú__doc__r(   ÚsysÚpathÚinsertZkalshi_traderr*   Zmm_maker_liver;   ZdatetimeZ_dtrC   ÚtimezoneZutcZ	timedeltaZ	isoformatr,   rG   Ú__name__r   r   r   r   Ú<module>   s   
ÿ\