diff --git a/.Jules/palette.md b/.Jules/palette.md index d2bea2d..5de3a38 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -1,3 +1,3 @@ -## 2026-01-24 - [CLI Visual Hierarchy] -**Learning:** UX principles like visual hierarchy and semantic coloring apply equally to CLI tools. Using ANSI codes and emojis transforms a wall of text into a scannable dashboard. -**Action:** For future CLI tools, prioritize a `Colors` class or library early to establish a visual language (Green=Success/Buy, Red=Failure/Sell). +## 2024-05-22 - Visual Hierarchy in CLI Output +**Learning:** Adding color-coded indicators (Green/Red) and emojis (💰, 📉) in CLI tools significantly reduces cognitive load when parsing financial data streams. It transforms a wall of text into a scannable narrative. +**Action:** For data-heavy CLI applications, always implement a semantic color system and visual anchors (icons/emojis) for key events. diff --git a/bitcoin_trading_simulation.py b/bitcoin_trading_simulation.py index adfc288..82df43f 100644 --- a/bitcoin_trading_simulation.py +++ b/bitcoin_trading_simulation.py @@ -1,13 +1,13 @@ import numpy as np import pandas as pd -# ANSI color codes for visual enhancement class Colors: + HEADER = '\033[95m' + BLUE = '\033[94m' GREEN = '\033[92m' RED = '\033[91m' - PURPLE = '\033[95m' + ENDC = '\033[0m' BOLD = '\033[1m' - RESET = '\033[0m' def simulate_bitcoin_prices(days=60, initial_price=50000, volatility=0.02): """ @@ -57,9 +57,9 @@ def simulate_trading(signals, initial_cash=10000): portfolio['price'] = signals['price'] portfolio['cash'] = float(initial_cash) portfolio['btc'] = 0.0 - portfolio['total_value'] = portfolio['cash'] + portfolio['total_value'] = float(initial_cash) - print(f"\n{Colors.PURPLE}{Colors.BOLD}------ Daily Trading Ledger ------{Colors.RESET}") + print(f"{Colors.HEADER}{Colors.BOLD}------ Daily Trading Ledger ------{Colors.ENDC}") for i, row in signals.iterrows(): if i > 0: portfolio.loc[i, 'cash'] = portfolio.loc[i-1, 'cash'] @@ -70,14 +70,14 @@ def simulate_trading(signals, initial_cash=10000): btc_to_buy = portfolio.loc[i, 'cash'] / row['price'] portfolio.loc[i, 'btc'] += btc_to_buy portfolio.loc[i, 'cash'] -= btc_to_buy * row['price'] - print(f"Day {i}: {Colors.GREEN}📈 [BUY]{Colors.RESET} {btc_to_buy:.4f} BTC at ${row['price']:.2f}") + print(f"{Colors.GREEN}Day {i}: 💰 Buy {btc_to_buy:.4f} BTC at ${row['price']:.2f}{Colors.ENDC}") # Sell signal elif row['positions'] == -2.0: if portfolio.loc[i, 'btc'] > 0: cash_received = portfolio.loc[i, 'btc'] * row['price'] portfolio.loc[i, 'cash'] += cash_received - print(f"Day {i}: {Colors.RED}📉 [SELL]{Colors.RESET} {portfolio.loc[i, 'btc']:.4f} BTC at ${row['price']:.2f}") + print(f"{Colors.RED}Day {i}: 📉 Sell {portfolio.loc[i, 'btc']:.4f} BTC at ${row['price']:.2f}{Colors.ENDC}") portfolio.loc[i, 'btc'] = 0 portfolio.loc[i, 'total_value'] = portfolio.loc[i, 'cash'] + portfolio.loc[i, 'btc'] * row['price'] @@ -107,15 +107,14 @@ def simulate_trading(signals, initial_cash=10000): buy_and_hold_btc = initial_cash / prices.iloc[0] buy_and_hold_value = buy_and_hold_btc * prices.iloc[-1] - print(f"\n{Colors.PURPLE}{Colors.BOLD}------ Final Portfolio Performance ------{Colors.RESET}") + print(f"\n{Colors.HEADER}{Colors.BOLD}------ Final Portfolio Performance ------{Colors.ENDC}") print(f"Initial Cash: ${initial_cash:.2f}") print(f"Final Portfolio Value: ${final_value:.2f}") if profit >= 0: - profit_str = f"{Colors.GREEN}💰 +${profit:.2f}{Colors.RESET}" + print(f"Profit/Loss: {Colors.GREEN}📈 ${profit:.2f}{Colors.ENDC}") else: - profit_str = f"{Colors.RED}📉 -${abs(profit):.2f}{Colors.RESET}" + print(f"Profit/Loss: {Colors.RED}📉 ${profit:.2f}{Colors.ENDC}") - print(f"Profit/Loss: {profit_str}") print(f"Buy and Hold Strategy Value: ${buy_and_hold_value:.2f}") - print(f"{Colors.PURPLE}-----------------------------------------{Colors.RESET}") + print(f"{Colors.HEADER}-----------------------------------------{Colors.ENDC}")