
    j                     x   S r SSKrSSKrSSKrSSKJrJr  SSKJrJr  SSK	J
r
  SrSrSrS	rS
rSS0rSrSrSrSrSrSrSrSrSrSrSrSrSSSSSS.SSSSSS.S .rS!S"S#S$SSS%.S&S'S(S)SS*S+S,.S-S.S/S)SS*S+S,.S0S1S2S)S*S+S3.S4S5S6S)S*S+S3.S7S8S9S)S*S+S3.S:.r\ " S; S<5      5       rS=\ S>\!4S? jr"S@\#S>\#4SA jr$SB\
SC\%4SD jr&g)Eu<  
V11 — Momentum Taker para Polymarket Up/Down (5min y 15min).

Cambio de paradigma respecto a V10:
  - De maker (quotear ambos lados) a taker direccional
  - Señal: movimiento de Binance vs strike > MOMENTUM_THRESHOLD
  - Si BTC sube > 0.05% del strike → comprar YES
  - Si BTC baja > 0.05% del strike → comprar NO
  - Una entrada por ventana máximo
  - Acepta 2% taker fee porque WR ~80% lo compensa
  - Soporta ventanas de 5min y 15min (--window 5 / --window 15)

Backtest (34 ventanas V10, 15min):
  Threshold 0.05%: 74 trades, WR=80%, PnL=$+163 ($+2.20/trade)
    N)	dataclassfield)datetimetimezonePathz,https://gamma-api.polymarket.com/events/slugz.https://polymarket.com/api/crypto/crypto-pricez4wss://ws-subscriptions-clob.polymarket.com/ws/marketzhttps://clob.polymarket.com   z
User-AgentzMozilla/5.0Mb@?      @{Gz??皙?g{Gz?   g      .@  i,  5m
fiveminutei  <   )win_secsslug_tagprice_variantsignal_start_tleftsignal_stop_tleft15mfifteenminuteH  x   )      zbtcusdt@tradez
btc-updownBTCg333333?)binance_stream	slug_baseprice_symbolmin_ask_confirmentry_size_usdmomentum_thresholdzethusdt@tradez
eth-updownETHg?g(\?gǺF?)r    r!   r"   r#   r$   max_entry_pricer%   zsolusdt@tradez
sol-updownSOLzxrpusdt@tradez
xrp-updownXRP)r    r!   r"   r#   r'   r%   zdogeusdt@tradezdoge-updownDOGEzbnbusdt@tradez
bnb-updownBNB)btcethsolxrpdogebnbc                   T   \ rS rSr% \\S'   \\S'   Sr\\S'   Sr	\\S'   Sr
\\S	'   S
r\\S'   S
r\\S'   S
r\\S'   S
r\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   \" S S9r\\S'   \" S  S9r\\S!'   \" S" S9r\\S#'   \" S$ S9r\\S%'   S& rS'rg())Config   assetliver   windowdefault	wallet_idg      ?thresh_mult 
binance_wsslug_prefixr"   r   r   r   r   r   r   r   r   r#   r   r$   r   r'   r
   r%   c                      [        S5      $ N.r        /var/www/html/v11b/config.py<lambda>Config.<lambda>   s    $s)rB   )default_factorylog_dirc                      [        S5      $ r?   r   rA   rB   rC   rD   rE          T#YrB   
trades_csvc                      [        S5      $ r?   r   rA   rB   rC   rD   rE      s    d3irB   windows_csvc                      [        S5      $ r?   r   rA   rB   rC   rD   rE      rI   rB   
state_jsonc                 6   [         U R                     n[        U R                     nSUS    3U l        US    SUS    S3U l        US   U l        US   U l        US   U l        US	   U l	        US
   U l
        UR                  SS5      U l        UR                  S[        5      U l        UR                  S[        5      U R                   -  U l        UR                  S[$        5      U l        U R                   S3nU R(                  S;  a  U R(                   S3OSnU R*                  (       a  U U R                   SU S3nOU U R                   SU 3n[-        [.        5      R0                  S-  U-  nX`l        US-  U l        US-  U l        US-  U l        g )Nz!wss://stream.binance.com:9443/ws/r    r!   -r   r"   r   r   r   r   r#   r   r'   r%   r$   m)r8   w1_r;   
_momentum__livelogsz
trades.csvzwindows.csvz
state.json)ASSET_CONFIGSr5   WINDOW_CONFIGSr7   r<   r=   r"   r   r   r   r   getr#   MAX_ENTRY_PRICEr'   MOMENTUM_THRESHOLDr:   r%   ENTRY_SIZE_USDr$   r9   r6   r   __file__parentrG   rJ   rL   rN   )selfacfgwcfgwin_tagwallet_prefixsubbases          rC   __post_init__Config.__post_init__   s   TZZ(dkk*?EU@V?WX#K014
3C2DAF 0!/2 ,"&';"<"&':";"&((+<d"C"&((+<o"N"&((+?AS"TW[WgWg"g"&((+;^"L[[M#04FW0W4>>*!,]_99"ODJJ<z'%HC"ODJJ<z'CCH~$$v-3  </ =0 </rB   )r<   r$   rG   r'   r#   r%   r"   r   r   r   r=   rN   rJ   r   rL   N)__name__
__module____qualname____firstlineno__str__annotations__boolr7   intr9   r:   floatr<   r=   r"   r   r   r   r   r#   r$   r'   r%   r   rG   r   rJ   rL   rN   rf   __static_attributes__rA   rB   rC   r3   r3      s    J
JFCIsKJKL#M3Hc!! s !OU!NE!OU! &&*;<GT<->?J?.?@K@->?J?0rB   r3   tsreturnc                 f    [         R                  " U [        R                  S9R	                  S5      $ )N)tzz%Y-%m-%dT%H:%M:%SZ)r   fromtimestampr   utcstrftime)rr   s    rC   isory      s%    !!"6??@TUUrB   pricec                 p    [        [        S[        S[        U [        -  5      [        -  5      5      S5      $ )Nr   gGz?   )roundmaxmin	TICK_SIZE)rz   s    rC   
snap_pricer      s,    T3tU59+<%=	%IJKQOOrB   pathdatac                     U R                  S5      n UR                  [        R                  " USSS95        UR	                  U 5        g ! [
         a%  n[        SU R                   SU 35         S nAg S nAff = f)Nz.tmpFr|   )ensure_asciiindentz[json-write] z: )with_suffix
write_textjsondumpsreplace	Exceptionprintname)r   r   tmpes       rC   
write_jsonr      sh    


6
"C0tzz$U1EFD 0dii[1#.//0s   6A
 

A9A44A9)'__doc__r   mathosdataclassesr   r   r   r   pathlibr   	GAMMA_API	PRICE_APICLOB_WSHOSTCHAIN_IDUAr[   r\   
MIN_SHARESr   rZ   MIN_ENTRY_PRICETAKER_FEE_RATEPAPER_SLIPPAGELOSS_STREAK_MAXLOSS_STREAK_COOLDAILY_LOSS_LIMITOUTCOME_MAX_WAITrX   rW   r3   ro   rl   ry   rp   r   dictr   rA   rB   rC   <module>r      s     ( ' 
 <	=	C*M*
   
	         %! (! 	* ,(! $ ,(!  $ ,(!  $ ,(!  $ -)"  $ ,(!  $W3p 30 30 30pVC VC VPe P P0T 0 0rB   