"""
Optimisation de la stratégie INVERSE
"""

import logging
from apollo_client import ApolloDegenClient
from strategies.inverse_strategy import AdaptiveInverseBacktester
import config

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

logger.info("🔄 OPTIMISATION STRATÉGIE INVERSE\n")

# Télécharger données
client = ApolloDegenClient()

# Tester différents leverages
leverages = [50, 75, 100, 150, 200]
timeframes = ['1m', '3m', '5m']

best_result = None
best_config = None

for tf in timeframes:
    logger.info(f"\n📈 Timeframe: {tf}")

    df = client.get_klines('BTCUSDT', tf, limit=1500)

    if df.empty or len(df) < 200:
        continue

    for lev in leverages:
        logger.info(f"  Testing {lev}x...")

        try:
            backtester = AdaptiveInverseBacktester(initial_capital=1000, leverage=lev)
            result = backtester.backtest(df, 'BTCUSDT')

            if result and result['total_return'] > 0:
                logger.info(f"    ✅ {lev}x {tf}: {result['total_return']:+.2f}% (WR: {result['win_rate']*100:.0f}%)")

                if best_result is None or result['total_return'] > best_result['total_return']:
                    best_result = result
                    best_config = {'leverage': lev, 'timeframe': tf}

        except Exception as e:
            logger.error(f"    ❌ Erreur {lev}x: {e}")

if best_result:
    logger.info(f"\n{'='*80}")
    logger.info("🏆 MEILLEURE CONFIGURATION INVERSE")
    logger.info(f"{'='*80}")
    logger.info(f"Leverage:    {best_config['leverage']}x")
    logger.info(f"Timeframe:   {best_config['timeframe']}")
    logger.info(f"Return:      {best_result['total_return']:+.2f}%")
    logger.info(f"Win Rate:    {best_result['win_rate']*100:.1f}%")
    logger.info(f"Trades:      {len(best_result['trades'])}")
    logger.info(f"{'='*80}\n")
else:
    logger.warning("Aucune config profitable trouvée")
