#!/usr/bin/env python3
"""
Script de test pour vérifier le filtre min_score du régime de marché.
Simule différents scores et vérifie qu'ils sont correctement filtrés selon le régime.
"""

from market_regime import MarketRegimeDetector
from binance.client import Client
import config

# Initialiser le market regime
regime_detector = MarketRegimeDetector()

# Obtenir le régime actuel
regime_name, regime_details = regime_detector.get_current_regime()

print("=" * 70)
print("📊 TEST DU FILTRE MIN_SCORE DU RÉGIME DE MARCHÉ")
print("=" * 70)
print(f"\n🏷️  Régime actuel: {regime_name}")
print(f"📈 Score global: {regime_details.get('score', 'N/A')}")
print(f"🎯 Min score requis: {regime_details.get('min_score', 'N/A')}")
print(f"📦 Max positions: {regime_details.get('max_positions', 'N/A')}")

# Simuler différents scores de cryptos
test_scores = [
    ("BTCUSDT", 100),
    ("ETHUSDT", 90),
    ("SOLUSDT", 85),
    ("WLFIUSDT", 81),
    ("DOTUSDT", 75),
    ("ATOMUSDT", 70),
    ("AVAXUSDT", 65),
    ("ICPUSDT", 60),
    ("OPUSDT", 50),
]

min_score = regime_details.get('min_score', 65)

print(f"\n🧪 TEST DE VALIDATION DES SCORES (seuil: {min_score}):")
print("-" * 70)

accepted = []
rejected = []

for symbol, score in test_scores:
    if score >= min_score:
        status = "✅ ACCEPTÉ"
        accepted.append((symbol, score))
    else:
        status = f"🛡️  BLOQUÉ (score {score} < min {min_score})"
        rejected.append((symbol, score))
    
    print(f"{symbol:12} | Score: {score:3} | {status}")

print("\n" + "=" * 70)
print(f"✅ Cryptos acceptées: {len(accepted)}")
for symbol, score in accepted:
    print(f"   - {symbol}: {score}")

print(f"\n🛡️  Cryptos rejetées: {len(rejected)}")
for symbol, score in rejected:
    print(f"   - {symbol}: {score}")

print("\n" + "=" * 70)
print("📋 RÉSULTAT DU TEST:")
if regime_name == "BEAR" and min_score == 85:
    print("✅ Configuration correcte: BEAR exige min_score=85")
    if ("WLFIUSDT", 81) in rejected:
        print("✅ WLFI (score 81) correctement REJETÉ")
    else:
        print("❌ ERREUR: WLFI (score 81) devrait être REJETÉ")
else:
    print(f"⚠️  Régime actuel: {regime_name} (min_score={min_score})")

print("=" * 70)
