o
    Jil.  ã                   @   sŽ  d Z ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlZejejd� e e¡Ze
G dd„ dƒƒZG d	d
„ d
ƒZedkrÅedƒ edƒ edƒ eƒ  edƒ edƒ edƒ edƒ edƒ edƒ eƒ  edƒ edƒ edƒ edƒ edƒ edƒ edƒ edƒ eƒ  edƒ edƒ edƒ edƒ ed ƒ eƒ  ed!d"d#d$d%d&�Zed'ee ¡ ƒ› �ƒ eƒ  edƒ dS dS )(u†   
StratÃ©gie de Scalping Probabiliste/MathÃ©matique
Approche basÃ©e sur statistiques et probabilitÃ©s au lieu d'indicateurs techniques
é    N)ÚOptionalÚDictÚTuple)Ú	dataclass)Ústats)Úlevelc                   @   sb   e Zd ZU dZeed< eed< eed< eed< eed< eed< eed< eed	< eed
< eed< dS )ÚProbabilisticSignalu   Signal basÃ© sur probabilitÃ©sÚsymbolÚsideÚentry_priceÚ	stop_lossÚtake_profitÚleverageÚ
confidenceÚprobabilityÚexpected_valueÚreasonN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__ÚfloatÚint© r   r   ú[/var/www/html/HyperOracle/crypto_trader/apollo_degen_bot/probabilistic_scalping_strategy.pyr      s   
 r   c                   @   sô   e Zd ZdZ							d)d	ed
edededededefdd„Zdedej	de
e fdd„Zdej	defdd„Zdedededede
e f
dd„Zdedededede
e f
dd„Zded ededefd!d"„Zd#edefd$d%„Zdefd&d'„Zd(S )*ÚProbabilisticScalpingStrategyu=  
    StratÃ©gie de scalping basÃ©e sur des approches mathÃ©matiques/probabilistes

    Principes:
    1. MEAN REVERSION: Prix dÃ©vie de sa moyenne â†’ probabilitÃ© de retour
    2. Z-SCORE: Mesure combien le prix est "extrÃªme" statistiquement
    3. DISTRIBUTION: Analyse des mouvements historiques pour prÃ©dire probabilitÃ©s
    4. EXPECTED VALUE: Trade seulement si EV > 0
    5. KELLY CRITERION: Taille de position optimale

    Au lieu de "RSI < 30 = oversold", on calcule:
    "Le prix est Ã  2.5 Ã©carts-types sous la moyenne â†’ 98% de probabilitÃ© de retour"
    éè  ç¸…ëQ¸ž?çš™™™™™¹?éd   ç       @çÍÌÌÌÌÌä?ç333333Ó?r   Úsl_pctÚtp_pctÚlookback_windowÚz_thresholdÚmin_probabilityÚmin_evc                 C   s6   || _ |d | _|d | _|| _|| _|| _|| _d S )Nr!   ©r   r%   r&   r'   r(   r)   r*   )Úselfr   r%   r&   r'   r(   r)   r*   r   r   r   Ú__init__0   s   



z&ProbabilisticScalpingStrategy.__init__r	   ÚdfÚreturnc                 C   s¤   t |ƒ| jd k rdS |d jd }|  |¡}||d  |d  }|| j k r:|  ||||¡}|r8|  |¡r8|S dS || jkrP|  ||||¡}|rP|  |¡rP|S dS )uk   
        Analyse probabiliste du marchÃ©

        Returns:
            ProbabilisticSignal ou None
        é   NÚcloseéÿÿÿÿÚmeanÚstd)Úlenr'   ÚilocÚ_calculate_statisticsr(   Ú_create_long_signalÚ_validate_signalÚ_create_short_signal)r,   r	   r.   Úcurrent_pricer   Úz_scoreÚsignalr   r   r   ÚanalyzeD   s&   
ÿ

ùÿz%ProbabilisticScalpingStrategy.analyzec                 C   sÐ   |d j | j d… j}t |¡}t |¡}t |¡}t t |¡¡}t |¡}t |¡}t 	|d¡}	t 	|d¡}
t 	|d¡}t 	|d¡}|dkrM|| nd}t
 |¡}t
 |¡}||||||	|
|||||dœS )	u?   
        Calcule statistiques sur la fenÃªtre lookback
        r1   Né   éK   é   é_   r   )r3   r4   ÚmedianÚreturns_meanÚreturns_stdÚpercentile_25Úpercentile_75Úpercentile_5Úpercentile_95ÚcvÚskewnessÚkurtosis)r6   r'   ÚvaluesÚnpr3   r4   rC   ÚdiffÚlogÚ
percentileÚscipy_statsÚskewrL   )r,   r.   Úwindowr3   r4   rC   ÚreturnsrD   rE   rF   rG   rH   rI   rJ   rK   rL   r   r   r   r7   l   s6   






ôz3ProbabilisticScalpingStrategy._calculate_statisticsr;   r<   r   c                 C   s²   t j t|ƒ¡}|d| j  }|d| j  }| j| j }| j| j }	|| d| |	  }
|  |||¡}d|d›dt|ƒd›d|d d›d|
d›d	�	}t|d
|||| j|||
|d�
S )u;   
        CrÃ©e signal LONG basÃ© sur probabilitÃ©s
        é   zMean Reversion LONG | Z-score: ú.2fú (prix ú.1fu!   Ïƒ sous moyenne) | P(remontÃ©e): r!   ú% | EV: ú%ÚLONG©
r	   r
   r   r   r   r   r   r   r   r   )	rR   ÚnormÚcdfÚabsr%   r&   r   Ú_calculate_confidencer   ©r,   r	   r;   r<   r   r   Úsl_priceÚtp_priceÚ
win_amountÚloss_amountr   r   r   r   r   r   r8   ˜   s:   ÿÿþýÿöz1ProbabilisticScalpingStrategy._create_long_signalc                 C   sª   t j |¡}|d| j  }|d| j  }| j| j }| j| j }	|| d| |	  }
|  |||¡}d|d›d|d›d|d d›d|
d›d	�	}t|d
|||| j|||
|d�
S )u<   
        CrÃ©e signal SHORT basÃ© sur probabilitÃ©s
        rV   z Mean Reversion SHORT | Z-score: rW   rX   rY   u#   Ïƒ au-dessus moyenne) | P(baisse): r!   rZ   r[   ÚSHORTr]   )rR   r^   r_   r%   r&   r   ra   r   rb   r   r   r   r:   Ë   s:   ÿÿþýÿöz2ProbabilisticScalpingStrategy._create_short_signalr   c                 C   sä   d}t |ƒdkr|d7 }nt |ƒdkr|d7 }n
t |ƒdkr"|d7 }|dkr+|d7 }n|d	kr4|d
7 }n|dkr<|d7 }|d }d|  k rJdk rQn n|d7 }nd|  k r[dk ran n|d7 }t |d ƒdk rm|d7 }t|dƒS )uV   
        Calcule score de confiance basÃ© sur plusieurs facteurs statistiques
        r   ç      @é(   g      @é   r"   r0   ç      è?gffffffæ?r?   r#   rJ   g{®Gáz„?çš™™™™™©?é   g{®Gázt?g{®Gáz´?é
   rL   é   r!   )r`   Úmin)r,   r<   r   r   r   rJ   r   r   r   ra   ü   s*   	





z3ProbabilisticScalpingStrategy._calculate_confidencer=   c                 C   s2   |j | jk rdS |j| jk rdS |jdk rdS dS )u@   
        Valide le signal selon critÃ¨res probabilistes
        Fé2   T)r   r)   r   r*   r   )r,   r=   r   r   r   r9   %  s   
z.ProbabilisticScalpingStrategy._validate_signalc                 C   s   ddddddddœS )	u   ParamÃ¨tres optimisables)iô  r   )g{®Gáz”?rl   )rl   çš™™™™™É?)rq   éÈ   )g      ø?rh   )g333333ã?rk   )rr   g      à?r+   r   )r,   r   r   r   Úget_optimizable_params7  s   ùz4ProbabilisticScalpingStrategy.get_optimizable_paramsN)r   r   r    r!   r"   r#   r$   )r   r   r   r   r   r   r-   r   ÚpdÚ	DataFramer   r   r>   r   r7   r8   r:   ra   Úboolr9   rt   r   r   r   r   r   !   sv    øþýüûúù
ø(,þýüû
ú3þýüû
ú1þýü
û)r   Ú__main__zP================================================================================u6   ðŸŽ¯ STRATÃ‰GIE DE SCALPING PROBABILISTE/MATHÃ‰MATIQUEu   ðŸ“Š APPROCHE MATHÃ‰MATIQUE:u+     âœ“ Mean Reversion (retour Ã  la moyenne)u5     âœ“ Z-Score (distance statistique en Ã©carts-types)u-     âœ“ Distribution Gaussienne (probabilitÃ©s)u/     âœ“ Expected Value (espÃ©rance mathÃ©matique)u4     âœ“ Confidence Score (multi-facteurs statistiques)u   ðŸ”¢ EXEMPLE DE SIGNAL:u     â€¢ Prix actuel: $100,000u#     â€¢ Moyenne 100 bougies: $100,500u     â€¢ Ã‰cart-type: $200u0     â€¢ Z-score: -2.5 (prix Ã  2.5Ïƒ sous moyenne)u&     â€¢ ProbabilitÃ© de remontÃ©e: 99.4%u     â€¢ EV avec 1000x: +80%u     â†’ Signal LONG validÃ©u(   âš¡ AVANTAGES vs INDICATEURS TECHNIQUES:u?     â€¢ Quantifie VRAIMENT la probabilitÃ© (pas juste 'oversold')u,     â€¢ Expected Value = dÃ©cision rationnelleu0     â€¢ S'adapte automatiquement Ã  la volatilitÃ©u8     â€¢ Pas de paramÃ¨tres arbitraires (14 pÃ©riodes RSI?)r   r   r    r"   r#   )r   r%   r&   r(   r)   u   ParamÃ¨tres optimisables: )r   Úpandasru   ÚnumpyrN   Útypingr   r   r   Údataclassesr   Úscipyr   rR   ÚloggingÚbasicConfigÚINFOÚ	getLoggerr   Úloggerr   r   ÚprintÚstrategyr5   rt   r   r   r   r   Ú<module>   sh   
  %ûÚ