a
    ³¨Ûi   ã                   @   s„  d dl Zd dlZd dlZg d¢Zddddddd	d
dddddddddddddddœZdd„ Zdd„ Zg Z	e 
¡ D ]¢\ZZeD ]”Zde› de› d �Zzpejed!d"�Zeeƒd#k sÀd$ejvsÀd%ejvrÄW qzejg d&¢d'�Zeeƒd#k räW qzeed(< eed)< e	 e¡ W qz   Y qz0 qzqneje	d*d+�Zejed, d*d-d.�ed,< ejd,gd'� d,¡jd*d/�Zeejd0d1„ d2d3�Ž \ZZZe ¡ Zd2ej eej!d4� ed5< d2ej eej!d4� ed6< d2ej eej!d4� ed7< ed% ed7  ed7  ed8< ed9 ed5  ed5  ed:< ed; ed6  ed6  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@œZ"g Z#e" 
¡ D ]Ú\Z\Z$Z%Z&Z'eed) ekee% dAk@  Z(e( )¡ D ]¢\Z*Z+ee+dB e+dC e+dD ƒ\Z,Z-Z.e,e-e.dEœe' Z/e+e& d2 Z0e+e& e/ d2 Z1e0d k�rêe1e0 nd Z2e2d k�r†e# e+d, e+d( ee$e+e& e2e+d$ e'kdFœ¡ �q†�qRe 3e#¡ d,¡jd*d/�Z4e4d, j5 6dG¡e4dH< dIZ7dJZ8i Z9i Z:g Z;e4 <dH¡D ]Æ\Z=Z>e>d(  ?¡ d  Z@e@e:v�r¢e8e:e@< d ZAd ZBd ZCe> )¡ D ]\\Z*ZDeEeDdK e7 dIƒZFe8eF ZGeCeG7 ZCeDdL �reAeGeDdM d2  7 ZAeBd27 ZBneAeG8 ZA�q¶e8eA7 Z8e; eHe=ƒe@ee>ƒeBeAe8dNœ¡ �qxe 3e;¡ZIeD ]0ZeIeId( ek Z(e(jJ�sNe(dO jKdP e9e< �qNeLdQƒ eLdRƒ eLdSƒ eLdQƒ eLdTd(dU›dVdWdX›dVdYdZ›dVd[d\›dVd]d^›dVd_d^›dVd`da›�ƒ eLdbƒ dJZMeD �] Ze4e4d( ek ZNeIeId( ek ZOeOjJ�r"�qðe: PeeM¡ZQe9 PeeM¡ZReReQ d2 dc ZSeeNƒZTeTd k�rleNdL  U¡ dc nd ZVeOdO ZWeW X¡ ZYeYeW eY dc  Z¡ Z[eSd k�r¢ddndeZ\eLedU›dfeQdg›dfeRdh›dVeSdi›dje\› dkeTdl›dkeVdm›dne[do›dj�ƒ eRZM�qðeLdTdpdU›dfdqdr›dfeMdh›dVeMds d2 dc di›dj�	ƒ eLdtƒ eLduƒ eLdQƒ eLdTd(dU›dVd]dl›dkdvd\›dkdwdx›dkd_d^›�
ƒ eLdbƒ g Z]d Z^eD ]�Ze4e4d( ek Z(dydz„ e( )¡ D ƒZ_ee_ƒ\Z`Z/ZaZVead k�rÊddnd{Z\eLedU›dVe`dl›dke/d|›dkead}›dneVdm›dje\› �ƒ e^e/7 Z^e] be_¡ �q†ee]ƒ\ZcZdZeZfeLd~dU›dVecdl›dkedd|›dkeed}›dnefdm›dj�
ƒ eLdƒ eLd€ƒ eLd�ƒ d‚dƒ›d{ gd„d…„ eD ƒ¡ dkd~d\›� ZheLehƒ eLd†ƒ eie" 
¡ ƒD ]Ê\Z\Z$Z%Z&Z'edƒ›Zjg ZkeD ]|Ze4e4d‚ eke4d( ek@  Z(d‡dz„ e( )¡ D ƒZ_ee_ƒ\Z`Z/ZaZVek be_¡ e`dˆk�r>ejdkeadi›dj�7 Zjnejdkd‰d\›�7 Zj�qÔeekƒ\Z`Z/ZaZVejdkeadi›dj�7 ZjeLejƒ �q´dS )Šé    N)Z1920Z2021Z2122Z2223Z2324Z2425Z2526ÚEPLÚChampionshipú
League Oneú
League TwoÚ
ConferenceúLa LigaÚSegundaúSerie AúSerie BÚ
Bundesligaú2.BundesligaúLigue 1úLigue 2Ú
EredivisieúBelgian Pro LeagueúPrimeira Ligaú	Super LigúGreek SLúScottish PremúScottish ChampúScottish L1úScottish L2)ZE0ZE1ZE2ZE3ZECZSP1ZSP2ZI1ZI2ZD1ZD2ZF1ZF2ZN1ZB1ZP1ZT1ZG1ZSC0ZSC1ZSC2ZSC3c                 C   sb   | sdS dd„ | D ƒ}t |ƒ}t|ƒ}|t|dƒt|| d dƒttdd„ | D ƒƒ| d dƒfS )	N)r   ç        r   r   c                 S   s    g | ]\}}|r|d  nd‘qS )é   éÿÿÿÿ© )Ú.0ÚoÚwr   r   ú(E:\soccer\misc\archive\season_returns.pyÚ
<listcomp>   ó    zsimulate.<locals>.<listcomp>é   éd   c                 s   s   | ]\}}|V  qd S )Nr   )r   Ú_r   r   r   r   Ú	<genexpr>   r!   zsimulate.<locals>.<genexpr>r   )ÚlenÚsumÚround)ÚbetsZprofitsÚnÚtotalr   r   r   Úsimulate   s    r,   c                 C   s:   d|  d|  d|  }d|  | d| | d| | fS )Nr   r   )ÚhÚdÚaZoverr   r   r   Úremove_margin   s    r0   zE:/soccer/league_data/r$   z.csvz	utf-8-sig)Úencodingé
   ÚFTRÚB365A)r3   r4   ÚPSCHÚPSCDÚPSCA)ZsubsetÚSeasonZ
LeagueNameT)Zignore_indexÚDateZcoerce)ZdayfirstÚerrors)Zdropc                 C   s   t | d | d | d ƒS )Nr5   r6   r7   )r0   )Úrr   r   r   Ú<lambda>+   r!   r<   r   )Zaxis)ÚindexZ
PSC_fair_HZ
PSC_fair_DZ
PSC_fair_AÚedge_AÚB365HÚedge_HÚB365DÚedge_D)ZHomer@   r?   ÚH)ZAwayr>   r4   ÚA)ZDrawrB   rA   ÚD)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r
   r   gš™™™™™©?r5   r6   r7   )rC   rE   rD   )r9   r8   ÚLeagueZOutcomeÚOddsÚKellyÚWonÚWÚWeekg      Ð?g     @�@rH   rI   rG   )rK   r8   ÚNZWinsZPLÚBankrollrM   r   zP================================================================================uE   SEASON-BY-SEASON RETURNS â€” Best CLV outcome per league, 0.25x Kellyz+Continuous bankroll (not reset each season)Ú
z<10ú u   Start Â£z>12u   End Â£z>14ZReturnú>8ZBetsz>6zWR%zMax DD%z>9zP--------------------------------------------------------------------------------r#   z +z --u    Â£z>11,.2fz>13,.2fz>+7.1fú%ú  z>5z>5.1fz%  z>7.1fZTOTALz1,000.00z>11iè  zQ
================================================================================uD   FLAT BETTING (Â£1/unit per bet) â€” season by season, no compoundingzP&LzROI%z>7c                 C   s    g | ]\}}|d  |d f‘qS ©rG   rI   r   ©r   r$   r;   r   r   r   r    ­   r!   r    Ú z>8.2fz>7.2fZALLz`
===============================================================================================zLPER-LEAGUE PER-SEASON ROI% (flat betting, best outcome per league, >5% edge)z_===============================================================================================rF   z<22c                 c   s   | ]}d |d›�V  qdS )rR   rP   Nr   )r   Úsr   r   r   r%   ¼   r!   r%   z_-----------------------------------------------------------------------------------------------c                 C   s    g | ]\}}|d  |d f‘qS rS   r   rT   r   r   r   r    Ä   r!   é   zn/a)lZpandasZpdZnumpyZnpÚosZseasonsZleague_namesr,   r0   Zall_dfsÚitemsÚcodeÚnamerV   ÚpathZread_csvr.   r&   ÚcolumnsZdropnaÚappendÚconcatZdfZto_datetimeZsort_valuesZreset_indexÚzipZapplyZtHZtDZtAÚcopyZSeriesr=   Zbest_configZrowsZoutcomeZedge_colZodds_colÚresultÚsubZiterrowsr$   r;   ZtH2ZtD2ZtA2ÚpÚbZedgeZkelly_fZ	DataFrameZbets_dfZdtZ	to_periodZ
KELLY_MULTZbankrollZseason_snapshotsZseason_start_brZweek_historyÚgroupbyZweekZgrpÚmodeZseasonZwplZwinsZstakedZbetÚminÚfZstakeÚstrZhist_dfÚemptyZilocÚprintZprev_brZsub_betsZsub_histÚgetZstart_brZend_brZret_pctZn_betsZmeanÚwrZ	br_seriesZcummaxZpeakÚmaxZddZmarkerZ
total_betsZtotal_plr)   r*   ZroiÚextendZn_allZp_allZroi_allZwr_allÚjoinÚheaderÚsortedZrow_strZall_betsr   r   r   r   Ú<module>   s<  
ú	$ê


þ

ÿ
@
F6040(

