
    i*                     :   d Z ddlZddlZddlmZmZ ddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZ  ej$                  ej&                  d	
        ej(                  d      ZddedefdZd Zd Zd Zd Zd Zedk(  r ej>                   e              yy)u   
Demo FreqAI - Démonstration des nouvelles fonctionnalités

Tests:
1. Outlier Detection
2. Auto-Retraining Adaptatif
3. Backtesting Adaptatif
4. Intégration complète

Usage:
    python demo_freqai.py
    N)datetime	timedelta)List)get_freqai_manager)get_outlier_detector)get_adaptive_retrainer)AdaptiveBacktestercompare_adaptive_vs_classicz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)levelformatDemodaysreturnc                    t         j                  d|  d       d}|g}t        j                  j	                  d       t        | dz        D ]>  }t        j                  j                  dd      }|d   d	|z   z  }|j                  |       @ d
}g }t        t        |            D ]E  }t        j                  j                  dd      }|d	|z   z  }	|j                  t        |	d             G ||t        t        |            D cg c]/  }t        j                         t        t        |      |z
        z
  1 c}dS c c}w )u3   Générer des données synthétiques pour les testsu-   🔧 Génération de données synthétiques (z
 jours)...g      Y@*      g-C6?g{Gzt?   i@B r   g?)hours)pricesvolumes
timestamps)loggerinfonprandomseedrangenormalappendlenmaxr   nowr   )
r   
base_pricer   ichange	new_pricebase_volumer   volume_changevolumes
             ./demo_freqai.pygenerate_synthetic_datar,   "   s)   
KK?vZPQ J\F IINN24"9 !!!&%02J!f*-	i ! KG3v; '		((C0M 12s61~&' PUVYZ`VaPbc1x||~	FA(FFc  ds   4D>c                     t         j                  d       t         j                  d       t         j                  d       t               } t         j                  d       g d}t        d      D cg c]%  }dt        j
                  j                  dd	      z   ' }}| j                  d
||dd      }t         j                  d|j                          t         j                  d|j                          t         j                  d|j                          t         j                  d|j                  d       t         j                  d       |dd dgz   }| j                  d||dd      }t         j                  d|j                          t         j                  d|j                          t         j                  d|j                          t         j                  d|j                  d       t         j                  d       |dd dgz   }| j                  d||dd      }t         j                  d|j                          t         j                  d|j                          t         j                  d|j                          t         j                  d|j                  d       t         j                  d       g d }g d!}| j                  d"||dd# z   ||dd# z   $      \  }	}
t         j                  d%|	        t         j                  d|
        t         j                  d&       yc c}w )'zTest 1: Outlier DetectionQ
================================================================================zTEST 1: OUTLIER DETECTIONP================================================================================u!   
📊 Test 1.1: Données normalesd   e   g      Y@f   g     `Y@g   g     Y@h   g     Y@i   g      Z@j   g     `Z@k   g     Z@l   g     Z@m   g      [@n        r1   BTCUSDT2   g      ?symbolr   r   rsibb_positionu      • Outlier détecté: u      • Méthode:       • Raison: u      • Confidence: z.2%u   
📊 Test 1.2: Volume SpikeNr   '  ETHUSDTu      • Score: z.2fu   
📊 Test 1.3: Price Spike   BNBUSDTP   g?u   
📊 Test 1.4: Pump & Dump)
r1   r6   s            x   r6   r1   b   )
r=     i  rF   i.  i@  i  rQ   i  r=   DOGEUSDT
   )rB   r   r   u      • Pump&Dump détecté: u$   
✅ Test Outlier Detection terminé)r   r   r   r   r   r   randintdetect_outlier
is_outliermethodreason
confidencescoredetect_pump_dump)detectornormal_prices_normal_volumesresultspike_volumesspike_pricespump_pricespump_volumesis_pumprX   s              r+   test_outlier_detectionrf   @   s   
KK
KK+,
KK#%H KK45QMCH9MadRYY..tS99MNM$$ % F KK,V->->,?@A
KK#FMM?34
KK/&--12
KK%f&7&7%<=> KK/0"3B'5'1M$$ % F KK,V->->,?@A
KK#FMM?34
KK/&--12
KK.c 234 KK./ "%-L$$ % F KK,V->->,?@A
KK#FMM?34
KK/&--12
KK%f&7&7%<=> KK./CKQL//]3B//~cr22 0 OGV KK.wi89
KK/&*+
KK78 Ns   0*L;c            
         t         j                  d       t         j                  d       t         j                  d       t               } t         j                  d       | j                         \  }}t         j                  d|        t         j                  d|        t         j                  d       t         j                  d| j                  xs d	        t         j                  d
t        | j                                t         j                  d| j                  xs d        | j                  rt         j                  d       t        | j                  dd d      D ]  \  }}t         j                  d| d|j                  dd              t         j                  d|j                  dd              t         j                  d|j                  dd      dd        t         j                  d       y)z!Test 2: Auto-Retraining Adaptatifr.   z!TEST 2: AUTO-RETRAINING ADAPTATIFr/   u0   
🔍 Vérification nécessité de retraining...u      • Retraining nécessaire: rE   u   
📊 État actuel:u      • Dernier retraining: Jamaisu      • Total retrainings: u      • Dernier régime: Inconnuu.   
📜 Historique des retrainings (derniers 5):Nr   z   z. 	timestampzN/Au         • Raison: rX   u         • Durée: durationr   .1fsu"   
✅ Test Auto-Retraining terminé)
r   r   r   should_retrainlast_retrainr!   retrain_historylast_market_regime	enumerateget)	retrainerro   rX   r%   entrys        r+   test_adaptive_retrainingrw      s   
KK
KK34
KK&(I KKCD&557NF
KK1.1ABC
KK/&*+ KK&(
KK-i.D.D.P-QRS
KK,S1J1J-K,LMN
KK*9+G+G+T9*UVW   EG!)";";BC"@!D 	NHAuKK#aS599[%#@"ABCKK,UYYx-G,HIJKK,UYYz1-Ec,J!LM	N
 KK56    c                  "   t         j                  d       t         j                  d       t         j                  d       t        d      } t         j                  d       t         j                  d| d   d	   j                          d
| d   d   j                                 t         j                  dt	        | d                 t         j                  d       t         j                  d       t        dd      }t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       y )!zTest 3: Backtesting Adaptatifr.   zTEST 3: BACKTESTING ADAPTATIFr/      )r   u   
🧪 Configuration backtest:u      • Période: r   r   u    → r   u      • Data points: r   u#      • Capital initial: 10,000 USDTu#      • Retraining: tous les 7 joursrF      )initial_capitalretrain_interval_daysu   
⚙️ Simulation de trades...u=      (Version simplifiée - intégration complète nécessaire)u   
📊 Exemple de métriques:u      • Total Trades: 45u      • Win Rate: 62.22%u(      • Net Profit: +842.50 USDT (+8.43%)u      • Profit Factor: 1.85u      • Max Drawdown: -3.24%u      • Sharpe Ratio: 1.42u      • Sortino Ratio: 2.13u.   
   ⚠️ Pour un backtest complet, utiliser:zI      python run_backtest_adaptive.py --start 2024-01-01 --end 2024-01-31u   
✅ Test Backtesting terminéN)r   r   r,   dater!   r	   )data
backtesters     r+   test_backtesting_adaptiver      sz   
KK
KK/0
KK #+D
KK01
KK#D$6q$9$>$>$@#AtLGYZ\G]GbGbGdFefg
KK&s4>':&;<=
KK57
KK57 $J KK23
KKOP KK/0
KK)*
KK)*
KK:;
KK,-
KK-.
KK+,
KK,-
KKAB
KK[\
KK12rx   c                  v   t         j                  d       t         j                  d       t         j                  d       t               } t         j                  d       g d}t        d      D cg c]%  }dt        j
                  j                  dd	      z   ' }}| j                  d
||dd      \  }}t         j                  d|        |r"t         j                  d|j                          t         j                  d       | j                         }|rNt         j                  d       t         j                  d|d           t         j                  d|d   dd       nt         j                  d       t         j                  d       | j                          t         j                  d       yc c}w )u   Test 4: Intégration Complèter.   zTEST 4: FREQAI INTEGRATIONr/   u/   
📊 Test 4.1: Vérification outlier sur trader0   r<   r=   r>   r1   r?   7   g333333?rA   u      • Bloquer ce trade: u      • Analyse: u.   
📊 Test 4.2: Check périodique (retraining)u      • Retraining effectué!rE   rX   u      • Durée: rl   rm   rn   u$      • Pas de retraining nécessaireu'   
📊 Test 4.3: Statistiques du manageru   
✅ Test Intégration terminéN)r   r   r   r   r   r   rT   should_check_outliersrX   periodic_checkprint_stats)managerr]   r^   r_   should_blockanalysisresultss          r+   test_freqai_integrationr      sl   
KK
KK,-
KK "G KKBCQMCH9MadRYY..tS99MNM$:: ; L( KK+L>:;&x&789 KKAB$$&G23ogh&7%89:ogj&9#%>a@A:; KK:;
KK23; Ns   0*F6c                  $   t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       	 t                t                t	                t                t         j                  d       t         j                  d	       t         j                  d       t         j                  d
       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       t         j                  d       y# t        $ r$} t         j                  d|  d       Y d} ~ yd} ~ ww xY w)u   Exécuter tous les testsr.   u-   🚀 DEMO FREQAI - NOUVELLES FONCTIONNALITÉSr/   u   
Modules testés:z-  1. Outlier Detection (pumps, flash crashes)z4  2. Auto-Retraining Adaptatif (48h ou performances)u1     3. Backtesting Adaptatif (simulation réaliste)z'  4. FreqAI Integration (orchestration)u)   ✅ TOUS LES TESTS TERMINÉS AVEC SUCCÈSu   
📚 Prochaines étapes:u#     1. Intégrer dans trading_bot.py:z6     from freqai_integration import get_freqai_managerz"     freqai = get_freqai_manager() z-  2. Dans trading_loop(), avant chaque trade:z8     should_block, _ = freqai.should_check_outliers(...)z     if should_block: continueu3     3. Ajouter check périodique (toutes les heures):z     freqai.periodic_check()z  4. Lancer backtest complet:z.     python run_backtest_adaptive.py --days 30u   
❌ Erreur pendant les tests: T)exc_infoNr   r   )r   r   rf   rw   r   r   	Exceptionerror)es    r+   mainr     s   
KK
KK?@
KK
KK$%
KK?@
KKFG
KKCD
KK9:
KK#  	!" 	"# 	 ! 	M"?@F019:LM89BCDNO45BIJ23B34DEF 	  7s;dKs   ?F"I" "	J+J

J__main__)rz   ) __doc__sysloggingr   r   numpyr   typingr   freqai_integrationr   outlier_detectionr   ai_adaptive_retrainerr   backtesting_adaptiver	   r
   basicConfigINFO	getLoggerr   intdictr,   rf   rw   r   r   r   __name__exit rx   r+   <module>r      s      (   2 2 8 P   
,,A 
		6	"# t <K9\7@+3\)4X1h zCHHTV rx   