a
    «25jS  ã                   @   s†  d Z ddlZddlZddlZddlmZ ddlZej dd¡ ddl	m
Z
mZmZmZmZmZ dZdd„ Zed	k�r‚eƒ Zed
eeƒ› ded d › ded d › d�ƒ eddd›ddd›ddd›ddd›ddd›ddd›ddd›ddd›�ƒ eD ]Š\ZZZZed k�rqöe
eeeƒZeded›ded d!›ded" d#›d$ed d%›d$ed& d'›ded( d)›d$ed* d+›d$ed, d+›d-�ƒ qödS ).aF  Final return on POLYMARKET for the four tracked strategies:
   {baseline, momentum} x {flat, kelly}.

Reuses the canonical evaluate() from forward_test_drift_momentum.py UNCHANGED, so
sizing/metrics are identical to the Kalshi forward test. Only the signal source is
swapped: Polymarket MID (poly_*_price) instead of kalshi mid/ask.

CAVEAT: the poly backfill is MID-ONLY (no historical bid/ask). So a0==m0 and aL==mL
(execute at mid). This is the same optimistic mid-pricing behind the +17.4% figure;
real ask execution would be worse (Kalshi mid->ask cost ~2.5pts and dropped n).
é    N)Údefaultdictz	E:\soccer)ÚevaluateÚBANDÚCOMBOSÚ_ptsÚ_fÚ_resultzE:\soccer\poly_backfillc                  C   sè  t tƒ} t tj td¡¡D ]p}t|ddd��N}t 	|¡D ]2}| | 
d¡| 
d¡| 
d¡| 
d¡f  |¡ q:W d   ƒ q1 s‚0    Y  qg }|  ¡ D �]6\\}}}}}	|s²qštd	d
„ |	D ƒdd„ d�}
t|
ƒdk rÚqšt|	ƒ}|d u rìqšg }dD �]À}d|› d�d|› � }}d }|
D ]¢\}}t| 
|¡ƒ}t| 
|¡ƒ}|d u�r|d u�rd|  k �rjdk �rn nL|dk�r|| | }td |  k�r¤td k �rn n||||f} �q¾�q|�sÆqô|\}}}}d  }}t|
ƒD ]r\}}t| 
|¡ƒt| 
|¡ƒ }}|d u�râ|d u�râd|  k �r4dk �rân n|dk�râ|| }} �qV�qâ|d u �rbqô|d dk�rz|dk�pŽ|d dk�oŽ|dk}| t||||||||||| d�
¡ qô|rš| t|dd„ d�¡ qš|jdd„ d� |S )Nz*_polybackfill.csvÚ zutf-8)ÚnewlineÚencodingZ	game_dateÚleagueÚhomeÚawayc                 S   s>   g | ]6}|  d ¡pd ¡ dkrt|d ƒrt|d ƒ|f‘qS )Zstatusr	   ZPREZ	timestamp)ÚgetÚupperr   )Ú.0Úr© r   ú*E:\soccer\research\poly_four_strategies.pyÚ
<listcomp>    s   "ÿz&build_poly_signals.<locals>.<listcomp>c                 S   s   | d S )Nr   r   )Útr   r   r   Ú<lambda>"   ó    z$build_poly_signals.<locals>.<lambda>)Úkeyé   )r   r   Zpoly_Z_priceZ	pin_fair_r   é   ÚHÚA)
Úgdr   ÚsideÚclvZa0Úp0ZaLÚpLÚwonZdriftc                 S   s   | d S )Nr    r   )Údr   r   r   r   A   r   c                 S   s   | d S )Nr   r   )Úsr   r   r   r   B   r   )r   ÚlistÚglobÚosÚpathÚjoinÚBACKFILL_DIRÚopenÚcsvZ
DictReaderr   ÚappendÚitemsÚsortedÚlenr   r   r   ÚreversedÚdictÚmaxÚsort)Zfixturesr)   Zfhr   Úsigsr   r   r   r   ZrowsZpreZftrZcandsr   ZpricekZpfkZentZtsÚmZpfr    Ú_Zm0r!   Zclv0ZmLr"   ZmvZpvr#   r   r   r   Úbuild_poly_signals   sb    ÿÿ&þ
:$:
.ÿ
r9   Ú__main__z)POLYMARKET signals over backfill window: z fixtures (r   z -> éÿÿÿÿz)
z  ZstrategyZ16sú Únz>4ZWRz>6Útotalz>9zfinal $z>10zg/betZMDDz>8ZROIturnZedgeZ4dÚwrz5.1fz% z+8.1fÚfinalz>10,.0fÚgz+8.4fZmddz+7.1fZroiturnú%)Ú__doc__r-   r'   r(   Úcollectionsr   Úsysr)   ÚinsertZforward_test_drift_momentumr   r   r   r   r   r   r+   r9   Ú__name__r6   Úprintr1   ÚtagZsigZstkZnmr$   r   r   r   r   Ú<module>   s8    2

ÿ
ÿ
H
0ÿÿÿÿ