#!/usr/bin/env python3 """ Test script to demonstrate the new /performance command functionality. """ def demo_performance_ranking(): """Demo what the performance ranking will look like.""" print("š Token Performance Ranking Demo") print("=" * 50) # Mock token performance data (sorted by P&L) token_performance = { 'BTC': { 'total_pnl': 150.75, 'pnl_percentage': 5.2, 'completed_trades': 8, 'win_rate': 75.0 }, 'ETH': { 'total_pnl': 45.30, 'pnl_percentage': 3.1, 'completed_trades': 5, 'win_rate': 60.0 }, 'SOL': { 'total_pnl': -25.40, 'pnl_percentage': -2.8, 'completed_trades': 3, 'win_rate': 33.3 } } sorted_tokens = sorted( token_performance.items(), key=lambda x: x[1]['total_pnl'], reverse=True ) print("š Token Performance Ranking\n") for i, (token, stats) in enumerate(sorted_tokens, 1): # Ranking emoji if i == 1: rank_emoji = "š„" elif i == 2: rank_emoji = "š„" elif i == 3: rank_emoji = "š„" else: rank_emoji = f"#{i}" # P&L emoji pnl_emoji = "š¢" if stats['total_pnl'] >= 0 else "š“" print(f"{rank_emoji} {token}") print(f" {pnl_emoji} P&L: ${stats['total_pnl']:,.2f} ({stats['pnl_percentage']:+.1f}%)") print(f" š Trades: {stats['completed_trades']} | Win: {stats['win_rate']:.0f}%") print() # Summary total_pnl = sum(stats['total_pnl'] for stats in token_performance.values()) total_trades = sum(stats['completed_trades'] for stats in token_performance.values()) total_pnl_emoji = "š¢" if total_pnl >= 0 else "š“" print("š¼ Portfolio Summary:") print(f" {total_pnl_emoji} Total P&L: ${total_pnl:,.2f}") print(f" š Tokens Traded: {len(token_performance)}") print(f" š Completed Trades: {total_trades}") print() print("š” Usage: /performance BTC for detailed BTC stats") def demo_detailed_performance(): """Demo what detailed token performance will look like.""" print("\nš BTC Detailed Performance Demo") print("=" * 50) # Mock detailed BTC stats token_stats = { 'token': 'BTC', 'total_pnl': 150.75, 'pnl_percentage': 5.2, 'completed_volume': 2900.00, 'expectancy': 18.84, 'total_trades': 12, 'completed_trades': 8, 'buy_trades': 6, 'sell_trades': 6, 'win_rate': 75.0, 'profit_factor': 3.2, 'total_wins': 6, 'total_losses': 2, 'largest_win': 85.50, 'largest_loss': 32.20, 'avg_win': 42.15, 'avg_loss': 28.75, 'recent_trades': [ { 'side': 'buy', 'value': 500, 'timestamp': '2023-12-01T10:30:00', 'pnl': 0 }, { 'side': 'sell', 'value': 500, 'timestamp': '2023-12-01T14:15:00', 'pnl': 45.20 }, { 'side': 'buy', 'value': 300, 'timestamp': '2023-12-01T16:45:00', 'pnl': 0 } ] } pnl_emoji = "š¢" if token_stats['total_pnl'] >= 0 else "š“" print(f"š {token_stats['token']} Detailed Performance\n") print("š° P&L Summary:") print(f"⢠{pnl_emoji} Total P&L: ${token_stats['total_pnl']:,.2f} ({token_stats['pnl_percentage']:+.2f}%)") print(f"⢠šµ Total Volume: ${token_stats['completed_volume']:,.2f}") print(f"⢠š Expectancy: ${token_stats['expectancy']:,.2f}") print() print("š Trading Activity:") print(f"⢠Total Trades: {token_stats['total_trades']}") print(f"⢠Completed: {token_stats['completed_trades']}") print(f"⢠Buy Orders: {token_stats['buy_trades']}") print(f"⢠Sell Orders: {token_stats['sell_trades']}") print() print("š Performance Metrics:") print(f"⢠Win Rate: {token_stats['win_rate']:.1f}%") print(f"⢠Profit Factor: {token_stats['profit_factor']:.2f}") print(f"⢠Wins: {token_stats['total_wins']} | Losses: {token_stats['total_losses']}") print() print("š” Best/Worst:") print(f"⢠Largest Win: ${token_stats['largest_win']:,.2f}") print(f"⢠Largest Loss: ${token_stats['largest_loss']:,.2f}") print(f"⢠Avg Win: ${token_stats['avg_win']:,.2f}") print(f"⢠Avg Loss: ${token_stats['avg_loss']:,.2f}") print() print("š Recent Trades:") for trade in token_stats['recent_trades'][-3:]: side_emoji = "š¢" if trade['side'] == 'buy' else "š“" pnl_display = f" | P&L: ${trade['pnl']:.2f}" if trade['pnl'] != 0 else "" print(f"⢠{side_emoji} {trade['side'].upper()} ${trade['value']:,.0f} @ 12/01 10:30{pnl_display}") print() print("š Use /performance to see all token rankings") def demo_no_data_scenarios(): """Demo what happens when there's no trading data.""" print("\nš No Data Scenarios Demo") print("=" * 50) print("1. No trading data at all:") print("š Token Performance\n") print("š No trading data available yet.\n") print("š” Performance tracking starts after your first completed trades.") print("Use /long or /short to start trading!") print() print("2. No trading history for specific token:") print("š SOL Performance\n") print("š No trading history found for SOL.\n") print("š” Start trading SOL with:") print("⢠/long SOL 100") print("⢠/short SOL 100") print() print("š Use /performance to see all token rankings.") print() print("3. Open positions but no completed trades:") print("š ETH Performance\n") print("ETH has open positions but no completed trades yet\n") print("š Current Activity:") print("⢠Total Trades: 3") print("⢠Buy Orders: 2") print("⢠Sell Orders: 1") print("⢠Volume: $1,500.00") print() print("š” Complete some trades to see P&L statistics!") print("š Use /performance to see all token rankings.") if __name__ == "__main__": print("š Performance Command Demo") print("=" * 60) demo_performance_ranking() demo_detailed_performance() demo_no_data_scenarios() print("\n" + "=" * 60) print("ā Key Features:") print("⢠Token performance ranking (best to worst P&L)") print("⢠Detailed stats for specific tokens") print("⢠Win rate, profit factor, expectancy calculations") print("⢠Recent trade history included") print("⢠Mobile-friendly compressed and detailed views") print("⢠Handles cases with no data gracefully") print("⢠Easy navigation between ranking and details") print("\nš” Usage:") print("⢠/performance - Show all token rankings") print("⢠/performance BTC - Show detailed BTC stats") print("⢠/performance ETH - Show detailed ETH stats")