
    %j                        d dl mZ d dlmZ d dlmZ d dlmZ  ed           G d d                      Z ed           G d	 d
                      Z	 ed           G d d                      Z
dS )    )annotations)Counter)	dataclass)DecimalT)frozenc                      e Zd ZU ded<   dS )TradeRecordstrcoinN)__name__
__module____qualname____annotations__     P/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/risk/coin_leakage_gate.pyr	   r	      s         IIIIIr   r	   c                  F    e Zd ZU ded<   ded<   ded<   ded<   dZd	ed
<   dS )CoinLeakageDecisionboolallowedr   risk_multiplierz
str | Nonetop_cointop_coin_shareokr
   reasonN)r   r   r   r   r   r   r   r   r   r      sP         MMMFr   r   c                  B    e Zd ZU dZded<   dZded<   dZded<   ddZdS )CoinLeakageGateg      ?floatreduce_thresholdg333333?block_thresholdg      ?reduced_multiplierr   r
   tradeslist[TradeRecord]windowintreturnr   c                  || d          }|s,t          dt          d          d t          d                    S t          d |D                       }|                    d          d         \  }}t          |          t          t	          |                    z  }|                                }||k    rE|t          t          | j                            k    r t          dt          d          ||d          S ||k    rW|t          t          | j                            k    r2t          dt          t          | j	                            ||d	          S t          dt          d          ||          S )
NT10c              3  H   K   | ]}|j                                         V  d S )N)r   upper).0records     r   	<genexpr>z+CoinLeakageGate.evaluate.<locals>.<genexpr>    s0      BB**,,BBBBBBr      r   Fcoin_leakage_blockcoin_leakage_reduce)
r   r   r   most_commonlenr+   r
   r    r   r!   )	selfr   r"   r$   recentcountsr   	top_countshares	            r   evaluatezCoinLeakageGate.evaluate   sT   ! 	O&tWS\\4NNNBB6BBBBB$0033A6)	""WS[[%9%99zz||8D4H0I0I(J(J J J&ugcllHeMabbb8D4I0J0J(K(K K K&tWS9P5Q5Q-R-RT\^cez{{{"4xGGGr   N)r   r
   r"   r#   r$   r%   r&   r   )r   r   r   r   r   r    r!   r9   r   r   r   r   r      se         """""!O!!!! $$$$$H H H H H Hr   r   N)
__future__r   collectionsr   dataclassesr   decimalr   r	   r   r   r   r   r   <module>r>      s'   " " " " " "       ! ! ! ! ! !       $        $        $H H H H H H H H H Hr   