"""
Test sur une période plus longue
"""

import logging
from apollo_client import ApolloDegenClient
from strategies.inverse_strategy_v10 import InverseBacktesterV10

logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger(__name__)
logging.getLogger('InverseBacktesterV10').setLevel(logging.INFO)

# Récupérer plus de données
client = ApolloDegenClient()

print("\n🧪 TEST SUR DIFFÉRENTES PÉRIODES")
print("="*80)

periods = [
    (500, "8h"),
    (1000, "16h"),
    (1500, "25h"),
    (3000, "50h"),
]

for limit, label in periods:
    print(f"\n📊 Période: {label} ({limit} chandeliers 1m)")
    print("-"*80)

    df = client.get_klines('BTCUSDT', '1m', limit=limit)

    backtester = InverseBacktesterV10(initial_capital=1000)
    result = backtester.backtest(df, 'BTCUSDT')

    if result:
        print(f"Return:      {result['total_return']:+.2f}%")
        print(f"Win rate:    {result['win_rate']*100:.1f}%")
        print(f"Trades:      {len(result['trades'])}")

        wins = [t for t in result['trades'] if t['pnl_usd'] > 0]
        if wins:
            avg_win = sum(t['pnl_pct'] for t in wins) / len(wins)
            print(f"Avg win:     {avg_win:+.2f}%")

        losses = [t for t in result['trades'] if t['pnl_usd'] <= 0]
        if losses:
            avg_loss = sum(t['pnl_pct'] for t in losses) / len(losses)
            print(f"Avg loss:    {avg_loss:+.2f}%")

print("\n" + "="*80)
