#!/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")