#!/usr/bin/env python3 """ 🔍 NY Session Fine-Tuning Analyse Was wäre wenn wir NY Session Threshold erhöhen? """ import sqlite3 import pandas as pd conn = sqlite3.connect('trading_bot.db') print('=' * 80) print('🔍 NY SESSION DETAILLIERTE ANALYSE') print('=' * 80) print() # 1. Basis-Performance NY vs Asian print('1️⃣ NY vs. ASIAN SESSION VERGLEICH') print('-' * 80) comparison = pd.read_sql_query(''' SELECT session, COUNT(*) as trades, SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins, SUM(CASE WHEN net_profit < 0 THEN 1 ELSE 0 END) as losses, ROUND(AVG(confidence), 1) as avg_conf, ROUND(SUM(net_profit), 2) as total_profit, ROUND(AVG(net_profit), 2) as avg_profit, ROUND(AVG(CASE WHEN net_profit > 0 THEN net_profit END), 2) as avg_win, ROUND(AVG(CASE WHEN net_profit < 0 THEN net_profit END), 2) as avg_loss FROM trades WHERE session IN ('ny', 'asian') GROUP BY session ''', conn) comparison['win_rate'] = (comparison['wins'] / comparison['trades'] * 100).round(1) print(comparison.to_string(index=False)) print() # 2. NY Session nach Confidence-Bands print('=' * 80) print('2️⃣ NY SESSION: PERFORMANCE NACH CONFIDENCE') print('-' * 80) ny_confidence = pd.read_sql_query(''' SELECT CASE WHEN confidence >= 99 THEN '99-100%' WHEN confidence >= 98 THEN '98-99%' WHEN confidence >= 97 THEN '97-98%' WHEN confidence >= 96 THEN '96-97%' WHEN confidence >= 95 THEN '95-96%' ELSE '<95%' END as conf_range, COUNT(*) as trades, SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins, ROUND(AVG(confidence), 1) as avg_conf, ROUND(SUM(net_profit), 2) as total_profit, ROUND(AVG(net_profit), 2) as avg_profit FROM trades WHERE session = 'ny' GROUP BY conf_range ORDER BY avg_conf DESC ''', conn) ny_confidence['win_rate'] = (ny_confidence['wins'] / ny_confidence['trades'] * 100).round(1) print(ny_confidence.to_string(index=False)) print() # 3. Alle NY Trades im Detail print('=' * 80) print('3️⃣ ALLE NY TRADES (chronologisch)') print('-' * 80) ny_trades = pd.read_sql_query(''' SELECT DATE(entry_time) as date, TIME(entry_time) as time, ROUND(confidence, 1) as conf, quality, volume, ROUND(net_profit, 2) as profit, CASE WHEN net_profit > 0 THEN 'WIN' ELSE 'LOSS' END as result FROM trades WHERE session = 'ny' ORDER BY entry_time ''', conn) print(ny_trades.to_string(index=False)) print() # 4. Simulationen print('=' * 80) print('4️⃣ SIMULATION: WAS WÄRE WENN...') print('-' * 80) print() scenarios = [] # Aktuell current = pd.read_sql_query(''' SELECT COUNT(*) as trades, SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins, ROUND(SUM(net_profit), 2) as profit FROM trades WHERE session = 'ny' ''', conn) scenarios.append({ 'scenario': 'AKTUELL (alle NY)', 'trades': current['trades'][0], 'wins': current['wins'][0], 'profit': current['profit'][0] }) # >= 97% sim97 = pd.read_sql_query(''' SELECT COUNT(*) as trades, SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins, ROUND(SUM(net_profit), 2) as profit FROM trades WHERE session = 'ny' AND confidence >= 97 ''', conn) scenarios.append({ 'scenario': 'NY >= 97% Conf', 'trades': sim97['trades'][0], 'wins': sim97['wins'][0], 'profit': sim97['profit'][0] }) # >= 98% sim98 = pd.read_sql_query(''' SELECT COUNT(*) as trades, SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins, ROUND(SUM(net_profit), 2) as profit FROM trades WHERE session = 'ny' AND confidence >= 98 ''', conn) scenarios.append({ 'scenario': 'NY >= 98% Conf', 'trades': sim98['trades'][0], 'wins': sim98['wins'][0], 'profit': sim98['profit'][0] }) # >= 99% sim99 = pd.read_sql_query(''' SELECT COUNT(*) as trades, SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins, ROUND(SUM(net_profit), 2) as profit FROM trades WHERE session = 'ny' AND confidence >= 99 ''', conn) scenarios.append({ 'scenario': 'NY >= 99% Conf', 'trades': sim99['trades'][0], 'wins': sim99['wins'][0], 'profit': sim99['profit'][0] }) # NY blockiert scenarios.append({ 'scenario': 'NY BLOCKIERT', 'trades': 0, 'wins': 0, 'profit': 0.0 }) # DataFrame sims = pd.DataFrame(scenarios) sims['win_rate'] = (sims['wins'] / sims['trades'] * 100).round(1) sims.loc[sims['trades'] == 0, 'win_rate'] = 0 sims['avg_profit'] = (sims['profit'] / sims['trades']).round(2) sims.loc[sims['trades'] == 0, 'avg_profit'] = 0 print(sims.to_string(index=False)) print() # 5. Empfehlung print('=' * 80) print('5️⃣ EMPFEHLUNG') print('-' * 80) print() print('Basierend auf den Daten:') print() print('Option 1: AKTUELL BEHALTEN (alle NY Trades)') print(f' Trades: 28') print(f' Profit: $1,489') print(f' Win-Rate: 46.4%') print(f' Pro: Mehr Trades, profitabel') print(f' Con: Niedrige Win-Rate, mehr Stress') print() print('Option 2: NY >= 98% Confidence') print(f' Trades: {sim98["trades"][0]}') print(f' Profit: ${sim98["profit"][0]}') print(f' Win-Rate: {(sim98["wins"][0]/sim98["trades"][0]*100):.1f}%' if sim98["trades"][0] > 0 else ' Win-Rate: N/A') print(f' Pro: Höhere Win-Rate, bessere Qualität') print(f' Con: Weniger Trades') print() print('Option 3: NY BLOCKIEREN') print(f' Trades: 0') print(f' Profit: $0') print(f' Pro: Focus auf Asian (97.8% WR!), weniger Drawdown') print(f' Con: -$1,489 Profit verzichtet') print() # Asian Info asian = pd.read_sql_query(''' SELECT COUNT(*) as trades, ROUND(SUM(net_profit), 2) as profit FROM trades WHERE session = 'asian' ''', conn) print(f'KONTEXT: Asian Session bringt ${asian["profit"][0]} bei 97.8% WR') print(f'NY ist nur {(1489/asian["profit"][0]*100):.1f}% vom Asian Profit') print() conn.close() print('=' * 80) print('FAZIT') print('=' * 80) print() print('1. NY Session ist PROFITABEL aber VOLATIL (46.4% WR)') print('2. Asian Session ist DOMINANT (97.8% WR, $6,943 Profit)') print('3. NY Threshold auf 98%+ würde Win-Rate verbessern') print('4. Oder: Focus auf Asian, NY blockieren (weniger Stress)') print()