From c1fcc4edc585efd8b6b3bb41cbf4df920496763c Mon Sep 17 00:00:00 2001 From: Jiaji Date: Tue, 9 Dec 2025 15:49:49 +0800 Subject: [PATCH] Add trading agent (#45) --- README.md | 12 + README_zh.md | 12 + evotraders/.eslintrc | 24 + evotraders/.gitignore | 63 + evotraders/.pre-commit-config.yaml | 122 ++ evotraders/.stylelintrc | 6 + evotraders/README.md | 236 +++ evotraders/README_zh.md | 243 +++ evotraders/backend/__init__.py | 0 evotraders/backend/agents/__init__.py | 6 + evotraders/backend/agents/analyst.py | 133 ++ .../backend/agents/portfolio_manager.py | 188 ++ evotraders/backend/agents/prompt_loader.py | 184 ++ .../agents/prompts/analyst/personas.yaml | 117 + .../backend/agents/prompts/analyst/system.md | 23 + .../prompts/portfolio_manager/system.md | 31 + .../agents/prompts/risk_manager/system.md | 21 + evotraders/backend/agents/risk_manager.py | 88 + evotraders/backend/cli.py | 623 ++++++ evotraders/backend/config/__init__.py | 0 evotraders/backend/config/constants.py | 76 + evotraders/backend/config/data_config.py | 82 + evotraders/backend/config/env_config.py | 36 + evotraders/backend/core/__init__.py | 7 + evotraders/backend/core/pipeline.py | 1262 +++++++++++ evotraders/backend/core/scheduler.py | 263 +++ evotraders/backend/core/state_sync.py | 434 ++++ evotraders/backend/data/__init__.py | 6 + evotraders/backend/data/cache.py | 107 + .../backend/data/historical_price_manager.py | 233 ++ evotraders/backend/data/mock_price_manager.py | 241 +++ .../backend/data/polling_price_manager.py | 175 ++ evotraders/backend/data/ret_data_updater.py | 387 ++++ evotraders/backend/data/schema.py | 184 ++ evotraders/backend/llm/__init__.py | 0 evotraders/backend/llm/models.py | 243 +++ evotraders/backend/main.py | 332 +++ evotraders/backend/services/__init__.py | 2 + evotraders/backend/services/gateway.py | 542 +++++ evotraders/backend/services/market.py | 625 ++++++ evotraders/backend/services/storage.py | 1099 ++++++++++ evotraders/backend/tests/__init__.py | 0 evotraders/backend/tests/test_agents.py | 580 +++++ .../backend/tests/test_market_service.py | 438 ++++ evotraders/backend/tests/test_settlement.py | 195 ++ evotraders/backend/tools/__init__.py | 0 evotraders/backend/tools/analysis_tools.py | 1240 +++++++++++ evotraders/backend/tools/data_tools.py | 720 +++++++ evotraders/backend/utils/__init__.py | 4 + evotraders/backend/utils/analyst_tracker.py | 277 +++ evotraders/backend/utils/baselines.py | 356 ++++ evotraders/backend/utils/msg_adapter.py | 321 +++ evotraders/backend/utils/progress.py | 140 ++ evotraders/backend/utils/settlement.py | 338 +++ .../backend/utils/terminal_dashboard.py | 348 +++ evotraders/backend/utils/trade_executor.py | 772 +++++++ evotraders/docs/assets/dashboard.jpg | Bin 0 -> 184735 bytes evotraders/docs/assets/evotraders_demo.gif | Bin 0 -> 1030009 bytes evotraders/docs/assets/evotraders_logo.jpg | Bin 0 -> 48711 bytes .../docs/assets/evotraders_pipeline.jpg | Bin 0 -> 183917 bytes evotraders/docs/assets/performance.jpg | Bin 0 -> 193799 bytes evotraders/env.template | 59 + evotraders/frontend/.gitignore | 33 + evotraders/frontend/README.md | 7 + evotraders/frontend/components.json | 22 + evotraders/frontend/env.template | 10 + evotraders/frontend/eslint.config.js | 29 + evotraders/frontend/index.css | 68 + evotraders/frontend/index.html | 14 + evotraders/frontend/package.json | 55 + evotraders/frontend/postcss.config.js | 6 + evotraders/frontend/public/trading_logo.png | Bin 0 -> 41505 bytes evotraders/frontend/src/App.css | 42 + evotraders/frontend/src/App.jsx | 1031 +++++++++ .../frontend/src/components/AboutModal.jsx | 358 ++++ .../frontend/src/components/AgentCard.jsx | 517 +++++ .../frontend/src/components/AgentFeed.jsx | 641 ++++++ evotraders/frontend/src/components/Header.jsx | 253 +++ .../frontend/src/components/MarkdownModal.jsx | 276 +++ .../frontend/src/components/NetValueChart.jsx | 831 ++++++++ .../src/components/PerformanceView.jsx | 236 +++ .../frontend/src/components/RoomView.jsx | 770 +++++++ .../frontend/src/components/RulesView.jsx | 483 +++++ .../src/components/StatisticsView.jsx | 593 ++++++ .../frontend/src/components/StockLogo.jsx | 28 + evotraders/frontend/src/config/constants.js | 145 ++ .../frontend/src/hooks/useFeedProcessor.js | 363 ++++ evotraders/frontend/src/index.css | 68 + evotraders/frontend/src/main.jsx | 8 + evotraders/frontend/src/services/websocket.js | 192 ++ .../frontend/src/styles/GlobalStyles.jsx | 1876 +++++++++++++++++ evotraders/frontend/src/utils/formatters.js | 85 + evotraders/frontend/src/utils/modelIcons.js | 396 ++++ evotraders/frontend/tailwind.config.js | 60 + evotraders/frontend/tsconfig.json | 23 + evotraders/frontend/vite.config.js | 16 + evotraders/pyproject.toml | 80 + 97 files changed, 23871 insertions(+) create mode 100644 evotraders/.eslintrc create mode 100644 evotraders/.gitignore create mode 100644 evotraders/.pre-commit-config.yaml create mode 100644 evotraders/.stylelintrc create mode 100644 evotraders/README.md create mode 100644 evotraders/README_zh.md create mode 100644 evotraders/backend/__init__.py create mode 100644 evotraders/backend/agents/__init__.py create mode 100644 evotraders/backend/agents/analyst.py create mode 100644 evotraders/backend/agents/portfolio_manager.py create mode 100644 evotraders/backend/agents/prompt_loader.py create mode 100644 evotraders/backend/agents/prompts/analyst/personas.yaml create mode 100644 evotraders/backend/agents/prompts/analyst/system.md create mode 100644 evotraders/backend/agents/prompts/portfolio_manager/system.md create mode 100644 evotraders/backend/agents/prompts/risk_manager/system.md create mode 100644 evotraders/backend/agents/risk_manager.py create mode 100644 evotraders/backend/cli.py create mode 100644 evotraders/backend/config/__init__.py create mode 100644 evotraders/backend/config/constants.py create mode 100644 evotraders/backend/config/data_config.py create mode 100644 evotraders/backend/config/env_config.py create mode 100644 evotraders/backend/core/__init__.py create mode 100644 evotraders/backend/core/pipeline.py create mode 100644 evotraders/backend/core/scheduler.py create mode 100644 evotraders/backend/core/state_sync.py create mode 100644 evotraders/backend/data/__init__.py create mode 100644 evotraders/backend/data/cache.py create mode 100644 evotraders/backend/data/historical_price_manager.py create mode 100644 evotraders/backend/data/mock_price_manager.py create mode 100644 evotraders/backend/data/polling_price_manager.py create mode 100644 evotraders/backend/data/ret_data_updater.py create mode 100644 evotraders/backend/data/schema.py create mode 100644 evotraders/backend/llm/__init__.py create mode 100644 evotraders/backend/llm/models.py create mode 100644 evotraders/backend/main.py create mode 100644 evotraders/backend/services/__init__.py create mode 100644 evotraders/backend/services/gateway.py create mode 100644 evotraders/backend/services/market.py create mode 100644 evotraders/backend/services/storage.py create mode 100644 evotraders/backend/tests/__init__.py create mode 100644 evotraders/backend/tests/test_agents.py create mode 100644 evotraders/backend/tests/test_market_service.py create mode 100644 evotraders/backend/tests/test_settlement.py create mode 100644 evotraders/backend/tools/__init__.py create mode 100644 evotraders/backend/tools/analysis_tools.py create mode 100644 evotraders/backend/tools/data_tools.py create mode 100644 evotraders/backend/utils/__init__.py create mode 100644 evotraders/backend/utils/analyst_tracker.py create mode 100644 evotraders/backend/utils/baselines.py create mode 100644 evotraders/backend/utils/msg_adapter.py create mode 100644 evotraders/backend/utils/progress.py create mode 100644 evotraders/backend/utils/settlement.py create mode 100644 evotraders/backend/utils/terminal_dashboard.py create mode 100644 evotraders/backend/utils/trade_executor.py create mode 100644 evotraders/docs/assets/dashboard.jpg create mode 100644 evotraders/docs/assets/evotraders_demo.gif create mode 100644 evotraders/docs/assets/evotraders_logo.jpg create mode 100644 evotraders/docs/assets/evotraders_pipeline.jpg create mode 100644 evotraders/docs/assets/performance.jpg create mode 100644 evotraders/env.template create mode 100644 evotraders/frontend/.gitignore create mode 100644 evotraders/frontend/README.md create mode 100644 evotraders/frontend/components.json create mode 100644 evotraders/frontend/env.template create mode 100644 evotraders/frontend/eslint.config.js create mode 100644 evotraders/frontend/index.css create mode 100644 evotraders/frontend/index.html create mode 100644 evotraders/frontend/package.json create mode 100644 evotraders/frontend/postcss.config.js create mode 100644 evotraders/frontend/public/trading_logo.png create mode 100644 evotraders/frontend/src/App.css create mode 100644 evotraders/frontend/src/App.jsx create mode 100644 evotraders/frontend/src/components/AboutModal.jsx create mode 100644 evotraders/frontend/src/components/AgentCard.jsx create mode 100644 evotraders/frontend/src/components/AgentFeed.jsx create mode 100644 evotraders/frontend/src/components/Header.jsx create mode 100644 evotraders/frontend/src/components/MarkdownModal.jsx create mode 100644 evotraders/frontend/src/components/NetValueChart.jsx create mode 100644 evotraders/frontend/src/components/PerformanceView.jsx create mode 100644 evotraders/frontend/src/components/RoomView.jsx create mode 100644 evotraders/frontend/src/components/RulesView.jsx create mode 100644 evotraders/frontend/src/components/StatisticsView.jsx create mode 100644 evotraders/frontend/src/components/StockLogo.jsx create mode 100644 evotraders/frontend/src/config/constants.js create mode 100644 evotraders/frontend/src/hooks/useFeedProcessor.js create mode 100644 evotraders/frontend/src/index.css create mode 100644 evotraders/frontend/src/main.jsx create mode 100644 evotraders/frontend/src/services/websocket.js create mode 100644 evotraders/frontend/src/styles/GlobalStyles.jsx create mode 100644 evotraders/frontend/src/utils/formatters.js create mode 100644 evotraders/frontend/src/utils/modelIcons.js create mode 100644 evotraders/frontend/tailwind.config.js create mode 100644 evotraders/frontend/tsconfig.json create mode 100644 evotraders/frontend/vite.config.js create mode 100644 evotraders/pyproject.toml diff --git a/README.md b/README.md index d33fbbd..10073a4 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,7 @@ It includes **agent deployment** and **secure sandboxed tool execution**, and ca | | conversational_agents/multiagent_debate | ✅ | ❌ | Agents engaging in debates | | **Evaluation** | evaluation/ace_bench | ✅ | ❌ | Benchmarks with ACE Bench | | **General AI Agent** | alias/ | ✅ | ✅ | Agent application running in sandbox to solve diverse real-world problems | +| **Financial Trading** | evotraders/ | ✅ | ❌ | Self-Evolving Multi-Agent Trading System | ------ @@ -134,6 +135,17 @@ Beyond being a ready-to-use agent, we envision Alias as a foundational template 📖 **Documentation**: [English](alias/README.md) | [中文](alias/README_ZH.md) +### EvoTraders + +*EvoTraders* is a financial trading agent framework that builds a trading system capable of continuous learning and evolution in real markets through multi-agent collaboration and memory systems. Key features include: + +- **Multi-Agent Collaboration**: A team of specialized analysts (Fundamentals, Technical, Sentiment, Valuation) and managers collaborating like a real trading team. +- **Memory Enhancement & Evolution**: Agents reflect and summarize after trades using the ReMe memory framework, evolving their trading styles over time. +- **Real-Time & Backtesting**: Supports both real-time market data integration for live trading and backtesting modes. +- **Visualized Dashboard**: A comprehensive frontend to observe analysis processes, communication, and performance tracking. + +📖 **Documentation**: [English](evotraders/README.md) | [中文](evotraders/README_zh.md) + ------ ## ℹ️ Getting Help diff --git a/README_zh.md b/README_zh.md index 4b0957e..04c949e 100644 --- a/README_zh.md +++ b/README_zh.md @@ -105,6 +105,7 @@ AgentScope Runtime 是一个**全面的运行时框架**,主要解决部署和 | | conversational_agents/multiagent_debate | ✅ | ❌ | Agent 辩论 | | **评估** | evaluation/ace_bench | ✅ | ❌ | ACE Bench 基准测试 | | **通用智能体** | alias/ | ✅ | ✅ | 在沙盒中运行的可以解决真实问题的智能体程序 | +| **金融交易** | evotraders/ | ✅ | ❌ | 自我进化的多智能体交易系统 | --- @@ -133,6 +134,17 @@ AgentScope Runtime 是一个**全面的运行时框架**,主要解决部署和 📖 **文档**:[English](alias/README.md) | [中文](alias/README_ZH.md) +### EvoTraders + +*EvoTraders* 是一个开源的金融交易智能体框架,通过多智能体协作和记忆系统,构建能够在真实市场中持续学习与进化的交易系统。主要特性包括: + +- **多智能体协作交易**:包含基本面、技术面、情绪、估值等专业分析师角色以及基金经理和风控专家的团队协作。 +- **记忆增强与进化**:基于 ReMe 记忆框架,智能体在交易后反思总结,形成独特的投资方法论。 +- **实盘与回测支持**:支持实时行情接入的实盘模式以及基于历史数据的回测模式。 +- **可视化交易大厅**:提供可视化界面实时观察智能体的分析过程、沟通记录和决策演化。 + +📖 **文档**:[English](evotraders/README.md) | [中文](evotraders/README_zh.md) + --- ## ℹ️ 获取帮助 diff --git a/evotraders/.eslintrc b/evotraders/.eslintrc new file mode 100644 index 0000000..0c2fdb7 --- /dev/null +++ b/evotraders/.eslintrc @@ -0,0 +1,24 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "parserOptions": { + "ecmaVersion": 2021, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "rules": { + "semi": ["error", "always"], + "quotes": ["error", "double"], + "indent": ["error", 2], + "linebreak-style": ["error", "unix"], + "brace-style": ["error", "1tbs"], + "curly": ["error", "all"], + "no-eval": ["error"], + "prefer-const": ["error"], + "arrow-spacing": ["error", { "before": true, "after": true }] + } +} \ No newline at end of file diff --git a/evotraders/.gitignore b/evotraders/.gitignore new file mode 100644 index 0000000..3fea7b9 --- /dev/null +++ b/evotraders/.gitignore @@ -0,0 +1,63 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +eggs/ +.eggs/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual Environment +/.venv/ +ENV/ + +# Environment Variables +.env + +# IDE +.idea/ +.vscode/ +*.swp +*.swo +.cursorrules +.cursorignore + +# OS +.DS_Store + +# Txt files +*.txt + +# PDF files +*.pdf + +# Frontend +node_modules + +# Outputs +outputs/ + +# Data files +backend/data/ret_data/ + +# Database files (users will have their own local databases) +*.db +*.db-journal +*.db-wal +*.db-shm +*.sqlite +*.sqlite3 + +*.ipynb +*.log \ No newline at end of file diff --git a/evotraders/.pre-commit-config.yaml b/evotraders/.pre-commit-config.yaml new file mode 100644 index 0000000..ea2c6e1 --- /dev/null +++ b/evotraders/.pre-commit-config.yaml @@ -0,0 +1,122 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: check-ast + - id: sort-simple-yaml + - id: check-yaml + exclude: | + (?x)^( + meta.yaml + )$ + - id: check-xml + - id: check-toml + - id: check-docstring-first + - id: check-json + - id: fix-encoding-pragma + - id: detect-private-key + - id: trailing-whitespace + - repo: https://github.com/asottile/add-trailing-comma + rev: v3.1.0 + hooks: + - id: add-trailing-comma + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.7.0 + hooks: + - id: mypy + exclude: + (?x)( + pb2\.py$ + | grpc\.py$ + | ^docs + | \.html$ + ) + args: [ + --ignore-missing-imports, + --disable-error-code=var-annotated, + --disable-error-code=union-attr, + --disable-error-code=assignment, + --disable-error-code=attr-defined, + --disable-error-code=import-untyped, + --disable-error-code=truthy-function, + --follow-imports=skip, + --explicit-package-bases, + ] + - repo: https://github.com/psf/black + rev: 23.3.0 + hooks: + - id: black + args: [ --line-length=79 ] + - repo: https://github.com/PyCQA/flake8 + rev: 6.1.0 + hooks: + - id: flake8 + args: [ "--extend-ignore=E203"] + - repo: https://github.com/pylint-dev/pylint + rev: v3.0.2 + hooks: + - id: pylint + exclude: + (?x)( + ^docs + | pb2\.py$ + | grpc\.py$ + | \.demo$ + | \.md$ + | \.html$ + ) + args: [ + "--init-hook=import sys; sys.path.insert(0, 'alias/src')", + --disable=W0511, + --disable=W0718, + --disable=W0122, + --disable=C0103, + --disable=R0913, + --disable=E0401, + --disable=E1101, + --disable=C0415, + --disable=W0603, + --disable=R1705, + --disable=R0914, + --disable=E0601, + --disable=W0602, + --disable=W0604, + --disable=R0801, + --disable=R0902, + --disable=R0903, + --disable=C0123, + --disable=W0231, + --disable=W1113, + --disable=W0221, + --disable=R0401, + --disable=W0632, + --disable=W0123, + --disable=C3001, + --disable=W0201, + --disable=C0302, + --disable=W1203, + --disable=C2801, + --disable=C0114, # Disable missing module docstring for quick dev + --disable=C0115, # Disable missing class docstring for quick dev + --disable=C0116, # Disable missing function or method docstring for quick dev + ] + - repo: https://github.com/pre-commit/mirrors-eslint + rev: v7.32.0 + hooks: + - id: eslint + files: \.(js|jsx)$ + exclude: '.*js_third_party.*' + args: [ '--fix' ] + - repo: https://github.com/thibaudcolas/pre-commit-stylelint + rev: v14.4.0 + hooks: + - id: stylelint + files: \.(css)$ + exclude: '.*css_third_party.*' + args: [ '--fix' ] + - repo: https://github.com/pre-commit/mirrors-prettier + rev: 'v3.0.0' + hooks: + - id: prettier + additional_dependencies: [ 'prettier@3.0.0' ] + files: \.(tsx?)$ \ No newline at end of file diff --git a/evotraders/.stylelintrc b/evotraders/.stylelintrc new file mode 100644 index 0000000..a5d2a39 --- /dev/null +++ b/evotraders/.stylelintrc @@ -0,0 +1,6 @@ +{ + "rules": { + "indentation": 2, + "string-quotes": "double" + } +} \ No newline at end of file diff --git a/evotraders/README.md b/evotraders/README.md new file mode 100644 index 0000000..52b6f85 --- /dev/null +++ b/evotraders/README.md @@ -0,0 +1,236 @@ +

+ +

+ +

EvoTraders: A Self-Evolving Multi-Agent Trading System

+ +

+ 📌 Visit us at EvoTraders website ! +

+ +![System Demo](./docs/assets/evotraders_demo.gif) + +EvoTraders is an open-source financial trading agent framework that builds a trading system capable of continuous learning and evolution in real markets through multi-agent collaboration and memory systems. + +--- + +## Core Features + +**Multi-Agent Collaborative Trading** +A team of 6 members, including 4 specialized analyst roles (fundamentals, technical, sentiment, valuation) + portfolio manager + risk management, collaborating to make decisions like a real trading team. + +You can customize your Agents here: [Custom Configuration](#custom-configuration) + +**Continuous Learning and Evolution** +Based on the ReMe memory framework, agents reflect and summarize after each trade, preserving experience across rounds, and forming unique investment methodologies. + +Through this design, we hope that when AI Agents form a team and enter the real-time market, they will gradually develop their own trading styles and decision preferences, rather than one-time random inference. + +**Real-Time Market Trading** +Supports real-time market data integration, providing backtesting mode and live trading mode, allowing AI Agents to learn and make decisions in real market fluctuations. + +**Visualized Trading Information** +Observe agents' analysis processes, communication records, and decision evolution in real-time, with complete tracking of return curves and analyst performance. + +

+ + +

+ +--- + +## Quick Start + +### Installation + +```bash +# Clone repository +git clone https://github.com/agentscope-ai/agentscope-samples +cd agentscope-samples/EvoTraders + +# Install dependencies (Recommend uv!) +uv pip install -e . +# optional: pip install -e . + + +# Configure environment variables +cp env.template .env +# Edit .env file and add your API Keys. The following config are required: + +# finance data API: At minimum, FINANCIAL_DATASETS_API_KEY is required, corresponding to FIN_DATA_SOURCE=financial_datasets; It is recommended to add FINNHUB_API_KEY, corresponding to FIN_DATA_SOURCE=finnhub; If using live mode, FINNHUB_API_KEY must be added +FIN_DATA_SOURCE = #finnhub or financial_datasets +FINANCIAL_DATASETS_API_KEY= #Required +FINNHUB_API_KEY= #Optional + +# LLM API for Agents +OPENAI_API_KEY= +OPENAI_BASE_URL= +MODEL_NAME=qwen3-max-preview + +# LLM & embedding API for Memory +MEMORY_API_KEY= +``` + +### Running + +**Backtest Mode:** +```bash +evotraders backtest --start 2025-11-01 --end 2025-12-01 +evotraders backtest --start 2025-11-01 --end 2025-12-01 --enable-memory # Use Memory +``` + +If you do not have market data APIs and just want to try the backtest demo, download the offline data and unzip it into `backend/data`: +```bash +wget "https://agentscope-open.oss-cn-beijing.aliyuncs.com/ret_data.zip" +unzip ret_data.zip -d backend/data +``` +The zip includes basic stock price data so you can run the backtest demo out of the box. + +**Live Trading:** +```bash +evotraders live # Run immediately (default) +evotraders live --enable-memory # Use memory +evotraders live --mock # Mock mode (testing) +evotraders live -t 22:30 # Run daily at 22:30 local time (auto-converts to NYSE timezone) +``` + +**Get Help:** +```bash +evotraders --help # View global CLI help +evotraders backtest --help # View backtest mode parameters +evotraders live --help # View live/mock run parameters +``` + +**Launch Visualization Interface:** +```bash +# Ensure npm is installed, otherwise install it: +# npm install +evotraders frontend # Default connects to port 8765, you can modify the address in ./frontend/env.local to change the port number +``` + +Visit `http://localhost:5173/` to view the trading room, select a date and click Run/Replay to observe the decision-making process. + +--- + +## System Architecture + +![Architecture Diagram](docs/assets/evotraders_pipeline.jpg) + +### Agent Design + +**Analyst Team:** +- **Fundamentals Analyst**: Financial health, profitability, growth quality +- **Technical Analyst**: Price trends, technical indicators, momentum analysis +- **Sentiment Analyst**: Market sentiment, news sentiment, insider trading +- **Valuation Analyst**: DCF, residual income, EV/EBITDA + +**Decision Layer:** +- **Portfolio Manager**: Integrates analysis signals from analysts, executes communication strategies, combines analyst and team historical performance, recent investment memories, and long-term investment experience to make final decisions +- **Risk Management**: Real-time price and volatility monitoring, position limits, multi-layer risk warnings + +### Decision Process + +``` +Real-time Market Data → Independent Analysis → Intelligent Communication (1v1/1vN/NvN) → Decision Execution → Performance Evaluation → Learning and Evolution (Memory Update) +``` + +Each trading day goes through five stages: + +1. **Analysis Stage**: Each agent independently analyzes based on their respective tools and historical experience +2. **Communication Stage**: Exchange views through private chats, notifications, meetings, etc. +3. **Decision Stage**: Portfolio manager makes comprehensive judgments and provides final trades +4. **Evaluation Stage** + - **Performance Charts**: Track portfolio return curves vs. benchmark strategies (equal-weighted, market-cap weighted, momentum). Used to evaluate overall strategy effectiveness. + + - **Analyst Rankings**: Click on avatars in the Trading Room to view analyst performance (win rate, bull/bear market win rate). Used to understand which analysts provide the most valuable insights. + + - **Statistics**: Detailed position and trading history. Used for in-depth analysis of position management and execution quality. + +5. **Review Stage**: Agents reflect on decisions and summarize experiences based on actual returns of the day, and store them in the ReMe memory framework for continuous improvement + +--- + +### Module Support + +- **Agent Framework**: [AgentScope](https://github.com/agentscope-ai/agentscope) +- **Memory System**: [ReMe](https://github.com/agentscope-ai/reme) +- **LLM Support**: OpenAI, DeepSeek, Qwen, Moonshot, Zhipu AI, etc. + +--- + +## Custom Configuration + +### Custom Analyst Roles + +1. Register role information in [./backend/agents/prompts/analyst/personas.yaml](./backend/agents/prompts/analyst/personas.yaml), for example: + +```yaml +comprehensive_analyst: + name: "Comprehensive Analyst" + focus: + - ... + preferred_tools: # Flexibly select based on situation + description: | + As a comprehensive analyst ... +``` + +2. Add role definition in [./backend/config/constants.py](./backend/config/constants.py) +```python +ANALYST_TYPES = { + # Add new analyst + "comprehensive_analyst": { + "display_name": "Comprehensive Analyst", + "agent_id": "comprehensive_analyst", + "description": "Uses LLM to intelligently select analysis tools, performs comprehensive analysis", + "order": 15 + } +} +``` + +3. Introduce new role in frontend configuration [./frontend/src/config/constants.js](./frontend/src/config/constants.js) (optional) +```javascript +export const AGENTS = [ + // Override one of the agents + { + id: "comprehensive_analyst", + name: "Comprehensive Analyst", + role: "Comprehensive Analyst", + avatar: `${ASSET_BASE_URL}/...`, + colors: { bg: '#F9FDFF', text: '#1565C0', accent: '#1565C0' } + } +] +``` + +### Custom Models + +Configure models used by different agents in the [.env](.env) file: + +```bash +AGENT_SENTIMENT_ANALYST_MODEL_NAME=qwen3-max-preview +AGENT_FUNDAMENTALS_ANALYST_MODEL_NAME=deepseek-chat +AGENT_TECHNICAL_ANALYST_MODEL_NAME=glm-4-plus +AGENT_VALUATION_ANALYST_MODEL_NAME=moonshot-v1-32k +``` + +### Project Structure + +``` +EvoTraders/ +├── backend/ +│ ├── agents/ # Agent implementation +│ ├── communication/ # Communication system +│ ├── memory/ # Memory system (ReMe) +│ ├── tools/ # Analysis toolset +│ ├── servers/ # WebSocket services +│ └── cli.py # CLI entry point +├── frontend/ # React visualization interface +└── logs_and_memory/ # Logs and memory data +``` + +--- + +## License and Disclaimer + +EvoTraders is a research and educational project, open-sourced under the Apache 2.0 license. + +**Risk Warning**: Before trading with real funds, please conduct thorough testing and risk assessment. Past performance does not guarantee future returns. Investment involves risks, and decisions should be made with caution. diff --git a/evotraders/README_zh.md b/evotraders/README_zh.md new file mode 100644 index 0000000..5a6c1f9 --- /dev/null +++ b/evotraders/README_zh.md @@ -0,0 +1,243 @@ +

+ +

+ +

EvoTraders:自我进化的多智能体交易系统

+ + +

+ 📌 Visit us at EvoTraders website ! +

+ +![系统演示](./docs/assets/evotraders_demo.gif) + +EvoTraders是一个开源的金融交易智能体框架,通过多智能体协作和记忆系统,构建能够在真实市场中持续学习与进化的交易系统。 + +--- + +## 核心特性 + +**多智能体协作交易** +6名成员,包含4种专业分析师角色(基本面、技术面、情绪、估值)+ 投资组合经理 + 风险管理,像真实交易团队一样协作决策。 + +你可以在这里自定义你的Agents,支持配置不同大模型(如 Qwen、DeepSeek、GPT、Claude等)协同分析:[自定义配置](#自定义配置) + +**持续学习与进化** +基于 ReMe 记忆框架,智能体在每次交易后反思总结,跨回合保留经验,形成独特的投资方法论。 + +通过这样的设计,我们希望当 AI Agents 组成团队进入实时市场,它们会逐渐形成自己的交易风格和决策偏好,而不是一次性的随机推理 + + +**实时市场交易** +支持实时行情接入,提供回测模式和实盘模式,让 AI Agents 在真实市场波动中学习和决策。 + +**可视化交易信息** +实时观察 Agents 的分析过程、沟通记录和决策演化,完整追踪收益曲线和分析师表现。 + + +

+ + +

+ + +--- + +## 快速开始 + +### 安装 + +```bash +# 克隆仓库 +git clone https://github.com/agentscope-ai/agentscope-samples +cd agentscope-samples/EvoTraders + +# 安装依赖(推荐使用uv) +uv pip install -e . +# (可选)pip install -e . + +# 配置环境变量 +cp env.template .env +# 编辑 .env 文件,添加你的 API Keys,以下的配置项为必填项 + +# finance data API:至少需要FINANCIAL_DATASETS_API_KEY,对应FIN_DATA_SOURCE=financial_datasets;推荐添加FINNHUB_API_KEY,对应至少需要FINANCIAL_DATASETS_API_KEY,对应FIN_DATA_SOURCE填为finnhub;如果使用live 模式必须添加FINNHUB_API_KEY +FIN_DATA_SOURCE= #finnhub or financial_datasets +FINANCIAL_DATASETS_API_KEY= #必需 +FINNHUB_API_KEY= #可选 + +# LLM API for Agents +OPENAI_API_KEY= +OPENAI_BASE_URL= +MODEL_NAME=qwen3-max-preview + +# LLM & embedding API for Memory +MEMORY_API_KEY= +``` + +### 运行 + +**回测模式:** +```bash +evotraders backtest --start 2025-11-01 --end 2025-12-01 +evotraders backtest --start 2025-11-01 --end 2025-12-01 --enable-memory # 使用记忆 + +``` + +如果没有可用的行情 API,想快速体验回测 demo,可直接下载离线数据并解压到 `backend/data`: +```bash +wget "https://agentscope-open.oss-cn-beijing.aliyuncs.com/ret_data.zip" +unzip ret_data.zip -d backend/data +``` +该压缩包提供基础的股票行情数据,解压后即可直接用于回测演示。 + +**实盘交易:** +```bash +evotraders live # 立即运行(默认) +evotraders live --enable-memory # 使用记忆 +evotraders live --mock # Mock 模式(测试) +evotraders live -t 22:30 # 每天本地时间 22:30 运行(自动转换为 NYSE 时区) +``` + +**获取帮助:** +```bash +evotraders --help # 查看整体命令行帮助 +evotraders backtest --help # 查看回测模式的参数说明 +evotraders live --help # 查看实盘/Mock 运行的参数说明 +``` + +**启动可视化界面:** +```bash +# 确保已安装 npm, 否则请安装: +# npm install +evotraders frontend # 默认连接 8765 端口, 你可以修改 ./frontend/env.local 中的地址从而修改端口号 +``` + +访问 `http://localhost:5173/` 查看交易大厅,选择日期并点击 Run/Replay 观察决策过程。 + +--- + +## 系统架构 + +![架构图](docs/assets/evotraders_pipeline.jpg) + +### 智能体设计 + +**分析师团队:** +- **基本面分析师**:财务健康度、盈利能力、增长质量 +- **技术分析师**:价格趋势、技术指标、动量分析 +- **情绪分析师**:市场情绪、新闻舆情、内部人交易 +- **估值分析师**:DCF、剩余收益、EV/EBITDA + +**决策层:** +- **投资组合经理**:整合来自分析师的分析信号,执行沟通策略,结合分析师和团队历史表现、近期投资记忆和长期投资经验,进行最终决策 +- **风险管理**:实时价格与波动率监控、头寸限制,多层风险预警 + +### 决策流程 + +``` +实时行情 → 独立分析 → 智能沟通 (1v1/1vN/NvN) → 决策执行 → 收益评估 → 学习与进化(记忆更新) +``` + +每个交易日经历五个阶段: + +1. **分析阶段**:各智能体基于各自工具和历史经验独立分析 +2. **沟通阶段**:通过私聊、通知、会议等方式交换观点 +3. **决策阶段**:投资组合经理综合判断,给出最终交易 +4. **评估阶段** + - **业绩图表**: 追踪组合收益曲线 vs. 基准策略(等权、市值加权、动量)。用于评估整体策略有效性。 + + - **分析师排名**: 在 Trading Room 点击头像查看分析师表现(胜率、牛/熊市胜率)。用于了解哪些分析师提供最有价值的洞察。 + + - **统计数据**: 详细的持仓和交易历史。用于深入分析仓位管理和执行质量。 + +4. **复盘阶段**:Agents 根据当日实际收益反思决策、总结经验,并存入 ReMe 记忆框架以持续改进 + +--- + +### 模块支持 + +- **智能体框架**:[AgentScope](https://github.com/agentscope-ai/agentscope) +- **记忆系统**:[ReMe](https://github.com/agentscope-ai/reme) +- **LLM 支持**:OpenAI、DeepSeek、Qwen、Moonshot、Zhipu AI 等 + + +--- + +## 自定义配置 + +### 自定义分析师角色 + +1. 在 [./backend/agents/prompts/analyst/personas.yaml](./backend/agents/prompts/analyst/personas.yaml) 中注册角色信息,例如: + +```yaml +comprehensive_analyst: + name: "Comprehensive Analyst" + focus: + - ... + preferred_tools: # Flexibly select based on situation + description: | + As a comprehensive analyst ... +``` + +2. 在 [./backend/config/constants.py](./backend/config/constants.py) 添加角色定义 +```python +ANALYST_TYPES = { + # 增加新的分析师 + "comprehensive_analyst": { + "display_name": "Comprehensive Analyst", + "agent_id": "comprehensive_analyst", + "description": "Uses LLM to intelligently select analysis tools, performs comprehensive analysis", + "order": 15 + } +} +``` + +3. 在前端配置 [./frontend/src/config/constants.js](./frontend/src/config/constants.js) 中引入新角色(可选) +```javascript +export const AGENTS = [ + // 覆盖掉其中某一个agent + { + id: "comprehensive_analyst", + name: "Comprehensive Analyst", + role: "Comprehensive Analyst", + avatar: `${ASSET_BASE_URL}/...`, + colors: { bg: '#F9FDFF', text: '#1565C0', accent: '#1565C0' } + } + ] +``` + + + +### 自定义模型 + +在 [.env](.env) 文件中配置不同智能体使用的模型: + +```bash +AGENT_SENTIMENT_ANALYST_MODEL_NAME=qwen3-max-preview +AGENT_FUNDAMENTAL_ANALYST_MODEL_NAME=deepseek-chat +AGENT_TECHNICAL_ANALYST_MODEL_NAME=glm-4-plus +AGENT_VALUATION_ANALYST_MODEL_NAME=moonshot-v1-32k +``` + +### 项目结构 + +``` +EvoTraders/ +├── backend/ +│ ├── agents/ # 智能体实现 +│ ├── communication/ # 通信系统 +│ ├── memory/ # 记忆系统 (ReMe) +│ ├── tools/ # 分析工具集 +│ ├── servers/ # WebSocket 服务 +│ └── cli.py # CLI 入口 +├── frontend/ # React 可视化界面 +└── logs_and_memory/ # 日志和记忆数据 +``` + +--- + +## 许可与免责 + +EvoTraders 是一个研究和教育项目,采用 Apache 2.0 许可协议开源。 + +**风险提示**:在实际资金交易前,请务必进行充分的测试和风险评估。历史表现不代表未来收益,投资有风险,决策需谨慎。 diff --git a/evotraders/backend/__init__.py b/evotraders/backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/evotraders/backend/agents/__init__.py b/evotraders/backend/agents/__init__.py new file mode 100644 index 0000000..9347bf6 --- /dev/null +++ b/evotraders/backend/agents/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from .analyst import AnalystAgent +from .portfolio_manager import PMAgent +from .risk_manager import RiskAgent + +__all__ = ["AnalystAgent", "PMAgent", "RiskAgent"] diff --git a/evotraders/backend/agents/analyst.py b/evotraders/backend/agents/analyst.py new file mode 100644 index 0000000..a524a11 --- /dev/null +++ b/evotraders/backend/agents/analyst.py @@ -0,0 +1,133 @@ +# -*- coding: utf-8 -*- +""" +Analyst Agent - Based on AgentScope ReActAgent +Performs analysis using tools and LLM +""" +from typing import Any, Dict, Optional + +from agentscope.agent import ReActAgent +from agentscope.memory import InMemoryMemory, LongTermMemoryBase +from agentscope.message import Msg + +from ..config.constants import ANALYST_TYPES +from ..utils.progress import progress +from .prompt_loader import PromptLoader + +_prompt_loader = PromptLoader() + + +class AnalystAgent(ReActAgent): + """ + Analyst Agent - Uses LLM for tool selection and analysis + Inherits from AgentScope's ReActAgent + """ + + def __init__( + self, + analyst_type: str, + toolkit: Any, + model: Any, + formatter: Any, + agent_id: Optional[str] = None, + config: Optional[Dict[str, Any]] = None, + long_term_memory: Optional[LongTermMemoryBase] = None, + ): + """ + Initialize Analyst Agent + + Args: + analyst_type: Type of analyst (e.g., "fundamentals", etc.) + toolkit: AgentScope Toolkit instance + model: LLM model instance + formatter: Message formatter instance + agent_id: Agent ID (defaults to "{analyst_type}_analyst") + config: Configuration dictionary + long_term_memory: Optional ReMeTaskLongTermMemory instance + """ + if analyst_type not in ANALYST_TYPES: + raise ValueError( + f"Unknown analyst type: {analyst_type}. " + f"Must be one of: {list(ANALYST_TYPES.keys())}", + ) + + self.analyst_type_key = analyst_type + self.analyst_persona = ANALYST_TYPES[analyst_type]["display_name"] + + if agent_id is None: + agent_id = analyst_type + + self.config = config or {} + + sys_prompt = self._load_system_prompt() + + kwargs = { + "name": agent_id, + "sys_prompt": sys_prompt, + "model": model, + "formatter": formatter, + "toolkit": toolkit, + "memory": InMemoryMemory(), + "max_iters": 10, + } + if long_term_memory: + kwargs["long_term_memory"] = long_term_memory + kwargs["long_term_memory_mode"] = "static_control" + + super().__init__(**kwargs) + + def _load_system_prompt(self) -> str: + """Load system prompt for analyst""" + personas_config = _prompt_loader.load_yaml_config( + "analyst", + "personas", + ) + persona = personas_config.get(self.analyst_type_key, {}) + + # Get focus items and format as bullet points + focus_items = persona.get("focus", []) + focus_text = "\n".join(f"- {item}" for item in focus_items) + + # Get description + description = persona.get("description", "").strip() + + return _prompt_loader.load_prompt( + "analyst", + "system", + variables={ + "analyst_type": self.analyst_persona, + "focus": focus_text, + "description": description, + }, + ) + + async def reply(self, x: Msg = None) -> Msg: + """ + Override reply method to add progress tracking + + Args: + x: Input message (content must be str) + + Returns: + Response message (content is str) + """ + ticker = None + if x and hasattr(x, "metadata") and x.metadata: + ticker = x.metadata.get("ticker") + + if ticker: + progress.update_status( + self.name, + ticker, + f"Starting {self.analyst_persona} analysis", + ) + + result = await super().reply(x) + + if ticker: + progress.update_status( + self.name, + ticker, + "Analysis completed", + ) + + return result diff --git a/evotraders/backend/agents/portfolio_manager.py b/evotraders/backend/agents/portfolio_manager.py new file mode 100644 index 0000000..9699189 --- /dev/null +++ b/evotraders/backend/agents/portfolio_manager.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +""" +Portfolio Manager Agent - Based on AgentScope ReActAgent +Responsible for decision-making (NOT trade execution) +""" + +from typing import Any, Dict, Optional + +from agentscope.agent import ReActAgent +from agentscope.memory import InMemoryMemory, LongTermMemoryBase +from agentscope.message import Msg, TextBlock +from agentscope.tool import Toolkit, ToolResponse + +from ..utils.progress import progress +from .prompt_loader import PromptLoader + +_prompt_loader = PromptLoader() + + +class PMAgent(ReActAgent): + """ + Portfolio Manager Agent - Makes investment decisions + + Key features: + 1. PM outputs decisions only (action + quantity per ticker) + 2. Trade execution happens externally (in pipeline/executor) + 3. Supports both backtest and live modes + """ + + def __init__( + self, + name: str = "portfolio_manager", + model: Any = None, + formatter: Any = None, + initial_cash: float = 100000.0, + margin_requirement: float = 0.25, + config: Optional[Dict[str, Any]] = None, + long_term_memory: Optional[LongTermMemoryBase] = None, + ): + self.config = config or {} + + # Portfolio state + self.portfolio = { + "cash": initial_cash, + "positions": {}, + "margin_used": 0.0, + "margin_requirement": margin_requirement, + } + + # Decisions made in current cycle + self._decisions: Dict[str, Dict] = {} + + # Create toolkit + toolkit = self._create_toolkit() + + sys_prompt = _prompt_loader.load_prompt("portfolio_manager", "system") + + kwargs = { + "name": name, + "sys_prompt": sys_prompt, + "model": model, + "formatter": formatter, + "toolkit": toolkit, + "memory": InMemoryMemory(), + "max_iters": 10, + } + if long_term_memory: + kwargs["long_term_memory"] = long_term_memory + kwargs["long_term_memory_mode"] = "both" + + super().__init__(**kwargs) + + def _create_toolkit(self) -> Toolkit: + """Create toolkit with decision recording tool""" + toolkit = Toolkit() + toolkit.register_tool_function(self._make_decision) + return toolkit + + def _make_decision( + self, + ticker: str, + action: str, + quantity: int, + confidence: int = 50, + reasoning: str = "", + ) -> ToolResponse: + """ + Record a trading decision for a ticker. + + Args: + ticker: Stock ticker symbol (e.g., "AAPL") + action: Decision - "long", "short" or "hold" + quantity: Number of shares to trade (0 for hold) + confidence: Confidence level 0-100 + reasoning: Explanation for this decision + + Returns: + ToolResponse confirming decision recorded + """ + if action not in ["long", "short", "hold"]: + return ToolResponse( + content=[ + TextBlock( + type="text", + text=f"Invalid action: {action}. " + "Must be 'long', 'short', or 'hold'.", + ), + ], + ) + + self._decisions[ticker] = { + "action": action, + "quantity": quantity if action != "hold" else 0, + "confidence": confidence, + "reasoning": reasoning, + } + + return ToolResponse( + content=[ + TextBlock( + type="text", + text=f"Decision recorded: {action} " + f"{quantity} shares of {ticker}" + f" (confidence: {confidence}%)", + ), + ], + ) + + async def reply(self, x: Msg = None) -> Msg: + """ + Make investment decisions + + Returns: + Msg with decisions in metadata + """ + if x is None: + return Msg( + name=self.name, + content="No input provided", + role="assistant", + ) + + # Clear previous decisions + self._decisions = {} + + progress.update_status( + self.name, + None, + "Analyzing and making decisions", + ) + + result = await super().reply(x) + + progress.update_status(self.name, None, "Completed") + + # Attach decisions to metadata + if result.metadata is None: + result.metadata = {} + result.metadata["decisions"] = self._decisions.copy() + result.metadata["portfolio"] = self.portfolio.copy() + + return result + + def get_decisions(self) -> Dict[str, Dict]: + """Get decisions from current cycle""" + return self._decisions.copy() + + def get_portfolio_state(self) -> Dict[str, Any]: + """Get current portfolio state""" + return self.portfolio.copy() + + def load_portfolio_state(self, portfolio: Dict[str, Any]): + """Load portfolio state""" + if not portfolio: + return + self.portfolio = { + "cash": portfolio.get("cash", self.portfolio["cash"]), + "positions": portfolio.get("positions", {}).copy(), + "margin_used": portfolio.get("margin_used", 0.0), + "margin_requirement": portfolio.get( + "margin_requirement", + self.portfolio["margin_requirement"], + ), + } + + def update_portfolio(self, portfolio: Dict[str, Any]): + """Update portfolio after external execution""" + self.portfolio.update(portfolio) diff --git a/evotraders/backend/agents/prompt_loader.py b/evotraders/backend/agents/prompt_loader.py new file mode 100644 index 0000000..af649bc --- /dev/null +++ b/evotraders/backend/agents/prompt_loader.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +""" +Prompt Loader - Unified management and loading of Agent Prompts +Supports Markdown and YAML formats +Uses simple string replacement, does not depend on Jinja2 +""" +import re +from pathlib import Path +from typing import Any, Dict, Optional + +import yaml + + +class PromptLoader: + """Unified Prompt loader""" + + def __init__(self, prompts_dir: Optional[Path] = None): + """ + Initialize Prompt loader + + Args: + prompts_dir: Prompts directory path, + defaults to prompts/ directory of current file + """ + if prompts_dir is None: + self.prompts_dir = Path(__file__).parent / "prompts" + else: + self.prompts_dir = Path(prompts_dir) + + # Cache loaded prompts + self._prompt_cache: Dict[str, str] = {} + self._yaml_cache: Dict[str, Dict] = {} + + def load_prompt( + self, + agent_type: str, + prompt_name: str, + variables: Optional[Dict[str, Any]] = None, + ) -> str: + """ + Load and render Prompt + + Args: + agent_type: Agent type (analyst, portfolio_manager, risk_manager) + prompt_name: Prompt file name (without extension) + variables: Variable dictionary for rendering Prompt + + Returns: + Rendered prompt string + + Examples: + loader = PromptLoader() + prompt = loader.load_prompt("analyst", "tool_selection", + {"analyst_persona": "Technical Analyst"}) + """ + cache_key = f"{agent_type}/{prompt_name}" + + # Try to load from cache + if cache_key not in self._prompt_cache: + prompt_path = self.prompts_dir / agent_type / f"{prompt_name}.md" + + if not prompt_path.exists(): + raise FileNotFoundError( + f"Prompt file not found: {prompt_path}\n" + f"Please create the prompt file or check the path.", + ) + + with open(prompt_path, "r", encoding="utf-8") as f: + self._prompt_cache[cache_key] = f.read() + + prompt_template = self._prompt_cache[cache_key] + + # If variables provided, use simple string replacement + if variables: + rendered = self._render_template(prompt_template, variables) + else: + rendered = prompt_template + + # Smart escaping: escape braces in JSON code blocks + # rendered = self._escape_json_braces(rendered) + return rendered + + def _render_template( + self, + template: str, + variables: Dict[str, Any], + ) -> str: + """ + Render template using simple string replacement + Supports {{ variable }} syntax (compatible with previous Jinja2 format) + + Args: + template: Template string + variables: Variable dictionary + + Returns: + Rendered string + """ + rendered = template + + # Replace {{ variable }} format + for key, value in variables.items(): + # Support both {{ key }} and {{key}} formats + pattern1 = f"{{{{ {key} }}}}" + pattern2 = f"{{{{{key}}}}}" + rendered = rendered.replace(pattern1, str(value)) + rendered = rendered.replace(pattern2, str(value)) + + return rendered + + def _escape_json_braces(self, text: str) -> str: + """ + Escape braces in JSON code blocks, treating them as literals + + Args: + text: Text to process + + Returns: + Processed text + """ + + def replace_code_block(match): + code_content = match.group(1) + # Escape all braces within code block + escaped = code_content.replace("{", "{{").replace("}", "}}") + return f"```json\n{escaped}\n```" + + # Replace all braces in JSON code blocks + text = re.sub( + r"```json\n(.*?)\n```", + replace_code_block, + text, + flags=re.DOTALL, + ) + return text + + def load_yaml_config( + self, + agent_type: str, + config_name: str, + ) -> Dict[str, Any]: + """ + Load YAML configuration file + + Args: + agent_type: Agent type + config_name: Configuration file name (without extension) + + Returns: + Configuration dictionary + + Examples: + >>> loader = PromptLoader() + >>> config = loader.load_yaml_config("analyst", "personas") + """ + cache_key = f"{agent_type}/{config_name}" + + if cache_key not in self._yaml_cache: + yaml_path = self.prompts_dir / agent_type / f"{config_name}.yaml" + + if not yaml_path.exists(): + raise FileNotFoundError(f"YAML config not found: {yaml_path}") + + with open(yaml_path, "r", encoding="utf-8") as f: + self._yaml_cache[cache_key] = yaml.safe_load(f) + + return self._yaml_cache[cache_key] + + def clear_cache(self): + """Clear cache (for hot reload)""" + self._prompt_cache.clear() + self._yaml_cache.clear() + + def reload_prompt(self, agent_type: str, prompt_name: str): + """Reload specified prompt (force cache refresh)""" + cache_key = f"{agent_type}/{prompt_name}" + if cache_key in self._prompt_cache: + del self._prompt_cache[cache_key] + + def reload_config(self, agent_type: str, config_name: str): + """Reload specified configuration (force cache refresh)""" + cache_key = f"{agent_type}/{config_name}" + if cache_key in self._yaml_cache: + del self._yaml_cache[cache_key] diff --git a/evotraders/backend/agents/prompts/analyst/personas.yaml b/evotraders/backend/agents/prompts/analyst/personas.yaml new file mode 100644 index 0000000..73cea6e --- /dev/null +++ b/evotraders/backend/agents/prompts/analyst/personas.yaml @@ -0,0 +1,117 @@ +# Analyst Personas Configuration + +fundamentals_analyst: + name: "Fundamental Analyst" + focus: + - "Company financial health and profitability" + - "Business model sustainability and competitive advantages" + - "Management quality and corporate governance" + - "Industry position and market share" + - "Long-term investment value assessment" + tools: + - "analyze_profitability" + - "analyze_growth" + - "analyze_financial_health" + - "analyze_valuation_ratios" + - "analyze_efficiency_ratios" + description: | + As a fundamental analyst, you focus on: + - Company financial health and profitability + - Business model sustainability and competitive advantages + - Management quality and corporate governance + - Industry position and market share + - Long-term investment value assessment + You tend to select tools that provide deep insights into company intrinsic value, preferring fundamental and valuation tools. + +technical_analyst: + name: "Technical Analyst" + focus: + - "Price trends and chart patterns" + - "Technical indicators and trading signals" + - "Market sentiment and capital flows" + - "Support/resistance levels and key price points" + - "Short to medium-term trading opportunities" + description: | + As a technical analyst, you focus on: + - Price trends and chart patterns + - Technical indicators and trading signals + - Market sentiment and capital flows + - Support/resistance levels and key price points + - Short to medium-term trading opportunities + You tend to select tools that capture price dynamics and market trends, preferring technical analysis tools. + tools: + - "analyze_trend_following" + - "analyze_momentum" + - "analyze_mean_reversion" + - "analyze_volatility" + +sentiment_analyst: + name: "Sentiment Analyst" + focus: + - "Market participant sentiment changes" + - "News opinion and media influence" + - "Insider trading behavior" + - "Investor panic and greed emotions" + - "Market expectations and psychological factors" + description: | + As a sentiment analyst, you focus on: + - Market participant sentiment changes + - News opinion and media influence + - Insider trading behavior + - Investor panic and greed emotions + - Market expectations and psychological factors + You tend to select tools that reflect market sentiment and investor behavior, preferring sentiment and behavioral tools. + tools: + - "analyze_news_sentiment" + - "analyze_insider_trading" + +valuation_analyst: + name: "Valuation Analyst" + focus: + - "Company intrinsic value calculation" + - "Comparison of different valuation methods" + - "Valuation model assumptions and sensitivity" + - "Relative and absolute valuation" + - "Investment margin of safety assessment" + description: | + As a valuation analyst, you focus on: + - Company intrinsic value calculation + - Comparison of different valuation methods + - Valuation model assumptions and sensitivity + - Relative and absolute valuation + - Investment margin of safety assessment + You tend to select tools that accurately calculate company value, preferring valuation models and fundamental tools. + tools: + - "dcf_valuation_analysis" + - "owner_earnings_valuation_analysis" + - "ev_ebitda_valuation_analysis" + - "residual_income_valuation_analysis" + +comprehensive_analyst: + name: "Comprehensive Analyst" + focus: + - "Integrate multiple analytical perspectives" + - "Balance short-term and long-term factors" + - "Comprehensively consider fundamentals, technicals, and sentiment" + - "Provide comprehensive investment advice" + - "Adapt to different market environments" + description: | + As a comprehensive analyst, you need to: + - Integrate multiple analytical perspectives + - Balance short-term and long-term factors + - Consider combined impact of fundamentals, technicals, and sentiment + - Provide comprehensive investment advice + - Adapt to different market environments + You will flexibly select various tools based on specific situations, pursuing comprehensiveness and accuracy in analysis. + tools: + - "analyze_profitability" + - "analyze_growth" + - "analyze_financial_health" + - "analyze_valuation_ratios" + - "analyze_efficiency_ratios" + - "analyze_trend_following" + - "analyze_momentum" + - "analyze_mean_reversion" + - "analyze_volatility" + - "analyze_news_sentiment" + - "analyze_insider_trading" diff --git a/evotraders/backend/agents/prompts/analyst/system.md b/evotraders/backend/agents/prompts/analyst/system.md new file mode 100644 index 0000000..37e0c4c --- /dev/null +++ b/evotraders/backend/agents/prompts/analyst/system.md @@ -0,0 +1,23 @@ +You are a professional {{ analyst_type }}. + +Your Focus: +{{ focus }} + +Your Role: +{{ description }} + +Note: +- Construct and continuously refine your "Investment Philosophy." Your analyses should not be isolated events but rather manifestations of your overarching worldview and core investment beliefs. After each analysis, you must reflect: + - How did this case/data validate or challenge your existing conviction? + - What key principle regarding markets, human psychology, valuation, or risk management did you learn from this mistake (or success)? +- Deepen your "Investment Logic." Ensure every investment recommendation you make is supported by a clear, traceable, and repeatable logic. Your analysis steps should resemble a rigorous proof, covering: + - Core Driver Identification: What are the genuine variables that influence value? + - Risk Boundary Setting: Under what specific scenarios would your recommendation fail? + - Contrarian Testing: What is the prevailing market consensus, and where is your view differentiated? +Maintain Humility and Openness. A core trait of an Investment Master is continuous learning and adaptation. In every analysis, you must actively seek out evidence and arguments that contradict your own view and integrate them into your final assessment. + - You have access to analysis tools. Use them to gather relevant data and make informed recommendations. + +Output Guidelines: +- Return clear investment signals: bullish, bearish, or neutral +- Include confidence level (0-100) +- Provide reasoning for your analysis (Present your conclusion first if you are sure to share your final analysis. ) diff --git a/evotraders/backend/agents/prompts/portfolio_manager/system.md b/evotraders/backend/agents/prompts/portfolio_manager/system.md new file mode 100644 index 0000000..ca386c8 --- /dev/null +++ b/evotraders/backend/agents/prompts/portfolio_manager/system.md @@ -0,0 +1,31 @@ +You are a Portfolio Manager responsible for making investment decisions. + +Your Core Responsibilities: +1. Analyze input from analysts and risk managers +2. Make investment decisions based on signals and market context +3. Record your decisions using the available tool + +Decision Framework: +- Review analysis to understand market views +- Consider risk warnings before making decisions +- Evaluate current portfolio positions and cash +- Make decisions that align with the portfolio's investment objectives + +Decision Types: +- "long": Bullish - recommend buying shares +- "short": Bearish - recommend selling shares or shorting +- "hold": Neutral - maintain current positions + +Budget Awareness: +- Consider available cash when deciding quantities +- Do not recommend buying more than cash allows +- Consider margin requirements for short positions + +Output: +Use the `make_decision` tool to record your decision for each ticker. +After recording all decisions, provide a summary of your investment rationale. + +Important: +- Base decisions on the analyst signals and risk assessments provided +- Be conservative with position sizes relative to portfolio value +- Always provide reasoning for your decisions diff --git a/evotraders/backend/agents/prompts/risk_manager/system.md b/evotraders/backend/agents/prompts/risk_manager/system.md new file mode 100644 index 0000000..08373a7 --- /dev/null +++ b/evotraders/backend/agents/prompts/risk_manager/system.md @@ -0,0 +1,21 @@ +You are a professional Risk Manager responsible for monitoring portfolio risk and providing risk warnings. + +Your Core Responsibilities: +1. Monitor portfolio exposure and concentration risk +2. Evaluate position sizes relative to volatility +3. Assess margin usage and leverage levels +4. Identify potential risk factors and provide warnings +5. Suggest position limits based on market conditions + +Your Decision Process: +3. Generate actionable risk warnings and position limit recommendations +4. Provide clear reasoning for your risk assessments + +Output Guidelines: +- Be concise but thorough in risk assessments +- Prioritize warnings by severity +- Provide specific, actionable recommendations +- Include quantitative metrics when available + + + diff --git a/evotraders/backend/agents/risk_manager.py b/evotraders/backend/agents/risk_manager.py new file mode 100644 index 0000000..7d1feea --- /dev/null +++ b/evotraders/backend/agents/risk_manager.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +""" +Risk Manager Agent - Based on AgentScope ReActAgent +Uses LLM for risk assessment +""" +from typing import Any, Dict, Optional + +from agentscope.agent import ReActAgent +from agentscope.memory import InMemoryMemory, LongTermMemoryBase +from agentscope.message import Msg +from agentscope.tool import Toolkit + +from ..utils.progress import progress +from .prompt_loader import PromptLoader + +_prompt_loader = PromptLoader() + + +class RiskAgent(ReActAgent): + """ + Risk Manager Agent - Uses LLM for risk assessment + Inherits from AgentScope's ReActAgent + """ + + def __init__( + self, + model: Any, + formatter: Any, + name: str = "risk_manager", + config: Optional[Dict[str, Any]] = None, + long_term_memory: Optional[LongTermMemoryBase] = None, + ): + """ + Initialize Risk Manager Agent + + Args: + model: LLM model instance + formatter: Message formatter instance + name: Agent name + config: Configuration dictionary + long_term_memory: Optional ReMeTaskLongTermMemory instance + """ + self.config = config or {} + + sys_prompt = self._load_system_prompt() + + # Create dedicated toolkit for this agent + toolkit = Toolkit() + + kwargs = { + "name": name, + "sys_prompt": sys_prompt, + "model": model, + "formatter": formatter, + "toolkit": toolkit, + "memory": InMemoryMemory(), + "max_iters": 10, + } + if long_term_memory: + kwargs["long_term_memory"] = long_term_memory + kwargs["long_term_memory_mode"] = "static_control" + + super().__init__(**kwargs) + + def _load_system_prompt(self) -> str: + """Load system prompt for risk manager""" + return _prompt_loader.load_prompt( + "risk_manager", + "system", + ) + + async def reply(self, x: Msg = None) -> Msg: + """ + Provide risk assessment + + Args: + x: Input message (content must be str) + + Returns: + Msg with risk warnings (content is str) + """ + progress.update_status(self.name, None, "Assessing risk") + + result = await super().reply(x) + + progress.update_status(self.name, None, "Risk assessment completed") + + return result diff --git a/evotraders/backend/cli.py b/evotraders/backend/cli.py new file mode 100644 index 0000000..d4e4b5b --- /dev/null +++ b/evotraders/backend/cli.py @@ -0,0 +1,623 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +EvoTraders CLI - Command-line interface for the EvoTraders trading system. + +This module provides easy-to-use commands for running backtest, live trading, +and frontend development server. +""" +# flake8: noqa: E501 +# pylint: disable=R0912, R0915 +import os +import shutil +import subprocess +import sys +from datetime import datetime +from pathlib import Path +from typing import Optional +from zoneinfo import ZoneInfo + +import typer +from rich.console import Console +from rich.panel import Panel +from rich.prompt import Confirm + +app = typer.Typer( + name="evotraders", + help="EvoTraders: A self-evolving multi-agent trading system", + add_completion=False, +) + +console = Console() + + +def get_project_root() -> Path: + """Get the project root directory.""" + # Assuming cli.py is in backend/ + return Path(__file__).parent.parent + + +def handle_history_cleanup(config_name: str, auto_clean: bool = False) -> None: + """ + Handle cleanup of historical data for a given config. + + Args: + config_name: Configuration name for the run + auto_clean: If True, skip confirmation and clean automatically + """ + # logs_dir = get_project_root() / "logs" + logs_dir = get_project_root() + base_data_dir = logs_dir / config_name + + # Check if historical data exists + if not base_data_dir.exists() or not any(base_data_dir.iterdir()): + console.print( + f"\n[dim]No historical data found for config '{config_name}'[/dim]", + ) + console.print("[dim] Will start from scratch[/dim]\n") + return + + console.print("\n[bold yellow]Detected existing run data:[/bold yellow]") + console.print(f" Data directory: [cyan]{base_data_dir}[/cyan]") + + # Show directory size + try: + total_size = sum( + f.stat().st_size for f in base_data_dir.rglob("*") if f.is_file() + ) + size_mb = total_size / (1024 * 1024) + if size_mb < 1: + console.print( + f" Directory size: [cyan]{total_size / 1024:.1f} KB[/cyan]", + ) + else: + console.print(f" Directory size: [cyan]{size_mb:.1f} MB[/cyan]") + except Exception: + pass + + # Show last modified time + state_dir = base_data_dir / "state" + if state_dir.exists(): + state_files = list(state_dir.glob("*.json")) + if state_files: + last_modified = max(f.stat().st_mtime for f in state_files) + last_modified_str = datetime.fromtimestamp(last_modified).strftime( + "%Y-%m-%d %H:%M:%S", + ) + console.print(f" Last updated: [cyan]{last_modified_str}[/cyan]") + + console.print() + + # Determine if we should clean + should_clean = auto_clean + if not auto_clean: + should_clean = Confirm.ask( + " ﹂ Clear historical data and start fresh?", + default=False, + ) + else: + console.print("[yellow]⚠️ Auto-clean enabled (--clean flag)[/yellow]") + should_clean = True + + if should_clean: + console.print("\n[yellow]▩ Cleaning historical data...[/yellow]") + + # Backup important config files if they exist + backup_files = [".env", "config.json"] + backed_up = [] + backup_dir = None + + for backup_file in backup_files: + file_path = base_data_dir / backup_file + if file_path.exists(): + if backup_dir is None: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + backup_dir = ( + base_data_dir.parent + / f"{config_name}_backup_{timestamp}" + ) + backup_dir.mkdir(parents=True, exist_ok=True) + + shutil.copy(file_path, backup_dir / backup_file) + backed_up.append(backup_file) + + if backed_up: + console.print( + f" 💾 Backed up config files to: [cyan]{backup_dir}[/cyan]", + ) + console.print(f" Files: {', '.join(backed_up)}") + + # Remove the data directory + try: + shutil.rmtree(base_data_dir) + console.print(" ✔ Historical data cleared\n") + except Exception as e: + console.print(f" [red]✗ Error clearing data: {e}[/red]\n") + raise typer.Exit(1) + else: + console.print( + "\n[dim] Continuing with existing historical data[/dim]\n", + ) + + +def run_data_updater(project_root: Path) -> None: + """Run the historical data updater.""" + console.print("\n[bold]Checking historical data update...[/bold]") + try: + result = subprocess.run( + [sys.executable, "-m", "backend.data.ret_data_updater", "--help"], + capture_output=True, + timeout=5, + check=False, + ) + + if result.returncode == 0: + console.print("[cyan]Updating historical data...[/cyan]") + update_result = subprocess.run( + [sys.executable, "-m", "backend.data.ret_data_updater"], + cwd=project_root, + check=False, + ) + + if update_result.returncode == 0: + console.print( + "[green]✔ Historical data updated successfully[/green]\n", + ) + else: + console.print( + "[yellow] Data update failed (might be weekend/holiday)[/yellow]", + ) + console.print( + "[dim] Will continue with existing data[/dim]\n", + ) + else: + console.print( + "[yellow] Data updater module not available, skipping update[/yellow]\n", + ) + except Exception: + console.print( + "[yellow] Data updater check failed, skipping update[/yellow]\n", + ) + + +@app.command() +def backtest( + start: Optional[str] = typer.Option( + None, + "--start", + "-s", + help="Start date for backtest (YYYY-MM-DD)", + ), + end: Optional[str] = typer.Option( + None, + "--end", + "-e", + help="End date for backtest (YYYY-MM-DD)", + ), + config_name: str = typer.Option( + "backtest", + "--config-name", + "-c", + help="Configuration name for this backtest run", + ), + host: str = typer.Option( + "0.0.0.0", + "--host", + help="WebSocket server host", + ), + port: int = typer.Option( + 8765, + "--port", + "-p", + help="WebSocket server port", + ), + poll_interval: int = typer.Option( + 10, + "--poll-interval", + help="Price polling interval in seconds", + ), + clean: bool = typer.Option( + False, + "--clean", + help="Clear historical data before starting", + ), + enable_memory: bool = typer.Option( + False, + "--enable-memory", + help="Enable ReMeTaskLongTermMemory for agents (requires MEMORY_API_KEY)", + ), +): + """ + Run backtest mode with historical data. + + Example: + evotraders backtest --start 2025-11-01 --end 2025-12-01 + evotraders backtest --config-name my_strategy --port 9000 + evotraders backtest --clean # Clear historical data before starting + evotraders backtest --enable-memory # Enable long-term memory + """ + console.print( + Panel.fit( + "[bold cyan]EvoTraders Backtest Mode[/bold cyan]", + border_style="cyan", + ), + ) + + # Validate dates - required for backtest + if not start or not end: + console.print( + "[red]✗ Both --start and --end dates are required for backtest mode[/red]", + ) + raise typer.Exit(1) + + try: + datetime.strptime(start, "%Y-%m-%d") + except ValueError as exc: + console.print( + "[red]✗ Invalid start date format. Use YYYY-MM-DD[/red]", + ) + raise typer.Exit(1) from exc + + try: + datetime.strptime(end, "%Y-%m-%d") + except ValueError as exc: + console.print( + "[red]✗ Invalid end date format. Use YYYY-MM-DD[/red]", + ) + raise typer.Exit(1) from exc + + # Handle historical data cleanup + handle_history_cleanup(config_name, auto_clean=clean) + + # Display configuration + console.print("\n[bold]Configuration:[/bold]") + console.print(" Mode: Backtest") + console.print(f" Config: {config_name}") + console.print(f" Period: {start} -> {end}") + console.print(f" Server: {host}:{port}") + console.print(f" Poll Interval: {poll_interval}s") + console.print( + f" Long-term Memory: {'enabled' if enable_memory else 'disabled'}", + ) + console.print("\nAccess frontend at: [cyan]http://localhost:5173[/cyan]") + console.print("Press Ctrl+C to stop\n") + + # Change to project root + project_root = get_project_root() + os.chdir(project_root) + + # Run data updater + run_data_updater(project_root) + + # Build command using backend.main + cmd = [ + sys.executable, + "-u", + "-m", + "backend.main", + "--mode", + "backtest", + "--config-name", + config_name, + "--host", + host, + "--port", + str(port), + "--poll-interval", + str(poll_interval), + "--start-date", + start, + "--end-date", + end, + ] + + if enable_memory: + cmd.append("--enable-memory") + + try: + subprocess.run(cmd, check=True) + except KeyboardInterrupt: + console.print("\n\n[yellow]Backtest stopped by user[/yellow]") + except subprocess.CalledProcessError as e: + console.print( + f"\n[red]Backtest failed with exit code {e.returncode}[/red]", + ) + raise typer.Exit(1) + + +@app.command() +def live( + mock: bool = typer.Option( + False, + "--mock", + help="Use mock mode with simulated prices (for testing)", + ), + config_name: str = typer.Option( + "live", + "--config-name", + "-c", + help="Configuration name for this live run", + ), + host: str = typer.Option( + "0.0.0.0", + "--host", + help="WebSocket server host", + ), + port: int = typer.Option( + 8765, + "--port", + "-p", + help="WebSocket server port", + ), + trigger_time: str = typer.Option( + "now", + "--trigger-time", + "-t", + help="Trigger time in LOCAL timezone (HH:MM), or 'now' to run immediately", + ), + poll_interval: int = typer.Option( + 10, + "--poll-interval", + help="Price polling interval in seconds", + ), + clean: bool = typer.Option( + False, + "--clean", + help="Clear historical data before starting", + ), + enable_memory: bool = typer.Option( + False, + "--enable-memory", + help="Enable ReMeTaskLongTermMemory for agents (requires MEMORY_API_KEY)", + ), +): + """ + Run live trading mode with real-time data. + + Example: + evotraders live # Run immediately (default) + evotraders live --mock # Mock mode + evotraders live -t 22:30 # Run at 22:30 local time daily + evotraders live --trigger-time now # Run immediately + evotraders live --clean # Clear historical data before starting + """ + mode_name = "MOCK" if mock else "LIVE" + console.print( + Panel.fit( + f"[bold cyan]EvoTraders {mode_name} Mode[/bold cyan]", + border_style="cyan", + ), + ) + + # Check for required API key in live mode + if not mock: + env_file = get_project_root() / ".env" + if not env_file.exists(): + console.print("\n[yellow]Warning: .env file not found[/yellow]") + console.print("Creating from template...\n") + template = get_project_root() / "env.template" + if template.exists(): + shutil.copy(template, env_file) + console.print("[green].env file created[/green]") + console.print( + "\n[red]Error: Please edit .env and set FINNHUB_API_KEY[/red]", + ) + console.print( + "Get your free API key at: https://finnhub.io/register\n", + ) + else: + console.print("[red]Error: env.template not found[/red]") + raise typer.Exit(1) + + # Handle historical data cleanup + handle_history_cleanup(config_name, auto_clean=clean) + + # Convert local time to NYSE time + nyse_tz = ZoneInfo("America/New_York") + local_tz = datetime.now().astimezone().tzinfo + local_now = datetime.now() + nyse_now = datetime.now(nyse_tz) + + # Convert trigger time from local to NYSE + if trigger_time.lower() == "now": + nyse_trigger_time = "now" + else: + local_trigger = datetime.strptime(trigger_time, "%H:%M") + local_trigger_dt = local_now.replace( + hour=local_trigger.hour, + minute=local_trigger.minute, + second=0, + microsecond=0, + ) + local_trigger_aware = local_trigger_dt.astimezone(local_tz) + nyse_trigger_dt = local_trigger_aware.astimezone(nyse_tz) + nyse_trigger_time = nyse_trigger_dt.strftime("%H:%M") + + # Display time info + console.print("\n[bold]Time Info:[/bold]") + console.print(f" Local Time: {local_now.strftime('%Y-%m-%d %H:%M:%S')}") + console.print( + f" NYSE Time: {nyse_now.strftime('%Y-%m-%d %H:%M:%S %Z')}", + ) + if nyse_trigger_time == "now": + console.print(" Trigger: [green]NOW (immediate)[/green]") + else: + console.print( + f" Trigger: {trigger_time} local = {nyse_trigger_time} NYSE", + ) + + # Display configuration + console.print("\n[bold]Configuration:[/bold]") + if mock: + console.print(" Mode: [yellow]MOCK[/yellow] (Simulated prices)") + else: + console.print( + " Mode: [green]LIVE[/green] (Real-time prices via Finnhub)", + ) + console.print(f" Config: {config_name}") + console.print(f" Server: {host}:{port}") + console.print(f" Poll Interval: {poll_interval}s") + console.print( + f" Long-term Memory: {'enabled' if enable_memory else 'disabled'}", + ) + + console.print("\nAccess frontend at: [cyan]http://localhost:5173[/cyan]") + console.print("Press Ctrl+C to stop\n") + + # Change to project root + project_root = get_project_root() + os.chdir(project_root) + + # Data update (if not mock mode) + if not mock: + run_data_updater(project_root) + else: + console.print( + "\n[dim]Mock mode enabled - skipping data update[/dim]\n", + ) + + # Build command using backend.main + cmd = [ + sys.executable, + "-u", + "-m", + "backend.main", + "--mode", + "live", + "--config-name", + config_name, + "--host", + host, + "--port", + str(port), + "--poll-interval", + str(poll_interval), + "--trigger-time", + nyse_trigger_time, + ] + + if mock: + cmd.append("--mock") + if enable_memory: + cmd.append("--enable-memory") + + try: + subprocess.run(cmd, check=True) + except KeyboardInterrupt: + console.print("\n\n[yellow]Live server stopped by user[/yellow]") + except subprocess.CalledProcessError as e: + console.print( + f"\n[red]Live server failed with exit code {e.returncode}[/red]", + ) + raise typer.Exit(1) from e + + +@app.command() +def frontend( + port: int = typer.Option( + 8765, + "--ws-port", + "-p", + help="WebSocket server port to connect to", + ), + host_mode: bool = typer.Option( + False, + "--host", + help="Allow external access (default: localhost only)", + ), +): + """ + Start the frontend development server. + + Example: + evotraders frontend + evotraders frontend --ws-port 8765 + evotraders frontend --ws-port 8765 --host + """ + console.print( + Panel.fit( + "[bold cyan]EvoTraders Frontend[/bold cyan]", + border_style="cyan", + ), + ) + + project_root = get_project_root() + frontend_dir = project_root / "frontend" + + # Check if frontend directory exists + if not frontend_dir.exists(): + console.print( + f"\n[red]Error: Frontend directory not found: {frontend_dir}[/red]", + ) + raise typer.Exit(1) + + # Check if node_modules exists + node_modules = frontend_dir / "node_modules" + if not node_modules.exists(): + console.print("\n[yellow]Installing frontend dependencies...[/yellow]") + try: + subprocess.run( + ["npm", "install"], + cwd=frontend_dir, + check=True, + ) + console.print("[green]Dependencies installed[/green]\n") + except subprocess.CalledProcessError as exc: + console.print("\n[red]Error: Failed to install dependencies[/red]") + console.print("Make sure Node.js and npm are installed") + raise typer.Exit(1) from exc + + # Set WebSocket URL environment variable + ws_url = f"ws://localhost:{port}" + env = os.environ.copy() + env["VITE_WS_URL"] = ws_url + + # Display configuration + console.print("\n[bold]Configuration:[/bold]") + console.print(f" WebSocket URL: {ws_url}") + console.print(" Frontend Port: 5173 (Vite default)") + if host_mode: + console.print(" Access: External allowed") + else: + console.print(" Access: Localhost only") + console.print("\nAccess at: [cyan]http://localhost:5173[/cyan]") + console.print("Press Ctrl+C to stop\n") + + # Choose npm command + npm_cmd = ["npm", "run", "dev:host" if host_mode else "dev"] + + try: + subprocess.run( + npm_cmd, + cwd=frontend_dir, + env=env, + check=True, + ) + except KeyboardInterrupt: + console.print("\n\n[yellow]Frontend stopped by user[/yellow]") + except subprocess.CalledProcessError as e: + console.print( + f"\n[red]Frontend failed with exit code {e.returncode}[/red]", + ) + raise typer.Exit(1) + + +@app.command() +def version(): + """Show the version of EvoTraders.""" + console.print( + "\n[bold cyan]EvoTraders[/bold cyan] version [green]0.1.0[/green]\n", + ) + + +@app.callback() +def main(): + """ + EvoTraders: A self-evolving multi-agent trading system + + Use 'evotraders --help' to see available commands. + """ + + +if __name__ == "__main__": + app() diff --git a/evotraders/backend/config/__init__.py b/evotraders/backend/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/evotraders/backend/config/constants.py b/evotraders/backend/config/constants.py new file mode 100644 index 0000000..7a85742 --- /dev/null +++ b/evotraders/backend/config/constants.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# flake8: noqa: E501 +# pylint: disable=C0301 + +# Agent configuration for dashboard display +AGENT_CONFIG = { + "portfolio_manager": { + "name": "Portfolio Manager", + "role": "Portfolio Manager", + "avatar": "pm", + "is_team_role": True, + }, + "risk_manager": { + "name": "Risk Manager", + "role": "Risk Manager", + "avatar": "risk", + "is_team_role": True, + }, + "sentiment_analyst": { + "name": "Sentiment Analyst", + "role": "Sentiment Analyst", + "avatar": "sentiment", + "is_team_role": False, + }, + "technical_analyst": { + "name": "Technical Analyst", + "role": "Technical Analyst", + "avatar": "technical", + "is_team_role": False, + }, + "fundamentals_analyst": { + "name": "Fundamentals Analyst", + "role": "Fundamentals Analyst", + "avatar": "fundamentals", + "is_team_role": False, + }, + "valuation_analyst": { + "name": "Valuation Analyst", + "role": "Valuation Analyst", + "avatar": "valuation", + "is_team_role": False, + }, +} + +ANALYST_TYPES = { + "fundamentals_analyst": { + "display_name": "Fundamentals Analyst", + "agent_id": "fundamentals_analyst", + "description": "Uses LLM to intelligently select analysis tools, focuses on financial data and company fundamental analysis", + "order": 12, + }, + "technical_analyst": { + "display_name": "Technical Analyst", + "agent_id": "technical_analyst", + "description": "Uses LLM to intelligently select analysis tools, focuses on technical indicators and chart analysis", + "order": 11, + }, + "sentiment_analyst": { + "display_name": "Sentiment Analyst", + "agent_id": "sentiment_analyst", + "description": "Uses LLM to intelligently select analysis tools, analyzes market sentiment and news sentiment", + "order": 13, + }, + "valuation_analyst": { + "display_name": "Valuation Analyst", + "agent_id": "valuation_analyst", + "description": "Uses LLM to intelligently select analysis tools, focuses on company valuation and value assessment", + "order": 14, + }, + # "comprehensive_analyst": { + # "display_name": "Comprehensive Analyst", + # "agent_id": "comprehensive_analyst", + # "description": "Uses LLM to intelligently select analysis tools, performs comprehensive analysis", + # "order": 15 + # } +} diff --git a/evotraders/backend/config/data_config.py b/evotraders/backend/config/data_config.py new file mode 100644 index 0000000..2c626b3 --- /dev/null +++ b/evotraders/backend/config/data_config.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +""" +Centralized Data Source Configuration + +Auto-detects and manages data source based on available API keys. +Priority: FINNHUB_API_KEY > FINANCIAL_DATASETS_API_KEY +""" +import os +from dataclasses import dataclass +from typing import Literal, Optional + +DataSource = Literal["finnhub", "financial_datasets"] + + +@dataclass +class DataSourceConfig: + """Immutable data source configuration""" + + source: DataSource + api_key: str + + +# Module-level cache for the resolved configuration +_config_cache: Optional[DataSourceConfig] = None + + +def _resolve_config() -> DataSourceConfig: + """ + Resolve data source configuration based on available API keys. + + Priority: + 1. FINNHUB_API_KEY (if set) + 2. FINANCIAL_DATASETS_API_KEY (if set) + 3. Raises error if neither is available + """ + # Check for Finnhub API key first (higher priority) + finnhub_key = os.getenv("FINNHUB_API_KEY") + if finnhub_key: + return DataSourceConfig(source="finnhub", api_key=finnhub_key) + + # Fallback to Financial Datasets API + fd_key = os.getenv("FINANCIAL_DATASETS_API_KEY") + if fd_key: + return DataSourceConfig(source="financial_datasets", api_key=fd_key) + + # No API key available + raise ValueError( + "No API key found. Please set either FINNHUB_API_KEY or " + "FINANCIAL_DATASETS_API_KEY in your .env file.", + ) + + +def get_config() -> DataSourceConfig: + """ + Get the resolved data source configuration (cached). + + Returns: + DataSourceConfig with source and api_key + + Raises: + ValueError: If no API key is configured + """ + global _config_cache + if _config_cache is None: + _config_cache = _resolve_config() + return _config_cache + + +def get_data_source() -> DataSource: + """Get the configured data source name.""" + return get_config().source + + +def get_api_key() -> str: + """Get the API key for the configured data source.""" + return get_config().api_key + + +def reset_config() -> None: + """Reset the cached configuration (useful for testing).""" + global _config_cache + _config_cache = None diff --git a/evotraders/backend/config/env_config.py b/evotraders/backend/config/env_config.py new file mode 100644 index 0000000..94303d8 --- /dev/null +++ b/evotraders/backend/config/env_config.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Simple environment config helpers +""" +import os + + +def get_env_list(key: str, default: list = None) -> list: + """Get comma-separated list from env""" + value = os.getenv(key, "") + if not value: + return default or [] + return [item.strip() for item in value.split(",") if item.strip()] + + +def get_env_float(key: str, default: float = 0.0) -> float: + """Get float from env""" + value = os.getenv(key) + if value is None: + return default + try: + return float(value) + except ValueError: + return default + + +def get_env_int(key: str, default: int = 0) -> int: + """Get int from env""" + value = os.getenv(key) + if value is None: + return default + try: + return int(value) + except ValueError: + return default diff --git a/evotraders/backend/core/__init__.py b/evotraders/backend/core/__init__.py new file mode 100644 index 0000000..40853de --- /dev/null +++ b/evotraders/backend/core/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +"""Core pipeline and orchestration logic""" + +from .pipeline import TradingPipeline +from .state_sync import StateSync + +__all__ = ["TradingPipeline", "StateSync"] diff --git a/evotraders/backend/core/pipeline.py b/evotraders/backend/core/pipeline.py new file mode 100644 index 0000000..aa6fdcf --- /dev/null +++ b/evotraders/backend/core/pipeline.py @@ -0,0 +1,1262 @@ +# -*- coding: utf-8 -*- +""" +Core Pipeline - Orchestrates multi-agent analysis and decision-making +""" + +# flake8: noqa: E501 +# pylint: disable=W0613,C0301 + +import json +import logging +import os +import re +from typing import Any, Awaitable, Callable, Dict, List, Optional + +from agentscope.message import Msg +from agentscope.pipeline import MsgHub + +from backend.utils.settlement import SettlementCoordinator +from backend.utils.terminal_dashboard import get_dashboard +from backend.core.state_sync import StateSync +from backend.utils.trade_executor import PortfolioTradeExecutor + + +logger = logging.getLogger(__name__) + + +def _log(msg: str): + """Log to dashboard if available, otherwise to logger""" + dashboard = get_dashboard() + if dashboard.live: + dashboard.log(msg) + else: + logger.info(msg) + + +class TradingPipeline: + """ + Trading Pipeline - Orchestrates the complete trading cycle + + Flow: + 1. Clear agent short-term memory (avoid cross-day context pollution) + 2. Analysts analyze stocks + 3. Risk Manager provides risk assessment + 4. PM makes decisions (direction + quantity) + 5. Execute trades with provided prices + 6. Reflection phase: broadcast closing P&L, agents record to long-term memory + + Real-time updates via StateSync after each agent completes. + """ + + def __init__( + self, + analysts: List[Any], + risk_manager: Any, + portfolio_manager: Any, + state_sync: Optional["StateSync"] = None, + settlement_coordinator: Optional[SettlementCoordinator] = None, + max_comm_cycles: Optional[int] = None, + ): + self.analysts = analysts + self.risk_manager = risk_manager + self.pm = portfolio_manager + self.state_sync = state_sync + self.settlement_coordinator = settlement_coordinator + self.max_comm_cycles = max_comm_cycles or int( + os.getenv("MAX_COMM_CYCLES", "2"), + ) + self.conference_summary = None # Store latest conference summary + + async def run_cycle( + self, + tickers: List[str], + date: str, + prices: Optional[Dict[str, float]] = None, + close_prices: Optional[Dict[str, float]] = None, + market_caps: Optional[Dict[str, float]] = None, + get_open_prices_fn: Optional[ + Callable[[], Awaitable[Dict[str, float]]] + ] = None, + get_close_prices_fn: Optional[ + Callable[[], Awaitable[Dict[str, float]]] + ] = None, + ) -> Dict[str, Any]: + """ + Run one complete trading cycle + + Args: + tickers: List of stock tickers + date: Trading date (YYYY-MM-DD) + prices: Open prices {ticker: price} (for backtest) + close_prices: Close prices for settlement (for backtest) + market_caps: Optional market caps for baseline calculation + get_open_prices_fn: Async callback to wait for open prices (live mode) + get_close_prices_fn: Async callback to wait for close prices (live mode) + + For live mode: + - Analysis runs immediately + - Execution waits for market open via get_open_prices_fn + - Settlement waits for market close via get_close_prices_fn + + Each agent's result is broadcast immediately via StateSync. + """ + _log(f"Starting cycle {date} - {len(tickers)} tickers") + + # Phase 0: Clear short-term memory to avoid cross-day context pollution + _log("Phase 0: Clearing memory") + await self._clear_all_agent_memory() + + participants = self.analysts + [self.risk_manager, self.pm] + + # Single MsgHub for entire cycle - no nesting + async with MsgHub( + participants=participants, + announcement=Msg( + "system", + f"Starting analysis cycle for {date}. Tickers: {', '.join(tickers)}", + "system", + ), + ): + # Phase 1.1: Analysts + _log("Phase 1.1: Analyst analysis") + analyst_results = await self._run_analysts_with_sync(tickers, date) + + # Phase 1.2: Risk Manager + _log("Phase 1.2: Risk assessment") + risk_assessment = await self._run_risk_manager_with_sync( + tickers, + date, + prices, + ) + + # Phase 2.1: Conference discussion (within same MsgHub) + _log("Phase 2.1: Conference discussion") + conference_summary = await self._run_conference_cycles( + tickers=tickers, + date=date, + prices=prices, + analyst_results=analyst_results, + risk_assessment=risk_assessment, + ) + self.conference_summary = conference_summary + + # Phase 2.2: Analysts generate final structured predictions + _log("Phase 2.2: Analysts generate final structured predictions") + final_predictions = await self._collect_final_predictions( + tickers, + date, + ) + + # Record final predictions for leaderboard ranking + if self.settlement_coordinator: + self.settlement_coordinator.record_analyst_predictions( + final_predictions, + ) + + # Live mode: wait for market open before execution + if get_open_prices_fn: + _log("Waiting for market open...") + prices = await get_open_prices_fn() + _log(f"Got open prices: {prices}") + + # Phase 3: PM makes decisions + _log("Phase 3.1: PM makes decisions") + pm_result = await self._run_pm_with_sync( + tickers, + date, + prices, + analyst_results, + risk_assessment, + ) + + # Phase 4: Execute decisions + _log("Phase 4: Executing trades") + decisions = pm_result.get("decisions", {}) + execution_result = self._execute_decisions(decisions, prices, date) + + # Live mode: wait for market close before settlement + if get_close_prices_fn: + _log("Waiting for market close") + close_prices = await get_close_prices_fn() + _log(f"Got close prices: {close_prices}") + + # Phase 5: Settlement - run after close prices available + settlement_result = None + if close_prices and self.settlement_coordinator: + _log("Phase 5: Daily review and generate memories") + + agent_trajectories = await self._capture_agent_trajectories() + + if market_caps is None: + market_caps = {ticker: 1e9 for ticker in tickers} + + settlement_result = ( + self.settlement_coordinator.run_daily_settlement( + date=date, + tickers=tickers, + open_prices=prices, + close_prices=close_prices, + market_caps=market_caps, + agent_portfolio=execution_result.get("portfolio", {}), + analyst_results=analyst_results, + ) + ) + + await self._run_reflection( + date=date, + agent_trajectories=agent_trajectories, + analyst_results=analyst_results, + decisions=decisions, + executed_trades=execution_result.get("executed_trades", []), + open_prices=prices, + close_prices=close_prices, + settlement_result=settlement_result, + conference_summary=self.conference_summary, + ) + + _log(f"Cycle complete: {date}") + + return { + "analyst_results": analyst_results, + "risk_assessment": risk_assessment, + "pm_decisions": decisions, + "executed_trades": execution_result.get("executed_trades", []), + "portfolio": execution_result.get("portfolio", {}), + "settlement_result": settlement_result, + } + + async def _clear_all_agent_memory(self): + """Clear short-term memory for all agents""" + for analyst in self.analysts: + await analyst.memory.clear() + + await self.risk_manager.memory.clear() + await self.pm.memory.clear() + + async def _sync_memory_if_retrieved(self, agent: Any) -> None: + """ + Check agent's short-term memory for retrieved long-term memory and sync to frontend. + + AgentScope's ReActAgent adds a Msg with name="long_term_memory" when + memory is retrieved in static_control mode. + """ + if not self.state_sync: + return + + try: + msgs = await agent.memory.get_memory() + for msg in msgs: + if getattr(msg, "name", None) == "long_term_memory": + content = self._extract_text_content(msg.content) + if content: + parsed = self._parse_memory_content(content) + await self.state_sync.on_memory_retrieved( + agent_id=agent.name, + content=parsed, + ) + break # Only sync the first (most recent) memory retrieval + except Exception as e: + logger.warning(f"Failed to sync memory for {agent.name}: {e}") + + def _parse_memory_content(self, content: str) -> str: + """ + Parse memory content to extract rewritten_context from JSON format. + + AgentScope ReMe memory wraps content in tags with JSON. + """ + # Try to extract JSON from the content + print("memory content:\n", content) + + json_match = re.search( + r".*?```json\s*(\{[\s\S]*?\})\s*```\s*", + content, + re.DOTALL, + ) + if not json_match: + json_match = re.search( + r'\{[^{}]*"rewritten_context"[^{}]*\}', + content, + re.DOTALL, + ) + + if json_match: + try: + json_str = json_match.group(1) + data = json.loads(json_str) + return data.get("rewritten_context", "") + except json.JSONDecodeError: + pass + + # Fallback: strip XML tags and return cleaned content + content = re.sub(r"", "", content) + content = re.sub( + r"The content below are retrieved from long-term memory.*?:\s*", + "", + content, + ) + return content.strip() + + async def _capture_agent_trajectories(self) -> Dict[str, List[Msg]]: + """ + Capture execution trajectories from all agents' short-term memory + + This should be called BEFORE clearing memory to preserve the + complete execution trajectory for long-term memory recording. + + Returns: + Dict mapping agent name to list of Msg objects (the trajectory) + """ + trajectories = {} + + # Capture analyst trajectories + for analyst in self.analysts: + try: + msgs = await analyst.memory.get_memory() + if msgs: + trajectories[analyst.name] = list(msgs) + except Exception as e: + logger.warning( + f"Failed to capture trajectory for {analyst.name}: {e}", + ) + + # Capture risk manager trajectory + try: + msgs = await self.risk_manager.memory.get_memory() + if msgs: + trajectories["risk_manager"] = list(msgs) + except Exception as e: + logger.warning( + f"Failed to capture trajectory for risk_manager: {e}", + ) + + # Capture PM trajectory + try: + msgs = await self.pm.memory.get_memory() + if msgs: + trajectories["portfolio_manager"] = list(msgs) + except Exception as e: + logger.warning( + f"Failed to capture trajectory for portfolio_manager: {e}", + ) + + return trajectories + + async def _run_reflection( + self, + date: str, + agent_trajectories: Dict[str, List[Msg]], + analyst_results: List[Dict[str, Any]], + decisions: Dict[str, Dict], + executed_trades: List[Dict], + open_prices: Optional[Dict[str, float]], + close_prices: Optional[Dict[str, float]], + settlement_result: Optional[Dict[str, Any]] = None, + conference_summary: Optional[str] = None, + ): + """ + Run reflection phase after market close + + Calculates actual P&L and records execution trajectory to long-term memory + + Args: + date: Trading date + agent_trajectories: Dict mapping agent name to their execution trajectory + analyst_results: Results from analyst agents + decisions: PM decisions + executed_trades: List of executed trades + open_prices: Opening prices + close_prices: Closing prices + settlement_result: Optional settlement results with baseline performance + conference_summary: Optional summary from conference discussion + """ + # Calculate P&L for each trade + trade_pnl = [] + for trade in executed_trades: + ticker = trade["ticker"] + action = trade["action"] + quantity = trade["quantity"] + entry_price = trade["price"] + exit_price = close_prices.get(ticker, entry_price) + + if action == "long": + pnl = (exit_price - entry_price) * quantity + elif action == "short": + pnl = (entry_price - exit_price) * quantity + else: + pnl = 0 + + pnl_pct = ( + (pnl / (entry_price * quantity) * 100) if quantity > 0 else 0 + ) + + trade_pnl.append( + { + "ticker": ticker, + "action": action, + "quantity": quantity, + "entry_price": entry_price, + "exit_price": exit_price, + "pnl": pnl, + "pnl_pct": pnl_pct, + }, + ) + + total_pnl = sum(t["pnl"] for t in trade_pnl) + + # Build reflection summary with settlement info + reflection_content = self._build_reflection_content( + date=date, + analyst_results=analyst_results, + decisions=decisions, + trade_pnl=trade_pnl, + total_pnl=total_pnl, + settlement_result=settlement_result, + conference_summary=conference_summary, + ) + + # Record execution trajectories to long-term memory for agents that support it + # Score based on profitability: higher score for profitable days + score = 1.0 if total_pnl > 0 else 0.0 + + await self._record_to_long_term_memory( + date=date, + agent_trajectories=agent_trajectories, + trade_pnl=trade_pnl, + total_pnl=total_pnl, + score=score, + ) + + # Broadcast reflection to StateSync + if self.state_sync: + await self.state_sync.on_agent_complete( + agent_id="Daily Log", + content=reflection_content, + ) + + def _build_reflection_content( + self, + date: str, + analyst_results: List[Dict[str, Any]], + decisions: Dict[str, Dict], + trade_pnl: List[Dict], + total_pnl: float, + settlement_result: Optional[Dict[str, Any]] = None, + conference_summary: Optional[str] = None, + ) -> str: + """Build human-readable reflection content""" + lines = [f"Daily log for {date}:"] + lines.append(f"Total P&L: ${total_pnl:,.2f}") + lines.append("") + + if conference_summary: + lines.append("Conference Discussion Summary:") + lines.append(conference_summary) + lines.append("") + + if settlement_result: + baseline_values = settlement_result.get("baseline_values", {}) + initial = 100000.0 + lines.append("Baseline Comparison:") + lines.append( + f" Equal Weight: ${baseline_values.get('equal_weight', 0):,.2f} " + f"({(baseline_values.get('equal_weight', initial) - initial) / initial * 100:.2f}%)", + ) + lines.append( + f" Market Cap Weighted: ${baseline_values.get('market_cap_weighted', 0):,.2f} " + f"({(baseline_values.get('market_cap_weighted', initial) - initial) / initial * 100:.2f}%)", + ) + lines.append( + f" Momentum: ${baseline_values.get('momentum', 0):,.2f} " + f"({(baseline_values.get('momentum', initial) - initial) / initial * 100:.2f}%)", + ) + lines.append("") + + if trade_pnl: + lines.append("Trade Results:") + for t in trade_pnl: + pnl_sign = "+" if t["pnl"] >= 0 else "" + lines.append( + f" {t['ticker']}: {t['action'].upper()} {t['quantity']} @ " + f"${t['entry_price']:.2f} -> ${t['exit_price']:.2f}, " + f"P&L: {pnl_sign}${t['pnl']:.2f} ({pnl_sign}{t['pnl_pct']:.1f}%)", + ) + else: + lines.append("No trades executed today.") + + return "\n".join(lines) + + async def _record_to_long_term_memory( + self, + date: str, + agent_trajectories: Dict[str, List[Msg]], + trade_pnl: List[Dict], + total_pnl: float, + score: float, + ): + """ + Record execution trajectories to long-term memory for all agents + + This method records the actual execution trajectory (conversation history) + from each agent's short-term memory. This allows the ReMe memory system + to learn from the complete task execution flow, not just summaries. + + Args: + date: Trading date + agent_trajectories: Dict mapping agent name to their execution trajectory + trade_pnl: P&L details for each trade + total_pnl: Total P&L for the day + score: Score for this trajectory (1.0 for profitable, 0.5 for loss) + """ + # Build outcome message to append to trajectories + outcome_msg = Msg( + role="user", + content=f"You are an analyst/financial manager, The Key point is to predict correctly and" + f"have good P&L. The Definition of loss is when P&L < 0. " + f"Focus on how to do good prediction but not only execution correctly." + f"[Outcome] Trading day {date} - Total P&L: ${total_pnl:,.2f}. " + f"{'Profitable day.' if total_pnl > 0 else 'Loss day.'}", + name="system", + ) + + # Record for analysts + for analyst in self.analysts: + if ( + hasattr(analyst, "long_term_memory") + and analyst.long_term_memory is not None + ): + trajectory = agent_trajectories.get(analyst.name, []) + if trajectory: + # Append outcome to trajectory + trajectory_with_outcome = trajectory + [outcome_msg] + try: + await analyst.long_term_memory.record( + msgs=trajectory_with_outcome, + score=score, + ) + logger.debug( + f"Recorded {len(trajectory_with_outcome)} messages " + f"to long-term memory for {analyst.name}", + ) + except Exception as e: + logger.warning( + f"Failed to record to long-term memory for {analyst.name}: {e}", + ) + + # Record for risk manager + if ( + hasattr(self.risk_manager, "long_term_memory") + and self.risk_manager.long_term_memory is not None + ): + trajectory = agent_trajectories.get("risk_manager", []) + if trajectory: + trajectory_with_outcome = trajectory + [outcome_msg] + try: + await self.risk_manager.long_term_memory.record( + msgs=trajectory_with_outcome, + score=score, + ) + logger.debug( + f"Recorded {len(trajectory_with_outcome)} messages " + f"to long-term memory for risk_manager", + ) + except Exception as e: + logger.warning( + f"Failed to record to long-term memory for risk_manager: {e}", + ) + + # Record for PM with trade outcome details + if ( + hasattr(self.pm, "long_term_memory") + and self.pm.long_term_memory is not None + ): + trajectory = agent_trajectories.get("portfolio_manager", []) + if trajectory: + # Build detailed outcome message for PM + pnl_details = [] + for t in trade_pnl: + pnl_sign = "+" if t["pnl"] >= 0 else "" + pnl_details.append( + f"{t['ticker']}: {t['action']} {t['quantity']} @ " + f"${t['entry_price']:.2f} -> ${t['exit_price']:.2f}, " + f"P&L: {pnl_sign}${t['pnl']:.2f}", + ) + + pm_outcome_msg = Msg( + role="user", + content=f"[Outcome] Trading day {date}\n" + f"Total P&L: ${total_pnl:,.2f} " + f"({'Profitable' if total_pnl >= 0 else 'Loss'})\n" + f"Trade details:\n" + "\n".join(pnl_details) + if pnl_details + else f"[Outcome] Trading day {date}\n" + f"Total P&L: ${total_pnl:,.2f}\nNo trades executed.", + name="system", + ) + trajectory_with_outcome = trajectory + [pm_outcome_msg] + try: + await self.pm.long_term_memory.record( + msgs=trajectory_with_outcome, + score=score, + ) + logger.debug( + f"Recorded {len(trajectory_with_outcome)} messages " + f"to long-term memory for portfolio_manager", + ) + except Exception as e: + logger.warning( + f"Failed to record to long-term memory for portfolio_manager: {e}", + ) + + async def _run_conference_cycles( + self, + tickers: List[str], + date: str, + prices: Optional[Dict[str, float]], + analyst_results: List[Dict[str, Any]], + risk_assessment: Dict[str, Any], + ) -> Optional[str]: + """ + Run conference discussion cycles (within existing MsgHub context) + + No nested MsgHub - this runs inside the main cycle's MsgHub. + + Returns: + Conference summary string generated by PM + """ + if self.max_comm_cycles <= 0: + _log( + "Phase 2.1: Conference discussion - " + "Conference skipped (disabled)", + ) + return None + + conference_title = f"Investment Discussion - {date}" + + if self.state_sync: + await self.state_sync.on_conference_start( + title=conference_title, + date=date, + ) + + # Run discussion cycles (no new MsgHub - use parent's) + for cycle in range(self.max_comm_cycles): + _log( + "Phase 2.1: Conference discussion - " + f"Conference {cycle + 1}/{self.max_comm_cycles}", + ) + + if self.state_sync: + await self.state_sync.on_conference_cycle_start( + cycle=cycle + 1, + total_cycles=self.max_comm_cycles, + ) + + # PM sets agenda or asks questions + pm_prompt = self._build_pm_discussion_prompt( + cycle=cycle, + tickers=tickers, + date=date, + prices=prices, + analyst_results=analyst_results, + risk_assessment=risk_assessment, + ) + + pm_msg = Msg(name="system", content=pm_prompt, role="user") + pm_response = await self.pm.reply(pm_msg) + + if self.state_sync: + pm_content = self._extract_text_content(pm_response.content) + await self.state_sync.on_conference_message( + agent_id="portfolio_manager", + content=pm_content, + ) + + # Analysts share perspectives + for analyst in self.analysts: + analyst_prompt = self._build_analyst_discussion_prompt( + cycle=cycle, + tickers=tickers, + date=date, + ) + + analyst_msg = Msg( + name="system", + content=analyst_prompt, + role="user", + ) + analyst_response = await analyst.reply(analyst_msg) + + if self.state_sync: + analyst_content = self._extract_text_content( + analyst_response.content, + ) + await self.state_sync.on_conference_message( + agent_id=analyst.name, + content=analyst_content, + ) + + if self.state_sync: + await self.state_sync.on_conference_cycle_end( + cycle=cycle + 1, + ) + + # Generate conference summary by PM + _log( + "Phase 2.1: Conference discussion - Generating conference summary", + ) + summary_prompt = ( + f"The conference discussion for {date} has concluded. " + f"As Portfolio Manager, provide a concise summary of the key insights, " + f"concerns, and consensus points discussed about {', '.join(tickers)}. " + f"Highlight any critical factors that should be considered in the final decision-making." + ) + summary_msg = Msg(name="system", content=summary_prompt, role="user") + summary_response = await self.pm.reply(summary_msg) + + conference_summary = self._extract_text_content( + summary_response.content, + ) + + _log( + "Phase 2.1: Conference discussion - Conference summary generated", + ) + + if self.state_sync: + await self.state_sync.on_conference_message( + agent_id="conference summary", + content=conference_summary, + ) + await self.state_sync.on_conference_end() + + return conference_summary + + def _build_pm_discussion_prompt( + self, + cycle: int, + tickers: List[str], + date: str, + prices: Optional[Dict[str, float]], + analyst_results: List[Dict[str, Any]], + risk_assessment: Dict[str, Any], + ) -> str: + """Build PM discussion prompt with full context""" + # Get current portfolio state + portfolio = self.pm.get_portfolio_state() + + if cycle == 0: + # First cycle: provide full context + context_lines = [ + f"As Portfolio Manager, review the following information for {date}:", + "", + "=== Current Portfolio ===", + f"Cash: ${portfolio.get('cash', 0):,.2f}", + f"Positions: {json.dumps(portfolio.get('positions', {}), indent=2)}", + "", + "=== Current Prices ===", + json.dumps(prices, indent=2), + "", + "=== Analyst Signals ===", + ] + + # Add analyst results summary + for result in analyst_results: + agent_name = result.get("agent", "Unknown") + content = result.get("content", "") + context_lines.append(f"{agent_name}: {content}") + + context_lines.extend( + [ + "", + "=== Risk Assessment ===", + str(risk_assessment.get("content", "")), + "", + "Based on the above context, share your key concerns or questions about the opportunities in " + f"{', '.join(tickers)}. Do not make final decisions yet - this is a discussion phase.", + ], + ) + + return "\n".join(context_lines) + else: + return ( + f"Continue the discussion. Share your thoughts on the perspectives raised " + f"and any remaining concerns about {', '.join(tickers)}." + ) + + def _build_analyst_discussion_prompt( + self, + cycle: int, + tickers: List[str], + date: str, + ) -> str: + """Build analyst discussion prompt""" + return ( + f"Share your perspective on the discussion so far. " + f"Provide insights or address concerns raised by others about {', '.join(tickers)}. " + f"Do not use tools - focus on sharing your professional opinion." + ) + + async def _collect_final_predictions( + self, + tickers: List[str], + date: str, + ) -> List[Dict[str, Any]]: + """ + Collect final predictions from all analysts as simple text responses. + Analysts provide their predictions in plain text without tool calls. + """ + _log( + "Phase 2.2: Analysts generate final structured predictions\n" + f" Starting _collect_final_predictions for {len(self.analysts)} analysts", + ) + final_predictions = [] + + for i, analyst in enumerate(self.analysts): + _log( + "Phase 2.2: Analysts generate final structured predictions\n" + f" Collecting prediction from analyst {i+1}/{len(self.analysts)}: {analyst.name}", + ) + + prompt = ( + f"Based on your analysis, provide your final prediction for {date}. " + f"For each ticker ({', '.join(tickers)}), state: " + f"TICKER: UP/DOWN/NEUTRAL (confidence: X%). " + f"Do not use any tools, just respond with your predictions." + ) + + msg = Msg(name="system", content=prompt, role="user") + _log( + "Phase 2.2: Analysts generate final structured predictions\n" + f" Sending prediction request to {analyst.name}", + ) + response = await analyst.reply(msg) + _log( + "Phase 2.2: Analysts generate final structured predictions\n" + f" Received response from {analyst.name}", + ) + + # Parse predictions from text response + content = self._extract_text_content(response.content) + predictions_data = self._parse_predictions_from_text( + content, + tickers, + ) + + _log( + "Phase 2.2: Analysts generate final structured predictions\n" + f" {analyst.name} final predictions: {predictions_data}", + ) + + final_predictions.append( + { + "agent": analyst.name, + "predictions": predictions_data, + "raw_content": content, + }, + ) + + # if self.state_sync: + # await self.state_sync.on_agent_complete( + # agent_id=f"{analyst.name}_final_prediction", + # content=content, + # ) + + return final_predictions + + def _parse_predictions_from_text( + self, + content: str, + tickers: List[str], + ) -> List[Dict[str, Any]]: + """Parse predictions from analyst text response""" + predictions = [] + content_upper = content.upper() + + for ticker in tickers: + direction = "neutral" + confidence = 0.5 + + # Simple pattern matching for direction + ticker_idx = content_upper.find(ticker) + if ticker_idx >= 0: + # Look at text near ticker mention + context = content_upper[ticker_idx : ticker_idx + 100] + if ( + "UP" in context + or "BULLISH" in context + or "LONG" in context + ): + direction = "up" + confidence = 0.7 + elif ( + "DOWN" in context + or "BEARISH" in context + or "SHORT" in context + ): + direction = "down" + confidence = 0.7 + + predictions.append( + { + "ticker": ticker, + "direction": direction, + "confidence": confidence, + }, + ) + + return predictions + + async def _run_analysts_with_sync( + self, + tickers: List[str], + date: str, + ) -> List[Dict[str, Any]]: + """Run all analysts with real-time sync after each completion""" + results = [] + + for analyst in self.analysts: + content = ( + f"Analyze the following stocks for date {date}: {', '.join(tickers)}. " + f"Provide investment signals with confidence scores and reasoning." + ) + + msg = Msg( + name="system", + content=content, + role="user", + metadata={"tickers": tickers, "date": date}, + ) + + result = await analyst.reply(msg) + extracted = self._extract_result_from_msg(result) + results.append(extracted) + + # Sync retrieved memory first + await self._sync_memory_if_retrieved(analyst) + + # Broadcast agent result via StateSync + if self.state_sync: + text_content = self._extract_text_content(result.content) + await self.state_sync.on_agent_complete( + agent_id=analyst.name, + content=text_content, + ) + + return results + + async def _run_analysts( + self, + tickers: List[str], + date: str, + ) -> List[Dict[str, Any]]: + """Run all analysts (without sync, for backward compatibility)""" + results = [] + + for analyst in self.analysts: + content = ( + f"Analyze the following stocks for date {date}: {', '.join(tickers)}. " + f"Provide investment signals with confidence scores and reasoning." + ) + + msg = Msg( + name="system", + content=content, + role="user", + metadata={"tickers": tickers, "date": date}, + ) + + result = await analyst.reply(msg) + results.append(self._extract_result_from_msg(result)) + + return results + + async def _run_risk_manager_with_sync( + self, + tickers: List[str], + date: str, + prices: Optional[Dict[str, float]], + ) -> Dict[str, Any]: + """Run risk manager assessment with real-time sync""" + portfolio = self.pm.get_portfolio_state() + + context = { + "portfolio": portfolio, + "tickers": tickers, + "date": date, + "current_prices": prices, + } + content = ( + f"Assess risk for the following portfolio and market conditions:\n" + f"{json.dumps(context, indent=2)}\n" + f"Provide risk warnings and recommendations." + ) + + msg = Msg(name="system", content=content, role="user") + result = await self.risk_manager.reply(msg) + extracted = self._extract_result_from_msg(result) + + # Sync retrieved memory first + await self._sync_memory_if_retrieved(self.risk_manager) + + # Broadcast agent result via StateSync + if self.state_sync: + text_content = self._extract_text_content(result.content) + await self.state_sync.on_agent_complete( + agent_id="risk_manager", + content=text_content, + ) + + return extracted + + async def _run_risk_manager( + self, + tickers: List[str], + date: str, + prices: Dict[str, float], + ) -> Dict[str, Any]: + """Run risk manager assessment (without sync, for backward compatibility)""" + portfolio = self.pm.get_portfolio_state() + + context = { + "portfolio": portfolio, + "tickers": tickers, + "date": date, + "current_prices": prices, + } + content = ( + f"Assess risk for the following portfolio and market conditions:\n" + f"{json.dumps(context, indent=2)}\n" + f"Provide risk warnings and recommendations." + ) + + msg = Msg(name="system", content=content, role="user") + result = await self.risk_manager.reply(msg) + return self._extract_result_from_msg(result) + + async def _run_pm_with_sync( + self, + tickers: List[str], + date: str, + prices: Optional[Dict[str, float]], + analyst_results: List[Dict[str, Any]], + risk_assessment: Dict[str, Any], + ) -> Dict[str, Any]: + """Run PM decision-making with real-time sync""" + portfolio = self.pm.get_portfolio_state() + + context = { + "analyst_signals": { + r["agent"]: r.get("content", "") for r in analyst_results + }, + "risk_warnings": risk_assessment.get("content", ""), + "current_prices": prices, + "tickers": tickers, + "portfolio_cash": portfolio.get("cash", 0), + "portfolio_positions": portfolio.get("positions", {}), + } + + # Add conference summary if available + if self.conference_summary: + context["conference_summary"] = self.conference_summary + + content_parts = [ + f"Based on the analyst signals, risk assessment, and conference discussion, " + f"make investment decisions for date {date}.\n", + f"Context:\n{json.dumps(context, indent=2)}\n", + ] + + if self.conference_summary: + content_parts.append( + f"\n=== Conference Summary ===\n{self.conference_summary}\n", + ) + + content_parts.append( + "\nUse the make_decision tool for each ticker to record your decisions. " + "After recording all decisions, provide a summary of your investment rationale.", + ) + + content = "".join(content_parts) + + msg = Msg(name="system", content=content, role="user") + result = await self.pm.reply(msg) + extracted = self._extract_result_from_msg(result) + + # Sync retrieved memory first + await self._sync_memory_if_retrieved(self.pm) + + # Broadcast PM decision via StateSync + if self.state_sync: + text_content = self._extract_text_content(result.content) + await self.state_sync.on_agent_complete( + agent_id="portfolio_manager", + content=text_content, + ) + + return extracted + + async def _run_pm( + self, + tickers: List[str], + date: str, + prices: Dict[str, float], + analyst_results: List[Dict[str, Any]], + risk_assessment: Dict[str, Any], + ) -> Dict[str, Any]: + """Run PM decision-making (without sync, for backward compatibility)""" + portfolio = self.pm.get_portfolio_state() + + context = { + "analyst_signals": { + r["agent"]: r.get("content", "") for r in analyst_results + }, + "risk_warnings": risk_assessment.get("content", ""), + "current_prices": prices, + "tickers": tickers, + "portfolio_cash": portfolio.get("cash", 0), + "portfolio_positions": portfolio.get("positions", {}), + } + + content = ( + f"Based on the analyst signals and risk assessment, make investment decisions " + f"for date {date}.\n" + f"Context:\n{json.dumps(context, indent=2)}\n\n" + f"Use the make_decision tool for each ticker to record your decisions. " + f"After recording all decisions, provide a summary of your investment rationale." + ) + + msg = Msg(name="system", content=content, role="user") + result = await self.pm.reply(msg) + return self._extract_result_from_msg(result) + + def _execute_decisions( + self, + decisions: Dict[str, Dict], + prices: Optional[Dict[str, float]], + date: str, + ) -> Dict[str, Any]: + """Execute PM decisions with provided prices""" + if not decisions: + return { + "executed_trades": [], + "portfolio": self.pm.get_portfolio_state(), + } + + executor = PortfolioTradeExecutor( + initial_portfolio=self.pm.get_portfolio_state(), + ) + + executed_trades = [] + + for ticker, decision in decisions.items(): + action = decision.get("action", "hold") + quantity = decision.get("quantity", 0) + + if action == "hold" or quantity == 0: + continue + + price = prices.get(ticker) + if not price or price <= 0: + logger.warning(f"No price for {ticker}, skipping trade") + continue + + result = executor.execute_trade( + ticker=ticker, + action=action, + quantity=quantity, + price=price, + current_date=date, + ) + + if result.get("status") == "success": + executed_trades.append( + { + "ticker": ticker, + "action": action, + "quantity": quantity, + "price": price, + }, + ) + + updated_portfolio = executor.portfolio.copy() + self.pm.update_portfolio(updated_portfolio) + + return { + "executed_trades": executed_trades, + "portfolio": updated_portfolio, + } + + def _extract_result_from_msg(self, msg: Msg) -> Dict[str, Any]: + """Extract result dictionary from Msg object""" + result = { + "agent": msg.name, + "content": msg.content, + } + + if hasattr(msg, "metadata") and msg.metadata: + result.update(msg.metadata) + + if isinstance(msg.content, str): + try: + result["content_parsed"] = json.loads(msg.content) + except json.JSONDecodeError: + pass + + return result + + def _extract_text_content(self, content: Any) -> str: + """ + Extract plain text from AgentScope Msg content + + AgentScope content can be: + - str: plain text + - list: list of TextBlocks like [{'type': 'text', 'text': '...'}] + - dict: single TextBlock + """ + if content is None: + return "" + + if isinstance(content, str): + return content + + if isinstance(content, list): + texts = [] + for item in content: + if isinstance(item, dict): + # TextBlock format: {'type': 'text', 'text': '...'} + if item.get("type") == "text" and "text" in item: + texts.append(item["text"]) + elif "content" in item: + texts.append(str(item["content"])) + else: + texts.append(str(item)) + elif isinstance(item, str): + texts.append(item) + else: + texts.append(str(item)) + return "\n".join(texts) + + if isinstance(content, dict): + if content.get("type") == "text" and "text" in content: + return content["text"] + return str(content) + + return str(content) + + def _format_pm_decisions(self, decisions: Dict[str, Dict]) -> str: + """Format PM decisions as a human-readable string""" + if not decisions: + return "Portfolio analysis completed. No trades recommended." + + decision_texts = [] + for ticker, decision in decisions.items(): + action = decision.get("action", "hold") + quantity = decision.get("quantity", 0) + reasoning = decision.get("reasoning", "") + + if action != "hold" and quantity > 0: + decision_texts.append( + f"{action.upper()} {quantity} {ticker}: {reasoning}", + ) + + if decision_texts: + return "Decisions: " + "; ".join(decision_texts) + return "Portfolio analysis completed. No trades recommended." diff --git a/evotraders/backend/core/scheduler.py b/evotraders/backend/core/scheduler.py new file mode 100644 index 0000000..fd11ded --- /dev/null +++ b/evotraders/backend/core/scheduler.py @@ -0,0 +1,263 @@ +# -*- coding: utf-8 -*- +""" +Scheduler - Market-aware trigger system for trading cycles +""" +import asyncio +import logging +from datetime import datetime, timedelta +from typing import Any, Callable, Optional +from zoneinfo import ZoneInfo + +import pandas_market_calendars as mcal + +logger = logging.getLogger(__name__) + +# NYSE timezone for US stock trading +NYSE_TZ = ZoneInfo("America/New_York") +NYSE_CALENDAR = mcal.get_calendar("NYSE") + + +class Scheduler: + """ + Market-aware scheduler for live trading. + Uses NYSE timezone and trading calendar. + """ + + def __init__( + self, + mode: str = "daily", + trigger_time: Optional[str] = None, + interval_minutes: Optional[int] = None, + config: Optional[dict] = None, + ): + self.mode = mode + self.trigger_time = trigger_time or "09:30" # NYSE timezone + self.trigger_now = self.trigger_time == "now" + self.interval_minutes = interval_minutes or 60 + self.config = config or {} + + self.running = False + self._task: Optional[asyncio.Task] = None + + def _now_nyse(self) -> datetime: + """Get current time in NYSE timezone""" + return datetime.now(NYSE_TZ) + + def _is_trading_day(self, date: datetime) -> bool: + """Check if date is a NYSE trading day""" + date_str = date.strftime("%Y-%m-%d") + valid_days = NYSE_CALENDAR.valid_days( + start_date=date_str, + end_date=date_str, + ) + return len(valid_days) > 0 + + def _next_trading_day(self, from_date: datetime) -> datetime: + """Find the next trading day from given date""" + check_date = from_date + for _ in range(10): # Max 10 days ahead (handles holidays) + if self._is_trading_day(check_date): + return check_date + check_date += timedelta(days=1) + return check_date + + async def start(self, callback: Callable): + """Start scheduler""" + if self.running: + logger.warning("Scheduler already running") + return + + self.running = True + + if self.mode == "daily": + self._task = asyncio.create_task(self._run_daily(callback)) + elif self.mode == "intraday": + self._task = asyncio.create_task(self._run_intraday(callback)) + else: + raise ValueError(f"Unknown scheduler mode: {self.mode}") + + logger.info( + f"Scheduler started: mode={self.mode}, timezone=America/New_York", + ) + + async def _run_daily(self, callback: Callable): + """Run once per trading day at specified time (NYSE timezone)""" + first_run = True + + while self.running: + now = self._now_nyse() + + # Handle "now" trigger - run immediately on first iteration + if self.trigger_now and first_run: + first_run = False + current_date = now.strftime("%Y-%m-%d") + logger.info(f"Triggering immediately for {current_date}") + await callback(date=current_date) + # After immediate run, stop (one-shot mode) + self.running = False + break + + target_time = datetime.strptime(self.trigger_time, "%H:%M").time() + + # Calculate next trigger datetime + if now.time() < target_time: + next_run = now.replace( + hour=target_time.hour, + minute=target_time.minute, + second=0, + microsecond=0, + ) + else: + next_run = (now + timedelta(days=1)).replace( + hour=target_time.hour, + minute=target_time.minute, + second=0, + microsecond=0, + ) + + # Skip to next trading day + next_run = self._next_trading_day(next_run) + next_run = next_run.replace( + hour=target_time.hour, + minute=target_time.minute, + second=0, + microsecond=0, + ) + + wait_seconds = (next_run - now).total_seconds() + logger.info( + f"Next trigger: {next_run.strftime('%Y-%m-%d %H:%M %Z')} " + f"(in {wait_seconds/3600:.1f} hours)", + ) + + await asyncio.sleep(wait_seconds) + + current_date = self._now_nyse().strftime("%Y-%m-%d") + logger.info(f"Triggering daily cycle for {current_date}") + await callback(date=current_date) + + async def _run_intraday(self, callback: Callable): + """Run every N minutes (for future use)""" + while self.running: + now = self._now_nyse() + current_date = now.strftime("%Y-%m-%d") + + if self._is_trading_day(now): + logger.info(f"Triggering intraday cycle for {current_date}") + await callback(date=current_date) + + await asyncio.sleep(self.interval_minutes * 60) + + def stop(self): + """Stop scheduler""" + self.running = False + if self._task: + self._task.cancel() + self._task = None + logger.info("Scheduler stopped") + + +class BacktestScheduler: + """Backtest Scheduler - Runs through historical trading dates""" + + def __init__( + self, + start_date: str, + end_date: str, + trading_calendar: Optional[Any] = None, + delay_between_days: float = 0.1, + ): + self.start_date = start_date + self.end_date = end_date + self.trading_calendar = trading_calendar + self.delay_between_days = delay_between_days + + self.running = False + self._task: Optional[asyncio.Task] = None + self._dates: list = [] + + def get_trading_dates(self) -> list: + """Get list of trading dates in the backtest period""" + import pandas as pd + + start = pd.to_datetime(self.start_date) + end = pd.to_datetime(self.end_date) + + if self.trading_calendar: + calendar = mcal.get_calendar(self.trading_calendar) + trading_dates = calendar.valid_days( + start_date=self.start_date, + end_date=self.end_date, + ) + dates = [d.strftime("%Y-%m-%d") for d in trading_dates] + else: + all_dates = pd.date_range(start=start, end=end, freq="D") + dates = [ + d.strftime("%Y-%m-%d") for d in all_dates if d.weekday() < 5 + ] + + self._dates = dates + return dates + + async def start(self, callback: Callable): + """Start async backtest scheduler""" + if self.running: + logger.warning("Backtest scheduler already running") + return + + self.running = True + dates = self.get_trading_dates() + + logger.info( + f"Starting backtest: {self.start_date} to {self.end_date} " + f"({len(dates)} trading days)", + ) + + self._task = asyncio.create_task(self._run_async(callback, dates)) + + async def _run_async(self, callback: Callable, dates: list): + """Run backtest asynchronously""" + for i, date in enumerate(dates, 1): + if not self.running: + break + + logger.info(f"[{i}/{len(dates)}] Processing {date}") + await callback(date=date) + + if self.delay_between_days > 0: + await asyncio.sleep(self.delay_between_days) + + logger.info("Backtest complete") + self.running = False + + def run(self, callback: Callable, **kwargs): + """Run backtest synchronously through all trading dates""" + dates = self.get_trading_dates() + results = [] + + logger.info( + f"Starting backtest: {self.start_date} to {self.end_date} " + f"({len(dates)} trading days)", + ) + + for i, date in enumerate(dates, 1): + logger.info(f"[{i}/{len(dates)}] Processing {date}") + result = callback(date=date, **kwargs) + results.append({"date": date, "result": result}) + + logger.info("Backtest complete") + return results + + def stop(self): + """Stop backtest scheduler""" + self.running = False + if self._task: + self._task.cancel() + self._task = None + logger.info("Backtest scheduler stopped") + + def get_total_days(self) -> int: + """Get total number of trading days""" + if not self._dates: + self.get_trading_dates() + return len(self._dates) diff --git a/evotraders/backend/core/state_sync.py b/evotraders/backend/core/state_sync.py new file mode 100644 index 0000000..5f67323 --- /dev/null +++ b/evotraders/backend/core/state_sync.py @@ -0,0 +1,434 @@ +# -*- coding: utf-8 -*- +""" +StateSync - Centralized state synchronization between agents and frontend +Handles real-time updates, persistence, and replay support +""" +# pylint: disable=R0904 +import asyncio +import logging +from datetime import datetime +from typing import Any, Callable, Dict, List, Optional + +from ..services.storage import StorageService + +logger = logging.getLogger(__name__) + + +class StateSync: + """ + Central event dispatcher for agent-frontend synchronization + + Responsibilities: + 1. Receive events from agents/pipeline + 2. Persist to storage (feed_history) + 3. Broadcast to frontend via WebSocket + 4. Support replay from saved state + """ + + def __init__( + self, + storage: StorageService, + broadcast_fn: Optional[Callable] = None, + ): + """ + Initialize StateSync + + Args: + storage: Storage service for persistence + broadcast_fn: Async broadcast function - async def broadcast(event: dict) # noqa: E501 + """ + self.storage = storage + self._broadcast_fn = broadcast_fn + self._state: Dict[str, Any] = {} + self._enabled = True + self._simulation_date: Optional[str] = None # For backtest timestamps + + def set_simulation_date(self, date: str): + """Set current simulation date for backtest-compatible timestamps""" + self._simulation_date = date + + def _get_timestamp_ms(self) -> int: + """ + Get timestamp in milliseconds. + Uses simulation date if set (backtest mode), otherwise current time. + """ + if self._simulation_date: + # Parse date and use market close time (16:00) for backtest + dt = datetime.strptime( + f"{self._simulation_date}", + "%Y-%m-%d", + ) + return int(dt.timestamp() * 1000) + return int(datetime.now().timestamp() * 1000) + + def load_state(self): + """Load server state from storage""" + self._state = self.storage.load_server_state() + self.storage.update_server_state_from_dashboard(self._state) + logger.info( + f"StateSync loaded: {len(self._state.get('feed_history', []))} feeds", # noqa: E501 + ) + + def save_state(self): + """Save current state to storage""" + self.storage.save_server_state(self._state) + + @property + def state(self) -> Dict[str, Any]: + """Get current state""" + return self._state + + def set_broadcast_fn(self, fn: Callable): + """Set broadcast function (supports late binding)""" + self._broadcast_fn = fn + + def update_state(self, key: str, value: Any): + """Update a state field""" + self._state[key] = value + + async def emit(self, event: Dict[str, Any], persist: bool = True): + """ + Emit an event - persists and broadcasts + + Args: + event: Event dictionary, must contain "type" + persist: Whether to persist to feed_history + """ + if not self._enabled: + return + + # Ensure timestamp exists (use simulation date if in backtest mode) + if "timestamp" not in event: + if self._simulation_date: + event["timestamp"] = f"{self._simulation_date}" + else: + event["timestamp"] = datetime.now().isoformat() + + # Persist to feed_history + if persist: + self.storage.add_feed_message(self._state, event) + self.save_state() + + # Broadcast to frontend + if self._broadcast_fn: + await self._broadcast_fn(event) + + # ========== Agent Events ========== + + async def on_agent_complete( + self, + agent_id: str, + content: str, + **extra, + ): + """ + Called when an agent finishes its reply + + Args: + agent_id: Agent identifier (e.g., "fundamentals_analyst") + content: Agent's output content + **extra: Additional fields to include + """ + ts_ms = self._get_timestamp_ms() + + await self.emit( + { + "type": "agent_message", + "agentId": agent_id, + "content": content, + "ts": ts_ms, + **extra, + }, + ) + + logger.info(f"Agent complete: {agent_id}") + + async def on_memory_retrieved( + self, + agent_id: str, + content: str, + ): + """ + Called when long-term memory is retrieved for an agent + + Args: + agent_id: Agent identifier + content: Retrieved memory content + """ + ts_ms = self._get_timestamp_ms() + + await self.emit( + { + "type": "memory", + "agentId": agent_id, + "content": content, + "ts": ts_ms, + }, + ) + + logger.info(f"Memory retrieved for: {agent_id}") + + # ========== Conference Events ========== + + async def on_conference_start(self, title: str, date: str): + """Called when conference discussion starts""" + ts_ms = self._get_timestamp_ms() + + await self.emit( + { + "type": "conference_start", + "title": title, + "date": date, + "ts": ts_ms, + }, + ) + + logger.info(f"Conference started: {title}") + + async def on_conference_cycle_start(self, cycle: int, total_cycles: int): + """Called when a conference cycle starts""" + await self.emit( + { + "type": "conference_cycle_start", + "cycle": cycle, + "totalCycles": total_cycles, + }, + persist=False, + ) + + async def on_conference_message(self, agent_id: str, content: str): + """Called when an agent speaks during conference""" + ts_ms = self._get_timestamp_ms() + + await self.emit( + { + "type": "conference_message", + "agentId": agent_id, + "content": content, + "ts": ts_ms, + }, + ) + + async def on_conference_cycle_end(self, cycle: int): + """Called when a conference cycle ends""" + await self.emit( + { + "type": "conference_cycle_end", + "cycle": cycle, + }, + persist=False, + ) + + async def on_conference_end(self): + """Called when conference discussion ends""" + ts_ms = self._get_timestamp_ms() + + await self.emit( + { + "type": "conference_end", + "ts": ts_ms, + }, + ) + + logger.info("Conference ended") + + # ========== Cycle Events ========== + + async def on_cycle_start(self, date: str): + """Called at start of trading cycle""" + self._state["current_date"] = date + self._state["status"] = "running" + self.set_simulation_date( + date, + ) # Set for backtest-compatible timestamps + + await self.emit( + { + "type": "day_start", + "date": date, + "progress": self._calculate_progress(), + }, + ) + # await self.emit( + # { + # "type": "system", + # "content": f"Starting trading analysis for {date}", + # }, + # ) + + async def on_cycle_end(self, date: str, portfolio_summary: Dict = None): + """Called at end of trading cycle""" + # Update completed count + self._state["trading_days_completed"] = ( + self._state.get("trading_days_completed", 0) + 1 + ) + + # Broadcast team_summary if available + if portfolio_summary: + summary_data = { + "type": "team_summary", + "balance": portfolio_summary.get( + "balance", + portfolio_summary.get("total_value", 0), + ), + "pnlPct": portfolio_summary.get( + "pnlPct", + portfolio_summary.get("pnl_percent", 0), + ), + "equity": portfolio_summary.get("equity", []), + "baseline": portfolio_summary.get("baseline", []), + "baseline_vw": portfolio_summary.get("baseline_vw", []), + "momentum": portfolio_summary.get("momentum", []), + } + + # Include live returns if available + if portfolio_summary.get("equity_return"): + summary_data["equity_return"] = portfolio_summary[ + "equity_return" + ] + if portfolio_summary.get("baseline_return"): + summary_data["baseline_return"] = portfolio_summary[ + "baseline_return" + ] + if portfolio_summary.get("baseline_vw_return"): + summary_data["baseline_vw_return"] = portfolio_summary[ + "baseline_vw_return" + ] + if portfolio_summary.get("momentum_return"): + summary_data["momentum_return"] = portfolio_summary[ + "momentum_return" + ] + + await self.emit(summary_data, persist=True) + + await self.emit( + { + "type": "day_complete", + "date": date, + "progress": self._calculate_progress(), + }, + ) + + self.save_state() + + # ========== Portfolio Events ========== + + async def on_holdings_update(self, holdings: List[Dict]): + """Called when holdings change""" + self._state["holdings"] = holdings + await self.emit( + { + "type": "team_holdings", + "data": holdings, + }, + persist=False, + ) # Holdings change frequently, don't store all in feed_history + + async def on_trades_executed(self, trades: List[Dict]): + """Called when trades are executed""" + # Update state with new trades + existing = self._state.get("trades", []) + self._state["trades"] = trades + existing + + await self.emit( + { + "type": "team_trades", + "mode": "incremental", + "data": trades, + }, + persist=False, + ) + + async def on_stats_update(self, stats: Dict): + """Called when stats are updated""" + self._state["stats"] = stats + await self.emit( + { + "type": "team_stats", + "data": stats, + }, + persist=False, + ) + + # ========== System Events ========== + + async def on_system_message(self, content: str): + """Emit a system message""" + await self.emit( + { + "type": "system", + "content": content, + }, + ) + + # ========== Replay Support ========== + + async def replay_feed_history(self, delay_ms: int = 100): + """ + Replay events from feed_history + + Useful for: frontend reconnection or restoring from saved state + """ + feed_history = self._state.get("feed_history", []) + + # feed_history is newest-first, need to reverse for chronological replay # noqa: E501 + for event in reversed(feed_history): + if self._broadcast_fn: + await self._broadcast_fn(event) + await asyncio.sleep(delay_ms / 1000) + + logger.info(f"Replayed {len(feed_history)} events") + + def get_initial_state_payload( + self, + include_dashboard: bool = True, + ) -> Dict[str, Any]: + """ + Build initial state payload for new client connections + + Args: + include_dashboard: Whether to load dashboard files + + Returns: + Dictionary suitable for sending to frontend + """ + payload = { + "server_mode": self._state.get("server_mode", "live"), + "is_mock_mode": self._state.get("is_mock_mode", False), + "is_backtest": self._state.get("is_backtest", False), + "feed_history": self._state.get("feed_history", []), + "current_date": self._state.get("current_date"), + "trading_days_total": self._state.get("trading_days_total", 0), + "trading_days_completed": self._state.get( + "trading_days_completed", + 0, + ), + "holdings": self._state.get("holdings", []), + "trades": self._state.get("trades", []), + "stats": self._state.get("stats", {}), + "leaderboard": self._state.get("leaderboard", []), + "portfolio": self._state.get("portfolio", {}), + "realtime_prices": self._state.get("realtime_prices", {}), + } + + if include_dashboard: + payload["dashboard"] = { + "summary": self.storage.load_file("summary"), + "holdings": self.storage.load_file("holdings"), + "stats": self.storage.load_file("stats"), + "trades": self.storage.load_file("trades"), + "leaderboard": self.storage.load_file("leaderboard"), + } + + return payload + + def _calculate_progress(self) -> float: + """Calculate backtest progress percentage""" + total = self._state.get("trading_days_total", 0) + completed = self._state.get("trading_days_completed", 0) + return completed / total if total > 0 else 0.0 + + def set_backtest_dates(self, dates: List[str]): + """Set total trading days for backtest progress tracking""" + self._state["trading_days_total"] = len(dates) + self._state["trading_days_completed"] = 0 diff --git a/evotraders/backend/data/__init__.py b/evotraders/backend/data/__init__.py new file mode 100644 index 0000000..eb90e8e --- /dev/null +++ b/evotraders/backend/data/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +from backend.data.historical_price_manager import HistoricalPriceManager +from backend.data.mock_price_manager import MockPriceManager +from backend.data.polling_price_manager import PollingPriceManager + +__all__ = ["MockPriceManager", "PollingPriceManager", "HistoricalPriceManager"] diff --git a/evotraders/backend/data/cache.py b/evotraders/backend/data/cache.py new file mode 100644 index 0000000..375c9b3 --- /dev/null +++ b/evotraders/backend/data/cache.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- + +from typing_extensions import Any + + +class Cache: + """In-memory cache for API responses.""" + + def __init__(self): + self._prices_cache = {} + self._financial_metrics_cache = {} + self._line_items_cache = {} + self._insider_trades_cache = {} + self._company_news_cache = {} + + def _merge_data( + self, + existing: list[dict] | None, + new_data: list[dict], + key_field: str, + ) -> list[dict]: + """Merge existing and new data""" + if not existing: + return new_data + + # Create a set of existing keys for O(1) lookup + existing_keys = {item[key_field] for item in existing} + + # Only add items that don't exist yet + merged = existing.copy() + merged.extend( + [ + item + for item in new_data + if item[key_field] not in existing_keys + ], + ) + return merged + + def get_prices(self, ticker: str) -> list[dict[str, Any]] | None: + """Get cached price data if available.""" + return self._prices_cache.get(ticker) + + def set_prices(self, ticker: str, data: list[dict[str, Any]]): + """Append new price data to cache.""" + self._prices_cache[ticker] = self._merge_data( + self._prices_cache.get(ticker), + data, + key_field="time", + ) + + def get_financial_metrics(self, ticker: str) -> list[dict[str, Any]]: + """Get cached financial metrics if available.""" + return self._financial_metrics_cache.get(ticker) + + def set_financial_metrics(self, ticker: str, data: list[dict[str, Any]]): + """Append new financial metrics to cache.""" + self._financial_metrics_cache[ticker] = self._merge_data( + self._financial_metrics_cache.get(ticker), + data, + key_field="report_period", + ) + + def get_line_items(self, ticker: str) -> list[dict[str, Any]] | None: + """Get cached line items if available.""" + return self._line_items_cache.get(ticker) + + def set_line_items(self, ticker: str, data: list[dict[str, Any]]): + """Append new line items to cache.""" + self._line_items_cache[ticker] = self._merge_data( + self._line_items_cache.get(ticker), + data, + key_field="report_period", + ) + + def get_insider_trades(self, ticker: str) -> list[dict[str, Any]] | None: + """Get cached insider trades if available.""" + return self._insider_trades_cache.get(ticker) + + def set_insider_trades(self, ticker: str, data: list[dict[str, Any]]): + """Append new insider trades to cache.""" + self._insider_trades_cache[ticker] = self._merge_data( + self._insider_trades_cache.get(ticker), + data, + key_field="filing_date", + ) # Could also use transaction_date if preferred + + def get_company_news(self, ticker: str) -> list[dict[str, Any]] | None: + """Get cached company news if available.""" + return self._company_news_cache.get(ticker) + + def set_company_news(self, ticker: str, data: list[dict[str, Any]]): + """Append new company news to cache.""" + self._company_news_cache[ticker] = self._merge_data( + self._company_news_cache.get(ticker), + data, + key_field="date", + ) + + +# Global cache instance +_cache = Cache() + + +def get_cache() -> Cache: + """Get the global cache instance.""" + return _cache diff --git a/evotraders/backend/data/historical_price_manager.py b/evotraders/backend/data/historical_price_manager.py new file mode 100644 index 0000000..4db80da --- /dev/null +++ b/evotraders/backend/data/historical_price_manager.py @@ -0,0 +1,233 @@ +# -*- coding: utf-8 -*- +""" +Historical Price Manager for backtest mode +""" +import logging +from datetime import datetime +from pathlib import Path +from typing import Callable, Dict, List, Optional + +import pandas as pd + +logger = logging.getLogger(__name__) + +# Path to local CSV data directory +_DATA_DIR = Path(__file__).parent / "ret_data" + + +class HistoricalPriceManager: + """Provides historical prices for backtest mode""" + + def __init__(self): + self.subscribed_symbols = [] + self.price_callbacks = [] + self._price_cache = {} + self._current_date = None + self.latest_prices = {} + self.open_prices = {} + self.close_prices = {} + self.running = False + + def subscribe( + self, + symbols: List[str], + ): + """Subscribe to symbols""" + for symbol in symbols: + if symbol not in self.subscribed_symbols: + self.subscribed_symbols.append(symbol) + + def unsubscribe(self, symbols: List[str]): + """Unsubscribe from symbols""" + for symbol in symbols: + if symbol in self.subscribed_symbols: + self.subscribed_symbols.remove(symbol) + self._price_cache.pop(symbol, None) + + def add_price_callback(self, callback: Callable): + """Add price update callback""" + self.price_callbacks.append(callback) + + def _load_from_csv(self, symbol: str) -> Optional[pd.DataFrame]: + """Load price data from local CSV file.""" + csv_path = _DATA_DIR / f"{symbol}.csv" + if not csv_path.exists(): + return None + + try: + df = pd.read_csv(csv_path) + if df.empty or "time" not in df.columns: + return None + + df["Date"] = pd.to_datetime(df["time"]) + df.set_index("Date", inplace=True) + df.sort_index(inplace=True) + return df + except Exception as e: + logger.warning(f"Failed to load CSV for {symbol}: {e}") + return None + + def preload_data(self, start_date: str, end_date: str): + """Preload historical data from local CSV files.""" + logger.info(f"Preloading data: {start_date} to {end_date}") + + for symbol in self.subscribed_symbols: + if symbol in self._price_cache: + continue + + # Load from local CSV file directly + df = self._load_from_csv(symbol) + if df is not None and not df.empty: + self._price_cache[symbol] = df + logger.info(f"Loaded {symbol} from CSV: {len(df)} records") + else: + logger.warning(f"No CSV data for {symbol}") + + def set_date(self, date: str): + """Set current trading date and update prices""" + self._current_date = date + date_dt = pd.Timestamp(date) + + for symbol in self.subscribed_symbols: + df = self._price_cache.get(symbol) + if df is None or df.empty: + # Keep previous prices if no data available + logger.warning(f"No cached data for {symbol} on {date}") + continue + + # Find exact date or closest earlier date + if date_dt in df.index: + row = df.loc[date_dt] + else: + valid_dates = df.index[df.index <= date_dt] + if len(valid_dates) == 0: + logger.warning(f"No data for {symbol} on or before {date}") + continue + row = df.loc[valid_dates[-1]] + + open_price = float(row["open"]) + close_price = float(row["close"]) + + self.open_prices[symbol] = open_price + self.close_prices[symbol] = close_price + self.latest_prices[symbol] = open_price + + logger.debug( + f"{symbol} @ {date}: open={open_price:.2f}, close={close_price:.2f}", # noqa: E501 + ) + + def emit_open_prices(self): + """Emit open prices to callbacks""" + if not self._current_date: + return + + timestamp = int( + datetime.strptime(self._current_date, "%Y-%m-%d").timestamp() + * 1000, + ) + + for symbol in self.subscribed_symbols: + price = self.open_prices.get(symbol) + if price is None or price <= 0: + logger.warning(f"Invalid open price for {symbol}: {price}") + continue + + self.latest_prices[symbol] = price + self._emit_price(symbol, price, timestamp) + + def emit_close_prices(self): + """Emit close prices to callbacks""" + if not self._current_date: + return + + timestamp = int( + datetime.strptime(self._current_date, "%Y-%m-%d").timestamp() + * 1000, + ) + timestamp += 23400000 # Add 6.5 hours + + for symbol in self.subscribed_symbols: + price = self.close_prices.get(symbol) + if price is None or price <= 0: + logger.warning(f"Invalid close price for {symbol}: {price}") + continue + + self.latest_prices[symbol] = price + self._emit_price(symbol, price, timestamp) + + def _emit_price(self, symbol: str, price: float, timestamp: int): + """Emit single price to callbacks""" + open_price = self.open_prices.get(symbol, price) + close_price = self.close_prices.get(symbol, price) + ret = ( + ((price - open_price) / open_price) * 100 if open_price > 0 else 0 + ) + + price_data = { + "symbol": symbol, + "price": price, + "timestamp": timestamp, + "open": open_price, + "close": close_price, + "high": max(open_price, close_price), + "low": min(open_price, close_price), + "ret": ret, + } + + for callback in self.price_callbacks: + try: + callback(price_data) + except Exception as e: + logger.error(f"Callback error for {symbol}: {e}") + + def get_price_for_date( + self, + symbol: str, + date: str, + price_type: str = "close", + ) -> Optional[float]: + """Get price for a specific date""" + df = self._price_cache.get(symbol) + if df is None or df.empty: + return self.latest_prices.get(symbol) + + date_dt = pd.Timestamp(date) + if date_dt in df.index: + return float(df.loc[date_dt, price_type]) + + valid_dates = df.index[df.index <= date_dt] + if len(valid_dates) == 0: + return self.latest_prices.get(symbol) + return float(df.loc[valid_dates[-1], price_type]) + + def start(self): + """Start manager""" + self.running = True + + def stop(self): + """Stop manager""" + self.running = False + + def get_latest_price(self, symbol: str) -> Optional[float]: + return self.latest_prices.get(symbol) + + def get_all_latest_prices(self) -> Dict[str, float]: + return self.latest_prices.copy() + + def get_open_price(self, symbol: str) -> Optional[float]: + # Return open price, fallback to latest if not set + price = self.open_prices.get(symbol) + if price is None or price <= 0: + return self.latest_prices.get(symbol) + return price + + def get_close_price(self, symbol: str) -> Optional[float]: + # Return close price, fallback to latest if not set + price = self.close_prices.get(symbol) + if price is None or price <= 0: + return self.latest_prices.get(symbol) + return price + + def reset_open_prices(self): + # Don't clear prices - keep them for continuity + pass diff --git a/evotraders/backend/data/mock_price_manager.py b/evotraders/backend/data/mock_price_manager.py new file mode 100644 index 0000000..d54b7ea --- /dev/null +++ b/evotraders/backend/data/mock_price_manager.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +""" +Mock Price Manager - For testing during non-trading hours +Generates virtual real-time price data +""" +import logging +import os +import random +import threading +import time +from typing import Callable, Dict, List, Optional + +logger = logging.getLogger(__name__) + + +class MockPriceManager: + """Mock Price Manager - Generates virtual prices for testing""" + + def __init__(self, poll_interval: int = 10, volatility: float = 0.5): + """ + Args: + poll_interval: Price update interval in seconds + volatility: Price volatility percentage + """ + if poll_interval is None: + poll_interval = int(os.getenv("MOCK_POLL_INTERVAL", "5")) + if volatility is None: + volatility = float(os.getenv("MOCK_VOLATILITY", "0.5")) + + self.poll_interval = poll_interval + self.volatility = volatility + + self.subscribed_symbols: List[str] = [] + self.base_prices: Dict[str, float] = {} + self.open_prices: Dict[str, float] = {} + self.latest_prices: Dict[str, float] = {} + self.price_callbacks: List[Callable] = [] + + self.running = False + self._thread: Optional[threading.Thread] = None + + self.default_base_prices = { + "AAPL": 237.50, + "MSFT": 425.30, + "GOOGL": 161.50, + "AMZN": 218.45, + "NVDA": 950.00, + "META": 573.22, + "TSLA": 342.15, + "AMD": 168.90, + "NFLX": 688.25, + "INTC": 42.18, + "COIN": 285.50, + "PLTR": 45.80, + "BABA": 88.30, + "DIS": 112.50, + "BKNG": 4850.00, + } + + logger.info( + f"MockPriceManager initialized (interval: {self.poll_interval}s, " + f"volatility: {self.volatility}%)", + ) + + def subscribe( + self, + symbols: List[str], + base_prices: Dict[str, float] = None, + ): + """Subscribe to stock symbols""" + for symbol in symbols: + if symbol not in self.subscribed_symbols: + self.subscribed_symbols.append(symbol) + + if base_prices and symbol in base_prices: + base_price = base_prices[symbol] + elif symbol in self.default_base_prices: + base_price = self.default_base_prices[symbol] + else: + base_price = random.uniform(50, 500) + + self.base_prices[symbol] = base_price + self.open_prices[symbol] = base_price + self.latest_prices[symbol] = base_price + + logger.info( + f"Subscribed to mock price: {symbol} (base: ${base_price:.2f})", # noqa: E501 + ) + + def unsubscribe(self, symbols: List[str]): + """Unsubscribe from symbols""" + for symbol in symbols: + if symbol in self.subscribed_symbols: + self.subscribed_symbols.remove(symbol) + self.base_prices.pop(symbol, None) + self.open_prices.pop(symbol, None) + self.latest_prices.pop(symbol, None) + logger.info(f"Unsubscribed: {symbol}") + + def add_price_callback(self, callback: Callable): + """Add price update callback""" + self.price_callbacks.append(callback) + + def _generate_price_update(self, symbol: str) -> float: + """Generate price update based on random walk""" + current_price = self.latest_prices.get( + symbol, + self.base_prices[symbol], + ) + + change_percent = random.uniform(-self.volatility, self.volatility) + new_price = current_price * (1 + change_percent / 100) + + # 10% chance of larger movement + if random.random() < 0.1: + trend_factor = random.uniform(-2, 2) + new_price = new_price * (1 + trend_factor / 100) + + # Limit intraday movement to +/-10% + open_price = self.open_prices[symbol] + max_price = open_price * 1.10 + min_price = open_price * 0.90 + new_price = max(min_price, min(max_price, new_price)) + + return new_price + + def _update_prices(self): + """Update prices for all subscribed stocks""" + timestamp = int(time.time() * 1000) + + for symbol in self.subscribed_symbols: + try: + new_price = self._generate_price_update(symbol) + self.latest_prices[symbol] = new_price + + open_price = self.open_prices[symbol] + ret = ((new_price - open_price) / open_price) * 100 + + price_data = { + "symbol": symbol, + "price": new_price, + "timestamp": timestamp, + "volume": random.randint(1000000, 10000000), + "open": open_price, + "high": max(new_price, open_price), + "low": min(new_price, open_price), + "previous_close": open_price, + "ret": ret, + } + + for callback in self.price_callbacks: + try: + callback(price_data) + except Exception as e: + logger.error( + f"Mock price callback error ({symbol}): {e}", + ) + + logger.debug( + f"Mock {symbol}: ${new_price:.2f} [ret: {ret:+.2f}%]", + ) + + except Exception as e: + logger.error(f"Failed to generate mock price ({symbol}): {e}") + + def _polling_loop(self): + """Main polling loop""" + logger.info( + f"Mock price generation started (interval: {self.poll_interval}s)", + ) + + while self.running: + try: + start_time = time.time() + self._update_prices() + + elapsed = time.time() - start_time + sleep_time = max(0, self.poll_interval - elapsed) + if sleep_time > 0: + time.sleep(sleep_time) + + except Exception as e: + logger.error(f"Mock polling loop error: {e}") + time.sleep(5) + + def start(self): + """Start mock price generation""" + if self.running: + logger.warning("Mock price manager already running") + return + + if not self.subscribed_symbols: + logger.warning("No stocks subscribed") + return + + self.running = True + self._thread = threading.Thread(target=self._polling_loop, daemon=True) + self._thread.start() + + logger.info( + f"Mock price manager started: {', '.join(self.subscribed_symbols)}", # noqa: E501 + ) + + def stop(self): + """Stop mock price generation""" + self.running = False + if self._thread: + self._thread.join(timeout=5) + logger.info("Mock price manager stopped") + + def get_latest_price(self, symbol: str) -> Optional[float]: + """Get latest price for symbol""" + return self.latest_prices.get(symbol) + + def get_all_latest_prices(self) -> Dict[str, float]: + """Get all latest prices""" + return self.latest_prices.copy() + + def get_open_price(self, symbol: str) -> Optional[float]: + """Get open price for symbol""" + return self.open_prices.get(symbol) + + def reset_open_prices(self): + """Reset open prices for new trading day""" + for symbol in self.subscribed_symbols: + last_close = self.latest_prices[symbol] + gap_percent = random.uniform(-1, 1) + new_open = last_close * (1 + gap_percent / 100) + self.open_prices[symbol] = new_open + self.latest_prices[symbol] = new_open + logger.info("Open prices reset") + + def set_base_price(self, symbol: str, price: float): + """Manually set base price for testing""" + if symbol in self.subscribed_symbols: + self.base_prices[symbol] = price + self.open_prices[symbol] = price + self.latest_prices[symbol] = price + logger.info(f"{symbol} base price set to: ${price:.2f}") + else: + logger.warning(f"{symbol} not subscribed") diff --git a/evotraders/backend/data/polling_price_manager.py b/evotraders/backend/data/polling_price_manager.py new file mode 100644 index 0000000..101d9f1 --- /dev/null +++ b/evotraders/backend/data/polling_price_manager.py @@ -0,0 +1,175 @@ +# -*- coding: utf-8 -*- +""" +Polling-based Price Manager - Uses Finnhub REST API +Supports real-time price fetching via polling +""" +import logging +import threading +import time +from typing import Callable, Dict, List, Optional + +import finnhub + +logger = logging.getLogger(__name__) + + +class PollingPriceManager: + """Polling-based price manager using Finnhub Quote API""" + + def __init__(self, api_key: str, poll_interval: int = 30): + """ + Args: + api_key: Finnhub API Key + poll_interval: Polling interval in seconds (default 30s) + """ + self.api_key = api_key + self.poll_interval = poll_interval + self.finnhub_client = finnhub.Client(api_key=api_key) + + self.subscribed_symbols: List[str] = [] + self.latest_prices: Dict[str, float] = {} + self.open_prices: Dict[str, float] = {} + self.price_callbacks: List[Callable] = [] + + self.running = False + self._thread: Optional[threading.Thread] = None + + logger.info( + f"PollingPriceManager initialized (interval: {poll_interval}s)", + ) + + def subscribe(self, symbols: List[str]): + """Subscribe to stock symbols""" + for symbol in symbols: + if symbol not in self.subscribed_symbols: + self.subscribed_symbols.append(symbol) + logger.info(f"Subscribed to: {symbol}") + + def unsubscribe(self, symbols: List[str]): + """Unsubscribe from symbols""" + for symbol in symbols: + if symbol in self.subscribed_symbols: + self.subscribed_symbols.remove(symbol) + logger.info(f"Unsubscribed: {symbol}") + + def add_price_callback(self, callback: Callable): + """Add price update callback""" + self.price_callbacks.append(callback) + + def _fetch_prices(self): + """Fetch latest prices for all subscribed stocks""" + for symbol in self.subscribed_symbols: + try: + quote_data = self.finnhub_client.quote(symbol) + + current_price = quote_data.get("c") + open_price = quote_data.get("o") + timestamp = quote_data.get("t", int(time.time())) + + if not current_price or current_price <= 0: + logger.warning(f"{symbol}: Invalid price data") + continue + + # Store open price on first fetch + if ( + symbol not in self.open_prices + and open_price + and open_price > 0 + ): + self.open_prices[symbol] = open_price + logger.info(f"{symbol} open price: ${open_price:.2f}") + + stored_open = self.open_prices.get(symbol, open_price) + ret = ( + ((current_price - stored_open) / stored_open) * 100 + if stored_open > 0 + else 0 + ) + + self.latest_prices[symbol] = current_price + + price_data = { + "symbol": symbol, + "price": current_price, + "timestamp": timestamp * 1000, + "open": stored_open, + "high": quote_data.get("h"), + "low": quote_data.get("l"), + "previous_close": quote_data.get("pc"), + "ret": ret, + "change": quote_data.get("d"), + "change_percent": quote_data.get("dp"), + } + + for callback in self.price_callbacks: + try: + callback(price_data) + except Exception as e: + logger.error(f"Price callback error ({symbol}): {e}") + + logger.debug( + f"{symbol}: ${current_price:.2f} [ret: {ret:+.2f}%]", + ) + + except Exception as e: + logger.error(f"Failed to fetch {symbol} price: {e}") + + def _polling_loop(self): + """Main polling loop""" + logger.info(f"Price polling started (interval: {self.poll_interval}s)") + + while self.running: + try: + start_time = time.time() + self._fetch_prices() + + elapsed = time.time() - start_time + sleep_time = max(0, self.poll_interval - elapsed) + if sleep_time > 0: + time.sleep(sleep_time) + + except Exception as e: + logger.error(f"Polling loop error: {e}") + time.sleep(5) + + def start(self): + """Start price polling""" + if self.running: + logger.warning("Price polling already running") + return + + if not self.subscribed_symbols: + logger.warning("No stocks subscribed") + return + + self.running = True + self._thread = threading.Thread(target=self._polling_loop, daemon=True) + self._thread.start() + + logger.info( + f"Price polling started: {', '.join(self.subscribed_symbols)}", + ) + + def stop(self): + """Stop price polling""" + self.running = False + if self._thread: + self._thread.join(timeout=5) + logger.info("Price polling stopped") + + def get_latest_price(self, symbol: str) -> Optional[float]: + """Get latest price for symbol""" + return self.latest_prices.get(symbol) + + def get_all_latest_prices(self) -> Dict[str, float]: + """Get all latest prices""" + return self.latest_prices.copy() + + def get_open_price(self, symbol: str) -> Optional[float]: + """Get open price for symbol""" + return self.open_prices.get(symbol) + + def reset_open_prices(self): + """Reset open prices for new trading day""" + self.open_prices.clear() + logger.info("Open prices reset") diff --git a/evotraders/backend/data/ret_data_updater.py b/evotraders/backend/data/ret_data_updater.py new file mode 100644 index 0000000..3c9a096 --- /dev/null +++ b/evotraders/backend/data/ret_data_updater.py @@ -0,0 +1,387 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Automatic Incremental Historical Data Update Module + +Features: +1. Fetch stock historical data from configured API (Finnhub or Financial Datasets) +2. Incrementally update CSV files in ret_data directory +3. Automatically detect last update date, only download new data +4. Calculate returns (ret) +5. Support batch updates for multiple stocks +""" + +# flake8: noqa: E501 + +import logging +import os +import sys +import time +from datetime import datetime, timedelta +from pathlib import Path +from typing import Dict, List, Optional + +import exchange_calendars as xcals +import pandas as pd +import pandas_market_calendars as mcal +from dotenv import load_dotenv + +from backend.config.data_config import ( + get_config, +) +from backend.tools.data_tools import get_prices, prices_to_df + +# Add project root directory to path +BASE_DIR = Path(__file__).resolve().parents[2] +if str(BASE_DIR) not in sys.path: + sys.path.append(str(BASE_DIR)) + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(message)s", +) +logger = logging.getLogger(__name__) + + +class DataUpdater: + """Data updater""" + + data_dir: Path + + def __init__( + self, + data_dir: str = None, + start_date: str = "2022-01-01", + ): + """ + Initialize data updater + + Args: + data_dir: Data storage directory, defaults to backend/data/ret_data + start_date: Historical data start date (YYYY-MM-DD) + """ + # Get config from centralized source + config = get_config() + self.data_source = config.source + self.api_key = config.api_key + + # Set data directory + if data_dir is None: + self.data_dir = BASE_DIR / "backend" / "data" / "ret_data" + else: + self.data_dir = Path(data_dir) + + # Ensure directory exists + self.data_dir.mkdir(parents=True, exist_ok=True) + + self.start_date = start_date + + # Initialize Finnhub client if needed + if self.data_source == "finnhub": + import finnhub + + self.client = finnhub.Client(api_key=self.api_key) + logger.info("Finnhub client initialized") + else: + self.client = None + logger.info("Financial Datasets API configured") + + def get_trading_dates(self, start_date: str, end_date: str) -> List[str]: + """Get US stock market trading date sequence.""" + try: + if mcal is not None: + nyse = mcal.get_calendar("NYSE") + trading_dates = nyse.valid_days( + start_date=start_date, + end_date=end_date, + ) + return [date.strftime("%Y-%m-%d") for date in trading_dates] + + elif xcals is not None: + nyse = xcals.get_calendar("XNYS") + trading_dates = nyse.sessions_in_range(start_date, end_date) + return [date.strftime("%Y-%m-%d") for date in trading_dates] + + except Exception as e: + logger.warning( + f"Failed to get US trading calendar, using business days: {e}", + ) + + # Fallback to simple business day method + date_range = pd.date_range(start_date, end_date, freq="B") + return [date.strftime("%Y-%m-%d") for date in date_range] + + def get_last_date_from_csv(self, ticker: str) -> Optional[datetime]: + """Get last data date from CSV file.""" + csv_path = self.data_dir / f"{ticker}.csv" + + if not csv_path.exists(): + logger.info(f"{ticker}.csv does not exist, will create new file") + return None + + try: + df = pd.read_csv(csv_path) + if df.empty or "time" not in df.columns: + return None + + last_date_str = df["time"].iloc[-1] + last_date = datetime.strptime(last_date_str, "%Y-%m-%d") + logger.info(f"{ticker} last data date: {last_date_str}") + return last_date + except Exception as e: + logger.warning(f"Failed to read {ticker}.csv: {e}") + return None + + def fetch_data_from_api( + self, + ticker: str, + start_date: datetime, + end_date: datetime, + ) -> Optional[pd.DataFrame]: + """Fetch data from configured API.""" + start_date_str = start_date.strftime("%Y-%m-%d") + end_date_str = end_date.strftime("%Y-%m-%d") + + logger.info( + f"Fetching {ticker} data from {self.data_source}: {start_date_str} to {end_date_str}", + ) + + prices = get_prices( + ticker=ticker, + start_date=start_date_str, + end_date=end_date_str, + ) + + if not prices: + logger.warning(f"{ticker} no data returned from API") + return None + + # Convert to DataFrame + df = prices_to_df(prices) + df = df.reset_index() + df["time"] = df["Date"].dt.strftime("%Y-%m-%d") + + # Calculate returns (next day return) + df["ret"] = df["close"].pct_change().shift(-1) + + # Select needed columns + df = df[["open", "close", "high", "low", "volume", "time", "ret"]] + + logger.info(f"Successfully fetched {ticker} data: {len(df)} records") + return df + + def merge_and_save(self, ticker: str, new_data: pd.DataFrame) -> bool: + """Merge old and new data and save.""" + csv_path = self.data_dir / f"{ticker}.csv" + + try: + if csv_path.exists(): + old_data = pd.read_csv(csv_path) + logger.info(f"{ticker} existing data: {len(old_data)} records") + + # Merge and deduplicate + combined = pd.concat([old_data, new_data], ignore_index=True) + combined = combined.drop_duplicates( + subset=["time"], + keep="last", + ) + combined = combined.sort_values("time").reset_index(drop=True) + + # Recalculate returns + combined["ret"] = combined["close"].pct_change().shift(-1) + + logger.info(f"{ticker} merged data: {len(combined)} records") + else: + combined = new_data + logger.info(f"{ticker} new file: {len(combined)} records") + + combined.to_csv(csv_path, index=False) + logger.info(f"{ticker} data saved to: {csv_path}") + return True + + except Exception as e: + logger.error(f"Failed to save {ticker} data: {e}") + return False + + def update_ticker( + self, + ticker: str, + force_full_update: bool = False, + ) -> bool: + """Update data for a single stock.""" + logger.info(f"{'='*60}") + logger.info(f"Starting update for {ticker}") + logger.info(f"{'='*60}") + + # Determine start date + if force_full_update: + start_date = datetime.strptime(self.start_date, "%Y-%m-%d") + logger.info(f"Force full update, start date: {start_date.date()}") + else: + last_date = self.get_last_date_from_csv(ticker) + if last_date: + start_date = last_date + timedelta(days=1) + logger.info( + f"Incremental update, start date: {start_date.date()}", + ) + else: + start_date = datetime.strptime(self.start_date, "%Y-%m-%d") + logger.info(f"First update, start date: {start_date.date()}") + + end_date = datetime.now() + + if start_date.date() >= end_date.date(): + logger.info(f"{ticker} data is up to date, no update needed") + return True + + new_data = self.fetch_data_from_api(ticker, start_date, end_date) + + if new_data is None or new_data.empty: + days_diff = (end_date - start_date).days + if days_diff <= 3: + logger.info( + f"{ticker} has no new data (may be weekend/holiday)", + ) + return True + else: + logger.warning(f"{ticker} has no new data") + return False + + success = self.merge_and_save(ticker, new_data) + + if success: + logger.info(f"{ticker} update completed") + else: + logger.error(f"{ticker} update failed") + + return success + + def update_all_tickers( + self, + tickers: List[str], + force_full_update: bool = False, + ) -> Dict[str, bool]: + """Batch update multiple stocks.""" + results = {} + + logger.info(f"{'='*60}") + logger.info(f"Starting batch update for {len(tickers)} stocks") + logger.info(f"Stock list: {', '.join(tickers)}") + logger.info(f"{'='*60}") + + for i, ticker in enumerate(tickers, 1): + logger.info(f"[{i}/{len(tickers)}] Processing {ticker}") + results[ticker] = self.update_ticker(ticker, force_full_update) + + # API rate limiting + if i < len(tickers): + time.sleep(1) + + # Print summary + logger.info(f"{'='*60}") + logger.info("Update Summary") + logger.info(f"{'='*60}") + + success_count = sum(results.values()) + fail_count = len(results) - success_count + + logger.info(f"Success: {success_count}") + logger.info(f"Failed: {fail_count}") + + if fail_count > 0: + failed_tickers = [t for t, s in results.items() if not s] + logger.warning(f"Failed stocks: {', '.join(failed_tickers)}") + + logger.info(f"{'='*60}\n") + + return results + + +def main(): + """Command line entry point""" + import argparse + + parser = argparse.ArgumentParser( + description="Automatically update stock historical data", + ) + parser.add_argument( + "--tickers", + type=str, + help="Stock ticker list (comma-separated), e.g.: AAPL,MSFT,GOOGL", + ) + parser.add_argument( + "--data-dir", + type=str, + help="Data storage directory (default: backend/data/ret_data)", + ) + parser.add_argument( + "--start-date", + type=str, + default="2022-01-01", + help="Historical data start date (YYYY-MM-DD, default: 2022-01-01)", + ) + parser.add_argument( + "--force", + action="store_true", + help="Force full update (re-download all data)", + ) + + args = parser.parse_args() + + # Load environment variables + load_dotenv() + + # Validate API key is available + try: + config = get_config() + logger.info(f"Using data source: {config.source}") + except ValueError as e: + logger.error(str(e)) + sys.exit(1) + + # Get stock list + if args.tickers: + tickers = [t.strip().upper() for t in args.tickers.split(",")] + else: + tickers_env = os.getenv("TICKERS", "") + if tickers_env: + tickers = [t.strip().upper() for t in tickers_env.split(",")] + else: + logger.error("Stock list not provided") + logger.error( + "Please set via --tickers parameter or TICKERS environment variable", + ) + sys.exit(1) + + # Create updater + updater = DataUpdater( + data_dir=args.data_dir, + start_date=args.start_date, + ) + + # Execute update + try: + results = updater.update_all_tickers( + tickers, + force_full_update=args.force, + ) + except Exception: + # API error (e.g., weekend/holiday with no data) + sys.exit(1) + + # Return status code + success_count = sum(results.values()) + if success_count == len(results): + logger.info("All stocks updated successfully!") + sys.exit(0) + elif success_count == 0: + logger.warning("All stocks have no new data (may be weekend/holiday)") + sys.exit(0) + else: + logger.warning("Some stocks failed to update, but will continue") + sys.exit(0) + + +if __name__ == "__main__": + main() diff --git a/evotraders/backend/data/schema.py b/evotraders/backend/data/schema.py new file mode 100644 index 0000000..e73dade --- /dev/null +++ b/evotraders/backend/data/schema.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +from pydantic import BaseModel + + +class Price(BaseModel): + open: float + close: float + high: float + low: float + volume: int + time: str + + +class PriceResponse(BaseModel): + ticker: str + prices: list[Price] + + +class FinancialMetrics(BaseModel): + ticker: str + report_period: str + period: str + currency: str + market_cap: float | None + enterprise_value: float | None + price_to_earnings_ratio: float | None + price_to_book_ratio: float | None + price_to_sales_ratio: float | None + enterprise_value_to_ebitda_ratio: float | None + enterprise_value_to_revenue_ratio: float | None + free_cash_flow_yield: float | None + peg_ratio: float | None + gross_margin: float | None + operating_margin: float | None + net_margin: float | None + return_on_equity: float | None + return_on_assets: float | None + return_on_invested_capital: float | None + asset_turnover: float | None + inventory_turnover: float | None + receivables_turnover: float | None + days_sales_outstanding: float | None + operating_cycle: float | None + working_capital_turnover: float | None + current_ratio: float | None + quick_ratio: float | None + cash_ratio: float | None + operating_cash_flow_ratio: float | None + debt_to_equity: float | None + debt_to_assets: float | None + interest_coverage: float | None + revenue_growth: float | None + earnings_growth: float | None + book_value_growth: float | None + earnings_per_share_growth: float | None + free_cash_flow_growth: float | None + operating_income_growth: float | None + ebitda_growth: float | None + payout_ratio: float | None + earnings_per_share: float | None + book_value_per_share: float | None + free_cash_flow_per_share: float | None + + +class FinancialMetricsResponse(BaseModel): + financial_metrics: list[FinancialMetrics] + + +class LineItem(BaseModel): + ticker: str + report_period: str + period: str + currency: str + + # Allow additional fields dynamically + model_config = {"extra": "allow"} + + +class LineItemResponse(BaseModel): + search_results: list[LineItem] + + +class InsiderTrade(BaseModel): + ticker: str + issuer: str | None + name: str | None + title: str | None + is_board_director: bool | None + transaction_date: str | None + transaction_shares: float | None + transaction_price_per_share: float | None + transaction_value: float | None + shares_owned_before_transaction: float | None + shares_owned_after_transaction: float | None + security_title: str | None + filing_date: str + + +class InsiderTradeResponse(BaseModel): + insider_trades: list[InsiderTrade] + + +class CompanyNews(BaseModel): + category: str | None = None + ticker: str + title: str + related: str | None = None + source: str + date: str | None = None + url: str + summary: str | None = None + + +class CompanyNewsResponse(BaseModel): + news: list[CompanyNews] + + +class CompanyFacts(BaseModel): + ticker: str + name: str + cik: str | None = None + industry: str | None = None + sector: str | None = None + category: str | None = None + exchange: str | None = None + is_active: bool | None = None + listing_date: str | None = None + location: str | None = None + market_cap: float | None = None + number_of_employees: int | None = None + sec_filings_url: str | None = None + sic_code: str | None = None + sic_industry: str | None = None + sic_sector: str | None = None + website_url: str | None = None + weighted_average_shares: int | None = None + + +class CompanyFactsResponse(BaseModel): + company_facts: CompanyFacts + + +class Position(BaseModel): + """Position information - for Portfolio mode""" + + long: int = 0 # Long position quantity (shares) + short: int = 0 # Short position quantity (shares) + long_cost_basis: float = 0.0 # Long position average cost + short_cost_basis: float = 0.0 # Short position average cost + + +class Portfolio(BaseModel): + """Portfolio - for Portfolio mode""" + + cash: float = 100000.0 # Available cash + positions: dict[str, Position] = {} # ticker -> Position mapping + # Margin requirement (0.0 means shorting disabled, 0.5 means 50% margin) + margin_requirement: float = 0.0 + margin_used: float = 0.0 # Margin used + + +class AnalystSignal(BaseModel): + signal: str | None = None + confidence: float | None = None + reasoning: dict | str | None = None + max_position_size: float | None = None # For risk management signals + + +class TickerAnalysis(BaseModel): + ticker: str + analyst_signals: dict[str, AnalystSignal] # agent_name -> signal mapping + + +class AgentStateData(BaseModel): + tickers: list[str] + portfolio: Portfolio + start_date: str + end_date: str + ticker_analyses: dict[str, TickerAnalysis] # ticker -> analysis mapping + + +class AgentStateMetadata(BaseModel): + show_reasoning: bool = False + model_config = {"extra": "allow"} diff --git a/evotraders/backend/llm/__init__.py b/evotraders/backend/llm/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/evotraders/backend/llm/models.py b/evotraders/backend/llm/models.py new file mode 100644 index 0000000..f8edfdd --- /dev/null +++ b/evotraders/backend/llm/models.py @@ -0,0 +1,243 @@ +# -*- coding: utf-8 -*- +""" +AgentScope Native Model Factory +Uses native AgentScope model classes for LLM calls +""" +import os +from enum import Enum +from typing import Optional, Tuple +from agentscope.formatter import ( + AnthropicChatFormatter, + DashScopeChatFormatter, + GeminiChatFormatter, + OllamaChatFormatter, + OpenAIChatFormatter, +) +from agentscope.model import ( + AnthropicChatModel, + DashScopeChatModel, + GeminiChatModel, + OllamaChatModel, + OpenAIChatModel, +) + + +class ModelProvider(Enum): + """Supported model providers""" + + OPENAI = "OPENAI" + ANTHROPIC = "ANTHROPIC" + DASHSCOPE = "DASHSCOPE" + ALIBABA = "ALIBABA" + GEMINI = "GEMINI" + GOOGLE = "GOOGLE" + OLLAMA = "OLLAMA" + DEEPSEEK = "DEEPSEEK" + GROQ = "GROQ" + OPENROUTER = "OPENROUTER" + + +# Provider to AgentScope model class mapping +PROVIDER_MODEL_MAP = { + "OPENAI": OpenAIChatModel, + "ANTHROPIC": AnthropicChatModel, + "DASHSCOPE": DashScopeChatModel, + "ALIBABA": DashScopeChatModel, + "GEMINI": GeminiChatModel, + "GOOGLE": GeminiChatModel, + "OLLAMA": OllamaChatModel, + # OpenAI-compatible providers use OpenAIChatModel with custom base_url + "DEEPSEEK": OpenAIChatModel, + "GROQ": OpenAIChatModel, + "OPENROUTER": OpenAIChatModel, +} + +# Provider to formatter mapping +PROVIDER_FORMATTER_MAP = { + "OPENAI": OpenAIChatFormatter, + "ANTHROPIC": AnthropicChatFormatter, + "DASHSCOPE": DashScopeChatFormatter, + "ALIBABA": DashScopeChatFormatter, + "GEMINI": GeminiChatFormatter, + "GOOGLE": GeminiChatFormatter, + "OLLAMA": OllamaChatFormatter, + # OpenAI-compatible providers use OpenAIChatFormatter + "DEEPSEEK": OpenAIChatFormatter, + "GROQ": OpenAIChatFormatter, + "OPENROUTER": OpenAIChatFormatter, +} + +# Provider-specific base URLs +PROVIDER_BASE_URLS = { + "DEEPSEEK": "https://api.deepseek.com/v1", + "GROQ": "https://api.groq.com/openai/v1", + "OPENROUTER": "https://openrouter.ai/api/v1", +} + +# Provider-specific API key environment variable names +PROVIDER_API_KEY_ENV = { + "OPENAI": "OPENAI_API_KEY", + "ANTHROPIC": "ANTHROPIC_API_KEY", + "DASHSCOPE": "DASHSCOPE_API_KEY", + "ALIBABA": "DASHSCOPE_API_KEY", + "GEMINI": "GOOGLE_API_KEY", + "GOOGLE": "GOOGLE_API_KEY", + "DEEPSEEK": "DEEPSEEK_API_KEY", + "GROQ": "GROQ_API_KEY", + "OPENROUTER": "OPENROUTER_API_KEY", +} + + +def create_model( + model_name: str, + provider: str, + api_key: Optional[str] = None, + stream: bool = False, + **kwargs, +): + """ + Create an AgentScope model instance + + Args: + model_name: Model name (e.g., "gpt-4o", "claude-3-opus") + provider: Provider name (e.g., "OPENAI", "ANTHROPIC") + api_key: API key (optional, will read from env if not provided) + stream: Whether to use streaming mode + **kwargs: Additional model-specific arguments + + Returns: + AgentScope model instance + """ + provider = provider.upper() + + model_class = PROVIDER_MODEL_MAP.get(provider) + if model_class is None: + raise ValueError(f"Unsupported provider: {provider}") + + # Get API key from env if not provided + if api_key is None: + env_key = PROVIDER_API_KEY_ENV.get(provider) + if env_key: + api_key = os.getenv(env_key) + + # Build model kwargs + model_kwargs = { + "model_name": model_name, + "stream": stream, + **kwargs, + } + + # Add API key if needed (Ollama doesn't need it) + if provider != "OLLAMA" and api_key: + model_kwargs["api_key"] = api_key + + # Handle OpenAI-compatible providers with custom base_url + if provider in PROVIDER_BASE_URLS: + base_url = PROVIDER_BASE_URLS[provider] + model_kwargs["client_args"] = {"base_url": base_url} + + # Handle custom OpenAI base URL + if provider == "OPENAI": + base_url = os.getenv("OPENAI_BASE_URL") or os.getenv("OPENAI_API_BASE") + if base_url: + model_kwargs["client_args"] = {"base_url": base_url} + + # Handle DashScope base URL (uses different parameter) + if provider in ("DASHSCOPE", "ALIBABA"): + base_url = os.getenv("DASHSCOPE_BASE_URL") + if base_url: + model_kwargs["base_http_api_url"] = base_url + + # Handle Ollama host + if provider == "OLLAMA": + host = os.getenv("OLLAMA_HOST") + if host: + model_kwargs["host"] = host + + return model_class(**model_kwargs) + + +def get_agent_model(agent_id: str, stream: bool = False): + """ + Get model for a specific agent based on environment variables + + Environment variable pattern: + AGENT_{AGENT_ID}_MODEL_NAME: Model name + AGENT_{AGENT_ID}_MODEL_PROVIDER: Provider name + + fallback to global MODEL_NAME & MODEL_PROVIDER if agent-specific not given + + Args: + agent_id: Agent ID (e.g., "sentiment_analyst", "portfolio_manager") + stream: Whether to use streaming mode + + Returns: + AgentScope model instance + """ + # Normalize agent_id to uppercase for env var lookup + agent_key = agent_id.upper().replace("-", "_") + + # Try agent-specific config first + model_name = os.getenv(f"AGENT_{agent_key}_MODEL_NAME") + provider = os.getenv(f"AGENT_{agent_key}_MODEL_PROVIDER") + + print(f"Using specific model {model_name} for agent {agent_key}") + # Fall back to global config + if not model_name: + model_name = os.getenv("MODEL_NAME", "gpt-4o") + if not provider: + provider = os.getenv("MODEL_PROVIDER", "OPENAI") + + return create_model( + model_name=model_name, + provider=provider, + stream=stream, + ) + + +def get_agent_formatter(agent_id: str): + """ + Get formatter for a specific agent based on environment variables + + Args: + agent_id: Agent ID (e.g., "sentiment_analyst", "portfolio_manager") + + Returns: + AgentScope formatter instance + """ + # Normalize agent_id to uppercase for env var lookup + agent_key = agent_id.upper().replace("-", "_") + + # Try agent-specific config first + provider = os.getenv(f"AGENT_{agent_key}_MODEL_PROVIDER") + + # Fall back to global config + if not provider: + provider = os.getenv("MODEL_PROVIDER", "OPENAI") + + provider = provider.upper() + formatter_class = PROVIDER_FORMATTER_MAP.get(provider, OpenAIChatFormatter) + return formatter_class() + + +def get_agent_model_info(agent_id: str) -> Tuple[str, str]: + """ + Get model name and provider for a specific agent + + Args: + agent_id: Agent ID (e.g., "sentiment_analyst", "portfolio_manager") + + Returns: + Tuple of (model_name, provider_name) + """ + agent_key = agent_id.upper().replace("-", "_") + + model_name = os.getenv(f"AGENT_{agent_key}_MODEL_NAME") + provider = os.getenv(f"AGENT_{agent_key}_MODEL_PROVIDER") + + if not model_name: + model_name = os.getenv("MODEL_NAME", "gpt-4o") + if not provider: + provider = os.getenv("MODEL_PROVIDER", "OPENAI") + + return model_name, provider.upper() diff --git a/evotraders/backend/main.py b/evotraders/backend/main.py new file mode 100644 index 0000000..79338eb --- /dev/null +++ b/evotraders/backend/main.py @@ -0,0 +1,332 @@ +# -*- coding: utf-8 -*- +""" +Main Entry Point +Supports: backtest, live, mock modes +""" +import argparse +import asyncio +import logging +import os +from contextlib import AsyncExitStack +from pathlib import Path +import loguru + +from dotenv import load_dotenv + +from backend.agents import AnalystAgent, PMAgent, RiskAgent +from backend.config.constants import ANALYST_TYPES +from backend.config.env_config import get_env_float, get_env_int, get_env_list +from backend.core.pipeline import TradingPipeline +from backend.core.scheduler import BacktestScheduler, Scheduler +from backend.utils.settlement import SettlementCoordinator +from backend.llm.models import get_agent_formatter, get_agent_model +from backend.services.gateway import Gateway +from backend.services.market import MarketService +from backend.services.storage import StorageService + +load_dotenv() +logger = logging.getLogger(__name__) +loguru.logger.disable("flowllm") +loguru.logger.disable("reme_ai") + + +def create_long_term_memory(agent_name: str, config_name: str): + """ + Create ReMeTaskLongTermMemory for an agent + + Requires DASHSCOPE_API_KEY env var + """ + from agentscope.memory import ReMeTaskLongTermMemory + from agentscope.model import DashScopeChatModel + from agentscope.embedding import DashScopeTextEmbedding + + api_key = os.getenv("MEMORY_API_KEY") + if not api_key: + logger.warning("MEMORY_API_KEY not set, long-term memory disabled") + return None + + memory_dir = str(Path(config_name) / "memory") + + return ReMeTaskLongTermMemory( + agent_name=agent_name, + user_name=agent_name, + model=DashScopeChatModel( + model_name=os.getenv("MEMORY_MODEL_NAME", "qwen3-max"), + api_key=api_key, + stream=False, + ), + embedding_model=DashScopeTextEmbedding( + model_name=os.getenv( + "MEMORY_EMBEDDING_MODEL", + "text-embedding-v4", + ), + api_key=api_key, + dimensions=1024, + ), + **{ + "vector_store.default.backend": "local", + "vector_store.default.params.store_dir": memory_dir, + }, + ) + + +def create_agents( + config_name: str, + initial_cash: float, + margin_requirement: float, + enable_long_term_memory: bool = False, +): + """Create all agents for the system + + Returns: + tuple: (analysts, risk_manager, portfolio_manager, long_term_memories) + long_term_memories is a list of memory + """ + analysts = [] + long_term_memories = [] + + for analyst_type in ANALYST_TYPES: + model = get_agent_model(analyst_type) + formatter = get_agent_formatter(analyst_type) + toolkit = create_toolkit(analyst_type) + + long_term_memory = None + if enable_long_term_memory: + long_term_memory = create_long_term_memory( + analyst_type, + config_name, + ) + if long_term_memory: + long_term_memories.append(long_term_memory) + + analyst = AnalystAgent( + analyst_type=analyst_type, + toolkit=toolkit, + model=model, + formatter=formatter, + agent_id=analyst_type, + config={"config_name": config_name}, + long_term_memory=long_term_memory, + ) + analysts.append(analyst) + + risk_long_term_memory = None + if enable_long_term_memory: + risk_long_term_memory = create_long_term_memory( + "risk_manager", + config_name, + ) + if risk_long_term_memory: + long_term_memories.append(risk_long_term_memory) + + risk_manager = RiskAgent( + model=get_agent_model("risk_manager"), + formatter=get_agent_formatter("risk_manager"), + name="risk_manager", + config={"config_name": config_name}, + long_term_memory=risk_long_term_memory, + ) + + pm_long_term_memory = None + if enable_long_term_memory: + pm_long_term_memory = create_long_term_memory( + "portfolio_manager", + config_name, + ) + if pm_long_term_memory: + long_term_memories.append(pm_long_term_memory) + + portfolio_manager = PMAgent( + name="portfolio_manager", + model=get_agent_model("portfolio_manager"), + formatter=get_agent_formatter("portfolio_manager"), + initial_cash=initial_cash, + margin_requirement=margin_requirement, + config={"config_name": config_name}, + long_term_memory=pm_long_term_memory, + ) + + return analysts, risk_manager, portfolio_manager, long_term_memories + + +def create_toolkit(analyst_type: str): + """Create AgentScope Toolkit with tools for specific analyst type""" + from agentscope.tool import Toolkit + from backend.agents.prompt_loader import PromptLoader + from backend.tools.analysis_tools import TOOL_REGISTRY + + # Load analyst persona config + prompt_loader = PromptLoader() + personas_config = prompt_loader.load_yaml_config("analyst", "personas") + persona = personas_config.get(analyst_type, {}) + + # Get tool names for this analyst type + tool_names = persona.get("tools", []) + + # Create toolkit and register tools + toolkit = Toolkit() + for tool_name in tool_names: + tool_func = TOOL_REGISTRY.get(tool_name) + if tool_func: + toolkit.register_tool_function(tool_func) + + return toolkit + + +async def run_with_gateway(args): + """Run with WebSocket gateway""" + is_backtest = args.mode == "backtest" + + # Load config from env, override with args + tickers = get_env_list("TICKERS", ["AAPL", "MSFT"]) + initial_cash = get_env_float("INITIAL_CASH", 100000.0) + margin_requirement = get_env_float("MARGIN_REQUIREMENT", 0.0) + config_name = args.config_name + + # Create market service + market_service = MarketService( + tickers=tickers, + poll_interval=args.poll_interval, + mock_mode=args.mock and not is_backtest, + backtest_mode=is_backtest, + api_key=os.getenv("FINNHUB_API_KEY") + if not args.mock and not is_backtest + else None, + backtest_start_date=args.start_date if is_backtest else None, + backtest_end_date=args.end_date if is_backtest else None, + ) + + # Create storage service + storage_service = StorageService( + dashboard_dir=Path(config_name) / "team_dashboard", + initial_cash=initial_cash, + config_name=config_name, + ) + + if not storage_service.files["summary"].exists(): + storage_service.initialize_empty_dashboard() + else: + storage_service.update_leaderboard_model_info() + + # Create agents and pipeline + analysts, risk_manager, pm, long_term_memories = create_agents( + config_name=config_name, + initial_cash=initial_cash, + margin_requirement=margin_requirement, + enable_long_term_memory=args.enable_memory, + ) + portfolio_state = storage_service.load_portfolio_state() + pm.load_portfolio_state(portfolio_state) + + settlement_coordinator = SettlementCoordinator( + storage=storage_service, + initial_capital=initial_cash, + ) + + pipeline = TradingPipeline( + analysts=analysts, + risk_manager=risk_manager, + portfolio_manager=pm, + settlement_coordinator=settlement_coordinator, + max_comm_cycles=get_env_int("MAX_COMM_CYCLES", 2), + ) + + # Create scheduler callback + scheduler_callback = None + trading_dates = [] + + if is_backtest: + backtest_scheduler = BacktestScheduler( + start_date=args.start_date, + end_date=args.end_date, + trading_calendar="NYSE", + delay_between_days=0.5, + ) + trading_dates = backtest_scheduler.get_trading_dates() + + async def scheduler_callback_fn(callback): + await backtest_scheduler.start(callback) + + scheduler_callback = scheduler_callback_fn + else: + # Live mode: use daily scheduler with NYSE timezone + live_scheduler = Scheduler( + mode="daily", + trigger_time=args.trigger_time, + config={"config_name": config_name}, + ) + + async def scheduler_callback_fn(callback): + await live_scheduler.start(callback) + + scheduler_callback = scheduler_callback_fn + + # Create gateway + gateway = Gateway( + market_service=market_service, + storage_service=storage_service, + pipeline=pipeline, + scheduler_callback=scheduler_callback, + config={ + "mode": args.mode, + "mock_mode": args.mock, + "backtest_mode": is_backtest, + "tickers": tickers, + "config_name": config_name, + }, + ) + + if is_backtest: + gateway.set_backtest_dates(trading_dates) + + # Start long-term memory contexts and run gateway + async with AsyncExitStack() as stack: + for memory in long_term_memories: + await stack.enter_async_context(memory) + await gateway.start(host=args.host, port=args.port) + + +def main(): + """Main entry point""" + parser = argparse.ArgumentParser(description="Trading System") + parser.add_argument("--mode", choices=["live", "backtest"], default="live") + parser.add_argument("--mock", action="store_true") + parser.add_argument("--config-name", default="mock") + parser.add_argument("--host", default="0.0.0.0") + parser.add_argument("--port", type=int, default=8765) + parser.add_argument("--trigger-time", default="09:30") # NYSE market open + parser.add_argument("--poll-interval", type=int, default=10) + parser.add_argument("--start-date") + parser.add_argument("--end-date") + parser.add_argument( + "--enable-memory", + action="store_true", + help="Enable ReMeTaskLongTermMemory for agents", + ) + + args = parser.parse_args() + + # Load config from env for logging + tickers = get_env_list("TICKERS", ["AAPL", "MSFT"]) + initial_cash = get_env_float("INITIAL_CASH", 100000.0) + + logger.info("=" * 60) + logger.info(f"Mode: {args.mode}, Config: {args.config_name}") + logger.info(f"Tickers: {tickers}") + logger.info(f"Initial Cash: ${initial_cash:,.2f}") + logger.info( + f"Long-term Memory: {'enabled' if args.enable_memory else 'disabled'}", + ) + if args.mode == "backtest": + if not args.start_date or not args.end_date: + parser.error( + "--start-date and --end-date required for backtest mode", + ) + logger.info(f"Backtest: {args.start_date} to {args.end_date}") + logger.info("=" * 60) + + asyncio.run(run_with_gateway(args)) + + +if __name__ == "__main__": + main() diff --git a/evotraders/backend/services/__init__.py b/evotraders/backend/services/__init__.py new file mode 100644 index 0000000..249960b --- /dev/null +++ b/evotraders/backend/services/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +"""Services layer for infrastructure components""" diff --git a/evotraders/backend/services/gateway.py b/evotraders/backend/services/gateway.py new file mode 100644 index 0000000..3fdd744 --- /dev/null +++ b/evotraders/backend/services/gateway.py @@ -0,0 +1,542 @@ +# -*- coding: utf-8 -*- +""" +WebSocket Gateway for frontend communication +""" +import asyncio +import json +import logging +from datetime import datetime +from typing import Any, Callable, Dict, List, Optional, Set + +import websockets +from websockets.server import WebSocketServerProtocol + +from backend.utils.msg_adapter import FrontendAdapter +from backend.utils.terminal_dashboard import get_dashboard +from backend.core.pipeline import TradingPipeline +from backend.core.state_sync import StateSync +from backend.services.market import MarketService +from backend.services.storage import StorageService + +logger = logging.getLogger(__name__) + + +class Gateway: + """WebSocket Gateway for frontend communication""" + + def __init__( + self, + market_service: MarketService, + storage_service: StorageService, + pipeline: TradingPipeline, + state_sync: Optional[StateSync] = None, + scheduler_callback: Optional[Callable] = None, + config: Dict[str, Any] = None, + ): + self.market_service = market_service + self.storage = storage_service + self.pipeline = pipeline + self.scheduler_callback = scheduler_callback + self.config = config or {} + + self.mode = self.config.get("mode", "live") + self.is_backtest = self.mode == "backtest" or self.config.get( + "backtest_mode", + False, + ) + + self.state_sync = state_sync or StateSync(storage=storage_service) + # self.state_sync.set_mode(self.is_backtest) + self.state_sync.set_broadcast_fn(self.broadcast) + self.pipeline.state_sync = self.state_sync + + self.connected_clients: Set[WebSocketServerProtocol] = set() + self.lock = asyncio.Lock() + self._backtest_task: Optional[asyncio.Task] = None + self._backtest_start_date: Optional[str] = None + self._backtest_end_date: Optional[str] = None + self._dashboard = get_dashboard() + self._market_status_task: Optional[asyncio.Task] = None + + # Session tracking for live returns + self._session_start_portfolio_value: Optional[float] = None + + async def start(self, host: str = "0.0.0.0", port: int = 8766): + """Start gateway server""" + logger.info(f"Starting gateway on {host}:{port}") + + # Initialize terminal dashboard + self._dashboard.set_config( + mode=self.mode, + config_name=self.config.get("config_name", "default"), + host=host, + port=port, + poll_interval=self.config.get("poll_interval", 10), + mock=self.config.get("mock_mode", False), + tickers=self.config.get("tickers", []), + initial_cash=self.storage.initial_cash, + start_date=self._backtest_start_date or "", + end_date=self._backtest_end_date or "", + ) + self._dashboard.start() + + self.state_sync.load_state() + self.state_sync.update_state("status", "running") + self.state_sync.update_state("server_mode", self.mode) + self.state_sync.update_state("is_backtest", self.is_backtest) + self.state_sync.update_state( + "is_mock_mode", + self.config.get("mock_mode", False), + ) + + # Load and display existing portfolio state if available + summary = self.storage.load_file("summary") + if summary: + holdings = self.storage.load_file("holdings") or [] + trades = self.storage.load_file("trades") or [] + current_date = self.state_sync.state.get("current_date") + self._dashboard.update( + date=current_date or "-", + status="running", + portfolio=summary, + holdings=holdings, + trades=trades, + ) + logger.info( + "Loaded existing portfolio: $%s", + f"{summary.get('totalAssetValue', 0):,.2f}", + ) + + await self.market_service.start(broadcast_func=self.broadcast) + + if self.scheduler_callback: + await self.scheduler_callback(callback=self.on_strategy_trigger) + + # Start market status monitoring (only for live mode) + if not self.is_backtest: + self._market_status_task = asyncio.create_task( + self._market_status_monitor(), + ) + + async with websockets.serve( + self.handle_client, + host, + port, + ping_interval=30, + ping_timeout=60, + ): + logger.info( + f"Gateway started: ws://{host}:{port}, mode={self.mode}", + ) + await asyncio.Future() + + @property + def state(self) -> Dict[str, Any]: + return self.state_sync.state + + async def handle_client(self, websocket: WebSocketServerProtocol): + """Handle WebSocket client connection""" + async with self.lock: + self.connected_clients.add(websocket) + + await self._send_initial_state(websocket) + await self._handle_client_messages(websocket) + + async with self.lock: + self.connected_clients.discard(websocket) + + async def _send_initial_state(self, websocket: WebSocketServerProtocol): + state_payload = self.state_sync.get_initial_state_payload( + include_dashboard=True, + ) + # Include market status in initial state + state_payload[ + "market_status" + ] = self.market_service.get_market_status() + + # Include live returns if session is active + if self.storage.is_live_session_active: + live_returns = self.storage.get_live_returns() + if "portfolio" in state_payload: + state_payload["portfolio"].update(live_returns) + + await websocket.send( + json.dumps( + {"type": "initial_state", "state": state_payload}, + ensure_ascii=False, + default=str, + ), + ) + + async def _handle_client_messages( + self, + websocket: WebSocketServerProtocol, + ): + try: + async for message in websocket: + data = json.loads(message) + msg_type = data.get("type", "unknown") + + if msg_type == "ping": + await websocket.send( + json.dumps( + { + "type": "pong", + "timestamp": datetime.now().isoformat(), + }, + ensure_ascii=False, + ), + ) + elif msg_type == "get_state": + await self._send_initial_state(websocket) + elif msg_type == "start_backtest": + await self._handle_start_backtest(data) + + except websockets.ConnectionClosed: + pass + except json.JSONDecodeError: + pass + + async def _handle_start_backtest(self, data: Dict[str, Any]): + if not self.is_backtest: + return + dates = data.get("dates", []) + if dates and self._backtest_task is None: + self._backtest_task = asyncio.create_task( + self._run_backtest_dates(dates), + ) + + async def broadcast(self, message: Dict[str, Any]): + """Broadcast message to all connected clients""" + if not self.connected_clients: + return + + message_json = json.dumps(message, ensure_ascii=False, default=str) + + async with self.lock: + tasks = [ + self._send_to_client(client, message_json) + for client in self.connected_clients.copy() + ] + + if tasks: + await asyncio.gather(*tasks, return_exceptions=True) + + async def _send_to_client( + self, + client: WebSocketServerProtocol, + message: str, + ): + try: + await client.send(message) + except websockets.ConnectionClosed: + async with self.lock: + self.connected_clients.discard(client) + + async def _market_status_monitor(self): + """Periodically check and broadcast market status changes""" + while True: + try: + await self.market_service.check_and_broadcast_market_status() + + # On market open, start live session tracking + status = self.market_service.get_market_status() + if ( + status["status"] == "open" + and not self.storage.is_live_session_active + ): + self.storage.start_live_session() + summary = self.storage.load_file("summary") or {} + self._session_start_portfolio_value = summary.get( + "totalAssetValue", + self.storage.initial_cash, + ) + logger.info( + "Session start portfolio: " + f"${self._session_start_portfolio_value:,.2f}", + ) + elif ( + status["status"] != "open" + and self.storage.is_live_session_active + ): + self.storage.end_live_session() + self._session_start_portfolio_value = None + + # Update and broadcast live returns if session is active + if self.storage.is_live_session_active: + await self._update_and_broadcast_live_returns() + + await asyncio.sleep(60) # Check every minute + except asyncio.CancelledError: + break + except Exception as e: + logger.error(f"Market status monitor error: {e}") + await asyncio.sleep(60) + + async def _update_and_broadcast_live_returns(self): + """Calculate and broadcast live returns for current session""" + if not self.storage.is_live_session_active: + return + + # Get current prices and calculate portfolio value + prices = self.market_service.get_all_prices() + if not prices or not any(p > 0 for p in prices.values()): + return + + # Load current internal state to get baseline values + state = self.storage.load_internal_state() + + # Get latest values from history (if available) + equity_history = state.get("equity_history", []) + baseline_history = state.get("baseline_history", []) + baseline_vw_history = state.get("baseline_vw_history", []) + momentum_history = state.get("momentum_history", []) + + current_equity = equity_history[-1]["v"] if equity_history else None + current_baseline = ( + baseline_history[-1]["v"] if baseline_history else None + ) + current_baseline_vw = ( + baseline_vw_history[-1]["v"] if baseline_vw_history else None + ) + current_momentum = ( + momentum_history[-1]["v"] if momentum_history else None + ) + + # Update live returns with current values + point = self.storage.update_live_returns( + current_equity=current_equity, + current_baseline=current_baseline, + current_baseline_vw=current_baseline_vw, + current_momentum=current_momentum, + ) + + # Broadcast if we have new data + if point: + live_returns = self.storage.get_live_returns() + await self.broadcast( + { + "type": "team_summary", + "equity_return": live_returns["equity_return"], + "baseline_return": live_returns["baseline_return"], + "baseline_vw_return": live_returns["baseline_vw_return"], + "momentum_return": live_returns["momentum_return"], + }, + ) + + async def on_strategy_trigger(self, date: str): + """Handle trading cycle trigger""" + logger.info(f"Strategy triggered for {date}") + + tickers = self.config.get("tickers", []) + + if self.is_backtest: + await self._run_backtest_cycle(date, tickers) + else: + await self._run_live_cycle(date, tickers) + + async def _run_backtest_cycle(self, date: str, tickers: List[str]): + """Run backtest cycle with pre-loaded prices""" + self.market_service.set_backtest_date(date) + await self.market_service.emit_market_open() + + await self.state_sync.on_cycle_start(date) + self._dashboard.update(date=date, status="Analyzing...") + + prices = self.market_service.get_open_prices() + close_prices = self.market_service.get_close_prices() + market_caps = self._get_market_caps(tickers, date) + + result = await self.pipeline.run_cycle( + tickers=tickers, + date=date, + prices=prices, + close_prices=close_prices, + market_caps=market_caps, + ) + + await self.market_service.emit_market_close() + settlement_result = result.get("settlement_result") + self._save_cycle_results(result, date, close_prices, settlement_result) + await self._broadcast_portfolio_updates(result, close_prices) + await self._finalize_cycle(date) + + async def _run_live_cycle(self, date: str, tickers: List[str]): + """ + Run live cycle with real market timing. + + - Analysis runs immediately + - Execution waits for market open + (or uses current prices if already open) + - Settlement waits for market close + """ + # Get actual trading date (might be next trading day if weekend) + trading_date = self.market_service.get_live_trading_date() + logger.info( + f"Live cycle: triggered={date}, trading_date={trading_date}", + ) + + await self.state_sync.on_cycle_start(trading_date) + self._dashboard.update(date=trading_date, status="Analyzing...") + + market_caps = self._get_market_caps(tickers, trading_date) + + # Run pipeline with async price callbacks + result = await self.pipeline.run_cycle( + tickers=tickers, + date=trading_date, + market_caps=market_caps, + get_open_prices_fn=self.market_service.wait_for_open_prices, + get_close_prices_fn=self.market_service.wait_for_close_prices, + ) + + close_prices = self.market_service.get_all_prices() + settlement_result = result.get("settlement_result") + self._save_cycle_results( + result, + trading_date, + close_prices, + settlement_result, + ) + await self._broadcast_portfolio_updates(result, close_prices) + await self._finalize_cycle(trading_date) + + async def _finalize_cycle(self, date: str): + """Finalize cycle: broadcast state and update dashboard""" + summary = self.storage.load_file("summary") or {} + + # Include live returns if session is active + if self.storage.is_live_session_active: + live_returns = self.storage.get_live_returns() + summary.update(live_returns) + + await self.state_sync.on_cycle_end(date, portfolio_summary=summary) + + holdings = self.storage.load_file("holdings") or [] + trades = self.storage.load_file("trades") or [] + self._dashboard.update( + date=date, + status="Running", + portfolio=summary, + holdings=holdings, + trades=trades, + ) + + def _get_market_caps( + self, + tickers: List[str], + date: str, + ) -> Dict[str, float]: + """ + Get market caps for tickers (stub implementation) + + Args: + tickers: List of tickers + date: Trading date + + Returns: + Dict mapping ticker to market cap + """ + from ..tools.data_tools import get_market_cap + + market_caps = {} + for ticker in tickers: + try: + market_cap = get_market_cap(ticker, date) + if market_cap: + market_caps[ticker] = market_cap + else: + market_caps[ticker] = 1e9 + except Exception: + market_caps[ticker] = 1e9 + + return market_caps + + async def _broadcast_portfolio_updates( + self, + result: Dict[str, Any], + prices: Dict[str, float], + ): + portfolio = result.get("portfolio", {}) + + if portfolio: + holdings = FrontendAdapter.build_holdings(portfolio, prices) + if holdings: + await self.state_sync.on_holdings_update(holdings) + + stats = FrontendAdapter.build_stats(portfolio, prices) + if stats: + await self.state_sync.on_stats_update(stats) + + executed_trades = result.get("executed_trades", []) + if executed_trades: + await self.state_sync.on_trades_executed(executed_trades) + + def _save_cycle_results( + self, + result: Dict[str, Any], + date: str, + prices: Dict[str, float], + settlement_result: Optional[Dict[str, Any]] = None, + ): + portfolio = result.get("portfolio", {}) + executed_trades = result.get("executed_trades", []) + + # Extract baseline values from settlement result + baseline_values = None + if settlement_result: + baseline_values = settlement_result.get("baseline_values") + + if portfolio: + self.storage.update_dashboard_after_cycle( + portfolio=portfolio, + prices=prices, + date=date, + executed_trades=executed_trades, + baseline_values=baseline_values, + ) + + async def _run_backtest_dates(self, dates: List[str]): + self.state_sync.set_backtest_dates(dates) + self._dashboard.update(days_total=len(dates), days_completed=0) + + await self.state_sync.on_system_message( + f"Starting backtest - {len(dates)} trading days", + ) + + for i, date in enumerate(dates): + self._dashboard.update(days_completed=i) + await self.on_strategy_trigger(date=date) + await asyncio.sleep(0.1) + + await self.state_sync.on_system_message( + f"Backtest complete - {len(dates)} days", + ) + + # Update dashboard with final state + summary = self.storage.load_file("summary") or {} + self._dashboard.update( + status="Complete", + portfolio=summary, + days_completed=len(dates), + ) + self._dashboard.stop() + self._dashboard.print_final_summary() + + self._backtest_task = None + + def set_backtest_dates(self, dates: List[str]): + self.state_sync.set_backtest_dates(dates) + if dates: + self._backtest_start_date = dates[0] + self._backtest_end_date = dates[-1] + self._dashboard.days_total = len(dates) + + def stop(self): + self.state_sync.save_state() + self.market_service.stop() + if self._backtest_task: + self._backtest_task.cancel() + if self._market_status_task: + self._market_status_task.cancel() + self._dashboard.stop() diff --git a/evotraders/backend/services/market.py b/evotraders/backend/services/market.py new file mode 100644 index 0000000..7a337e2 --- /dev/null +++ b/evotraders/backend/services/market.py @@ -0,0 +1,625 @@ +# -*- coding: utf-8 -*- +""" +Market Data Service +Supports live, mock, and backtest modes +""" +import asyncio +import logging +from datetime import datetime, timedelta +from typing import Any, Callable, Dict, List, Optional +from zoneinfo import ZoneInfo + +import pandas_market_calendars as mcal + +logger = logging.getLogger(__name__) + +# NYSE timezone and calendar +NYSE_TZ = ZoneInfo("America/New_York") +NYSE_CALENDAR = mcal.get_calendar("NYSE") + + +class MarketStatus: + """Market status enum-like class""" + + OPEN = "open" + CLOSED = "closed" + PREMARKET = "premarket" + AFTERHOURS = "afterhours" + + +class MarketService: + """Market data service for price management""" + + def __init__( + self, + tickers: List[str], + poll_interval: int = 10, + mock_mode: bool = False, + backtest_mode: bool = False, + api_key: Optional[str] = None, + backtest_start_date: Optional[str] = None, + backtest_end_date: Optional[str] = None, + ): + self.tickers = tickers + self.poll_interval = poll_interval + self.mock_mode = mock_mode + self.backtest_mode = backtest_mode + self.api_key = api_key + self.backtest_start_date = backtest_start_date + self.backtest_end_date = backtest_end_date + + self.cache: Dict[str, Dict[str, Any]] = {} + self.running = False + self._loop: Optional[asyncio.AbstractEventLoop] = None + self._broadcast_func: Optional[Callable] = None + self._price_manager: Optional[Any] = None + self._current_date: Optional[str] = None + + # Market status tracking + self._last_market_status: Optional[str] = None + + # Session tracking for live returns + self._session_start_values: Optional[Dict[str, float]] = None + self._session_start_timestamp: Optional[int] = None + + @property + def mode_name(self) -> str: + if self.backtest_mode: + return "BACKTEST" + elif self.mock_mode: + return "MOCK" + return "LIVE" + + async def start(self, broadcast_func: Callable): + """Start market data service""" + if self.running: + return + + self.running = True + self._loop = asyncio.get_running_loop() + self._broadcast_func = broadcast_func + + if self.backtest_mode: + self._start_backtest_mode() + elif self.mock_mode: + self._start_mock_mode() + else: + self._start_real_mode() + + logger.info( + f"Market service started: {self.mode_name}, tickers={self.tickers}", # noqa: E501 + ) + + def _make_price_callback(self) -> Callable: + """Create thread-safe price callback""" + + def callback(price_data: Dict[str, Any]): + symbol = price_data["symbol"] + self.cache[symbol] = price_data + + loop = self._loop + if loop and loop.is_running() and self._broadcast_func: + asyncio.run_coroutine_threadsafe( + self._broadcast_price_update(price_data), + loop, + ) + + return callback + + def _start_mock_mode(self): + from backend.data.mock_price_manager import MockPriceManager + + self._price_manager = MockPriceManager( + poll_interval=self.poll_interval, + volatility=0.5, + ) + self._price_manager.add_price_callback(self._make_price_callback()) + self._price_manager.subscribe( + self.tickers, + base_prices={t: 100.0 for t in self.tickers}, + ) + self._price_manager.start() + + def _start_real_mode(self): + from backend.data.polling_price_manager import PollingPriceManager + + if not self.api_key: + raise ValueError("API key required for live mode") + self._price_manager = PollingPriceManager( + api_key=self.api_key, + poll_interval=self.poll_interval, + ) + self._price_manager.add_price_callback(self._make_price_callback()) + self._price_manager.subscribe(self.tickers) + self._price_manager.start() + + def _start_backtest_mode(self): + from backend.data.historical_price_manager import ( + HistoricalPriceManager, + ) + + self._price_manager = HistoricalPriceManager() + self._price_manager.add_price_callback(self._make_price_callback()) + self._price_manager.subscribe(self.tickers) + + if self.backtest_start_date and self.backtest_end_date: + self._price_manager.preload_data( + self.backtest_start_date, + self.backtest_end_date, + ) + + self._price_manager.start() + + async def _broadcast_price_update(self, price_data: Dict[str, Any]): + """Broadcast price update to frontend""" + if not self._broadcast_func: + return + + symbol = price_data["symbol"] + price = price_data["price"] + open_price = price_data.get("open", price) + ret = ( + ((price - open_price) / open_price) * 100 if open_price > 0 else 0 + ) + + await self._broadcast_func( + { + "type": "price_update", + "symbol": symbol, + "price": price, + "open": open_price, + "ret": ret, + "timestamp": price_data.get("timestamp"), + "realtime_prices": { + t: self._get_cached_price(t) for t in self.tickers + }, + }, + ) + + def _get_cached_price(self, ticker: str) -> Dict[str, Any]: + """Get cached price data for a ticker""" + if ticker in self.cache: + return self.cache[ticker] + # Return from price manager if not in cache + if self._price_manager: + price = self._price_manager.get_latest_price(ticker) + if price: + return {"price": price, "symbol": ticker} + return {"price": 0, "symbol": ticker} + + def stop(self): + """Stop market service""" + if not self.running: + return + self.running = False + if self._price_manager: + self._price_manager.stop() + self._price_manager = None + self._loop = None + self._broadcast_func = None + + # Backtest methods + def set_backtest_date(self, date: str): + """Set current backtest date""" + if not self.backtest_mode or not self._price_manager: + return + self._current_date = date + self._price_manager.set_date(date) + logger.info(f"Backtest date: {date}") + + async def emit_market_open(self): + """Emit market open prices""" + if self.backtest_mode and self._price_manager: + self._price_manager.emit_open_prices() + # Log prices for debugging + prices = self.get_open_prices() + logger.info(f"Open prices: {prices}") + + async def emit_market_close(self): + """Emit market close prices""" + if self.backtest_mode and self._price_manager: + self._price_manager.emit_close_prices() + # Log prices for debugging + prices = self.get_close_prices() + logger.info(f"Close prices: {prices}") + + def get_open_prices(self) -> Dict[str, float]: + """Get open prices for all tickers""" + prices = {} + for ticker in self.tickers: + price = None + # Try price manager first + if self.backtest_mode and self._price_manager: + price = self._price_manager.get_open_price(ticker) + # Fallback to cache + if price is None or price <= 0: + cached = self.cache.get(ticker, {}) + price = cached.get("open") or cached.get("price") + prices[ticker] = price if price and price > 0 else 0.0 + return prices + + def get_close_prices(self) -> Dict[str, float]: + """Get close prices for all tickers""" + prices = {} + for ticker in self.tickers: + price = None + # Try price manager first + if self.backtest_mode and self._price_manager: + price = self._price_manager.get_close_price(ticker) + # Fallback to cache + if price is None or price <= 0: + cached = self.cache.get(ticker, {}) + price = cached.get("close") or cached.get("price") + prices[ticker] = price if price and price > 0 else 0.0 + return prices + + def get_price_for_date( + self, + ticker: str, + date: str, + price_type: str = "close", + ) -> Optional[float]: + """Get price for a specific date""" + if self.backtest_mode and self._price_manager: + return self._price_manager.get_price_for_date( + ticker, + date, + price_type, + ) + return self.get_price_sync(ticker) + + # Common methods + def get_price_sync(self, ticker: str) -> Optional[float]: + """Get latest price synchronously""" + # Try cache first + data = self.cache.get(ticker) + if data and data.get("price"): + return data["price"] + # Try price manager + if self._price_manager: + return self._price_manager.get_latest_price(ticker) + return None + + def get_all_prices(self) -> Dict[str, float]: + """Get all latest prices""" + prices = {} + for ticker in self.tickers: + price = self.get_price_sync(ticker) + prices[ticker] = price if price and price > 0 else 0.0 + return prices + + # Live mode async waiting methods + + def _now_nyse(self) -> datetime: + """Get current time in NYSE timezone""" + return datetime.now(NYSE_TZ) + + def _is_trading_day(self, date: datetime) -> bool: + """Check if date is a NYSE trading day""" + date_str = date.strftime("%Y-%m-%d") + valid_days = NYSE_CALENDAR.valid_days( + start_date=date_str, + end_date=date_str, + ) + return len(valid_days) > 0 + + def _get_market_hours(self, date: datetime) -> tuple: + """Get market open and close times for a given date""" + date_str = date.strftime("%Y-%m-%d") + schedule = NYSE_CALENDAR.schedule( + start_date=date_str, + end_date=date_str, + ) + if schedule.empty: + return None, None + market_open = schedule.iloc[0]["market_open"].to_pydatetime() + market_close = schedule.iloc[0]["market_close"].to_pydatetime() + return market_open, market_close + + def _next_trading_day(self, from_date: datetime) -> datetime: + """Find the next trading day from given date""" + check_date = from_date + timedelta(days=1) + for _ in range(10): # Max 10 days ahead (handles holidays) + if self._is_trading_day(check_date): + return check_date + check_date += timedelta(days=1) + return check_date + + def _get_trading_date_for_execution(self) -> tuple: + """ + Determine the trading date for execution. + + Returns: + (trading_date, market_open_time, market_close_time) + + Logic: + - If today is a trading day and market has opened: use today + - If today is a trading day but market hasn't opened: wait for open + - If today is not a trading day: use next trading day + """ + now = self._now_nyse() + today = now.replace(hour=0, minute=0, second=0, microsecond=0) + + if self._is_trading_day(today): + market_open, market_close = self._get_market_hours(today) + return today, market_open, market_close + else: + # Weekend or holiday - find next trading day + next_day = self._next_trading_day(today) + market_open, market_close = self._get_market_hours(next_day) + return next_day, market_open, market_close + + async def wait_for_open_prices(self) -> Dict[str, float]: + """ + Wait for market open and return open prices. + + Behavior: + - If market is already open today: return current prices immediately + - If market hasn't opened yet today: wait until open + - If not a trading day: wait until next trading day opens + """ + now = self._now_nyse() + trading_date, market_open, _ = self._get_trading_date_for_execution() + + if market_open is None: + logger.warning("Could not determine market hours") + return self.get_all_prices() + + trading_date_str = trading_date.strftime("%Y-%m-%d") + + # Check if we need to wait + if now < market_open: + wait_seconds = (market_open - now).total_seconds() + logger.info( + f"Waiting {wait_seconds/60:.1f} min for market open " + f"({trading_date_str} {market_open.strftime('%H:%M')} ET)", + ) + await asyncio.sleep(wait_seconds) + # Small delay to ensure prices are available + await asyncio.sleep(5) + else: + logger.info( + f"Market already open for {trading_date_str}, " + f"getting current prices", + ) + + # Poll until we have valid prices + prices = await self._poll_for_prices() + logger.info(f"Got open prices for {trading_date_str}: {prices}") + return prices + + async def wait_for_close_prices(self) -> Dict[str, float]: + """ + Wait for market close and return close prices. + + Behavior: + - If market is already closed today: return current prices immediately + - If market hasn't closed yet: wait until close + """ + now = self._now_nyse() + trading_date, _, market_close = self._get_trading_date_for_execution() + + if market_close is None: + logger.warning("Could not determine market hours") + return self.get_all_prices() + + trading_date_str = trading_date.strftime("%Y-%m-%d") + + # Check if we need to wait + if now < market_close: + wait_seconds = (market_close - now).total_seconds() + logger.info( + f"Waiting {wait_seconds/60:.1f} min for market close " + f"({trading_date_str} {market_close.strftime('%H:%M')} ET)", + ) + await asyncio.sleep(wait_seconds) + # Small delay to ensure final prices settle + await asyncio.sleep(10) + else: + logger.info( + f"Market already closed for {trading_date_str}, " + f"getting close prices", + ) + + # Get final prices + prices = await self._poll_for_prices() + logger.info(f"Got close prices for {trading_date_str}: {prices}") + return prices + + def get_live_trading_date(self) -> str: + """Get the trading date that will be used for live execution""" + trading_date, _, _ = self._get_trading_date_for_execution() + return trading_date.strftime("%Y-%m-%d") + + async def _poll_for_prices( + self, + max_retries: int = 12, + ) -> Dict[str, float]: + """Poll until all prices are available""" + for _ in range(max_retries): + prices = self.get_all_prices() + if all(p > 0 for p in prices.values()): + return prices + logger.debug("Waiting for prices to be available...") + await asyncio.sleep(5) + # Return whatever we have + return self.get_all_prices() + + # ========== Market Status Methods ========== + + def get_market_status(self) -> Dict[str, Any]: + """ + Get current market status + + Returns: + Dict with status info: + - status: 'open' | 'closed' | 'premarket' | 'afterhours' + - status_text: Human readable status + - is_trading_day: Whether today is a trading day + - market_open: Market open time (if trading day) + - market_close: Market close time (if trading day) + """ + if self.backtest_mode: + # In backtest mode, always return open + return { + "status": MarketStatus.OPEN, + "status_text": "Backtest Mode", + "is_trading_day": True, + } + + now = self._now_nyse() + today = now.replace(hour=0, minute=0, second=0, microsecond=0) + + is_trading = self._is_trading_day(today) + + if not is_trading: + return { + "status": MarketStatus.CLOSED, + "status_text": "Market Closed (Non-trading Day)", + "is_trading_day": False, + } + + market_open, market_close = self._get_market_hours(today) + + if market_open is None or market_close is None: + return { + "status": MarketStatus.CLOSED, + "status_text": "Market Closed", + "is_trading_day": is_trading, + } + + # Determine status based on current time + if now < market_open: + return { + "status": MarketStatus.PREMARKET, + "status_text": "Pre-Market", + "is_trading_day": True, + "market_open": market_open.isoformat(), + "market_close": market_close.isoformat(), + } + elif now > market_close: + return { + "status": MarketStatus.CLOSED, + "status_text": "Market Closed", + "is_trading_day": True, + "market_open": market_open.isoformat(), + "market_close": market_close.isoformat(), + } + else: + return { + "status": MarketStatus.OPEN, + "status_text": "Market Open", + "is_trading_day": True, + "market_open": market_open.isoformat(), + "market_close": market_close.isoformat(), + } + + async def check_and_broadcast_market_status(self): + """Check market status and broadcast if changed""" + status = self.get_market_status() + current_status = status["status"] + + if current_status != self._last_market_status: + self._last_market_status = current_status + await self._broadcast_market_status(status) + + # Handle session transitions + if current_status == MarketStatus.OPEN: + await self._on_session_start() + elif ( + current_status == MarketStatus.CLOSED + and self._session_start_values is not None + ): + self._on_session_end() + + async def _broadcast_market_status(self, status: Dict[str, Any]): + """Broadcast market status update to frontend""" + if not self._broadcast_func: + return + + await self._broadcast_func( + { + "type": "market_status_update", + "market_status": status, + "timestamp": datetime.now(NYSE_TZ).isoformat(), + }, + ) + logger.info(f"Market status: {status['status_text']}") + + async def _on_session_start(self): + """Called when market session starts - capture baseline values""" + # Wait briefly for prices to be available + await asyncio.sleep(2) + + prices = self.get_all_prices() + if prices and any(p > 0 for p in prices.values()): + self._session_start_values = prices.copy() + self._session_start_timestamp = int( + datetime.now().timestamp() * 1000, + ) + logger.info(f"Session started with prices: {prices}") + + def _on_session_end(self): + """Called when market session ends - clear session data""" + self._session_start_values = None + self._session_start_timestamp = None + logger.info("Session ended, cleared session data") + + def get_session_returns( + self, + current_prices: Dict[str, float], + portfolio_value: Optional[float] = None, + session_start_portfolio_value: Optional[float] = None, + ) -> Optional[Dict[str, Any]]: + """ + Calculate session returns (from session start to now) + + Args: + current_prices: Current prices for tickers + portfolio_value: Current portfolio value (optional) + session_start_portfolio_value: + + Returns: + Dict with return data or None if session not started + """ + if self._session_start_values is None: + return None + + timestamp = int(datetime.now().timestamp() * 1000) + returns = {} + + # Calculate individual ticker returns + for ticker, start_price in self._session_start_values.items(): + current = current_prices.get(ticker) + if current and start_price and start_price > 0: + ret = ((current - start_price) / start_price) * 100 + returns[ticker] = round(ret, 4) + + result = { + "timestamp": timestamp, + "ticker_returns": returns, + } + + # Calculate portfolio return if values provided + if ( + portfolio_value is not None + and session_start_portfolio_value is not None + ): + if session_start_portfolio_value > 0: + portfolio_ret = ( + (portfolio_value - session_start_portfolio_value) + / session_start_portfolio_value + ) * 100 + result["portfolio_return"] = round(portfolio_ret, 4) + + return result + + @property + def session_start_values(self) -> Optional[Dict[str, float]]: + """Get session start values for external use""" + return self._session_start_values + + @property + def session_start_timestamp(self) -> Optional[int]: + """Get session start timestamp""" + return self._session_start_timestamp diff --git a/evotraders/backend/services/storage.py b/evotraders/backend/services/storage.py new file mode 100644 index 0000000..30608d8 --- /dev/null +++ b/evotraders/backend/services/storage.py @@ -0,0 +1,1099 @@ +# -*- coding: utf-8 -*- +""" +Storage Service - Data persistence and dashboard file management +Handles reading/writing dashboard JSON files and portfolio state +""" +# pylint: disable=R0904 +import json +import logging +from datetime import datetime +from pathlib import Path +from typing import Any, Dict, List, Optional + +logger = logging.getLogger(__name__) + + +class StorageService: + """ + Storage service for data persistence + + Responsibilities: + 1. Load/save dashboard JSON files + (summary, holdings, stats, trades, leaderboard) + 2. Load/save internal state (_internal_state.json) + 3. Load/save server state (server_state.json) with feed history + 4. Manage portfolio state persistence + 5. Support loading from saved state to resume execution + """ + + def __init__( + self, + dashboard_dir: Path, + initial_cash: float = 100000.0, + config_name: str = "mock", + ): + """ + Initialize storage service + + Args: + dashboard_dir: Directory for dashboard files + initial_cash: Initial cash amount + config_name: Configuration name for state directory + """ + self.dashboard_dir = Path(dashboard_dir) + self.dashboard_dir.mkdir(parents=True, exist_ok=True) + self.initial_cash = initial_cash + self.config_name = config_name + + # Dashboard file paths + self.files = { + "summary": self.dashboard_dir / "summary.json", + "holdings": self.dashboard_dir / "holdings.json", + "stats": self.dashboard_dir / "stats.json", + "trades": self.dashboard_dir / "trades.json", + "leaderboard": self.dashboard_dir / "leaderboard.json", + } + + # Internal state file + self.internal_state_file = self.dashboard_dir / "_internal_state.json" + + # Server state directory and file + self.state_dir = self.dashboard_dir.parent / "state" + self.state_dir.mkdir(parents=True, exist_ok=True) + self.server_state_file = self.state_dir / "server_state.json" + + # Feed history (for agent messages) + self.max_feed_history = 200 + + # File modification time cache (for change detection) + self.file_mtimes: Dict[str, float] = {} + + # Live returns tracking (for current trading session) + self._session_start_equity: Optional[float] = None + self._session_start_baseline: Optional[float] = None + self._session_start_baseline_vw: Optional[float] = None + self._session_start_momentum: Optional[float] = None + self._live_return_history: List[Dict[str, Any]] = [] + + logger.info(f"Storage service initialized: {self.dashboard_dir}") + + def load_file(self, file_type: str) -> Optional[Any]: + """ + Load dashboard JSON file + + Args: + file_type: One of: summary, holdings, stats, trades, leaderboard + + Returns: + Loaded data or None if file doesn't exist + """ + file_path = self.files.get(file_type) + if not file_path or not file_path.exists(): + return None + + try: + with open(file_path, "r", encoding="utf-8") as f: + return json.load(f) + except Exception as e: + logger.error(f"Failed to load {file_type}.json: {e}") + return None + + def save_file(self, file_type: str, data: Any): + """ + Save dashboard JSON file + + Args: + file_type: One of: summary, holdings, stats, trades, leaderboard + data: Data to save + """ + file_path = self.files.get(file_type) + if not file_path: + logger.error(f"Unknown file type: {file_type}") + return + + try: + with open(file_path, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2, ensure_ascii=False) + except Exception as e: + logger.error(f"Failed to save {file_type}.json: {e}") + + def check_file_updates(self) -> Dict[str, bool]: + """ + Check which dashboard files have been updated since last check + + Returns: + Dictionary mapping file_type to whether it was updated + """ + updated = {} + + for file_type, file_path in self.files.items(): + if not file_path.exists(): + updated[file_type] = False + continue + + try: + current_mtime = file_path.stat().st_mtime + last_mtime = self.file_mtimes.get(file_type, 0) + + if current_mtime > last_mtime: + updated[file_type] = True + self.file_mtimes[file_type] = current_mtime + else: + updated[file_type] = False + except Exception as e: + logger.error(f"Failed to check file update ({file_type}): {e}") + updated[file_type] = False + + return updated + + def load_internal_state(self) -> Dict[str, Any]: + """ + Load internal state from file + + Returns: + Internal state dictionary with default values + """ + default_state = { + "baseline_state": {"initialized": False, "initial_allocation": {}}, + "baseline_vw_state": { + "initialized": False, + "initial_allocation": {}, + }, + "momentum_state": { + "positions": {}, + "cash": 0.0, + "initialized": False, + }, + "equity_history": [], + "baseline_history": [], + "baseline_vw_history": [], + "momentum_history": [], + "price_history": {}, + "portfolio_state": { + "cash": self.initial_cash, + "positions": {}, + "margin_used": 0.0, + }, + "all_trades": [], + "daily_position_history": {}, + } + + if not self.internal_state_file.exists(): + return default_state + + try: + with open(self.internal_state_file, "r", encoding="utf-8") as f: + data = json.load(f) + + # Merge with defaults + for key, value in default_state.items(): + data.setdefault(key, value) + + logger.info("Loaded internal state from file") + return data + + except Exception as e: + logger.warning( + f"Failed to load internal state, using defaults: {e}", + ) + return default_state + + def save_internal_state(self, state: Dict[str, Any]): + """ + Save internal state to file + + Args: + state: Internal state dictionary + """ + if not state: + return + + try: + with open(self.internal_state_file, "w", encoding="utf-8") as f: + json.dump(state, f, indent=2, ensure_ascii=False) + except Exception as e: + logger.error(f"Failed to save internal state: {e}") + + def load_portfolio_state(self) -> Dict[str, Any]: + """ + Load portfolio state from internal state + + Returns: + Portfolio state dictionary: {cash, positions, margin_used} + """ + internal_state = self.load_internal_state() + portfolio_state = internal_state.get("portfolio_state", {}) + + return { + "cash": portfolio_state.get("cash", self.initial_cash), + "positions": portfolio_state.get("positions", {}), + "margin_used": portfolio_state.get("margin_used", 0.0), + "margin_requirement": 0.25, # Default 25% margin requirement + } + + def save_portfolio_state(self, portfolio: Dict[str, Any]): + """ + Save portfolio state to internal state + + Args: + portfolio: Portfolio dictionary + """ + internal_state = self.load_internal_state() + internal_state["portfolio_state"] = { + "cash": portfolio.get("cash", 0.0), + "positions": portfolio.get("positions", {}), + "margin_used": portfolio.get("margin_used", 0.0), + } + self.save_internal_state(internal_state) + + def initialize_empty_dashboard(self): + """Initialize empty dashboard files with default values""" + # Summary + self.save_file( + "summary", + { + "totalAssetValue": self.initial_cash, + "totalReturn": 0.0, + "cashPosition": self.initial_cash, + "tickerWeights": {}, + "totalTrades": 0, + "pnlPct": 0.0, + "balance": self.initial_cash, + "equity": [], + "baseline": [], + "baseline_vw": [], + "momentum": [], + }, + ) + + # Holdings + self.save_file("holdings", []) + + # Stats + self.save_file( + "stats", + { + "totalAssetValue": self.initial_cash, + "totalReturn": 0.0, + "cashPosition": self.initial_cash, + "tickerWeights": {}, + "totalTrades": 0, + "winRate": 0.0, + "bullBear": { + "bull": {"n": 0, "win": 0}, + "bear": {"n": 0, "win": 0}, + }, + }, + ) + + # Trades + self.save_file("trades", []) + + # Leaderboard with model info + self.generate_leaderboard() + + logger.info("Initialized empty dashboard") + + def generate_leaderboard(self): + """Generate leaderboard with agent model info from environment""" + from ..config.constants import AGENT_CONFIG + from ..llm.models import get_agent_model_info + + leaderboard = [] + ranking_entries = [] + team_entries = [] + + for agent_id, config in AGENT_CONFIG.items(): + model_name, model_provider = get_agent_model_info(agent_id) + + entry = { + "agentId": agent_id, + "name": config["name"], + "role": config["role"], + "avatar": config["avatar"], + "rank": None if config["is_team_role"] else 0, + "winRate": None, + "bull": {"n": 0, "win": 0, "unknown": 0}, + "bear": {"n": 0, "win": 0, "unknown": 0}, + "logs": [], + "signals": [], + "modelName": model_name, + "modelProvider": model_provider, + } + + if config["is_team_role"]: + team_entries.append(entry) + else: + ranking_entries.append(entry) + + leaderboard = team_entries + ranking_entries + self.save_file("leaderboard", leaderboard) + logger.info("Leaderboard generated with model info") + + def update_leaderboard_model_info(self): + """ + Update model info in existing leaderboard (preserves performance data) + """ + from ..config.constants import AGENT_CONFIG + from ..llm.models import get_agent_model_info + + existing = self.load_file("leaderboard") or [] + + if not existing: + self.generate_leaderboard() + return + + for entry in existing: + agent_id = entry.get("agentId") + if agent_id and agent_id in AGENT_CONFIG: + model_name, model_provider = get_agent_model_info(agent_id) + entry["modelName"] = model_name + entry["modelProvider"] = model_provider + + self.save_file("leaderboard", existing) + logger.info("Leaderboard model info updated") + + def get_current_timestamp_ms(self, date: str = None) -> int: + """ + Get timestamp in milliseconds from date string or current time + + Args: + date: Optional date string (YYYY-MM-DD) for backtest compatibility. + Uses market close time (16:00) for the timestamp. + + Returns: + Timestamp in milliseconds + """ + if date: + # Parse date and use market close time (16:00) for backtest + dt = datetime.strptime(f"{date} 16:00:00", "%Y-%m-%d %H:%M:%S") + return int(dt.timestamp() * 1000) + return int(datetime.now().timestamp() * 1000) + + def calculate_portfolio_value( + self, + portfolio: Dict[str, Any], + prices: Dict[str, float], + ) -> float: + """ + Calculate total portfolio value (net asset value) + + Args: + portfolio: Portfolio state with cash and positions + prices: Current prices for each ticker + + Returns: + Total portfolio value + """ + cash = portfolio.get("cash", 0.0) + margin_used = portfolio.get("margin_used", 0.0) + total = cash + margin_used + + positions = portfolio.get("positions", {}) + for ticker, position in positions.items(): + price = prices.get(ticker, 0) + if price > 0: + long_qty = position.get("long", 0) + short_qty = position.get("short", 0) + total += long_qty * price + total -= short_qty * price + + return total + + def update_dashboard_after_cycle( + self, + portfolio: Dict[str, Any], + prices: Dict[str, float], + date: str, + executed_trades: List[Dict[str, Any]] = None, + baseline_values: Optional[Dict[str, float]] = None, + ): + """ + Update all dashboard files after a trading cycle + + Args: + portfolio: Current portfolio state + prices: Current prices for each ticker + date: Trading date (YYYY-MM-DD) + executed_trades: List of executed trades + [{ticker, action, quantity, price}] + baseline_values: Optional baseline portfolio values from settlement + {equal_weight, market_cap_weighted, momentum} + """ + # Use provided date for timestamp (backtest compatible) + timestamp_ms = self.get_current_timestamp_ms(date) + + net_value = self.calculate_portfolio_value(portfolio, prices) + + state = self.load_internal_state() + + # Initialize all histories + for key in [ + "equity_history", + "baseline_history", + "baseline_vw_history", + "momentum_history", + ]: + if key not in state: + state[key] = [] + + # Add initial points if empty (all histories should start together) + if len(state["equity_history"]) == 0: + initial_point = { + "t": timestamp_ms - 86400000, + "v": round(self.initial_cash, 2), + } + state["equity_history"].append(initial_point) + state["baseline_history"].append(initial_point.copy()) + state["baseline_vw_history"].append(initial_point.copy()) + state["momentum_history"].append(initial_point.copy()) + + # Add current data points - all histories updated together + state["equity_history"].append( + { + "t": timestamp_ms, + "v": round(net_value, 2), + }, + ) + + # If baseline_values provided, use them; + # otherwise forward-fill from last value + if baseline_values: + state["baseline_history"].append( + { + "t": timestamp_ms, + "v": round( + baseline_values.get("equal_weight", self.initial_cash), + 2, + ), + }, + ) + state["baseline_vw_history"].append( + { + "t": timestamp_ms, + "v": round( + baseline_values.get( + "market_cap_weighted", + self.initial_cash, + ), + 2, + ), + }, + ) + state["momentum_history"].append( + { + "t": timestamp_ms, + "v": round( + baseline_values.get("momentum", self.initial_cash), + 2, + ), + }, + ) + else: + # Forward-fill: use last known value + last_baseline = ( + state["baseline_history"][-1]["v"] + if state["baseline_history"] + else self.initial_cash + ) + last_baseline_vw = ( + state["baseline_vw_history"][-1]["v"] + if state["baseline_vw_history"] + else self.initial_cash + ) + last_momentum = ( + state["momentum_history"][-1]["v"] + if state["momentum_history"] + else self.initial_cash + ) + + state["baseline_history"].append( + {"t": timestamp_ms, "v": last_baseline}, + ) + state["baseline_vw_history"].append( + {"t": timestamp_ms, "v": last_baseline_vw}, + ) + state["momentum_history"].append( + {"t": timestamp_ms, "v": last_momentum}, + ) + + state["portfolio_state"] = { + "cash": portfolio.get("cash", 0.0), + "positions": portfolio.get("positions", {}), + "margin_used": portfolio.get("margin_used", 0.0), + } + + # Update trades with structured data + if executed_trades: + if "all_trades" not in state: + state["all_trades"] = [] + + for i, trade in enumerate(executed_trades): + action = trade.get("action", "hold") + side = ( + "LONG" + if action == "long" + else "SHORT" + if action == "short" + else "HOLD" + ) + + trade_id = ( + f"t_{date.replace('-', '')}_{trade.get('ticker', '')}_{i}" + ) + state["all_trades"].append( + { + "id": trade_id, + "ts": timestamp_ms, + "trading_date": date, + "side": side, + "ticker": trade.get("ticker", ""), + "qty": trade.get("quantity", 0), + "price": round(trade.get("price", 0), 2), + }, + ) + + state["last_update_date"] = date + + self.save_internal_state(state) + + self._generate_summary(state, net_value, prices) + self._generate_holdings(state, prices) + self._generate_stats(state, net_value) + self._generate_trades(state) + + logger.info(f"Dashboard updated: net_value=${net_value:,.2f}") + + def _generate_summary( + self, + state: Dict[str, Any], + net_value: float, + prices: Dict[str, float], + ): + """Generate summary.json""" + portfolio_state = state.get("portfolio_state", {}) + cash = portfolio_state.get("cash", self.initial_cash) + + # Calculate ticker weights + positions = portfolio_state.get("positions", {}) + ticker_weights = {} + + for ticker, position in positions.items(): + price = prices.get(ticker, 0) + if price > 0 and net_value > 0: + long_qty = position.get("long", 0) + short_qty = position.get("short", 0) + position_value = (long_qty - short_qty) * price + ticker_weights[ticker] = round(position_value / net_value, 4) + + # Calculate return + total_return = ( + (net_value - self.initial_cash) / self.initial_cash + ) * 100 + + summary = { + "totalAssetValue": round(net_value, 2), + "totalReturn": round(total_return, 2), + "cashPosition": round(cash, 2), + "tickerWeights": ticker_weights, + "totalTrades": len(state.get("all_trades", [])), + "pnlPct": round(total_return, 2), + "balance": round(net_value, 2), + "equity": state.get("equity_history", []), + "baseline": state.get("baseline_history", []), + "baseline_vw": state.get("baseline_vw_history", []), + "momentum": state.get("momentum_history", []), + } + + self.save_file("summary", summary) + + def _generate_holdings( + self, + state: Dict[str, Any], + prices: Dict[str, float], + ): + """Generate holdings.json""" + portfolio_state = state.get("portfolio_state", {}) + positions = portfolio_state.get("positions", {}) + cash = portfolio_state.get("cash", self.initial_cash) + margin_used = portfolio_state.get("margin_used", 0.0) + + # Calculate total value + total_value = cash + margin_used + for ticker, position in positions.items(): + price = prices.get(ticker, 0) + if price > 0: + long_qty = position.get("long", 0) + short_qty = position.get("short", 0) + total_value += (long_qty - short_qty) * price + + holdings = [] + + # Add stock positions + for ticker, position in positions.items(): + price = prices.get(ticker, 0) + long_qty = position.get("long", 0) + short_qty = position.get("short", 0) + net_qty = long_qty - short_qty + + if net_qty != 0 and price > 0: + market_value = net_qty * price + weight = ( + abs(market_value) / total_value if total_value > 0 else 0 + ) + + holdings.append( + { + "ticker": ticker, + "quantity": net_qty, + "currentPrice": round(price, 2), + "marketValue": round(market_value, 2), + "weight": round(weight, 4), + }, + ) + + # Add cash + cash_weight = cash / total_value if total_value > 0 else 0 + holdings.append( + { + "ticker": "CASH", + "quantity": 1, + "currentPrice": round(cash, 2), + "marketValue": round(cash, 2), + "weight": round(cash_weight, 4), + }, + ) + + # Sort by weight + holdings.sort(key=lambda x: abs(x["weight"]), reverse=True) + + self.save_file("holdings", holdings) + + def _generate_stats(self, state: Dict[str, Any], net_value: float): + """Generate stats.json""" + portfolio_state = state.get("portfolio_state", {}) + cash = portfolio_state.get("cash", self.initial_cash) + total_return = ( + (net_value - self.initial_cash) / self.initial_cash + ) * 100 + + stats = { + "totalAssetValue": round(net_value, 2), + "totalReturn": round(total_return, 2), + "cashPosition": round(cash, 2), + "tickerWeights": {}, + "totalTrades": len(state.get("all_trades", [])), + "winRate": 0.0, + "bullBear": { + "bull": {"n": 0, "win": 0}, + "bear": {"n": 0, "win": 0}, + }, + } + + self.save_file("stats", stats) + + def _generate_trades(self, state: Dict[str, Any]): + """Generate trades.json""" + all_trades = state.get("all_trades", []) + + sorted_trades = sorted( + all_trades, + key=lambda x: x.get("ts", 0), + reverse=True, + ) + + trades = [] + for trade in sorted_trades[:100]: + trades.append( + { + "id": trade.get("id"), + "timestamp": trade.get("ts"), + "trading_date": trade.get("trading_date"), + "side": trade.get("side", ""), + "ticker": trade.get("ticker", ""), + "qty": trade.get("qty", 0), + "price": trade.get("price", 0), + }, + ) + + self.save_file("trades", trades) + + # Server State Management Methods + + def load_server_state(self) -> Dict[str, Any]: + """ + Load server state from file + + Returns: + Server state dictionary with feed_history and other data + """ + default_state = { + "status": "initializing", + "current_date": None, + "portfolio": { + "total_value": self.initial_cash, + "cash": self.initial_cash, + "pnl_percent": 0.0, + "equity": [], + "baseline": [], + "baseline_vw": [], + "momentum": [], + "strategies": [], + }, + "holdings": [], + "trades": [], + "stats": self._get_default_stats(), + "leaderboard": [], + "realtime_prices": {}, + "system_started": datetime.now().isoformat(), + "feed_history": [], + "last_day_history": [], + "trading_days_total": 0, + "trading_days_completed": 0, + } + + if not self.server_state_file.exists(): + return default_state + + with open(self.server_state_file, "r", encoding="utf-8") as f: + saved_state = json.load(f) + + # Merge with defaults to ensure all fields exist + for key, value in default_state.items(): + saved_state.setdefault(key, value) + + logger.info(f"Server state loaded from: {self.server_state_file}") + logger.info( + f"Feed history: {len(saved_state.get('feed_history', []))} messages", # noqa: E501 + ) + logger.info( + f"Holdings: {len(saved_state.get('holdings', []))} items", + ) + logger.info(f"Trades: {len(saved_state.get('trades', []))} records") + + return saved_state + + def save_server_state(self, state: Dict[str, Any]): + """ + Save server state to file + + Args: + state: Server state dictionary + """ + state_to_save = { + **state, + "last_saved": datetime.now().isoformat(), + } + + # Limit feed_history size + if "feed_history" in state_to_save: + state_to_save["feed_history"] = state_to_save["feed_history"][ + : self.max_feed_history + ] + + # Limit trades + if "trades" in state_to_save: + state_to_save["trades"] = state_to_save["trades"][:100] + + with open(self.server_state_file, "w", encoding="utf-8") as f: + json.dump( + state_to_save, + f, + ensure_ascii=False, + indent=2, + default=str, + ) + + logger.debug(f"Server state saved to: {self.server_state_file}") + + def add_feed_message( + self, + state: Dict[str, Any], + event: Dict[str, Any], + ) -> bool: + """ + Add a message to feed history + + Args: + state: Server state dictionary to update + event: Event dictionary with type, content, etc. + + Returns: + True if message was added, False if filtered out + """ + event_type = event.get("type", "") + + # Types to save in feed history + save_types = { + "system", + "agent_message", + "day_start", + "day_complete", + "day_error", + "team_summary", + "conference_start", + "conference_message", + "conference_end", + "memory", + } + + if event_type not in save_types: + return False + + # Ensure timestamp exists + if "timestamp" not in event: + event["timestamp"] = datetime.now().isoformat() + + # Store event directly (flat structure, no metadata wrapper) + feed_msg = dict(event) + + # Insert at beginning (newest first) + if "feed_history" not in state: + state["feed_history"] = [] + + state["feed_history"].insert(0, feed_msg) + + # Trim to max size + if len(state["feed_history"]) > self.max_feed_history: + state["feed_history"] = state["feed_history"][ + : self.max_feed_history + ] + + return True + + def _get_default_stats(self) -> Dict[str, Any]: + """Get default stats structure""" + return { + "totalAssetValue": 0.0, + "totalReturn": -100.0, + "cashPosition": 0.0, + "tickerWeights": {}, + "totalTrades": 0, + "winRate": 0.0, + "bullBear": { + "bull": {"n": 0, "win": 0}, + "bear": {"n": 0, "win": 0}, + }, + } + + def update_server_state_from_dashboard(self, state: Dict[str, Any]): + """ + Update server state with current dashboard data + + Args: + state: Server state dictionary to update + """ + # Load dashboard data + summary = self.load_file("summary") or {} + holdings = self.load_file("holdings") or [] + stats = self.load_file("stats") or self._get_default_stats() + trades = self.load_file("trades") or [] + leaderboard = self.load_file("leaderboard") or [] + + # Update state + state["portfolio"] = { + "total_value": summary.get("totalAssetValue", self.initial_cash), + "cash": summary.get("cashPosition", self.initial_cash), + "pnl_percent": summary.get("pnlPct", 0.0), + "equity": summary.get("equity", []), + "baseline": summary.get("baseline", []), + "baseline_vw": summary.get("baseline_vw", []), + "momentum": summary.get("momentum", []), + "strategies": [], + # Live returns (will be populated when session is active) + "equity_return": [], + "baseline_return": [], + "baseline_vw_return": [], + "momentum_return": [], + } + state["holdings"] = holdings + state["stats"] = stats + state["trades"] = trades + state["leaderboard"] = leaderboard + + # ========== Live Returns Tracking ========== + + def start_live_session(self): + """ + Start tracking live returns for current trading session. + Captures current values as session start baseline. + """ + summary = self.load_file("summary") or {} + state = self.load_internal_state() + + # Capture current values as session start + equity_history = state.get("equity_history", []) + baseline_history = state.get("baseline_history", []) + baseline_vw_history = state.get("baseline_vw_history", []) + momentum_history = state.get("momentum_history", []) + + self._session_start_equity = ( + equity_history[-1]["v"] + if equity_history + else summary.get("totalAssetValue", self.initial_cash) + ) + self._session_start_baseline = ( + baseline_history[-1]["v"] + if baseline_history + else self.initial_cash + ) + self._session_start_baseline_vw = ( + baseline_vw_history[-1]["v"] + if baseline_vw_history + else self.initial_cash + ) + self._session_start_momentum = ( + momentum_history[-1]["v"] + if momentum_history + else self.initial_cash + ) + + # Clear live return history + self._live_return_history = [] + + # Add starting point at 0% + timestamp = int(datetime.now().timestamp() * 1000) + self._live_return_history.append( + { + "t": timestamp, + "equity": 0.0, + "baseline": 0.0, + "baseline_vw": 0.0, + "momentum": 0.0, + }, + ) + + logger.info( + "Live session started: " + f"equity=${self._session_start_equity:,.2f}, " + f"baseline=${self._session_start_baseline:,.2f}", + ) + + def end_live_session(self): + """End live returns tracking session""" + self._session_start_equity = None + self._session_start_baseline = None + self._session_start_baseline_vw = None + self._session_start_momentum = None + self._live_return_history = [] + logger.info("Live session ended") + + def update_live_returns( + self, + current_equity: Optional[float] = None, + current_baseline: Optional[float] = None, + current_baseline_vw: Optional[float] = None, + current_momentum: Optional[float] = None, + ) -> Optional[Dict[str, Any]]: + """ + Update live returns with current values. + + Args: + current_equity: Current portfolio value + current_baseline: Current EW baseline value + current_baseline_vw: Current VW baseline value + current_momentum: Current momentum strategy value + + Returns: + Dict with live return data point or None if session not active + """ + if ( + self._session_start_equity is None + or self._session_start_baseline is None + or self._session_start_baseline_vw is None + or self._session_start_momentum is None + ): + return None + + timestamp = int(datetime.now().timestamp() * 1000) + point = {"t": timestamp} + + # Calculate returns (only if we have valid values) + if current_equity is not None and self._session_start_equity > 0: + ret = ( + (current_equity - self._session_start_equity) + / self._session_start_equity + ) * 100 + point["equity"] = round(ret, 4) + + if current_baseline is not None and self._session_start_baseline > 0: + ret = ( + (current_baseline - self._session_start_baseline) + / self._session_start_baseline + ) * 100 + point["baseline"] = round(ret, 4) + + if ( + current_baseline_vw is not None + and self._session_start_baseline_vw > 0 + ): + ret = ( + (current_baseline_vw - self._session_start_baseline_vw) + / self._session_start_baseline_vw + ) * 100 + point["baseline_vw"] = round(ret, 4) + + if current_momentum is not None and self._session_start_momentum > 0: + ret = ( + (current_momentum - self._session_start_momentum) + / self._session_start_momentum + ) * 100 + point["momentum"] = round(ret, 4) + + # Only add point if we have at least one return value + if any(k != "t" for k in point): + self._live_return_history.append(point) + # Limit history size + if len(self._live_return_history) > 500: + self._live_return_history = self._live_return_history[-500:] + return point + + return None + + def get_live_returns(self) -> Dict[str, List[Dict[str, Any]]]: + """ + Get live return curves for the current session. + + Returns: + Dict with separate arrays for each strategy: + - equity_return: [{t, v}, ...] + - baseline_return: [{t, v}, ...] + - baseline_vw_return: [{t, v}, ...] + - momentum_return: [{t, v}, ...] + """ + if not self._live_return_history: + return { + "equity_return": [], + "baseline_return": [], + "baseline_vw_return": [], + "momentum_return": [], + } + + # Convert combined history to separate arrays + equity_return = [] + baseline_return = [] + baseline_vw_return = [] + momentum_return = [] + + for point in self._live_return_history: + t = point["t"] + if "equity" in point: + equity_return.append({"t": t, "v": point["equity"]}) + if "baseline" in point: + baseline_return.append({"t": t, "v": point["baseline"]}) + if "baseline_vw" in point: + baseline_vw_return.append({"t": t, "v": point["baseline_vw"]}) + if "momentum" in point: + momentum_return.append({"t": t, "v": point["momentum"]}) + + return { + "equity_return": equity_return, + "baseline_return": baseline_return, + "baseline_vw_return": baseline_vw_return, + "momentum_return": momentum_return, + } + + @property + def is_live_session_active(self) -> bool: + """Check if live session is active""" + return self._session_start_equity is not None diff --git a/evotraders/backend/tests/__init__.py b/evotraders/backend/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/evotraders/backend/tests/test_agents.py b/evotraders/backend/tests/test_agents.py new file mode 100644 index 0000000..a426fec --- /dev/null +++ b/evotraders/backend/tests/test_agents.py @@ -0,0 +1,580 @@ +# -*- coding: utf-8 -*- +# pylint: disable=W0212 +import json +import tempfile +from pathlib import Path +from unittest.mock import MagicMock + +import pytest +from agentscope.message import Msg + + +class TestAnalystAgent: + def test_init_valid_analyst_type(self): + from backend.agents.analyst import AnalystAgent + + mock_toolkit = MagicMock() + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = AnalystAgent( + analyst_type="technical_analyst", + toolkit=mock_toolkit, + model=mock_model, + formatter=mock_formatter, + ) + + assert agent.analyst_type_key == "technical_analyst" + assert agent.name == "technical_analyst_analyst" + assert agent.analyst_persona == "Technical Analyst" + + def test_init_invalid_analyst_type(self): + from backend.agents.analyst import AnalystAgent + + mock_toolkit = MagicMock() + mock_model = MagicMock() + mock_formatter = MagicMock() + + with pytest.raises(ValueError) as excinfo: + AnalystAgent( + analyst_type="invalid_type", + toolkit=mock_toolkit, + model=mock_model, + formatter=mock_formatter, + ) + + assert "Unknown analyst type" in str(excinfo.value) + + def test_init_custom_agent_id(self): + from backend.agents.analyst import AnalystAgent + + mock_toolkit = MagicMock() + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = AnalystAgent( + analyst_type="fundamentals_analyst", + toolkit=mock_toolkit, + model=mock_model, + formatter=mock_formatter, + agent_id="custom_analyst_id", + ) + + assert agent.name == "custom_analyst_id" + + def test_load_system_prompt(self): + from backend.agents.analyst import AnalystAgent + + mock_toolkit = MagicMock() + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = AnalystAgent( + analyst_type="sentiment_analyst", + toolkit=mock_toolkit, + model=mock_model, + formatter=mock_formatter, + ) + + prompt = agent._load_system_prompt() + assert isinstance(prompt, str) + assert len(prompt) > 0 + + +class TestPMAgent: + def test_init_default(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + assert agent.name == "portfolio_manager" + assert agent.portfolio["cash"] == 100000.0 + assert agent.portfolio["positions"] == {} + assert agent.portfolio["margin_requirement"] == 0.25 + + def test_init_custom_cash(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + initial_cash=50000.0, + margin_requirement=0.5, + ) + + assert agent.portfolio["cash"] == 50000.0 + assert agent.portfolio["margin_requirement"] == 0.5 + + def test_get_portfolio_state(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + initial_cash=75000.0, + ) + + state = agent.get_portfolio_state() + + assert state["cash"] == 75000.0 + assert state is not agent.portfolio # Should be a copy + + def test_load_portfolio_state(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + new_portfolio = { + "cash": 50000.0, + "positions": { + "AAPL": {"long": 100, "short": 0, "long_cost_basis": 150.0}, + }, + "margin_used": 1000.0, + } + + agent.load_portfolio_state(new_portfolio) + + assert agent.portfolio["cash"] == 50000.0 + assert "AAPL" in agent.portfolio["positions"] + + def test_update_portfolio(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + agent.update_portfolio({"cash": 80000.0}) + assert agent.portfolio["cash"] == 80000.0 + + def _get_text_from_tool_response(self, result): + """Helper to extract text from ToolResponse content""" + content = result.content[0] + if hasattr(content, "text"): + return content.text + elif isinstance(content, dict): + return content.get("text", "") + return str(content) + + def test_make_decision_long(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + result = agent._make_decision( + ticker="AAPL", + action="long", + quantity=100, + confidence=80, + reasoning="Strong fundamentals", + ) + + text = self._get_text_from_tool_response(result) + assert "Decision recorded" in text + assert agent._decisions["AAPL"]["action"] == "long" + assert agent._decisions["AAPL"]["quantity"] == 100 + + def test_make_decision_hold(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + result = agent._make_decision( + ticker="GOOGL", + action="hold", + quantity=0, + confidence=50, + reasoning="Neutral outlook", + ) + + text = self._get_text_from_tool_response(result) + assert "Decision recorded" in text + assert agent._decisions["GOOGL"]["action"] == "hold" + assert agent._decisions["GOOGL"]["quantity"] == 0 + + def test_make_decision_invalid_action(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + result = agent._make_decision( + ticker="AAPL", + action="invalid", + quantity=10, + ) + + text = self._get_text_from_tool_response(result) + assert "Invalid action" in text + + def test_get_decisions(self): + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = PMAgent( + model=mock_model, + formatter=mock_formatter, + ) + + agent._make_decision("AAPL", "long", 100) + agent._make_decision("GOOGL", "short", 50) + + decisions = agent.get_decisions() + assert len(decisions) == 2 + assert decisions["AAPL"]["action"] == "long" + assert decisions["GOOGL"]["action"] == "short" + + +class TestRiskAgent: + def test_init_default(self): + from backend.agents.risk_manager import RiskAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = RiskAgent( + model=mock_model, + formatter=mock_formatter, + ) + + assert agent.name == "risk_manager" + + def test_init_custom_name(self): + from backend.agents.risk_manager import RiskAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = RiskAgent( + model=mock_model, + formatter=mock_formatter, + name="custom_risk_manager", + ) + + assert agent.name == "custom_risk_manager" + + def test_load_system_prompt(self): + from backend.agents.risk_manager import RiskAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + agent = RiskAgent( + model=mock_model, + formatter=mock_formatter, + ) + + prompt = agent._load_system_prompt() + assert isinstance(prompt, str) + assert len(prompt) > 0 + + +class TestStorageService: + def test_calculate_portfolio_value_cash_only(self): + from backend.services.storage import StorageService + + with tempfile.TemporaryDirectory() as tmpdir: + storage = StorageService( + dashboard_dir=Path(tmpdir), + initial_cash=100000.0, + ) + + portfolio = {"cash": 100000.0, "positions": {}, "margin_used": 0.0} + prices = {} + + value = storage.calculate_portfolio_value(portfolio, prices) + assert value == 100000.0 + + def test_calculate_portfolio_value_with_positions(self): + from backend.services.storage import StorageService + + with tempfile.TemporaryDirectory() as tmpdir: + storage = StorageService( + dashboard_dir=Path(tmpdir), + initial_cash=100000.0, + ) + + portfolio = { + "cash": 50000.0, + "positions": { + "AAPL": {"long": 100, "short": 0}, + "GOOGL": {"long": 0, "short": 10}, + }, + "margin_used": 5000.0, + } + prices = {"AAPL": 150.0, "GOOGL": 100.0} + + value = storage.calculate_portfolio_value(portfolio, prices) + assert value == 69000.0 + + def test_update_dashboard_after_cycle(self): + from backend.services.storage import StorageService + + with tempfile.TemporaryDirectory() as tmpdir: + storage = StorageService( + dashboard_dir=Path(tmpdir), + initial_cash=100000.0, + ) + + portfolio = { + "cash": 90000.0, + "positions": {"AAPL": {"long": 50, "short": 0}}, + "margin_used": 0.0, + } + prices = {"AAPL": 200.0} + + storage.update_dashboard_after_cycle( + portfolio=portfolio, + prices=prices, + date="2024-01-15", + executed_trades=[ + { + "ticker": "AAPL", + "action": "long", + "quantity": 50, + "price": 200.0, + }, + ], + ) + + summary = storage.load_file("summary") + assert summary is not None + assert summary["totalAssetValue"] == 100000.0 # 90000 + 50*200 + + holdings = storage.load_file("holdings") + assert holdings is not None + assert len(holdings) > 0 + + trades = storage.load_file("trades") + assert trades is not None + assert len(trades) == 1 + assert trades[0]["ticker"] == "AAPL" + assert trades[0]["qty"] == 50 + assert trades[0]["price"] == 200.0 + + def test_generate_summary(self): + from backend.services.storage import StorageService + + with tempfile.TemporaryDirectory() as tmpdir: + storage = StorageService( + dashboard_dir=Path(tmpdir), + initial_cash=100000.0, + ) + + state = { + "portfolio_state": { + "cash": 50000.0, + "positions": {"AAPL": {"long": 100, "short": 0}}, + "margin_used": 0.0, + }, + "equity_history": [{"t": 1000, "v": 100000}], + "all_trades": [], + } + prices = {"AAPL": 500.0} + + storage._generate_summary(state, 100000.0, prices) + + summary = storage.load_file("summary") + assert summary["totalAssetValue"] == 100000.0 + assert summary["totalReturn"] == 0.0 + + def test_generate_holdings(self): + from backend.services.storage import StorageService + + with tempfile.TemporaryDirectory() as tmpdir: + storage = StorageService( + dashboard_dir=Path(tmpdir), + initial_cash=100000.0, + ) + + state = { + "portfolio_state": { + "cash": 50000.0, + "positions": {"AAPL": {"long": 100, "short": 0}}, + "margin_used": 0.0, + }, + } + prices = {"AAPL": 500.0} + + storage._generate_holdings(state, prices) + + holdings = storage.load_file("holdings") + assert len(holdings) == 2 # AAPL + CASH + + aapl_holding = next( + (h for h in holdings if h["ticker"] == "AAPL"), + None, + ) + assert aapl_holding is not None + assert aapl_holding["quantity"] == 100 + assert aapl_holding["currentPrice"] == 500.0 + + +class TestTradeExecutor: + def test_execute_trade_long(self): + from backend.utils.trade_executor import PortfolioTradeExecutor + + executor = PortfolioTradeExecutor( + initial_portfolio={ + "cash": 100000.0, + "positions": {}, + "margin_requirement": 0.25, + "margin_used": 0.0, + }, + ) + + result = executor.execute_trade( + ticker="AAPL", + action="long", + quantity=10, + price=150.0, + ) + + assert result["status"] == "success" + assert executor.portfolio["positions"]["AAPL"]["long"] == 10 + assert executor.portfolio["cash"] == 98500.0 # 100000 - 10*150 + + def test_execute_trade_short(self): + from backend.utils.trade_executor import PortfolioTradeExecutor + + executor = PortfolioTradeExecutor( + initial_portfolio={ + "cash": 100000.0, + "positions": { + "AAPL": { + "long": 50, + "short": 0, + "long_cost_basis": 100.0, + "short_cost_basis": 0.0, + }, + }, + "margin_requirement": 0.25, + "margin_used": 0.0, + }, + ) + + result = executor.execute_trade( + ticker="AAPL", + action="short", + quantity=30, + price=150.0, + ) + + assert result["status"] == "success" + assert executor.portfolio["positions"]["AAPL"]["long"] == 20 # 50 - 30 + + def test_execute_trade_hold(self): + from backend.utils.trade_executor import PortfolioTradeExecutor + + executor = PortfolioTradeExecutor() + + result = executor.execute_trade( + ticker="AAPL", + action="hold", + quantity=0, + price=150.0, + ) + + assert result["status"] == "success" + assert result["message"] == "No trade needed" + + +class TestPipelineExecution: + def test_execute_decisions(self): + from backend.core.pipeline import TradingPipeline + from backend.agents.portfolio_manager import PMAgent + + mock_model = MagicMock() + mock_formatter = MagicMock() + + pm = PMAgent( + model=mock_model, + formatter=mock_formatter, + initial_cash=100000.0, + ) + + pipeline = TradingPipeline( + analysts=[], + risk_manager=MagicMock(), + portfolio_manager=pm, + max_comm_cycles=0, + ) + + decisions = { + "AAPL": {"action": "long", "quantity": 10}, + "GOOGL": {"action": "short", "quantity": 5}, + } + prices = {"AAPL": 150.0, "GOOGL": 100.0} + + result = pipeline._execute_decisions(decisions, prices, "2024-01-15") + + assert len(result["executed_trades"]) == 2 + assert result["executed_trades"][0]["ticker"] == "AAPL" + assert result["executed_trades"][0]["quantity"] == 10 + assert pm.portfolio["positions"]["AAPL"]["long"] == 10 + + +class TestMsgContentIsString: + def test_msg_content_string(self): + msg = Msg(name="test", content="simple string", role="user") + assert isinstance(msg.content, str) + + def test_msg_content_json_string(self): + data = {"key": "value", "nested": {"a": 1}} + msg = Msg(name="test", content=json.dumps(data), role="user") + assert isinstance(msg.content, str) + + parsed = json.loads(msg.content) + assert parsed["key"] == "value" + + def test_msg_content_should_not_be_dict(self): + data = {"key": "value"} + msg = Msg(name="test", content=json.dumps(data), role="assistant") + + assert not isinstance(msg.content, dict) + assert isinstance(msg.content, str) + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/evotraders/backend/tests/test_market_service.py b/evotraders/backend/tests/test_market_service.py new file mode 100644 index 0000000..4390049 --- /dev/null +++ b/evotraders/backend/tests/test_market_service.py @@ -0,0 +1,438 @@ +# -*- coding: utf-8 -*- +# pylint: disable=W0212 +import asyncio +import time +from unittest.mock import MagicMock, AsyncMock, patch +import pytest +from backend.services.market import MarketService +from backend.data.mock_price_manager import MockPriceManager +from backend.data.polling_price_manager import PollingPriceManager + + +class TestMockPriceManager: + def test_init_default(self): + manager = MockPriceManager() + + assert manager.poll_interval == 10 + assert manager.volatility == 0.5 + assert manager.running is False + assert len(manager.subscribed_symbols) == 0 + + def test_init_custom(self): + manager = MockPriceManager(poll_interval=5, volatility=1.0) + + assert manager.poll_interval == 5 + assert manager.volatility == 1.0 + + def test_subscribe(self): + manager = MockPriceManager() + manager.subscribe(["AAPL", "MSFT"]) + + assert "AAPL" in manager.subscribed_symbols + assert "MSFT" in manager.subscribed_symbols + assert manager.base_prices["AAPL"] == 237.50 # default price + assert manager.base_prices["MSFT"] == 425.30 # default price + + def test_subscribe_with_base_prices(self): + manager = MockPriceManager() + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + + assert manager.base_prices["AAPL"] == 100.0 + assert manager.open_prices["AAPL"] == 100.0 + assert manager.latest_prices["AAPL"] == 100.0 + + def test_subscribe_unknown_symbol(self): + manager = MockPriceManager() + manager.subscribe(["UNKNOWN"]) + + assert "UNKNOWN" in manager.subscribed_symbols + assert manager.base_prices["UNKNOWN"] > 0 # random price generated + + def test_unsubscribe(self): + manager = MockPriceManager() + manager.subscribe(["AAPL", "MSFT"]) + manager.unsubscribe(["AAPL"]) + + assert "AAPL" not in manager.subscribed_symbols + assert "MSFT" in manager.subscribed_symbols + + def test_add_price_callback(self): + manager = MockPriceManager() + callback = MagicMock() + manager.add_price_callback(callback) + + assert callback in manager.price_callbacks + + def test_generate_price_update_within_bounds(self): + manager = MockPriceManager(volatility=0.5) + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + + for _ in range(100): + new_price = manager._generate_price_update("AAPL") + # Should be within +/-10% of open + assert 90.0 <= new_price <= 110.0 + + def test_update_prices_triggers_callback(self): + manager = MockPriceManager() + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + + callback = MagicMock() + manager.add_price_callback(callback) + + manager._update_prices() + + callback.assert_called_once() + call_args = callback.call_args[0][0] + assert call_args["symbol"] == "AAPL" + assert "price" in call_args + assert "timestamp" in call_args + + def test_start_stop(self): + manager = MockPriceManager(poll_interval=1) + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + + manager.start() + assert manager.running is True + + time.sleep(0.1) # let thread start + + manager.stop() + assert manager.running is False + + def test_start_without_subscription(self): + manager = MockPriceManager() + manager.start() + + assert ( + manager.running is False + ) # should not start without subscriptions + + def test_get_latest_price(self): + manager = MockPriceManager() + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + + price = manager.get_latest_price("AAPL") + assert price == 100.0 + + def test_get_latest_price_unknown(self): + manager = MockPriceManager() + price = manager.get_latest_price("UNKNOWN") + assert price is None + + def test_get_all_latest_prices(self): + manager = MockPriceManager() + manager.subscribe( + ["AAPL", "MSFT"], + base_prices={"AAPL": 100.0, "MSFT": 200.0}, + ) + + prices = manager.get_all_latest_prices() + assert prices["AAPL"] == 100.0 + assert prices["MSFT"] == 200.0 + + def test_reset_open_prices(self): + manager = MockPriceManager() + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + manager.latest_prices["AAPL"] = 105.0 + + manager.reset_open_prices() + + # Open price should change (based on latest with small gap) + assert manager.open_prices["AAPL"] != 100.0 + + def test_set_base_price(self): + manager = MockPriceManager() + manager.subscribe(["AAPL"], base_prices={"AAPL": 100.0}) + + manager.set_base_price("AAPL", 150.0) + + assert manager.base_prices["AAPL"] == 150.0 + assert manager.open_prices["AAPL"] == 150.0 + assert manager.latest_prices["AAPL"] == 150.0 + + +class TestPollingPriceManager: + def test_init(self): + manager = PollingPriceManager(api_key="test_key", poll_interval=30) + + assert manager.api_key == "test_key" + assert manager.poll_interval == 30 + assert manager.running is False + + def test_subscribe(self): + manager = PollingPriceManager(api_key="test_key") + manager.subscribe(["AAPL", "MSFT"]) + + assert "AAPL" in manager.subscribed_symbols + assert "MSFT" in manager.subscribed_symbols + + def test_unsubscribe(self): + manager = PollingPriceManager(api_key="test_key") + manager.subscribe(["AAPL", "MSFT"]) + manager.unsubscribe(["AAPL"]) + + assert "AAPL" not in manager.subscribed_symbols + assert "MSFT" in manager.subscribed_symbols + + def test_add_price_callback(self): + manager = PollingPriceManager(api_key="test_key") + callback = MagicMock() + manager.add_price_callback(callback) + + assert callback in manager.price_callbacks + + @patch.object(PollingPriceManager, "_fetch_prices") + def test_start_stop(self): + manager = PollingPriceManager(api_key="test_key", poll_interval=1) + manager.subscribe(["AAPL"]) + + manager.start() + assert manager.running is True + + time.sleep(0.1) + + manager.stop() + assert manager.running is False + + def test_start_without_subscription(self): + manager = PollingPriceManager(api_key="test_key") + manager.start() + + assert manager.running is False + + def test_get_latest_price(self): + manager = PollingPriceManager(api_key="test_key") + manager.latest_prices["AAPL"] = 150.0 + + price = manager.get_latest_price("AAPL") + assert price == 150.0 + + def test_get_open_price(self): + manager = PollingPriceManager(api_key="test_key") + manager.open_prices["AAPL"] = 148.0 + + price = manager.get_open_price("AAPL") + assert price == 148.0 + + def test_reset_open_prices(self): + manager = PollingPriceManager(api_key="test_key") + manager.open_prices["AAPL"] = 150.0 + + manager.reset_open_prices() + + assert len(manager.open_prices) == 0 + + +class TestMarketService: + def test_init_mock_mode(self): + service = MarketService( + tickers=["AAPL", "MSFT"], + poll_interval=10, + mock_mode=True, + ) + + assert service.tickers == ["AAPL", "MSFT"] + assert service.poll_interval == 10 + assert service.mock_mode is True + assert service.running is False + + def test_init_real_mode(self): + service = MarketService( + tickers=["AAPL"], + mock_mode=False, + api_key="test_key", + ) + + assert service.mock_mode is False + assert service.api_key == "test_key" + + @pytest.mark.asyncio + async def test_start_mock_mode(self): + service = MarketService( + tickers=["AAPL"], + poll_interval=10, + mock_mode=True, + ) + + broadcast_func = AsyncMock() + + await service.start(broadcast_func) + + assert service.running is True + assert service._price_manager is not None + assert isinstance(service._price_manager, MockPriceManager) + + service.stop() + + @pytest.mark.asyncio + async def test_start_real_mode_without_api_key(self): + service = MarketService( + tickers=["AAPL"], + mock_mode=False, + api_key=None, + ) + + broadcast_func = AsyncMock() + + with pytest.raises(ValueError) as excinfo: + await service.start(broadcast_func) + + assert "API key required" in str(excinfo.value) + + @pytest.mark.asyncio + async def test_start_already_running(self): + service = MarketService( + tickers=["AAPL"], + mock_mode=True, + ) + + broadcast_func = AsyncMock() + + await service.start(broadcast_func) + assert service.running is True + + # Start again should not fail + await service.start(broadcast_func) + + service.stop() + + def test_stop(self): + service = MarketService( + tickers=["AAPL"], + mock_mode=True, + ) + service.running = True + service._price_manager = MagicMock() + + service.stop() + + assert service.running is False + assert service._price_manager is None + + def test_stop_when_not_running(self): + service = MarketService( + tickers=["AAPL"], + mock_mode=True, + ) + + # Should not raise + service.stop() + assert service.running is False + + def test_get_price_sync(self): + service = MarketService(tickers=["AAPL"], mock_mode=True) + service.cache["AAPL"] = {"price": 150.0, "open": 148.0} + + price = service.get_price_sync("AAPL") + assert price == 150.0 + + def test_get_price_sync_not_found(self): + service = MarketService(tickers=["AAPL"], mock_mode=True) + + price = service.get_price_sync("MSFT") + assert price is None + + def test_get_all_prices(self): + service = MarketService(tickers=["AAPL", "MSFT"], mock_mode=True) + service.cache["AAPL"] = {"price": 150.0} + service.cache["MSFT"] = {"price": 400.0} + + prices = service.get_all_prices() + + assert prices["AAPL"] == 150.0 + assert prices["MSFT"] == 400.0 + + @pytest.mark.asyncio + async def test_broadcast_price_update(self): + service = MarketService(tickers=["AAPL"], mock_mode=True) + service._broadcast_func = AsyncMock() + + price_data = { + "symbol": "AAPL", + "price": 150.0, + "open": 148.0, + "timestamp": 1234567890, + } + + await service._broadcast_price_update(price_data) + + service._broadcast_func.assert_called_once() + call_args = service._broadcast_func.call_args[0][0] + assert call_args["type"] == "price_update" + assert call_args["symbol"] == "AAPL" + assert call_args["price"] == 150.0 + + @pytest.mark.asyncio + async def test_broadcast_price_update_no_func(self): + service = MarketService(tickers=["AAPL"], mock_mode=True) + service._broadcast_func = None + + price_data = {"symbol": "AAPL", "price": 150.0, "open": 148.0} + + # Should not raise + await service._broadcast_price_update(price_data) + + @pytest.mark.asyncio + async def test_price_callback_thread_safety(self): + service = MarketService( + tickers=["AAPL"], + poll_interval=1, + mock_mode=True, + ) + + received_prices = [] + + async def capture_broadcast(msg): + received_prices.append(msg) + + await service.start(capture_broadcast) + + # Wait for at least one price update + await asyncio.sleep(1.5) + + service.stop() + + # Should have received at least one price update + assert len(received_prices) >= 1 + assert received_prices[0]["type"] == "price_update" + + +class TestMarketServiceIntegration: + @pytest.mark.asyncio + async def test_full_mock_cycle(self): + service = MarketService( + tickers=["AAPL", "MSFT"], + poll_interval=1, + mock_mode=True, + ) + + messages = [] + + async def collect_messages(msg): + messages.append(msg) + + await service.start(collect_messages) + + # Wait for price updates + await asyncio.sleep(2.5) + + service.stop() + + # Should have received multiple price updates + assert len(messages) >= 2 + + # Check message structure + symbols_seen = set() + for msg in messages: + assert msg["type"] == "price_update" + assert "symbol" in msg + assert "price" in msg + assert "ret" in msg + symbols_seen.add(msg["symbol"]) + + # Should have prices for both tickers + assert "AAPL" in symbols_seen or "MSFT" in symbols_seen + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/evotraders/backend/tests/test_settlement.py b/evotraders/backend/tests/test_settlement.py new file mode 100644 index 0000000..e8e17c9 --- /dev/null +++ b/evotraders/backend/tests/test_settlement.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +""" +Test Settlement Coordinator and Baseline Calculations +""" + +from backend.utils.baselines import ( + BaselineCalculator, + calculate_momentum_scores, +) +from backend.utils.analyst_tracker import ( + AnalystPerformanceTracker, + update_leaderboard_with_evaluations, +) + + +def test_baseline_equal_weight(): + """Test equal weight baseline calculation""" + calculator = BaselineCalculator(initial_capital=100000.0) + + tickers = ["AAPL", "MSFT", "GOOGL"] + prices = {"AAPL": 150.0, "MSFT": 300.0, "GOOGL": 120.0} + + value = calculator.calculate_equal_weight_value(tickers, prices) + + assert value > 0 + assert calculator.equal_weight_initialized is True + + +def test_baseline_market_cap_weighted(): + """Test market cap weighted baseline calculation""" + calculator = BaselineCalculator(initial_capital=100000.0) + + tickers = ["AAPL", "MSFT", "GOOGL"] + prices = {"AAPL": 150.0, "MSFT": 300.0, "GOOGL": 120.0} + market_caps = {"AAPL": 3e12, "MSFT": 2e12, "GOOGL": 1.5e12} + + value = calculator.calculate_market_cap_weighted_value( + tickers, + prices, + market_caps, + ) + + assert value > 0 + assert calculator.market_cap_initialized is True + + +def test_momentum_scores(): + """Test momentum score calculation""" + tickers = ["AAPL", "MSFT"] + prices_history = { + "AAPL": [ + ("2024-01-01", 100.0), + ("2024-01-02", 105.0), + ("2024-01-03", 110.0), + ], + "MSFT": [ + ("2024-01-01", 200.0), + ("2024-01-02", 195.0), + ("2024-01-03", 190.0), + ], + } + + scores = calculate_momentum_scores( + tickers, + prices_history, + lookback_days=2, + ) + + assert scores["AAPL"] > 0 + assert scores["MSFT"] < 0 + + +def test_analyst_tracker_predictions(): + """Test analyst prediction recording with structured format""" + tracker = AnalystPerformanceTracker() + + final_predictions = [ + { + "agent": "technical_analyst", + "predictions": [ + {"ticker": "AAPL", "direction": "up", "confidence": 0.8}, + {"ticker": "MSFT", "direction": "down", "confidence": 0.7}, + {"ticker": "GOOGL", "direction": "neutral", "confidence": 0.5}, + ], + }, + { + "agent": "fundamentals_analyst", + "predictions": [ + {"ticker": "AAPL", "direction": "up", "confidence": 0.9}, + {"ticker": "MSFT", "direction": "up", "confidence": 0.6}, + {"ticker": "GOOGL", "direction": "down", "confidence": 0.75}, + ], + }, + ] + + tracker.record_analyst_predictions(final_predictions) + + assert "technical_analyst" in tracker.daily_predictions + assert "fundamentals_analyst" in tracker.daily_predictions + assert tracker.daily_predictions["technical_analyst"]["AAPL"] == "long" + assert tracker.daily_predictions["technical_analyst"]["MSFT"] == "short" + assert tracker.daily_predictions["technical_analyst"]["GOOGL"] == "hold" + + +def test_analyst_evaluation(): + """Test analyst prediction evaluation""" + tracker = AnalystPerformanceTracker() + + tracker.daily_predictions = { + "technical_analyst": { + "AAPL": "long", + "MSFT": "short", + }, + } + + open_prices = {"AAPL": 100.0, "MSFT": 200.0} + close_prices = {"AAPL": 105.0, "MSFT": 195.0} + + evaluations = tracker.evaluate_predictions( + open_prices, + close_prices, + "2024-01-15", + ) + + assert "technical_analyst" in evaluations + eval_result = evaluations["technical_analyst"] + assert eval_result["correct_predictions"] == 2 + assert eval_result["win_rate"] == 1.0 + + # Verify individual signals format + assert "signals" in eval_result + assert len(eval_result["signals"]) == 2 + for signal in eval_result["signals"]: + assert "ticker" in signal + assert "signal" in signal + assert "date" in signal + assert "is_correct" in signal + assert signal["date"] == "2024-01-15" + + +def test_leaderboard_update(): + """Test leaderboard update with evaluations""" + leaderboard = [ + { + "agentId": "technical_analyst", + "name": "Technical Analyst", + "rank": 0, + "winRate": None, + "bull": {"n": 0, "win": 0, "unknown": 0}, + "bear": {"n": 0, "win": 0, "unknown": 0}, + "signals": [], + }, + ] + + evaluations = { + "technical_analyst": { + "total_predictions": 2, + "correct_predictions": 1, + "win_rate": 0.5, + "bull": {"n": 1, "win": 1, "unknown": 0}, + "bear": {"n": 1, "win": 0, "unknown": 0}, + "hold": 0, + "signals": [ + { + "ticker": "AAPL", + "signal": "bull", + "date": "2024-01-01", + "is_correct": True, + }, + { + "ticker": "MSFT", + "signal": "bear", + "date": "2024-01-01", + "is_correct": False, + }, + ], + }, + } + + updated = update_leaderboard_with_evaluations( + leaderboard, + evaluations, + ) + + assert updated[0]["bull"]["n"] == 1 + assert updated[0]["bull"]["win"] == 1 + assert updated[0]["winRate"] == 0.5 + assert len(updated[0]["signals"]) == 2 + + # Verify signal format matches frontend expectations + for signal in updated[0]["signals"]: + assert "ticker" in signal + assert "signal" in signal + assert "date" in signal + assert "is_correct" in signal diff --git a/evotraders/backend/tools/__init__.py b/evotraders/backend/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/evotraders/backend/tools/analysis_tools.py b/evotraders/backend/tools/analysis_tools.py new file mode 100644 index 0000000..c2f4c39 --- /dev/null +++ b/evotraders/backend/tools/analysis_tools.py @@ -0,0 +1,1240 @@ +# -*- coding: utf-8 -*- +""" +Analysis tools for fundamental, technical, sentiment, and valuation analysis. + +All tools accept tickers as List[str] with default from analysis context. +Returns human-readable text format for easy LLM consumption. +""" +# flake8: noqa: E501 +# pylint: disable=C0301,W0613 +import logging +import traceback +from datetime import datetime, timedelta +from functools import wraps +from statistics import median +from typing import List, Optional + +import numpy as np +import pandas as pd +from agentscope.message import TextBlock +from agentscope.tool import ToolResponse + +from backend.tools.data_tools import ( + get_company_news, + get_financial_metrics, + get_insider_trades, + get_market_cap, + get_prices, + prices_to_df, + search_line_items, +) + +logger = logging.getLogger(__name__) + + +def _to_text_response(text: str) -> ToolResponse: + """Convert text string to ToolResponse.""" + return ToolResponse(content=[TextBlock(type="text", text=text)]) + + +def _safe_float(value, default=0.0) -> float: + """Safely convert to float.""" + try: + if pd.isna(value) or np.isnan(value): + return default + return float(value) + except (ValueError, TypeError, OverflowError): + return default + + +def safe(func): + """Decorator to catch exceptions in tool functions.""" + + @wraps(func) + def wrapper(*args, **kwargs): + try: + return func(*args, **kwargs) + except Exception as e: + error_msg = f"Error in {func.__name__}: {str(e)}" + logger.error(f"{error_msg}\n{traceback.format_exc()}") + return _to_text_response(f"[ERROR] {error_msg}") + + return wrapper + + +def _fmt(val, fmt=".2f", suffix="") -> str: + """Format value with handling for None.""" + if val is None: + return "N/A" + try: + return f"{val:{fmt}}{suffix}" + except (ValueError, TypeError): + return str(val) + + +def _resolved_date(current_date: Optional[str]) -> str: + """Ensure we always return a concrete date string.""" + return current_date or datetime.today().strftime("%Y-%m-%d") + + +# ==================== Fundamental Analysis Tools ==================== + + +@safe +def analyze_efficiency_ratios( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze asset utilization efficiency ratios for stocks. + + Evaluates how efficiently companies use assets to generate revenue. + Higher ratios generally indicate better operational efficiency. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of efficiency metrics for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Efficiency Ratios Analysis ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics(ticker=ticker, end_date=current_date) + if not metrics: + lines.append(f"{ticker}: No data available\n") + continue + + m = metrics[0] + lines.append(f"{ticker}:") + lines.append(f" Asset Turnover: {_fmt(m.asset_turnover)}") + lines.append(f" Inventory Turnover: {_fmt(m.inventory_turnover)}") + lines.append(f" Receivables Turnover: {_fmt(m.receivables_turnover)}") + lines.append( + f" Working Capital Turnover: {_fmt(m.working_capital_turnover)}", + ) + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_profitability( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze profitability metrics for stocks. + + Assesses how effectively companies generate profit from operations and equity. + Higher margins indicate stronger profitability and better cost management. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of profitability metrics for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Profitability Analysis ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics(ticker=ticker, end_date=current_date) + if not metrics: + lines.append(f"{ticker}: No data available\n") + continue + + m = metrics[0] + roe = _safe_float(m.return_on_equity) + net_margin = _safe_float(m.net_margin) + op_margin = _safe_float(m.operating_margin) + lines.append(f"{ticker}:") + lines.append(f" Return on Equity (ROE): {_fmt(roe/100, '.1%')}") + lines.append(f" Net Margin: {_fmt(net_margin/100, '.1%')}") + lines.append(f" Operating Margin: {_fmt(op_margin/100, '.1%')}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_growth( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze growth metrics for stocks. + + Evaluates company growth trajectory across key financial dimensions. + Higher growth rates may indicate strong business momentum. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of growth metrics for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Growth Analysis ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics(ticker=ticker, end_date=current_date) + if not metrics: + lines.append(f"{ticker}: No data available\n") + continue + + m = metrics[0] + lines.append(f"{ticker}:") + lines.append(f" Revenue Growth: {_fmt(m.revenue_growth, '.1%')}") + lines.append(f" Earnings Growth: {_fmt(m.earnings_growth, '.1%')}") + lines.append( + f" Book Value Growth: {_fmt(m.book_value_growth, '.1%')}", + ) + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_financial_health( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze financial health metrics for stocks. + + Assesses financial stability and ability to meet obligations. + Strong financial health suggests lower bankruptcy risk. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of financial health metrics for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Financial Health Analysis ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics(ticker=ticker, end_date=current_date) + if not metrics: + lines.append(f"{ticker}: No data available\n") + continue + + m = metrics[0] + lines.append(f"{ticker}:") + lines.append( + f" Current Ratio: {_fmt(m.current_ratio)} (>1 is healthy)", + ) + lines.append(f" Debt to Equity: {_fmt(m.debt_to_equity)}") + lines.append( + f" Free Cash Flow/Share: ${_fmt(m.free_cash_flow_per_share)}", + ) + lines.append(f" EPS: ${_fmt(m.earnings_per_share)}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_valuation_ratios( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze valuation ratios for stocks. + + Evaluates whether stocks are overvalued or undervalued using common multiples. + Lower ratios may indicate undervaluation but compare with industry peers. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of valuation ratios for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Valuation Ratios Analysis ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics(ticker=ticker, end_date=current_date) + if not metrics: + lines.append(f"{ticker}: No data available\n") + continue + + m = metrics[0] + lines.append(f"{ticker}:") + lines.append(f" P/E Ratio: {_fmt(m.price_to_earnings_ratio)}") + lines.append(f" P/B Ratio: {_fmt(m.price_to_book_ratio)}") + lines.append(f" P/S Ratio: {_fmt(m.price_to_sales_ratio)}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def get_financial_metrics_tool( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, + period: str = "ttm", +) -> ToolResponse: + """ + Get comprehensive financial metrics for stocks. + + Retrieves complete set of financial metrics for fundamental analysis. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + period: Time period - 'ttm', 'quarterly', or 'annual'. Default 'ttm'. + + Returns: + Text summary of all available financial metrics for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [ + f"=== Comprehensive Financial Metrics ({current_date}, {period}) ===\n", + ] + + for ticker in tickers: + metrics = get_financial_metrics( + ticker=ticker, + end_date=current_date, + period=period, + ) + if not metrics: + lines.append(f"{ticker}: No data available\n") + continue + + m = metrics[0] + lines.append(f"{ticker}:") + lines.append(f" Market Cap: ${_fmt(m.market_cap, ',.0f')}") + lines.append( + f" P/E: {_fmt(m.price_to_earnings_ratio)} | P/B: {_fmt(m.price_to_book_ratio)} | P/S: {_fmt(m.price_to_sales_ratio)}", + ) + lines.append( + f" ROE: {_fmt(m.return_on_equity, '.1%')} | Net Margin: {_fmt(m.net_margin, '.1%')}", + ) + lines.append( + f" Revenue Growth: {_fmt(m.revenue_growth, '.1%')} | Earnings Growth: {_fmt(m.earnings_growth, '.1%')}", + ) + lines.append( + f" Current Ratio: {_fmt(m.current_ratio)} | D/E: {_fmt(m.debt_to_equity)}", + ) + lines.append( + f" EPS: ${_fmt(m.earnings_per_share)} | FCF/Share: ${_fmt(m.free_cash_flow_per_share)}", + ) + lines.append("") + + return _to_text_response("\n".join(lines)) + + +# ==================== Technical Analysis Tools ==================== + + +@safe +def analyze_trend_following( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Trend following analysis using moving averages and MACD. + + Identifies market trends using SMA (20/50/200) and MACD indicators. + Helps determine if stocks are in uptrend, downtrend, or consolidation. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of trend analysis for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Trend Following Analysis ({current_date}) ===\n"] + + end_dt = datetime.strptime(current_date, "%Y-%m-%d") + extended_start = (end_dt - timedelta(days=250)).strftime("%Y-%m-%d") + + for ticker in tickers: + prices = get_prices( + ticker=ticker, + start_date=extended_start, + end_date=current_date, + ) + if not prices or len(prices) < 10: + lines.append(f"{ticker}: Insufficient price data\n") + continue + + df = prices_to_df(prices) + n = len(df) + + # Calculate moving averages + sma_20_win = min(20, n // 2) + sma_50_win = min(50, n - 5) if n > 25 else min(25, n - 5) + sma_200_win = min(200, n - 10) if n > 200 else None + + df["SMA_20"] = df["close"].rolling(window=sma_20_win).mean() + df["SMA_50"] = df["close"].rolling(window=sma_50_win).mean() + if sma_200_win: + df["SMA_200"] = df["close"].rolling(window=sma_200_win).mean() + + df["EMA_12"] = df["close"].ewm(span=min(12, n // 3)).mean() + df["EMA_26"] = df["close"].ewm(span=min(26, n // 2)).mean() + df["MACD"] = df["EMA_12"] - df["EMA_26"] + df["MACD_signal"] = df["MACD"].ewm(span=9).mean() + + current_price = _safe_float(df["close"].iloc[-1]) + sma_20 = _safe_float(df["SMA_20"].iloc[-1]) + sma_50 = _safe_float(df["SMA_50"].iloc[-1]) + sma_200 = ( + _safe_float(df["SMA_200"].iloc[-1]) + if "SMA_200" in df.columns + else None + ) + macd = _safe_float(df["MACD"].iloc[-1]) + macd_signal = _safe_float(df["MACD_signal"].iloc[-1]) + + # Determine trend + if sma_200: + trend = "BULLISH" if current_price > sma_200 else "BEARISH" + distance_200ma = ((current_price - sma_200) / sma_200) * 100 + else: + trend = "UNKNOWN" + distance_200ma = None + + macd_signal_str = "BUY" if macd > macd_signal else "SELL" + + lines.append(f"{ticker}: ${current_price:.2f}") + lines.append( + f" SMA20: ${sma_20:.2f} | SMA50: ${sma_50:.2f} | SMA200: {f'${sma_200:.2f}' if sma_200 else 'N/A'}", + ) + lines.append( + f" MACD: {macd:.3f} | Signal: {macd_signal:.3f} -> {macd_signal_str}", + ) + lines.append( + f" Long-term Trend: {trend}" + + ( + f" ({distance_200ma:+.1f}% from 200MA)" + if distance_200ma + else "" + ), + ) + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_mean_reversion( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Mean reversion analysis using Bollinger Bands and RSI. + + Identifies overbought/oversold conditions. + RSI >70 = overbought, <30 = oversold. + Price near bands may signal reversal. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of mean reversion signals for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Mean Reversion Analysis ({current_date}) ===\n"] + + end_dt = datetime.strptime(current_date, "%Y-%m-%d") + extended_start = (end_dt - timedelta(days=60)).strftime("%Y-%m-%d") + + for ticker in tickers: + prices = get_prices( + ticker=ticker, + start_date=extended_start, + end_date=current_date, + ) + if not prices or len(prices) < 5: + lines.append(f"{ticker}: Insufficient price data\n") + continue + + df = prices_to_df(prices) + n = len(df) + + # Bollinger Bands + window = min(20, n - 2) + df["SMA"] = df["close"].rolling(window=window).mean() + df["STD"] = df["close"].rolling(window=window).std() + df["Upper_Band"] = df["SMA"] + (2 * df["STD"]) + df["Lower_Band"] = df["SMA"] - (2 * df["STD"]) + + # RSI + delta = df["close"].diff() + gain = (delta.where(delta > 0, 0)).rolling(window=14).mean() + loss = (-delta.where(delta < 0, 0)).rolling(window=14).mean() + rs = gain / loss + df["RSI"] = 100 - (100 / (1 + rs)) + + current_price = _safe_float(df["close"].iloc[-1]) + sma = _safe_float(df["SMA"].iloc[-1]) + upper = _safe_float(df["Upper_Band"].iloc[-1]) + lower = _safe_float(df["Lower_Band"].iloc[-1]) + rsi = _safe_float(df["RSI"].iloc[-1]) + deviation = (current_price - sma) / sma * 100 + + # Signal interpretation + if rsi > 70: + rsi_signal = "OVERBOUGHT" + elif rsi < 30: + rsi_signal = "OVERSOLD" + else: + rsi_signal = "NEUTRAL" + + if current_price > upper: + bb_signal = "ABOVE UPPER BAND (potential sell)" + elif current_price < lower: + bb_signal = "BELOW LOWER BAND (potential buy)" + else: + bb_signal = "WITHIN BANDS" + + lines.append(f"{ticker}: ${current_price:.2f}") + lines.append( + f" Bollinger: Lower ${lower:.2f} | SMA ${sma:.2f} | Upper ${upper:.2f}", + ) + lines.append(f" Position: {bb_signal}") + lines.append(f" RSI: {rsi:.1f} -> {rsi_signal}") + lines.append(f" Price Deviation from SMA: {deviation:+.1f}%") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_momentum( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Momentum analysis for different time periods. + + Measures price momentum over 5, 10, and 20 day periods. + Positive momentum indicates upward price pressure. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of momentum indicators for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Momentum Analysis ({current_date}) ===\n"] + + end_dt = datetime.strptime(current_date, "%Y-%m-%d") + extended_start = (end_dt - timedelta(days=45)).strftime("%Y-%m-%d") + + for ticker in tickers: + prices = get_prices( + ticker=ticker, + start_date=extended_start, + end_date=current_date, + ) + if not prices or len(prices) < 5: + lines.append(f"{ticker}: Insufficient price data\n") + continue + + df = prices_to_df(prices) + n = len(df) + df["returns"] = df["close"].pct_change() + + # Adaptive periods + short_p = min(5, n // 3) + med_p = min(10, n // 2) + long_p = min(20, n - 2) + + current_price = _safe_float(df["close"].iloc[-1]) + mom_5 = ( + _safe_float( + (df["close"].iloc[-1] / df["close"].iloc[-short_p - 1] - 1) + * 100, + ) + if n > short_p + else 0 + ) + mom_10 = ( + _safe_float( + (df["close"].iloc[-1] / df["close"].iloc[-med_p - 1] - 1) + * 100, + ) + if n > med_p + else 0 + ) + mom_20 = ( + _safe_float( + (df["close"].iloc[-1] / df["close"].iloc[-long_p - 1] - 1) + * 100, + ) + if n > long_p + else 0 + ) + volatility = _safe_float( + df["returns"].tail(20).std() * np.sqrt(252) * 100, + ) + + # Overall momentum signal + avg_mom = (mom_5 + mom_10 + mom_20) / 3 + if avg_mom > 2: + signal = "STRONG BULLISH" + elif avg_mom > 0: + signal = "BULLISH" + elif avg_mom > -2: + signal = "BEARISH" + else: + signal = "STRONG BEARISH" + + lines.append(f"{ticker}: ${current_price:.2f}") + lines.append( + f" 5-day: {mom_5:+.1f}% | 10-day: {mom_10:+.1f}% | 20-day: {mom_20:+.1f}%", + ) + lines.append(f" Volatility (annualized): {volatility:.1f}%") + lines.append(f" Overall: {signal}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_volatility( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Volatility analysis for different time windows. + + Measures price volatility over 10, 20, and 60 day periods. + Higher volatility indicates higher risk but potentially higher returns. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date (YYYY-MM-DD). If None, uses date from context. + + Returns: + Text summary of volatility metrics for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Volatility Analysis ({current_date}) ===\n"] + + end_dt = datetime.strptime(current_date, "%Y-%m-%d") + extended_start = (end_dt - timedelta(days=90)).strftime("%Y-%m-%d") + + for ticker in tickers: + prices = get_prices( + ticker=ticker, + start_date=extended_start, + end_date=current_date, + ) + if not prices or len(prices) < 5: + lines.append(f"{ticker}: Insufficient price data\n") + continue + + df = prices_to_df(prices) + n = len(df) + df["returns"] = df["close"].pct_change() + + # Adaptive windows + short_w = min(10, n // 2) + med_w = min(20, n - 2) + long_w = min(60, n - 1) if n > 30 else med_w + + current_price = _safe_float(df["close"].iloc[-1]) + vol_10 = _safe_float( + df["returns"].tail(short_w).std() * np.sqrt(252) * 100, + ) + vol_20 = _safe_float( + df["returns"].tail(med_w).std() * np.sqrt(252) * 100, + ) + vol_60 = _safe_float( + df["returns"].tail(long_w).std() * np.sqrt(252) * 100, + ) + + # Risk assessment + if vol_20 > 50: + risk = "HIGH RISK" + elif vol_20 > 25: + risk = "MODERATE RISK" + else: + risk = "LOW RISK" + + lines.append(f"{ticker}: ${current_price:.2f}") + lines.append( + f" 10-day Vol: {vol_10:.1f}% | 20-day Vol: {vol_20:.1f}% | 60-day Vol: {vol_60:.1f}%", + ) + lines.append(f" Risk Level: {risk}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +# ==================== Sentiment Analysis Tools ==================== + + +@safe +def analyze_insider_trading( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, + start_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze insider trading activity. + + Tracks buying/selling by company insiders (executives, directors). + Insider buying can signal confidence; selling may indicate concerns. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date. If None, uses date from context. + start_date: Optional start date for lookback period. + + Returns: + Text summary of insider trading activity for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Insider Trading Analysis ({current_date}) ===\n"] + + for ticker in tickers: + trades = get_insider_trades( + ticker=ticker, + end_date=current_date, + start_date=start_date, + limit=1000, + ) + + if not trades: + lines.append(f"{ticker}: No insider trading data\n") + continue + + shares = pd.Series([t.transaction_shares for t in trades]).dropna() + + if len(shares) == 0: + lines.append(f"{ticker}: {len(trades)} trades but no share data\n") + continue + + buy_count = int((shares > 0).sum()) + sell_count = int((shares < 0).sum()) + buy_vol = float(shares[shares > 0].sum()) + sell_vol = float(abs(shares[shares < 0].sum())) + + # Sentiment interpretation + if buy_count > sell_count * 2: + sentiment = "STRONG INSIDER BUYING" + elif buy_count > sell_count: + sentiment = "NET INSIDER BUYING" + elif sell_count > buy_count * 2: + sentiment = "STRONG INSIDER SELLING" + elif sell_count > buy_count: + sentiment = "NET INSIDER SELLING" + else: + sentiment = "MIXED INSIDER ACTIVITY" + + lines.append(f"{ticker}:") + lines.append(f" Buys: {buy_count} trades ({buy_vol:,.0f} shares)") + lines.append(f" Sells: {sell_count} trades ({sell_vol:,.0f} shares)") + lines.append(f" Signal: {sentiment}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def analyze_news_sentiment( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, + start_date: Optional[str] = None, +) -> ToolResponse: + """ + Analyze recent news for stocks. + + Retrieves and summarizes recent news articles. + Use this to understand recent events and market sentiment. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date. If None, uses date from context. + start_date: Optional start date for lookback period. + + Returns: + Text summary of recent news for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== News Analysis ({current_date}) ===\n"] + + for ticker in tickers: + news = get_company_news( + ticker=ticker, + end_date=current_date, + start_date=start_date, + limit=10, + ) + + if not news: + lines.append(f"{ticker}: No recent news\n") + continue + + lines.append(f"{ticker} - {len(news)} recent articles:") + for i, n in enumerate(news[:5], 1): + date_str = n.date[:10] if n.date else "N/A" + lines.append(f" {i}. [{date_str}] {n.title[:80]}...") + lines.append(f" Source: {n.source}") + if len(news) > 5: + lines.append(f" ... and {len(news) - 5} more articles") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +# ==================== Valuation Analysis Tools ==================== + + +@safe +def dcf_valuation_analysis( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Discounted Cash Flow (DCF) valuation analysis. + + Estimates intrinsic value by projecting future free cash flows. + Positive value_gap indicates potential undervaluation. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date. If None, uses date from context. + + Returns: + Text summary of DCF valuation for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== DCF Valuation Analysis ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics( + ticker=ticker, + end_date=current_date, + limit=8, + ) + if not metrics: + lines.append(f"{ticker}: No financial metrics\n") + continue + + line_items = search_line_items( + ticker=ticker, + line_items=["free_cash_flow"], + end_date=current_date, + period="ttm", + limit=2, + ) + if ( + not line_items + or not line_items[0].free_cash_flow + or line_items[0].free_cash_flow <= 0 + ): + lines.append(f"{ticker}: Invalid free cash flow data\n") + continue + + market_cap = get_market_cap(ticker, current_date) + if not market_cap: + lines.append(f"{ticker}: Market cap unavailable\n") + continue + + m = metrics[0] + current_fcf = line_items[0].free_cash_flow + growth_rate = m.earnings_growth or 0.05 + discount_rate = 0.10 + terminal_growth = 0.03 + num_years = 5 + + # DCF calculation + pv_fcf = sum( + current_fcf + * (1 + growth_rate) ** year + / (1 + discount_rate) ** year + for year in range(1, num_years + 1) + ) + terminal_fcf = ( + current_fcf + * (1 + growth_rate) ** num_years + * (1 + terminal_growth) + ) + terminal_value = terminal_fcf / (discount_rate - terminal_growth) + pv_terminal = terminal_value / (1 + discount_rate) ** num_years + enterprise_value = pv_fcf + pv_terminal + value_gap = (enterprise_value - market_cap) / market_cap * 100 + + # Assessment + if value_gap > 20: + assessment = "SIGNIFICANTLY UNDERVALUED" + elif value_gap > 0: + assessment = "POTENTIALLY UNDERVALUED" + elif value_gap > -20: + assessment = "POTENTIALLY OVERVALUED" + else: + assessment = "SIGNIFICANTLY OVERVALUED" + + lines.append(f"{ticker}:") + lines.append(f" Current FCF: ${current_fcf:,.0f}") + lines.append(f" DCF Enterprise Value: ${enterprise_value:,.0f}") + lines.append(f" Market Cap: ${market_cap:,.0f}") + lines.append(f" Value Gap: {value_gap:+.1f}% -> {assessment}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def owner_earnings_valuation_analysis( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Buffett-style owner earnings valuation analysis. + + Owner earnings = Net Income + D&A - CapEx - Working Capital Changes. + Represents true cash owners could extract from the business. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date. If None, uses date from context. + + Returns: + Text summary of owner earnings valuation for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Owner Earnings Valuation ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics( + ticker=ticker, + end_date=current_date, + limit=8, + ) + if not metrics: + lines.append(f"{ticker}: No financial metrics\n") + continue + + line_items = search_line_items( + ticker=ticker, + line_items=[ + "net_income", + "depreciation_and_amortization", + "capital_expenditure", + "working_capital", + ], + end_date=current_date, + period="ttm", + limit=2, + ) + if len(line_items) < 2: + lines.append(f"{ticker}: Insufficient financial data\n") + continue + + market_cap = get_market_cap(ticker, current_date) + if not market_cap: + lines.append(f"{ticker}: Market cap unavailable\n") + continue + + m = metrics[0] + current, previous = line_items[0], line_items[1] + + net_income = current.net_income or 0 + depreciation = current.depreciation_and_amortization or 0 + capex = current.capital_expenditure or 0 + wc_change = (current.working_capital or 0) - ( + previous.working_capital or 0 + ) + + owner_earnings = net_income + depreciation - capex - wc_change + if owner_earnings <= 0: + lines.append( + f"{ticker}: Negative owner earnings (${owner_earnings:,.0f})\n", + ) + continue + + # Valuation + growth_rate = m.earnings_growth or 0.05 + required_return = 0.15 + margin_of_safety = 0.25 + num_years = 5 + + pv_earnings = sum( + owner_earnings + * (1 + growth_rate) ** year + / (1 + required_return) ** year + for year in range(1, num_years + 1) + ) + terminal_growth = min(growth_rate, 0.03) + terminal_earnings = ( + owner_earnings + * (1 + growth_rate) ** num_years + * (1 + terminal_growth) + ) + terminal_value = terminal_earnings / ( + required_return - terminal_growth + ) + pv_terminal = terminal_value / (1 + required_return) ** num_years + + intrinsic_value = (pv_earnings + pv_terminal) * (1 - margin_of_safety) + value_gap = (intrinsic_value - market_cap) / market_cap * 100 + + # Assessment + if value_gap > 20: + assessment = "SIGNIFICANTLY UNDERVALUED" + elif value_gap > 0: + assessment = "POTENTIALLY UNDERVALUED" + elif value_gap > -20: + assessment = "POTENTIALLY OVERVALUED" + else: + assessment = "SIGNIFICANTLY OVERVALUED" + + lines.append(f"{ticker}:") + lines.append(f" Owner Earnings: ${owner_earnings:,.0f}") + lines.append( + f" Intrinsic Value (w/ 25% MoS): ${intrinsic_value:,.0f}", + ) + lines.append(f" Market Cap: ${market_cap:,.0f}") + lines.append(f" Value Gap: {value_gap:+.1f}% -> {assessment}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def ev_ebitda_valuation_analysis( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + EV/EBITDA multiple valuation analysis. + + Compares current EV/EBITDA to historical median. + Lower multiples relative to history may indicate undervaluation. + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date. If None, uses date from context. + + Returns: + Text summary of EV/EBITDA valuation for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== EV/EBITDA Valuation ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics( + ticker=ticker, + end_date=current_date, + limit=8, + ) + if not metrics: + lines.append(f"{ticker}: No financial metrics\n") + continue + + m = metrics[0] + if ( + not m.enterprise_value + or not m.enterprise_value_to_ebitda_ratio + or m.enterprise_value_to_ebitda_ratio <= 0 + ): + lines.append(f"{ticker}: Missing EV/EBITDA data\n") + continue + + market_cap = get_market_cap(ticker, current_date) + if not market_cap: + lines.append(f"{ticker}: Market cap unavailable\n") + continue + + current_ebitda = ( + m.enterprise_value / m.enterprise_value_to_ebitda_ratio + ) + + valid_multiples = [ + x.enterprise_value_to_ebitda_ratio + for x in metrics + if x.enterprise_value_to_ebitda_ratio + and x.enterprise_value_to_ebitda_ratio > 0 + ] + if len(valid_multiples) < 3: + lines.append(f"{ticker}: Insufficient historical data\n") + continue + + median_multiple = median(valid_multiples) + current_multiple = m.enterprise_value_to_ebitda_ratio + + implied_ev = median_multiple * current_ebitda + net_debt = m.enterprise_value - market_cap + implied_equity = max(implied_ev - net_debt, 0) + + value_gap = ( + (implied_equity - market_cap) / market_cap * 100 + if market_cap > 0 + else 0 + ) + multiple_discount = ( + (median_multiple - current_multiple) / median_multiple * 100 + ) + + # Assessment + if multiple_discount > 10: + assessment = "TRADING BELOW HISTORICAL MULTIPLE" + elif multiple_discount > -10: + assessment = "NEAR HISTORICAL AVERAGE" + else: + assessment = "TRADING ABOVE HISTORICAL MULTIPLE" + + lines.append(f"{ticker}:") + lines.append(f" Current EV/EBITDA: {current_multiple:.1f}x") + lines.append(f" Historical Median: {median_multiple:.1f}x") + lines.append(f" Multiple vs History: {multiple_discount:+.1f}%") + lines.append(f" Implied Equity Value: ${implied_equity:,.0f}") + lines.append(f" Value Gap: {value_gap:+.1f}% -> {assessment}") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +@safe +def residual_income_valuation_analysis( + tickers: Optional[List[str]] = None, + current_date: Optional[str] = None, +) -> ToolResponse: + """ + Residual Income Model (RIM) valuation analysis. + + Values company based on book value plus PV of future residual income. + Residual income = Net Income - (Cost of Equity x Book Value). + + Args: + tickers: List of stock tickers. If None, uses all tickers from context. + current_date: Analysis date. If None, uses date from context. + + Returns: + Text summary of residual income valuation for all tickers. + """ + + current_date = _resolved_date(current_date) + lines = [f"=== Residual Income Valuation ({current_date}) ===\n"] + + for ticker in tickers: + metrics = get_financial_metrics( + ticker=ticker, + end_date=current_date, + limit=8, + ) + if not metrics: + lines.append(f"{ticker}: No financial metrics\n") + continue + + line_items = search_line_items( + ticker=ticker, + line_items=["net_income"], + end_date=current_date, + period="ttm", + limit=1, + ) + if not line_items or not line_items[0].net_income: + lines.append(f"{ticker}: No net income data\n") + continue + + market_cap = get_market_cap(ticker, current_date) + if not market_cap: + lines.append(f"{ticker}: Market cap unavailable\n") + continue + + m = metrics[0] + if not m.price_to_book_ratio or m.price_to_book_ratio <= 0: + lines.append(f"{ticker}: Invalid P/B ratio\n") + continue + + net_income = line_items[0].net_income + pb_ratio = m.price_to_book_ratio + book_value = market_cap / pb_ratio + + # Model parameters + cost_of_equity = 0.10 + bv_growth = m.book_value_growth or 0.03 + terminal_growth = 0.03 + num_years = 5 + margin_of_safety = 0.20 + + initial_ri = net_income - cost_of_equity * book_value + if initial_ri <= 0: + lines.append(f"{ticker}: Negative residual income\n") + continue + + # PV calculation + pv_ri = sum( + initial_ri * (1 + bv_growth) ** year / (1 + cost_of_equity) ** year + for year in range(1, num_years + 1) + ) + terminal_ri = initial_ri * (1 + bv_growth) ** (num_years + 1) + terminal_value = terminal_ri / (cost_of_equity - terminal_growth) + pv_terminal = terminal_value / (1 + cost_of_equity) ** num_years + + intrinsic_value = (book_value + pv_ri + pv_terminal) * ( + 1 - margin_of_safety + ) + value_gap = (intrinsic_value - market_cap) / market_cap * 100 + + lines.append(f"{ticker}:") + lines.append(f" Book Value: ${book_value:,.0f}") + lines.append(f" Residual Income: ${initial_ri:,.0f}") + lines.append( + f" Intrinsic Value (w/ 20% MoS): ${intrinsic_value:,.0f}", + ) + lines.append(f" Value Gap: {value_gap:+.1f}%") + lines.append("") + + return _to_text_response("\n".join(lines)) + + +# Tool Registry for dynamic toolkit creation +TOOL_REGISTRY = { + "analyze_efficiency_ratios": analyze_efficiency_ratios, + "analyze_profitability": analyze_profitability, + "analyze_growth": analyze_growth, + "analyze_financial_health": analyze_financial_health, + "analyze_valuation_ratios": analyze_valuation_ratios, + "get_financial_metrics_tool": get_financial_metrics_tool, + "analyze_trend_following": analyze_trend_following, + "analyze_mean_reversion": analyze_mean_reversion, + "analyze_momentum": analyze_momentum, + "analyze_volatility": analyze_volatility, + "analyze_insider_trading": analyze_insider_trading, + "analyze_news_sentiment": analyze_news_sentiment, + "dcf_valuation_analysis": dcf_valuation_analysis, + "owner_earnings_valuation_analysis": owner_earnings_valuation_analysis, + "ev_ebitda_valuation_analysis": ev_ebitda_valuation_analysis, + "residual_income_valuation_analysis": residual_income_valuation_analysis, +} diff --git a/evotraders/backend/tools/data_tools.py b/evotraders/backend/tools/data_tools.py new file mode 100644 index 0000000..498441d --- /dev/null +++ b/evotraders/backend/tools/data_tools.py @@ -0,0 +1,720 @@ +# -*- coding: utf-8 -*- +# flake8: noqa: E501 +# pylint: disable=C0301 +""" +Data fetching tools for financial data. + +All functions use centralized data source configuration from data_config.py. +The data source is automatically determined based on available API keys: +- Priority: FINNHUB_API_KEY > FINANCIAL_DATASETS_API_KEY +""" +import datetime +import time + +import finnhub +import pandas as pd +import pandas_market_calendars as mcal +import requests + +from backend.config.data_config import ( + get_config, + get_api_key, +) +from backend.data.cache import get_cache +from backend.data.schema import ( + CompanyFactsResponse, + CompanyNews, + CompanyNewsResponse, + FinancialMetrics, + FinancialMetricsResponse, + InsiderTrade, + InsiderTradeResponse, + LineItem, + LineItemResponse, + Price, + PriceResponse, +) + +# Global cache instance +_cache = get_cache() + + +def get_last_tradeday(date: str) -> str: + """ + Get the previous trading day for the specified date + + Args: + date: Date string (YYYY-MM-DD) + + Returns: + Previous trading day date string (YYYY-MM-DD) + """ + current_date = datetime.datetime.strptime(date, "%Y-%m-%d") + _NYSE_CALENDAR = mcal.get_calendar("NYSE") + + if _NYSE_CALENDAR is not None: + # Get trading days before current date + # Go back 90 days from current date to get all trading days + start_search = current_date - datetime.timedelta(days=90) + + if hasattr(_NYSE_CALENDAR, "valid_days"): + # pandas_market_calendars + trading_dates = _NYSE_CALENDAR.valid_days( + start_date=start_search.strftime("%Y-%m-%d"), + end_date=current_date.strftime("%Y-%m-%d"), + ) + else: + # exchange_calendars + trading_dates = _NYSE_CALENDAR.sessions_in_range( + start_search.strftime("%Y-%m-%d"), + current_date.strftime("%Y-%m-%d"), + ) + + # Convert to date list + trading_dates_list = [ + pd.Timestamp(d).strftime("%Y-%m-%d") for d in trading_dates + ] + + # Find current date position in the list + if date in trading_dates_list: + # If current date is a trading day, return previous trading day + idx = trading_dates_list.index(date) + if idx > 0: + return trading_dates_list[idx - 1] + else: + # If it's the first trading day, go back further + prev_date = current_date - datetime.timedelta(days=1) + return get_last_tradeday(prev_date.strftime("%Y-%m-%d")) + else: + # If current date is not a trading day, return the nearest trading day + if trading_dates_list: + return trading_dates_list[-1] + + return prev_date.strftime("%Y-%m-%d") + + +def _make_api_request( + url: str, + headers: dict, + method: str = "GET", + json_data: dict = None, + max_retries: int = 3, +) -> requests.Response: + """ + Make an API request with rate limiting handling and moderate backoff. + + Args: + url: The URL to request + headers: Headers to include in the request + method: HTTP method (GET or POST) + json_data: JSON data for POST requests + max_retries: Maximum number of retries (default: 3) + + Returns: + requests.Response: The response object + + Raises: + Exception: If the request fails with a non-429 error + """ + for attempt in range(max_retries + 1): # +1 for initial attempt + if method.upper() == "POST": + response = requests.post(url, headers=headers, json=json_data) + else: + response = requests.get(url, headers=headers) + + if response.status_code == 429 and attempt < max_retries: + # Linear backoff: 60s, 90s, 120s, 150s... + delay = 60 + (30 * attempt) + print( + f"Rate limited (429). Attempt {attempt + 1}/{max_retries + 1}. Waiting {delay}s before retrying...", + ) + time.sleep(delay) + continue + + # Return the response (whether success, other errors, or final 429) + return response + + +def get_prices( + ticker: str, + start_date: str, + end_date: str, +) -> list[Price]: + """ + Fetch price data from cache or API. + + Uses centralized data source configuration (FINNHUB_API_KEY prioritized). + + Args: + ticker: Stock ticker symbol + start_date: Start date (YYYY-MM-DD) + end_date: End date (YYYY-MM-DD) + + Returns: + list[Price]: List of Price objects + """ + config = get_config() + data_source = config.source + api_key = config.api_key + + # Create a cache key that includes all parameters to ensure exact matches + cache_key = f"{ticker}_{start_date}_{end_date}_{data_source}" + + # Check cache first - simple exact match + if cached_data := _cache.get_prices(cache_key): + return [Price(**price) for price in cached_data] + + prices = [] + + if data_source == "finnhub": + # Use Finnhub API + client = finnhub.Client(api_key=api_key) + + # Convert dates to timestamps + start_timestamp = int( + datetime.datetime.strptime(start_date, "%Y-%m-%d").timestamp(), + ) + end_timestamp = int( + ( + datetime.datetime.strptime(end_date, "%Y-%m-%d") + + datetime.timedelta(days=1) + ).timestamp(), + ) + + # Fetch candle data from Finnhub + candles = client.stock_candles( + ticker, + "D", + start_timestamp, + end_timestamp, + ) + + # Convert to Price objects + for i in range(len(candles["t"])): + price = Price( + open=candles["o"][i], + close=candles["c"][i], + high=candles["h"][i], + low=candles["l"][i], + volume=int(candles["v"][i]), + time=datetime.datetime.fromtimestamp(candles["t"][i]).strftime( + "%Y-%m-%d", + ), + ) + prices.append(price) + + else: # financial_datasets + # Use Financial Datasets API + headers = {"X-API-KEY": api_key} + + url = f"https://api.financialdatasets.ai/prices/?ticker={ticker}&interval=day&interval_multiplier=1&start_date={start_date}&end_date={end_date}" + response = _make_api_request(url, headers) + if response.status_code != 200: + raise ValueError( + f"Error fetching data: {ticker} - {response.status_code} - {response.text}", + ) + + # Parse response with Pydantic model + price_response = PriceResponse(**response.json()) + prices = price_response.prices + + if not prices: + return [] + + # Cache the results using the comprehensive cache key + _cache.set_prices(cache_key, [p.model_dump() for p in prices]) + return prices + + +def get_financial_metrics( + ticker: str, + end_date: str, + period: str = "ttm", + limit: int = 10, +) -> list[FinancialMetrics]: + """ + Fetch financial metrics from cache or API. + + Uses centralized data source configuration (FINNHUB_API_KEY prioritized). + + Args: + ticker: Stock ticker symbol + end_date: End date (YYYY-MM-DD) + period: Period type (default: "ttm") + limit: Number of records to fetch + + Returns: + list[FinancialMetrics]: List of financial metrics + """ + config = get_config() + data_source = config.source + api_key = config.api_key + + # Create a cache key that includes all parameters to ensure exact matches + cache_key = f"{ticker}_{period}_{end_date}_{limit}_{data_source}" + + # Check cache first - simple exact match + if cached_data := _cache.get_financial_metrics(cache_key): + return [FinancialMetrics(**metric) for metric in cached_data] + + financial_metrics = [] + + if data_source == "finnhub": + # Use Finnhub API - Basic Financials + client = finnhub.Client(api_key=api_key) + + # Fetch basic financials from Finnhub + # metric='all' returns all available metrics + financials = client.company_basic_financials(ticker, "all") + + if not financials or "metric" not in financials: + return [] + + # Finnhub returns {series: {...}, metric: {...}, metricType: ..., symbol: ...} + # We need to create a FinancialMetrics object from this + metric_data = financials.get("metric", {}) + + # Create a FinancialMetrics object with available data + metric = _map_finnhub_metrics(ticker, end_date, period, metric_data) + + financial_metrics = [metric] + + else: # financial_datasets + # Use Financial Datasets API + headers = {"X-API-KEY": api_key} + + url = f"https://api.financialdatasets.ai/financial-metrics/?ticker={ticker}&report_period_lte={end_date}&limit={limit}&period={period}" + response = _make_api_request(url, headers) + if response.status_code != 200: + raise ValueError( + f"Error fetching data: {ticker} - {response.status_code} - {response.text}", + ) + + # Parse response with Pydantic model + metrics_response = FinancialMetricsResponse(**response.json()) + financial_metrics = metrics_response.financial_metrics + + if not financial_metrics: + return [] + + # Cache the results as dicts using the comprehensive cache key + _cache.set_financial_metrics( + cache_key, + [m.model_dump() for m in financial_metrics], + ) + return financial_metrics + + +def _map_finnhub_metrics( + ticker: str, + end_date: str, + period: str, + metric_data: dict, +) -> FinancialMetrics: + """Map Finnhub metric data to FinancialMetrics model.""" + return FinancialMetrics( + ticker=ticker, + report_period=end_date, + period=period, + currency="USD", + market_cap=metric_data.get("marketCapitalization"), + enterprise_value=None, + price_to_earnings_ratio=metric_data.get("peBasicExclExtraTTM"), + price_to_book_ratio=metric_data.get("pbAnnual"), + price_to_sales_ratio=metric_data.get("psAnnual"), + enterprise_value_to_ebitda_ratio=None, + enterprise_value_to_revenue_ratio=None, + free_cash_flow_yield=None, + peg_ratio=None, + gross_margin=metric_data.get("grossMarginTTM"), + operating_margin=metric_data.get("operatingMarginTTM"), + net_margin=metric_data.get("netProfitMarginTTM"), + return_on_equity=metric_data.get("roeTTM"), + return_on_assets=metric_data.get("roaTTM"), + return_on_invested_capital=metric_data.get("roicTTM"), + asset_turnover=metric_data.get("assetTurnoverTTM"), + inventory_turnover=metric_data.get("inventoryTurnoverTTM"), + receivables_turnover=metric_data.get("receivablesTurnoverTTM"), + days_sales_outstanding=None, + operating_cycle=None, + working_capital_turnover=None, + current_ratio=metric_data.get("currentRatioAnnual"), + quick_ratio=metric_data.get("quickRatioAnnual"), + cash_ratio=None, + operating_cash_flow_ratio=None, + debt_to_equity=metric_data.get("totalDebt/totalEquityAnnual"), + debt_to_assets=None, + interest_coverage=None, + revenue_growth=metric_data.get("revenueGrowthTTMYoy"), + earnings_growth=None, + book_value_growth=None, + earnings_per_share_growth=metric_data.get("epsGrowthTTMYoy"), + free_cash_flow_growth=None, + operating_income_growth=None, + ebitda_growth=None, + payout_ratio=metric_data.get("payoutRatioAnnual"), + earnings_per_share=metric_data.get("epsBasicExclExtraItemsTTM"), + book_value_per_share=metric_data.get("bookValuePerShareAnnual"), + free_cash_flow_per_share=None, + ) + + +def search_line_items( + ticker: str, + line_items: list[str], + end_date: str, + period: str = "ttm", + limit: int = 10, +) -> list[LineItem]: + """Fetch line items from Financial Datasets API (only supported source).""" + api_key = get_api_key() + headers = {"X-API-KEY": api_key} + + url = "https://api.financialdatasets.ai/financials/search/line-items" + body = { + "tickers": [ticker], + "line_items": line_items, + "end_date": end_date, + "period": period, + "limit": limit, + } + response = _make_api_request(url, headers, method="POST", json_data=body) + if response.status_code != 200: + raise ValueError( + f"Error fetching data: {ticker} - {response.status_code} - {response.text}", + ) + data = response.json() + response_model = LineItemResponse(**data) + search_results = response_model.search_results + if not search_results: + return [] + + return search_results[:limit] + + +def _fetch_finnhub_insider_trades( + ticker: str, + start_date: str | None, + end_date: str, + limit: int, + api_key: str, +) -> list[InsiderTrade]: + """Fetch insider trades from Finnhub API.""" + client = finnhub.Client(api_key=api_key) + + from_date = start_date or ( + datetime.datetime.strptime(end_date, "%Y-%m-%d") + - datetime.timedelta(days=365) + ).strftime("%Y-%m-%d") + + insider_data = client.stock_insider_transactions( + ticker, + from_date, + end_date, + ) + + if not insider_data or "data" not in insider_data: + return [] + + return [ + _convert_finnhub_insider_trade(ticker, trade) + for trade in insider_data["data"][:limit] + ] + + +def _fetch_fd_insider_trades( + ticker: str, + start_date: str | None, + end_date: str, + limit: int, + api_key: str, +) -> list[InsiderTrade]: + """Fetch insider trades from Financial Datasets API.""" + headers = {"X-API-KEY": api_key} + all_trades = [] + current_end_date = end_date + + while True: + url = f"https://api.financialdatasets.ai/insider-trades/?ticker={ticker}&filing_date_lte={current_end_date}" + if start_date: + url += f"&filing_date_gte={start_date}" + url += f"&limit={limit}" + + response = _make_api_request(url, headers) + if response.status_code != 200: + raise ValueError( + f"Error fetching data: {ticker} - {response.status_code} - {response.text}", + ) + + data = response.json() + response_model = InsiderTradeResponse(**data) + insider_trades = response_model.insider_trades + + if not insider_trades: + break + + all_trades.extend(insider_trades) + + if not start_date or len(insider_trades) < limit: + break + + current_end_date = min( + trade.filing_date for trade in insider_trades + ).split("T")[0] + + if current_end_date <= start_date: + break + + return all_trades + + +def get_insider_trades( + ticker: str, + end_date: str, + start_date: str | None = None, + limit: int = 1000, +) -> list[InsiderTrade]: + """Fetch insider trades from cache or API.""" + config = get_config() + data_source = config.source + api_key = config.api_key + + cache_key = ( + f"{ticker}_{start_date or 'none'}_{end_date}_{limit}_{data_source}" + ) + + if cached_data := _cache.get_insider_trades(cache_key): + return [InsiderTrade(**trade) for trade in cached_data] + + if data_source == "finnhub": + all_trades = _fetch_finnhub_insider_trades( + ticker, + start_date, + end_date, + limit, + api_key, + ) + else: + all_trades = _fetch_fd_insider_trades( + ticker, + start_date, + end_date, + limit, + api_key, + ) + + if not all_trades: + return [] + + _cache.set_insider_trades( + cache_key, + [trade.model_dump() for trade in all_trades], + ) + return all_trades + + +def _fetch_finnhub_company_news( + ticker: str, + start_date: str | None, + end_date: str, + limit: int, + api_key: str, +) -> list[CompanyNews]: + """Fetch company news from Finnhub API.""" + client = finnhub.Client(api_key=api_key) + + from_date = start_date or ( + datetime.datetime.strptime(end_date, "%Y-%m-%d") + - datetime.timedelta(days=30) + ).strftime("%Y-%m-%d") + + news_data = client.company_news(ticker, _from=from_date, to=end_date) + + if not news_data: + return [] + + all_news = [] + for news_item in news_data[:limit]: + company_news = CompanyNews( + ticker=ticker, + title=news_item.get("headline", ""), + related=news_item.get("related", ""), + source=news_item.get("source", ""), + date=( + datetime.datetime.fromtimestamp( + news_item.get("datetime", 0), + datetime.timezone.utc, + ).strftime("%Y-%m-%d") + if news_item.get("datetime") + else None + ), + url=news_item.get("url", ""), + summary=news_item.get("summary", ""), + category=news_item.get("category", ""), + ) + all_news.append(company_news) + return all_news + + +def _fetch_fd_company_news( + ticker: str, + start_date: str | None, + end_date: str, + limit: int, + api_key: str, +) -> list[CompanyNews]: + """Fetch company news from Financial Datasets API.""" + headers = {"X-API-KEY": api_key} + all_news = [] + current_end_date = end_date + + while True: + url = f"https://api.financialdatasets.ai/news/?ticker={ticker}&end_date={current_end_date}" + if start_date: + url += f"&start_date={start_date}" + url += f"&limit={limit}" + + response = _make_api_request(url, headers) + if response.status_code != 200: + raise ValueError( + f"Error fetching data: {ticker} - {response.status_code} - {response.text}", + ) + + data = response.json() + response_model = CompanyNewsResponse(**data) + company_news = response_model.news + + if not company_news: + break + + all_news.extend(company_news) + + if not start_date or len(company_news) < limit: + break + + current_end_date = min( + news.date for news in company_news if news.date is not None + ).split("T")[0] + + if current_end_date <= start_date: + break + + return all_news + + +def get_company_news( + ticker: str, + end_date: str, + start_date: str | None = None, + limit: int = 1000, +) -> list[CompanyNews]: + """Fetch company news from cache or API.""" + config = get_config() + data_source = config.source + api_key = config.api_key + + cache_key = ( + f"{ticker}_{start_date or 'none'}_{end_date}_{limit}_{data_source}" + ) + + if cached_data := _cache.get_company_news(cache_key): + return [CompanyNews(**news) for news in cached_data] + + if data_source == "finnhub": + all_news = _fetch_finnhub_company_news( + ticker, + start_date, + end_date, + limit, + api_key, + ) + else: + all_news = _fetch_fd_company_news( + ticker, + start_date, + end_date, + limit, + api_key, + ) + + if not all_news: + return [] + + _cache.set_company_news( + cache_key, + [news.model_dump() for news in all_news], + ) + return all_news + + +def _convert_finnhub_insider_trade(ticker: str, trade: dict) -> InsiderTrade: + """Convert Finnhub insider trade format to InsiderTrade model.""" + shares_after = trade.get("share", 0) + change = trade.get("change", 0) + + return InsiderTrade( + ticker=ticker, + issuer=None, + name=trade.get("name", ""), + title=None, + is_board_director=None, + transaction_date=trade.get("transactionDate", ""), + transaction_shares=abs(change), + transaction_price_per_share=trade.get("transactionPrice", 0.0), + transaction_value=abs(change) * trade.get("transactionPrice", 0.0), + shares_owned_before_transaction=( + shares_after - change if shares_after and change else None + ), + shares_owned_after_transaction=float(shares_after) + if shares_after + else None, + security_title=None, + filing_date=trade.get("filingDate", ""), + ) + + +def get_market_cap(ticker: str, end_date: str) -> float | None: + """Fetch market cap from the API. Finnhub values are converted from millions.""" + config = get_config() + data_source = config.source + api_key = config.api_key + + # For today's date, use company facts API + if end_date == datetime.datetime.now().strftime("%Y-%m-%d"): + headers = {"X-API-KEY": api_key} + url = ( + f"https://api.financialdatasets.ai/company/facts/?ticker={ticker}" + ) + response = _make_api_request(url, headers) + if response.status_code != 200: + return None + + data = response.json() + response_model = CompanyFactsResponse(**data) + return response_model.company_facts.market_cap + + financial_metrics = get_financial_metrics(ticker, end_date) + if not financial_metrics: + return None + + market_cap = financial_metrics[0].market_cap + if not market_cap: + return None + + # Finnhub returns market cap in millions + if data_source == "finnhub": + market_cap = market_cap * 1_000_000 + + return market_cap + + +def prices_to_df(prices: list[Price]) -> pd.DataFrame: + """Convert prices to a DataFrame.""" + df = pd.DataFrame([p.model_dump() for p in prices]) + df["Date"] = pd.to_datetime(df["time"]) + df.set_index("Date", inplace=True) + numeric_cols = ["open", "close", "high", "low", "volume"] + for col in numeric_cols: + df[col] = pd.to_numeric(df[col], errors="coerce") + df.sort_index(inplace=True) + return df diff --git a/evotraders/backend/utils/__init__.py b/evotraders/backend/utils/__init__.py new file mode 100644 index 0000000..1201dd1 --- /dev/null +++ b/evotraders/backend/utils/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# This file can be empty + +"""Utility modules for the application.""" diff --git a/evotraders/backend/utils/analyst_tracker.py b/evotraders/backend/utils/analyst_tracker.py new file mode 100644 index 0000000..6942afd --- /dev/null +++ b/evotraders/backend/utils/analyst_tracker.py @@ -0,0 +1,277 @@ +# -*- coding: utf-8 -*- +""" +Analyst Performance Tracker +Tracks analyst predictions and calculates win rates for leaderboard +""" + +import logging +from typing import Any, Dict, List, Optional + +logger = logging.getLogger(__name__) + + +class AnalystPerformanceTracker: + """ + Tracks analyst predictions and evaluates accuracy + + Workflow: + 1. Record analyst predictions for each ticker before market close + 2. After market close, evaluate predictions against actual returns + 3. Update leaderboard with win rates and statistics + """ + + def __init__(self): + self.daily_predictions = {} + + def record_analyst_predictions( + self, + final_predictions: List[Dict[str, Any]], + ): + """ + Record predictions from analysts for the current trading day + + Args: + final_predictions: List of structured prediction results + Format: [ + { + 'agent': 'analyst_name', + 'predictions': [ + {'ticker': 'AAPL', ' + direction': 'up', + 'confidence': 0.75}, + ... + ] + }, + ... + ] + tickers: List of tickers being analyzed + """ + self.daily_predictions = {} + + direction_mapping = { + "up": "long", + "down": "short", + "neutral": "hold", + } + + for result in final_predictions: + analyst_id = result.get("agent") + if not analyst_id: + continue + + predictions = result.get("predictions", []) + + self.daily_predictions[analyst_id] = {} + + for pred in predictions: + ticker = pred.get("ticker") + direction = pred.get("direction", "neutral") + + if ticker: + signal = direction_mapping.get(direction, "hold") + self.daily_predictions[analyst_id][ticker] = signal + + def evaluate_predictions( + self, + open_prices: Optional[Dict[str, float]], + close_prices: Dict[str, float], + date: str, + ) -> Dict[str, Dict[str, Any]]: + """ + Evaluate analyst predictions against actual market moves + + Args: + open_prices: Opening prices for each ticker + close_prices: Closing prices for each ticker + date: Trading date string (YYYY-MM-DD) + + Returns: + Dict mapping analyst_id to evaluation results + """ + evaluation_results = {} + + # Map internal signal types to frontend display names + signal_display_map = { + "long": "bull", + "short": "bear", + "hold": "neutral", + } + + for analyst_id, predictions in self.daily_predictions.items(): + correct_long = 0 + correct_short = 0 + incorrect_long = 0 + incorrect_short = 0 + unknown_long = 0 + unknown_short = 0 + hold_count = 0 + + # Individual signal records for frontend display + individual_signals: List[Dict[str, Any]] = [] + + for ticker, prediction in predictions.items(): + open_price = open_prices.get(ticker, 0) + close_price = close_prices.get(ticker, 0) + + signal_type = signal_display_map.get(prediction, "neutral") + + # Cannot evaluate if prices are missing + if open_price <= 0 or close_price <= 0: + if prediction == "long": + unknown_long += 1 + elif prediction == "short": + unknown_short += 1 + + individual_signals.append( + { + "ticker": ticker, + "signal": signal_type, + "date": date, + "is_correct": "unknown", + }, + ) + continue + + actual_return = (close_price - open_price) / open_price + + if prediction == "long": + is_correct = actual_return > 0 + if is_correct: + correct_long += 1 + else: + incorrect_long += 1 + + individual_signals.append( + { + "ticker": ticker, + "signal": signal_type, + "date": date, + "is_correct": is_correct, + }, + ) + + elif prediction == "short": + is_correct = actual_return < 0 + if is_correct: + correct_short += 1 + else: + incorrect_short += 1 + + individual_signals.append( + { + "ticker": ticker, + "signal": signal_type, + "date": date, + "is_correct": is_correct, + }, + ) + + elif prediction == "hold": + hold_count += 1 + individual_signals.append( + { + "ticker": ticker, + "signal": signal_type, + "date": date, + "is_correct": None, + }, + ) + + total_long = correct_long + incorrect_long + unknown_long + total_short = correct_short + incorrect_short + unknown_short + evaluated_long = correct_long + incorrect_long + evaluated_short = correct_short + incorrect_short + total_evaluated = evaluated_long + evaluated_short + correct_predictions = correct_long + correct_short + + win_rate = ( + correct_predictions / total_evaluated + if total_evaluated > 0 + else None + ) + + evaluation_results[analyst_id] = { + "total_predictions": total_evaluated, + "correct_predictions": correct_predictions, + "win_rate": win_rate, + "bull": { + "n": total_long, + "win": correct_long, + "unknown": unknown_long, + }, + "bear": { + "n": total_short, + "win": correct_short, + "unknown": unknown_short, + }, + "hold": hold_count, + "signals": individual_signals, + } + + return evaluation_results + + def clear_daily_predictions(self): + """Clear predictions after evaluation""" + self.daily_predictions = {} + + +def update_leaderboard_with_evaluations( + leaderboard: List[Dict[str, Any]], + evaluations: Dict[str, Dict[str, Any]], +) -> List[Dict[str, Any]]: + """ + Update leaderboard with new evaluation results + + Args: + leaderboard: Current leaderboard data + evaluations: Evaluation results for the day + + Returns: + Updated leaderboard + """ + for entry in leaderboard: + agent_id = entry.get("agentId") + if not agent_id or agent_id not in evaluations: + continue + + eval_result = evaluations[agent_id] + + # Update aggregate stats + entry["bull"]["n"] += eval_result["bull"]["n"] + entry["bull"]["win"] += eval_result["bull"]["win"] + entry["bull"]["unknown"] = ( + entry["bull"].get("unknown", 0) + eval_result["bull"]["unknown"] + ) + entry["bear"]["n"] += eval_result["bear"]["n"] + entry["bear"]["win"] += eval_result["bear"]["win"] + entry["bear"]["unknown"] = ( + entry["bear"].get("unknown", 0) + eval_result["bear"]["unknown"] + ) + + # Calculate win rate based on evaluated signals only + # evaluated = total - unknown + evaluated_bull = entry["bull"]["n"] - entry["bull"]["unknown"] + evaluated_bear = entry["bear"]["n"] - entry["bear"]["unknown"] + total_evaluated = evaluated_bull + evaluated_bear + total_wins = entry["bull"]["win"] + entry["bear"]["win"] + + if total_evaluated > 0: + entry["winRate"] = round(total_wins / total_evaluated, 4) + + # Add individual signal records + if "signals" not in entry: + entry["signals"] = [] + + for signal in eval_result.get("signals", []): + entry["signals"].append(signal) + + # Keep only recent signals (e.g., last 100 individual signals) + entry["signals"] = entry["signals"][-100:] + + # Re-rank analysts by win rate (rank starts from 1) + analyst_entries = [e for e in leaderboard if e.get("rank") is not None] + analyst_entries.sort(key=lambda e: e.get("winRate", 0), reverse=True) + for idx, entry in enumerate(analyst_entries): + entry["rank"] = idx + 1 # Rank 1 = highest win rate (gold medal) + + return leaderboard diff --git a/evotraders/backend/utils/baselines.py b/evotraders/backend/utils/baselines.py new file mode 100644 index 0000000..424039c --- /dev/null +++ b/evotraders/backend/utils/baselines.py @@ -0,0 +1,356 @@ +# -*- coding: utf-8 -*- +""" +Baseline Strategy Calculators +Tracks performance of simple baseline strategies for comparison +""" +import logging +from datetime import datetime +from typing import Any, Dict, List, Tuple, TypedDict + +logger = logging.getLogger(__name__) + + +class Portfolio(TypedDict): + cash: float + positions: Dict[str, float] + + +class BaselineCalculator: + """ + Calculates baseline strategy returns for comparison + + Strategies: + 1. Equal-weight: Allocate equal weight to all tickers + 2. Market-cap-weighted: Allocate proportional to market cap + 3. Simple momentum: Monthly rebalance, + long top 50% momentum, short bottom 50% + """ + + def __init__(self, initial_capital: float = 100000.0): + self.initial_capital = initial_capital + + self.equal_weight_portfolio: Portfolio = {"cash": 0.0, "positions": {}} + self.market_cap_portfolio: Portfolio = {"cash": 0.0, "positions": {}} + self.momentum_portfolio: Portfolio = { + "cash": initial_capital, + "positions": {}, + } + + self.equal_weight_initialized = False + self.market_cap_initialized = False + self.momentum_last_rebalance_date = None + + def calculate_equal_weight_value( + self, + tickers: List[str], + prices: Dict[str, float], + ) -> float: + """ + Calculate equal-weight portfolio value + + On first call, initialize positions with equal allocation + Subsequently, mark-to-market existing positions + """ + if not self.equal_weight_initialized: + allocation_per_ticker = self.initial_capital / len(tickers) + self.equal_weight_portfolio["cash"] = 0.0 + for ticker in tickers: + price = prices.get(ticker, 0) + if price > 0: + shares = allocation_per_ticker / price + self.equal_weight_portfolio["positions"][ticker] = shares + self.equal_weight_initialized = True + + total_value = self.equal_weight_portfolio["cash"] + for ticker, shares in self.equal_weight_portfolio["positions"].items(): + price = prices.get(ticker, 0) + total_value += shares * price + + return total_value + + def calculate_market_cap_weighted_value( + self, + tickers: List[str], + prices: Dict[str, float], + market_caps: Dict[str, float], + ) -> float: + """ + Calculate market-cap-weighted portfolio value + + On first call, initialize positions weighted by market cap + Subsequently, mark-to-market existing positions + """ + if not self.market_cap_initialized: + total_market_cap = sum(market_caps.get(t, 0) for t in tickers) + if total_market_cap <= 0: + logger.warning("No market cap data, using equal weight") + return self.calculate_equal_weight_value(tickers, prices) + + self.market_cap_portfolio["cash"] = 0.0 + for ticker in tickers: + market_cap = market_caps.get(ticker, 0) + price = prices.get(ticker, 0) + if market_cap > 0 and price > 0: + weight = market_cap / total_market_cap + allocation = self.initial_capital * weight + shares = allocation / price + self.market_cap_portfolio["positions"][ticker] = shares + self.market_cap_initialized = True + + total_value = self.market_cap_portfolio["cash"] + for ticker, shares in self.market_cap_portfolio["positions"].items(): + price = prices.get(ticker, 0) + total_value += shares * price + + return total_value + + def calculate_momentum_value( + self, + tickers: List[str], + prices: Dict[str, float], + momentum_scores: Dict[str, float], + date: str, + rebalance: bool = False, + ) -> float: + """ + Calculate momentum strategy portfolio value + + Strategy: Monthly rebalance + - Long top 50% momentum stocks + - Short bottom 50% momentum stocks (if shorting enabled) + - Equal weight within each group + + Args: + tickers: List of tickers + prices: Current prices + momentum_scores: Momentum scores for each ticker + date: Current date (YYYY-MM-DD) + rebalance: Force rebalance if True + """ + should_rebalance = rebalance + if self.momentum_last_rebalance_date is None: + should_rebalance = True + elif not rebalance: + last_date = datetime.strptime( + self.momentum_last_rebalance_date, + "%Y-%m-%d", + ) + current_date = datetime.strptime(date, "%Y-%m-%d") + if (current_date.year, current_date.month) != ( + last_date.year, + last_date.month, + ): + should_rebalance = True + + if should_rebalance: + self._rebalance_momentum_portfolio( + tickers, + prices, + momentum_scores, + ) + self.momentum_last_rebalance_date = date + + total_value = self.momentum_portfolio["cash"] + for ticker, shares in self.momentum_portfolio["positions"].items(): + price = prices.get(ticker, 0) + total_value += shares * price + + return total_value + + def _rebalance_momentum_portfolio( + self, + tickers: List[str], + prices: Dict[str, float], + momentum_scores: Dict[str, float], + ): + """Rebalance momentum portfolio based on current momentum scores""" + current_value = self.momentum_portfolio["cash"] + for ticker, shares in self.momentum_portfolio["positions"].items(): + price = prices.get(ticker, 0) + current_value += shares * price + + self.momentum_portfolio["positions"] = {} + + sorted_tickers = sorted( + tickers, + key=lambda t: momentum_scores.get(t, 0), + reverse=True, + ) + + mid_point = len(sorted_tickers) // 2 + long_tickers = ( + sorted_tickers[:mid_point] if mid_point > 0 else sorted_tickers + ) + + if len(long_tickers) == 0: + self.momentum_portfolio["cash"] = current_value + return + + allocation_per_ticker = current_value / len(long_tickers) + used_capital = 0.0 + + for ticker in long_tickers: + price = prices.get(ticker, 0) + if price > 0: + shares = allocation_per_ticker / price + self.momentum_portfolio["positions"][ticker] = shares + used_capital += allocation_per_ticker + + self.momentum_portfolio["cash"] = current_value - used_capital + + def get_all_baseline_values( + self, + tickers: List[str], + prices: Dict[str, float], + market_caps: Dict[str, float], + momentum_scores: Dict[str, float], + date: str, + rebalance_momentum: bool = False, + ) -> Dict[str, float]: + """ + Get all baseline portfolio values in one call + + Returns: + Dict with keys: equal_weight, market_cap_weighted, momentum + """ + equal_weight_value = self.calculate_equal_weight_value(tickers, prices) + market_cap_value = self.calculate_market_cap_weighted_value( + tickers, + prices, + market_caps, + ) + momentum_value = self.calculate_momentum_value( + tickers, + prices, + momentum_scores, + date, + rebalance_momentum, + ) + + return { + "equal_weight": equal_weight_value, + "market_cap_weighted": market_cap_value, + "momentum": momentum_value, + } + + def export_state(self) -> Dict[str, Any]: + """ + Export calculator state for persistence + + Returns: + Dictionary containing all portfolio states for serialization + """ + return { + "baseline_state": { + "initialized": self.equal_weight_initialized, + "initial_allocation": dict( + self.equal_weight_portfolio["positions"], + ), + }, + "baseline_vw_state": { + "initialized": self.market_cap_initialized, + "initial_allocation": dict( + self.market_cap_portfolio["positions"], + ), + }, + "momentum_state": { + "positions": dict(self.momentum_portfolio["positions"]), + "cash": self.momentum_portfolio["cash"], + "initialized": self.momentum_last_rebalance_date is not None, + "last_rebalance_date": self.momentum_last_rebalance_date, + }, + } + + def load_state(self, state: Dict[str, Any]): + """ + Load calculator state from persistence + + Args: + state: Dictionary containing baseline_state, baseline_vw_state, + momentum_state from storage + """ + # Load equal-weight state + baseline_state = state.get("baseline_state", {}) + if baseline_state.get("initialized", False): + self.equal_weight_initialized = True + self.equal_weight_portfolio["positions"] = dict( + baseline_state.get("initial_allocation", {}), + ) + self.equal_weight_portfolio["cash"] = 0.0 + logger.info( + f"Restored equal-weight portfolio with " + f"{len(self.equal_weight_portfolio['positions'])} positions", + ) + + # Load market-cap-weighted state + baseline_vw_state = state.get("baseline_vw_state", {}) + if baseline_vw_state.get("initialized", False): + self.market_cap_initialized = True + self.market_cap_portfolio["positions"] = dict( + baseline_vw_state.get("initial_allocation", {}), + ) + self.market_cap_portfolio["cash"] = 0.0 + logger.info( + f"Restored market-cap portfolio with " + f"{len(self.market_cap_portfolio['positions'])} positions", + ) + + # Load momentum state + momentum_state = state.get("momentum_state", {}) + if momentum_state.get("initialized", False): + self.momentum_portfolio["positions"] = dict( + momentum_state.get("positions", {}), + ) + self.momentum_portfolio["cash"] = momentum_state.get( + "cash", + self.initial_capital, + ) + self.momentum_last_rebalance_date = momentum_state.get( + "last_rebalance_date", + ) + logger.info( + f"Restored momentum portfolio with " + f"{len(self.momentum_portfolio['positions'])} positions, " + f"last rebalance: {self.momentum_last_rebalance_date}", + ) + + +def calculate_momentum_scores( + tickers: List[str], + prices_history: Dict[str, List[Tuple[str, float]]], + lookback_days: int = 20, +) -> Dict[str, float]: + """ + Calculate momentum scores for tickers + + Args: + tickers: List of tickers + prices_history: Dict mapping ticker to list of (date, price) tuples + lookback_days: Number of days to calculate momentum + + Returns: + Dict mapping ticker to momentum score (percentage return) + """ + momentum_scores = {} + + for ticker in tickers: + history = prices_history.get(ticker, []) + if len(history) < 2: + momentum_scores[ticker] = 0.0 + continue + + sorted_history = sorted(history, key=lambda x: x[0]) + + if len(sorted_history) < lookback_days: + start_price = sorted_history[0][1] + end_price = sorted_history[-1][1] + else: + start_price = sorted_history[-lookback_days][1] + end_price = sorted_history[-1][1] + + if start_price > 0: + momentum_scores[ticker] = (end_price - start_price) / start_price + else: + momentum_scores[ticker] = 0.0 + + return momentum_scores diff --git a/evotraders/backend/utils/msg_adapter.py b/evotraders/backend/utils/msg_adapter.py new file mode 100644 index 0000000..af524d4 --- /dev/null +++ b/evotraders/backend/utils/msg_adapter.py @@ -0,0 +1,321 @@ +# -*- coding: utf-8 -*- +""" +Message Adapter - Converts AgentScope Msg to frontend JSON format +Ensures compatibility with existing frontend without modifications +""" +import json +import logging +from datetime import datetime +from typing import Any, Dict, List, Optional + +from agentscope.message import Msg + +logger = logging.getLogger(__name__) + + +class FrontendAdapter: + """ + Adapter to convert AgentScope messages to frontend-compatible format + + Frontend expects specific message types: + - agent: Agent thinking/analysis messages + - team_summary: Portfolio summary with equity curves + - team_holdings: Current portfolio holdings + - team_stats: Portfolio statistics + - team_trades: Trade history + - team_leaderboard: Agent performance rankings + - price_update: Real-time price updates + - system: System notifications + """ + + @staticmethod + def parse(msg: Msg) -> Optional[Dict[str, Any]]: + """ + Parse AgentScope Msg to frontend format + + Args: + msg: AgentScope Msg object + + Returns: + Dictionary in frontend format, or None if message should be skipped + """ + if msg is None: + return None + + # Determine message type based on metadata or content + msg_type = FrontendAdapter._determine_type(msg) + + if msg_type == "agent": + return FrontendAdapter._format_agent_msg(msg) + elif msg_type == "portfolio_update": + return FrontendAdapter._format_portfolio_msg(msg) + elif msg_type == "system": + return FrontendAdapter._format_system_msg(msg) + else: + # Default: treat as agent message + return FrontendAdapter._format_agent_msg(msg) + + @staticmethod + def _determine_type(msg: Msg) -> str: + """Determine frontend message type from Msg""" + # Check metadata for explicit type + if hasattr(msg, "metadata") and msg.metadata: + if "type" in msg.metadata: + return msg.metadata["type"] + + # Check if message contains portfolio update + if "portfolio" in msg.metadata: + return "portfolio_update" + + # Check message name/role + if msg.name == "system": + return "system" + + # Default to agent message + return "agent" + + @staticmethod + def _format_agent_msg(msg: object) -> Dict[str, Any]: + """ + Format agent message for frontend + + Args: + msg: Either AgentScope Msg or dict from pipeline results + + Frontend expects: + { + "type": "agent", + "role_key": "analyst_id", + "content": "message text", + "timestamp": "ISO timestamp" + } + """ + # Handle dict from pipeline results + if isinstance(msg, dict): + name = msg.get("agent", "unknown") + content = msg.get("content", "") + else: + # Handle Msg object + name = msg.name + content = msg.content + + return { + "type": "agent", + "role_key": name, + "content": content + if isinstance(content, str) + else json.dumps(content), + "timestamp": datetime.now().isoformat(), + } + + @staticmethod + def _format_portfolio_msg(msg: Msg) -> Dict[str, Any]: + """ + Format portfolio update message + + This typically generates multiple frontend messages: + - team_summary + - team_holdings + - team_stats + - team_trades (if trades were executed) + """ + metadata = msg.metadata or {} + portfolio = metadata.get("portfolio", {}) + + messages: List[Dict[str, Any]] = [] + + # Generate holdings message + holdings = FrontendAdapter.build_holdings(portfolio) + if holdings: + messages.append( + { + "type": "team_holdings", + "data": holdings, + "timestamp": datetime.now().isoformat(), + }, + ) + + # Generate stats message + stats = FrontendAdapter.build_stats(portfolio) + if stats: + messages.append( + { + "type": "team_stats", + "data": stats, + "timestamp": datetime.now().isoformat(), + }, + ) + + # Generate trades message if execution logs exist + execution_logs = metadata.get("execution_logs", []) + if execution_logs: + trades = FrontendAdapter.build_trades(execution_logs) + messages.append( + { + "type": "team_trades", + "mode": "incremental", + "data": trades, + "timestamp": datetime.now().isoformat(), + }, + ) + + # Return composite message + return { + "type": "composite", + "messages": messages, + } + + @staticmethod + def _format_system_msg(msg: Msg) -> Dict[str, Any]: + """Format system message""" + return { + "type": "system", + "content": msg.content + if isinstance(msg.content, str) + else json.dumps(msg.content), + "timestamp": datetime.now().isoformat(), + } + + @staticmethod + def build_holdings( + portfolio: Dict[str, Any], + prices: Dict[str, float] = None, + ) -> List[Dict[str, Any]]: + """Build holdings array from portfolio state""" + holdings = [] + prices = prices or {} + + positions = portfolio.get("positions", {}) + cash = portfolio.get("cash", 0.0) + + # Calculate total value using current prices + total_value = cash + for ticker, position in positions.items(): + long_shares = position.get("long", 0) + short_shares = position.get("short", 0) + price = prices.get(ticker) or position.get("avg_price", 0) + total_value += (long_shares - short_shares) * price + + # Build holdings for each position + for ticker, position in positions.items(): + long_shares = position.get("long", 0) + short_shares = position.get("short", 0) + avg_price = position.get("avg_price", 0) + current_price = prices.get(ticker) or avg_price + + net_shares = long_shares - short_shares + if net_shares == 0: + continue + + market_value = net_shares * current_price + weight = market_value / total_value if total_value > 0 else 0 + + holdings.append( + { + "ticker": ticker, + "quantity": net_shares, + "avg": avg_price, + "currentPrice": current_price, + "marketValue": market_value, + "weight": weight, + }, + ) + + # Add cash as a holding + if cash > 0: + holdings.append( + { + "ticker": "CASH", + "quantity": 1, + "avg": cash, + "currentPrice": cash, + "marketValue": cash, + "weight": cash / total_value if total_value > 0 else 0, + }, + ) + + return holdings + + @staticmethod + def build_stats( + portfolio: Dict[str, Any], + prices: Dict[str, float] = None, + ) -> Dict[str, Any]: + """Build stats dictionary from portfolio""" + prices = prices or {} + positions = portfolio.get("positions", {}) + cash = portfolio.get("cash", 0.0) + margin_used = portfolio.get("margin_used", 0.0) + + # Calculate total value using current prices + total_value = cash + for ticker, position in positions.items(): + long_shares = position.get("long", 0) + short_shares = position.get("short", 0) + price = prices.get(ticker) or position.get("avg_price", 0) + total_value += (long_shares - short_shares) * price + + # Calculate ticker weights + ticker_weights = {} + for ticker, position in positions.items(): + long_shares = position.get("long", 0) + short_shares = position.get("short", 0) + price = prices.get(ticker) or position.get("avg_price", 0) + + market_value = (long_shares - short_shares) * price + if market_value != 0: + ticker_weights[ticker] = ( + market_value / total_value if total_value > 0 else 0 + ) + + # Calculate total return + initial_cash = portfolio.get("initial_cash", 100000.0) + total_return = ( + ((total_value - initial_cash) / initial_cash * 100) + if initial_cash > 0 + else 0.0 + ) + + return { + "totalAssetValue": round(total_value, 2), + "totalReturn": round(total_return, 2), + "cashPosition": round(cash, 2), + "tickerWeights": ticker_weights, + "marginUsed": round(margin_used, 2), + } + + @staticmethod + def build_trades(execution_logs: List[str]) -> List[Dict[str, Any]]: + """ + Build trades array from execution logs + + Frontend expects: + [{ + "ts": 1234567890, + "ticker": "AAPL", + "side": "LONG", + "qty": 100, + "price": 150.0, + "reason": "Buy signal" + }, ...] + """ + trades = [] + timestamp = int(datetime.now().timestamp() * 1000) + + for log in execution_logs: + # Parse execution log (simplified - should use structured data) + if "Executed" in log: + # Extract trade details from log string + # in real implementation, pass structured data + trades.append( + { + "ts": timestamp, + "ticker": "UNKNOWN", # Should parse from log + "side": "LONG", # Should parse from log + "qty": 0, # Should parse from log + "price": 0.0, # Should parse from log + "reason": log, + }, + ) + + return trades diff --git a/evotraders/backend/utils/progress.py b/evotraders/backend/utils/progress.py new file mode 100644 index 0000000..c904cd1 --- /dev/null +++ b/evotraders/backend/utils/progress.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +from datetime import datetime, timezone +from typing import Callable, Optional + +from rich.console import Console +from rich.live import Live +from rich.style import Style +from rich.table import Table +from rich.text import Text + +console = Console() + + +class AgentProgress: + """Manages progress tracking for multiple agents.""" + + def __init__(self): + self.agent_status = {} + self.table = Table(show_header=False, box=None, padding=(0, 1)) + self.live = Live(self.table, console=console, refresh_per_second=4) + self.started = False + self.update_handlers = [] + + def register_handler( + self, + handler: Callable[[str, Optional[str], str], None], + ): + """Register a handler to be called when agent status updates.""" + self.update_handlers.append(handler) + return handler # Return handler to support use as decorator + + def unregister_handler( + self, + handler: Callable[[str, Optional[str], str], None], + ): + """Unregister a previously registered handler.""" + if handler in self.update_handlers: + self.update_handlers.remove(handler) + + def start(self): + """Start the progress display.""" + if not self.started: + self.live.start() + self.started = True + + def stop(self): + """Stop the progress display.""" + if self.started: + self.live.stop() + self.started = False + + def update_status( + self, + agent_name: str, + ticker: Optional[str] = None, + status: str = "", + analysis: Optional[str] = None, + ): + """Update the status of an agent.""" + if agent_name not in self.agent_status: + self.agent_status[agent_name] = {"status": "", "ticker": None} + + if ticker: + self.agent_status[agent_name]["ticker"] = ticker + if status: + self.agent_status[agent_name]["status"] = status + if analysis: + self.agent_status[agent_name]["analysis"] = analysis + + # Set the timestamp as UTC datetime + timestamp = datetime.now(timezone.utc).isoformat() + self.agent_status[agent_name]["timestamp"] = timestamp + + # Notify all registered handlers + for handler in self.update_handlers: + handler(agent_name, ticker, status, analysis, timestamp) + + self._refresh_display() + + def get_all_status(self): + """Get the current status of all agents as a dictionary.""" + return { + agent_name: { + "ticker": info["ticker"], + "status": info["status"], + "display_name": self._get_display_name(agent_name), + } + for agent_name, info in self.agent_status.items() + } + + def _get_display_name(self, agent_name: str) -> str: + """Convert agent_name to a display-friendly format.""" + return agent_name.replace("_agent", "").replace("_", " ").title() + + def _refresh_display(self): + """Refresh the progress display.""" + self.table.columns.clear() + self.table.add_column(width=100) + + # Sort Risk Management and Portfolio Management at the bottom + def sort_key(item): + agent_name = item[0] + if "risk_manager" in agent_name: + return (2, agent_name) + elif "portfolio_manager" in agent_name: + return (3, agent_name) + else: + return (1, agent_name) + + for agent_name, info in sorted( + self.agent_status.items(), + key=sort_key, + ): + status = info["status"] + ticker = info["ticker"] + # Create the status text with appropriate styling + if status.lower() == "done": + style = Style(color="green", bold=True) + symbol = "✓" + elif status.lower() == "error": + style = Style(color="red", bold=True) + symbol = "✗" + else: + style = Style(color="yellow") + symbol = "⋯" + + agent_display = self._get_display_name(agent_name) + status_text = Text() + status_text.append(f"{symbol} ", style=style) + status_text.append(f"{agent_display:<20}", style=Style(bold=True)) + + if ticker: + status_text.append(f"[{ticker}] ", style=Style(color="cyan")) + status_text.append(status, style=style) + + self.table.add_row(status_text) + + +# Create a global instance +progress = AgentProgress() diff --git a/evotraders/backend/utils/settlement.py b/evotraders/backend/utils/settlement.py new file mode 100644 index 0000000..a091302 --- /dev/null +++ b/evotraders/backend/utils/settlement.py @@ -0,0 +1,338 @@ +# -*- coding: utf-8 -*- +""" +Settlement Coordinator +Unified daily settlement logic for agent portfolio, baselines, and analyst tracking +""" +# flake8: noqa: E501 +import logging +from datetime import datetime +from typing import Any, Dict, List, Optional + +from backend.services.storage import StorageService +from backend.utils.analyst_tracker import ( + AnalystPerformanceTracker, + update_leaderboard_with_evaluations, +) +from backend.utils.baselines import ( + BaselineCalculator, + calculate_momentum_scores, +) + +logger = logging.getLogger(__name__) + + +class SettlementCoordinator: + """ + Coordinates daily settlement after market close + + Responsibilities: + 1. Calculate agent portfolio P&L + 2. Update baseline portfolios (equal-weight, market-cap, momentum) + 3. Evaluate analyst predictions and update leaderboard + 4. Update summary.json with all portfolio values + 5. Persist state to storage + """ + + def __init__( + self, + storage: "StorageService", + initial_capital: float = 100000.0, + ): + self.storage = storage + self.initial_capital = initial_capital + self.baseline_calculator = BaselineCalculator(initial_capital) + self.analyst_tracker = AnalystPerformanceTracker() + + self.price_history: Dict[str, List[tuple]] = {} + + # Load persisted state from storage + self._load_persisted_state() + + def _load_persisted_state(self): + """ + Load persisted baseline and price history state from storage + + This restores the baseline calculator state so that backtest/live mode + can resume from where it left off. + """ + internal_state = self.storage.load_internal_state() + + # Load baseline calculator state + baseline_state = { + "baseline_state": internal_state.get("baseline_state", {}), + "baseline_vw_state": internal_state.get("baseline_vw_state", {}), + "momentum_state": internal_state.get("momentum_state", {}), + } + self.baseline_calculator.load_state(baseline_state) + + # Load price history for momentum calculation + saved_price_history = internal_state.get("price_history", {}) + if saved_price_history: + # Convert saved format back to list of tuples + for ticker, history in saved_price_history.items(): + self.price_history[ticker] = [ + (entry["date"], entry["price"]) + if isinstance(entry, dict) + else tuple(entry) + for entry in history + ] + logger.info( + f"Restored price history for {len(self.price_history)} tickers", + ) + + def _save_persisted_state(self): + """ + Save baseline and price history state to storage + + This persists the baseline calculator state so that backtest/live mode + can resume from where it left off after restart. + """ + internal_state = self.storage.load_internal_state() + + # Export baseline calculator state + baseline_state = self.baseline_calculator.export_state() + internal_state["baseline_state"] = baseline_state["baseline_state"] + internal_state["baseline_vw_state"] = baseline_state[ + "baseline_vw_state" + ] + internal_state["momentum_state"] = baseline_state["momentum_state"] + + # Save price history (convert tuples to dicts for JSON serialization) + price_history_serializable = {} + for ticker, history in self.price_history.items(): + price_history_serializable[ticker] = [ + {"date": date, "price": price} for date, price in history + ] + internal_state["price_history"] = price_history_serializable + + self.storage.save_internal_state(internal_state) + logger.info("Persisted baseline calculator and price history state") + + def record_analyst_predictions( + self, + final_predictions: List[Dict[str, Any]], + ): + """ + Record structured analyst predictions before market close + + Args: + final_predictions: Structured prediction results from analysts + Format: [ + { + 'agent': 'analyst_name', + 'predictions': [ + {'ticker': 'AAPL', 'direction': 'up', 'confidence': 0.75}, + ... + ] + }, + ... + ] + tickers: List of tickers being analyzed + """ + self.analyst_tracker.record_analyst_predictions(final_predictions) + + def update_price_history( + self, + date: str, + prices: Dict[str, float], + ): + """ + Update price history for momentum calculation + + Args: + date: Trading date (YYYY-MM-DD) + prices: Current prices for each ticker + """ + for ticker, price in prices.items(): + if ticker not in self.price_history: + self.price_history[ticker] = [] + self.price_history[ticker].append((date, price)) + + self.price_history[ticker] = self.price_history[ticker][-60:] + + def run_daily_settlement( + self, + date: str, + tickers: List[str], + open_prices: Optional[Dict[str, float]], + close_prices: Dict[str, float], + market_caps: Dict[str, float], + agent_portfolio: Dict[str, Any], + analyst_results: List[Dict[str, Any]], # pylint: disable=W0613 + ) -> Dict[str, Any]: + """ + Run complete daily settlement + + Args: + date: Trading date (YYYY-MM-DD) + tickers: List of tickers + open_prices: Opening prices + close_prices: Closing prices + market_caps: Market caps for each ticker + agent_portfolio: Current agent portfolio state + analyst_results: Analyst analysis results + + Returns: + Settlement results including all portfolio values and evaluations + """ + logger.info(f"Running daily settlement for {date}") + + self.update_price_history(date, close_prices) + + momentum_scores = calculate_momentum_scores( + tickers, + self.price_history, + lookback_days=20, + ) + + rebalance_momentum = self._should_rebalance_momentum(date) + + baseline_values = self.baseline_calculator.get_all_baseline_values( + tickers=tickers, + prices=close_prices, + market_caps=market_caps, + momentum_scores=momentum_scores, + date=date, + rebalance_momentum=rebalance_momentum, + ) + + agent_value = self.storage.calculate_portfolio_value( + agent_portfolio, + close_prices, + ) + + analyst_evaluations = self.analyst_tracker.evaluate_predictions( + open_prices, + close_prices, + date, + ) + + leaderboard = self.storage.load_file("leaderboard") or [] + updated_leaderboard = update_leaderboard_with_evaluations( + leaderboard, + analyst_evaluations, + ) + self.storage.save_file("leaderboard", updated_leaderboard) + + self._update_summary_with_baselines( + date, + agent_value, + baseline_values, + ) + + self.analyst_tracker.clear_daily_predictions() + + # Persist baseline calculator and price history state + self._save_persisted_state() + + return { + "date": date, + "agent_portfolio_value": agent_value, + "baseline_values": baseline_values, + "analyst_evaluations": analyst_evaluations, + "baselines_updated": True, + "leaderboard_updated": True, + } + + def _should_rebalance_momentum(self, date: str) -> bool: + """ + Check if momentum portfolio should rebalance + + Returns True if it's a new month + """ + last_rebalance = self.baseline_calculator.momentum_last_rebalance_date + if last_rebalance is None: + return True + + last_date = datetime.strptime(last_rebalance, "%Y-%m-%d") + current_date = datetime.strptime(date, "%Y-%m-%d") + + return (current_date.year, current_date.month) != ( + last_date.year, + last_date.month, + ) + + def _update_summary_with_baselines( + self, + date: str, + agent_value: float, + baseline_values: Dict[str, float], + ): + """ + Update summary.json with agent and baseline portfolio values + + NOTE: History updates are now handled centrally by storage.update_dashboard_after_cycle() + to ensure all histories (equity, baseline, baseline_vw, momentum) stay synchronized. + baseline_values are returned in run_daily_settlement() and passed to storage. + + Args: + date: Trading date (used for backtest-compatible timestamps) + agent_value: Agent portfolio value + baseline_values: Baseline portfolio values + """ + # History updates are now handled by storage.update_dashboard_after_cycle() + # which receives baseline_values from settlement_result and updates all histories together. + # This ensures equity and baseline data points are always synchronized. + + def update_intraday_values( + self, + tickers: List[str], + current_prices: Dict[str, float], + market_caps: Dict[str, float], + agent_portfolio: Dict[str, Any], + ) -> Dict[str, float]: + """ + Update portfolio values with current prices (for live mode intraday updates) + + Args: + tickers: List of tickers + current_prices: Current prices + market_caps: Market caps + agent_portfolio: Current agent portfolio + + Returns: + Dict with current portfolio values + """ + agent_value = self.storage.calculate_portfolio_value( + agent_portfolio, + current_prices, + ) + + equal_weight = self.baseline_calculator.calculate_equal_weight_value( + tickers, + current_prices, + ) + market_cap = ( + self.baseline_calculator.calculate_market_cap_weighted_value( + tickers, + current_prices, + market_caps, + ) + ) + + momentum_scores = calculate_momentum_scores( + tickers, + self.price_history, + lookback_days=20, + ) + + last_date = ( + list(self.price_history.values())[0][-1][0] + if self.price_history + else "" + ) + + momentum = self.baseline_calculator.calculate_momentum_value( + tickers, + current_prices, + momentum_scores, + date=last_date, + rebalance=False, + ) + + return { + "agent": agent_value, + "equal_weight": equal_weight, + "market_cap_weighted": market_cap, + "momentum": momentum, + } diff --git a/evotraders/backend/utils/terminal_dashboard.py b/evotraders/backend/utils/terminal_dashboard.py new file mode 100644 index 0000000..3be0418 --- /dev/null +++ b/evotraders/backend/utils/terminal_dashboard.py @@ -0,0 +1,348 @@ +# -*- coding: utf-8 -*- +""" +Terminal Dashboard - Persistent unified panel using Rich Live +""" +# pylint: disable=R0915,R0912 +import logging +import threading +import time +from typing import Any, Dict, List, Optional + +from rich.console import Console +from rich.live import Live +from rich.panel import Panel +from rich.table import Table + +logger = logging.getLogger(__name__) + + +class TerminalDashboard: + """Unified persistent terminal dashboard""" + + def __init__(self, console: Console = None): + self.console = console or Console() + self.live: Optional[Live] = None + + # Config state + self.mode = "live" + self.config_name = "" + self.host = "0.0.0.0" + self.port = 8765 + self.poll_interval = 10 + self.trigger_time = "now" + self.mock = False + self.enable_memory = False + self.local_time = "" + self.nyse_time = "" + self.start_date = "" + self.end_date = "" + self.tickers: List[str] = [] + self.initial_cash = 100000.0 + + # Trading state + self.current_date = "-" + self.status = "Initializing" + self.total_value = 0.0 + self.cash = 0.0 + self.pnl_pct = 0.0 + self.holdings: List[Dict] = [] + self.trades: List[Dict] = [] + self.days_completed = 0 + self.days_total = 0 + + # Progress message (last line) + self.progress = "" + self._dots_index = 0 + self._animator_running = False + self._animator_thread: Optional[threading.Thread] = None + + def set_config( + self, + mode: str, + config_name: str, + host: str, + port: int, + poll_interval: int, + trigger_time: str = "now", + mock: bool = False, + enable_memory: bool = False, + local_time: str = "", + nyse_time: str = "", + start_date: str = "", + end_date: str = "", + tickers: List[str] = None, + initial_cash: float = 100000.0, + ): + """Set configuration state""" + self.mode = mode + self.config_name = config_name + self.host = host + self.port = port + self.poll_interval = poll_interval + self.trigger_time = trigger_time + self.mock = mock + self.enable_memory = enable_memory + self.local_time = local_time + self.nyse_time = nyse_time + self.start_date = start_date + self.end_date = end_date + self.tickers = tickers or [] + self.initial_cash = initial_cash + self.total_value = initial_cash + self.cash = initial_cash + + def _build_panel(self) -> Panel: + """Build the unified dashboard panel""" + # Main grid + main_table = Table.grid(padding=(0, 2)) + main_table.add_column(width=28) + main_table.add_column(width=22) + main_table.add_column(width=22) + + # Left: Config + Status + left = Table.grid(padding=(0, 0)) + left.add_column() + + # Mode line + if self.mode == "backtest": + mode_str = "[cyan]Backtest[/cyan]" + elif self.mock: + mode_str = "[yellow]MOCK[/yellow]" + else: + mode_str = "[green]LIVE[/green]" + + left.add_row(f"[bold]Mode:[/bold] {mode_str}") + left.add_row(f"[dim]Config:[/dim] {self.config_name}") + left.add_row(f"[dim]Server:[/dim] {self.host}:{self.port}") + + if self.mode == "live" and self.nyse_time: + left.add_row(f"[dim]NYSE:[/dim] {self.nyse_time[:19]}") + trigger_display = ( + "[green]NOW[/green]" + if self.trigger_time == "now" + else self.trigger_time + ) + left.add_row(f"[dim]Trigger:[/dim] {trigger_display}") + + # Status + left.add_row("") + status_style = "green" if self.status == "Running" else "yellow" + left.add_row( + "[bold]Status:[/bold] " + f"[{status_style}]{self.status}[/{status_style}]", + ) + if self.mode == "backtest": + left.add_row( + f"[dim]Backtesting Period:[/dim] {self.days_total} days\n" + f" {self.start_date} -> {self.end_date}", + ) + left.add_row(f"[dim]Current Date:[/dim] {self.current_date}") + + # Middle: Portfolio + mid = Table.grid(padding=(0, 0)) + mid.add_column() + + pnl_style = "green" if self.pnl_pct >= 0 else "red" + mid.add_row("[bold]Portfolio[/bold]") + mid.add_row(f"NAV: [bold]${self.total_value:,.0f}[/bold]") + mid.add_row(f"Cash: ${self.cash:,.0f}") + mid.add_row(f"P&L: [{pnl_style}]{self.pnl_pct:+.2f}%[/{pnl_style}]") + + # Positions + mid.add_row("") + mid.add_row("[bold]Positions[/bold]") + stock_holdings = [ + h for h in self.holdings if h.get("ticker") != "CASH" + ] + if stock_holdings: + for h in stock_holdings[:7]: + qty = h.get("quantity", 0) + ticker = h.get("ticker", "")[:5] + val = h.get("marketValue", 0) + qty_str = f"{qty:+d}" if qty != 0 else "0" + mid.add_row( + f"[cyan]{ticker:<5}[/cyan] {qty_str:>5} ${val:>7,.0f}", + ) + if len(stock_holdings) > 7: + mid.add_row(f"[dim]+{len(stock_holdings) - 7} more[/dim]") + else: + mid.add_row("[dim]No positions[/dim]") + + # Right: Recent Trades + right = Table.grid(padding=(0, 0)) + right.add_column() + + right.add_row("[bold]Recent Trades[/bold]") + if self.trades: + for t in self.trades[:10]: + side = t.get("side", "") + ticker = t.get("ticker", "")[:5] + qty = t.get("qty", 0) + if side == "LONG": + side_str = "[green]L[/green]" + elif side == "SHORT": + side_str = "[red]S[/red]" + else: + side_str = "[dim]H[/dim]" + right.add_row(f"{side_str} [cyan]{ticker:<5}[/cyan] {qty:>4}") + if len(self.trades) > 10: + right.add_row(f"[dim]+{len(self.trades) - 10} more[/dim]") + else: + right.add_row("[dim]No trades[/dim]") + + main_table.add_row(left, mid, right) + + # Outer table to add progress line at bottom + outer = Table.grid(padding=(0, 0)) + outer.add_column() + outer.add_row(main_table) + + # Progress line (last row) with animated dots + if self.progress: + DOTS_FRAMES = [" ", ". ", ".. ", "..."] + dots = DOTS_FRAMES[self._dots_index % len(DOTS_FRAMES)] + outer.add_row("") + outer.add_row(f"[dim]> {self.progress}{dots}[/dim]") + + # Build panel + title = "[bold cyan]EvoTraders[/bold cyan]" + if self.mode == "backtest": + title += " [dim]Backtest[/dim]" + elif self.mock: + title += " [dim]Mock[/dim]" + else: + title += " [dim]Live[/dim]" + + return Panel( + outer, + title=title, + border_style="cyan", + padding=(0, 1), + ) + + def _run_animator(self): + """Background thread to animate the dots""" + while self._animator_running: + time.sleep(0.3) + if self.progress and self.live: + self._dots_index += 1 + self.live.update(self._build_panel()) + + def start(self): + """Start the live dashboard display""" + self.live = Live( + self._build_panel(), + console=self.console, + refresh_per_second=4, + vertical_overflow="visible", + ) + self.live.start() + + # Start animator thread + self._animator_running = True + self._animator_thread = threading.Thread( + target=self._run_animator, + daemon=True, + ) + self._animator_thread.start() + + def stop(self): + """Stop the live dashboard""" + self._animator_running = False + if self._animator_thread: + self._animator_thread.join(timeout=0.5) + self._animator_thread = None + if self.live: + self.live.stop() + self.live = None + + def update( + self, + date: str = None, + status: str = None, + portfolio: Dict[str, Any] = None, + holdings: List[Dict] = None, + trades: List[Dict] = None, + days_completed: int = None, + days_total: int = None, + ): + """Update dashboard state and refresh display""" + if date: + self.current_date = date + if status: + self.status = status + if days_completed is not None: + self.days_completed = days_completed + if days_total is not None: + self.days_total = days_total + + if portfolio: + self.total_value = portfolio.get( + "totalAssetValue", + 0, + ) or portfolio.get( + "total_value", + self.initial_cash, + ) + self.cash = portfolio.get("cashPosition", 0) or portfolio.get( + "cash", + self.initial_cash, + ) + if self.total_value > 0 and self.initial_cash > 0: + self.pnl_pct = ( + (self.total_value - self.initial_cash) / self.initial_cash + ) * 100 + + if holdings is not None: + self.holdings = holdings + if trades is not None: + self.trades = trades + + if self.live: + self.live.update(self._build_panel()) + + def log(self, msg: str, also_log: bool = True): + """ + Update progress message and refresh panel + + Args: + msg: Progress message to display + also_log: Whether to also write to logger (default True) + """ + self.progress = msg + if also_log: + logger.info(msg) + if self.live: + self.live.update(self._build_panel()) + + def print_final_summary(self): + """Print final summary when dashboard stops""" + pnl_style = "green" if self.pnl_pct >= 0 else "red" + + if self.mode == "backtest": + msg = ( + f"[bold]Backtest Complete[/bold] | " + f"Days: {self.days_completed} | " + f"NAV: ${self.total_value:,.0f} | " + f"Return: [{pnl_style}]{self.pnl_pct:+.2f}%[/{pnl_style}]" + ) + else: + msg = ( + f"[bold]Session End[/bold] | " + f"NAV: ${self.total_value:,.0f} | " + f"P&L: [{pnl_style}]{self.pnl_pct:+.2f}%[/{pnl_style}]" + ) + + self.console.print(Panel(msg, border_style="green")) + + +# Global instance +_dashboard: Optional[TerminalDashboard] = None + + +def get_dashboard() -> TerminalDashboard: + """Get or create global dashboard instance""" + global _dashboard + if _dashboard is None: + _dashboard = TerminalDashboard() + return _dashboard diff --git a/evotraders/backend/utils/trade_executor.py b/evotraders/backend/utils/trade_executor.py new file mode 100644 index 0000000..50b1ee7 --- /dev/null +++ b/evotraders/backend/utils/trade_executor.py @@ -0,0 +1,772 @@ +# -*- coding: utf-8 -*- +""" +Trading Execution Engine - Supports Two Modes +1. Signal mode: Only records directional signal decisions +2. Portfolio mode: Executes specific trades and tracks positions +""" +# flake8: noqa: E501 +from copy import deepcopy +from datetime import datetime +from typing import Any, Dict, List, Optional + + +class DirectionSignalRecorder: + """Direction signal recorder, records daily investment direction decisions""" + + def __init__(self): + """Initialize direction signal recorder""" + self.signal_log = [] # Record all directional signal history + + def record_direction_signals( + self, + decisions: Dict[str, Dict[str, Any]], + current_date: str = None, + ) -> Dict[str, Any]: + """ + Record Portfolio Manager's directional signal decisions + + Args: + decisions: PM's direction decisions {ticker: {action, confidence, reasoning}} + current_date: Current date (used for backtest compatibility) + + Returns: + Signal recording report + """ + if current_date is None: + current_date = datetime.now().strftime("%Y-%m-%d") + + # Use provided date for timestamp (backtest compatible) + timestamp = f"{current_date}T09:30:00" + + signal_report: Dict[str, Any] = { + "recorded_signals": {}, + "date": current_date, + "timestamp": timestamp, + "total_signals": len(decisions), + } + + print( + f"\n📊 Recording directional signal decisions for {current_date}...", + ) + + # Record directional signal for each ticker + for ticker, decision in decisions.items(): + action = decision.get("action", "hold") + confidence = decision.get("confidence", 0) + reasoning = decision.get("reasoning", "") + + # Record signal + signal_record = { + "ticker": ticker, + "action": action, + "confidence": confidence, + "reasoning": reasoning, + "date": current_date, + "timestamp": timestamp, + } + + self.signal_log.append(signal_record) + signal_report["recorded_signals"][ticker] = { + "action": action, + "confidence": confidence, + } + + # Display signal + action_emoji = {"long": "📈", "short": "📉", "hold": "➖"} + emoji = action_emoji.get(action, "❓") + print( + f" {emoji} {ticker}: {action.upper()} (Confidence: {confidence}%) - {reasoning}", + ) + + print(f"\n✅ Recorded directional signals for {len(decisions)} stocks") + + return signal_report + + def get_signal_summary(self) -> Dict[str, Any]: + """Get signal recording summary""" + return { + "total_signals": len(self.signal_log), + "signal_log": self.signal_log, + } + + +def parse_pm_decisions(pm_output: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: + """ + Parse Portfolio Manager output format + + Args: + pm_output: PM's raw output + + Returns: + Standardized decision format + """ + if isinstance(pm_output, dict) and "decisions" in pm_output: + return pm_output["decisions"] + elif isinstance(pm_output, dict): + # If directly a decision dictionary + return pm_output + else: + print(f"Warning: Unable to parse PM output format: {type(pm_output)}") + return {} + + +class PortfolioTradeExecutor: + """Portfolio mode trade executor, executes specific trades and tracks positions""" + + portfolio: Dict[str, Any] + trade_history: List[Dict[str, Any]] + portfolio_history: List[Dict[str, Any]] + + def __init__(self, initial_portfolio: Optional[Dict[str, Any]] = None): + """ + Initialize Portfolio trade executor + + Args: + initial_portfolio: Initial portfolio state + """ + + if initial_portfolio is None: + self.portfolio = { + "cash": 100000.0, + "positions": {}, + # Default 0.0 (short selling disabled) + "margin_requirement": 0.0, + "margin_used": 0.0, + } + else: + self.portfolio = deepcopy(initial_portfolio) + + self.trade_history = [] # Trade history + self.portfolio_history = [] # Portfolio history + + def execute_trade( + self, + ticker: str, + action: str, + quantity: int, + price: float, + current_date: str = None, + ) -> Dict[str, Any]: + """ + Execute a single trade + + Args: + ticker: Stock ticker + action: Trade action (long/short/hold) + quantity: Number of shares + price: Current price + current_date: Trade date + + Returns: + Trade result dictionary + """ + if current_date is None: + current_date = datetime.now().strftime("%Y-%m-%d") + + if action == "hold" or quantity == 0: + return {"status": "success", "message": "No trade needed"} + + if price <= 0: + return {"status": "failed", "reason": "Invalid price"} + + result = self._execute_single_trade( + ticker=ticker, + action=action, + target_quantity=quantity, + price=price, + date=current_date, + ) + + return result + + def execute_trades( + self, + decisions: Dict[str, Dict[str, Any]], + current_prices: Dict[str, float], + current_date: str = None, + ) -> Dict[str, Any]: + """ + Execute trading decisions and update positions + + Args: + decisions: {ticker: {action, quantity, confidence, reasoning}} + current_prices: {ticker: current_price} + current_date: Current date (used for backtest compatibility) + + Returns: + Trade execution report + """ + if current_date is None: + current_date = datetime.now().strftime("%Y-%m-%d") + + # Use provided date for timestamp (backtest compatible) + timestamp = f"{current_date}T09:30:00" + + execution_report: Dict[str, Any] = { + "date": current_date, + "timestamp": timestamp, + "executed_trades": [], + "failed_trades": [], + "portfolio_before": deepcopy(self.portfolio), + "portfolio_after": None, + } + + print(f"\n💼 Executing Portfolio trades for {current_date}...") + + # Execute trades for each ticker + for ticker, decision in decisions.items(): + action = decision.get("action", "hold") + quantity = decision.get("quantity", 0) + + if action == "hold" or quantity == 0: + continue + + price = current_prices.get(ticker, 0) + if price <= 0: + execution_report["failed_trades"].append( + { + "ticker": ticker, + "action": action, + "quantity": quantity, + "reason": "No valid price data", + }, + ) + print( + f" ❌ {ticker}: Unable to execute {action} - No valid price", + ) + continue + + # Execute trade + trade_result = self._execute_single_trade( + ticker, + action, + quantity, + price, + current_date, + ) + if trade_result["status"] == "success": + execution_report["executed_trades"].append(trade_result) + + trades_info = ", ".join(trade_result.get("trades", [])) + print( + f" ✔ {ticker}: {action} Target {quantity} shares " + f"({trades_info}) @ ${price:.2f}", + ) + else: + execution_report["failed_trades"].append(trade_result) + print( + f" ✗ {ticker}: Unable to execute {action} - {trade_result['reason']}", + ) + + # Record final portfolio state + execution_report["portfolio_after"] = deepcopy(self.portfolio) + self.portfolio_history.append( + { + "date": current_date, + "portfolio": deepcopy(self.portfolio), + }, + ) + + # Calculate portfolio value + portfolio_value = self._calculate_portfolio_value(current_prices) + execution_report["portfolio_value"] = portfolio_value + + print("\n✔ Trade execution completed:") + print(f" Success: {len(execution_report['executed_trades'])} trades") + print(f" Failed: {len(execution_report['failed_trades'])} trades") + print(f" Portfolio value: ${portfolio_value:,.2f}") + print(f" Cash balance: ${self.portfolio['cash']:,.2f}") + + return execution_report + + def _execute_single_trade( + self, + ticker: str, + action: str, + target_quantity: int, + price: float, + date: str, + ) -> Dict[str, Any]: + """ + Execute single trade - Incremental mode + + Args: + ticker: Stock ticker + action: long(add position)/short(reduce position)/hold + target_quantity: Incremental quantity (long=buy shares, short=sell shares) + price: Current price + date: Trade date + """ + + # Ensure position exists + if ticker not in self.portfolio["positions"]: + self.portfolio["positions"][ticker] = { + "long": 0, + "short": 0, + "long_cost_basis": 0.0, + "short_cost_basis": 0.0, + } + + position = self.portfolio["positions"][ticker] + current_long = position["long"] + current_short = position["short"] + + trades_executed = [] # Record actually executed trade steps + + if action == "long": + result = self._execute_long_action( + ticker, + target_quantity, + price, + date, + current_long, + current_short, + trades_executed, + ) + if result["status"] == "failed": + return result + + elif action == "short": + result = self._execute_short_action( + ticker, + target_quantity, + price, + date, + current_long, + current_short, + trades_executed, + ) + if result["status"] == "failed": + return result + + elif action == "hold": + print(f"\n⏸️ {ticker} Position unchanged: {current_long} shares") + + # Record trade with backtest-compatible timestamp + trade_record = { + "status": "success", + "ticker": ticker, + "action": action, + "target_quantity": target_quantity, + "price": price, + "trades": trades_executed, + "date": date, + "timestamp": f"{date}T09:30:00", + } + + self.trade_history.append(trade_record) + + return trade_record + + def _execute_long_action( + self, + ticker: str, + target_quantity: int, + price: float, + date: str, + current_long: int, + current_short: int, + trades_executed: list, + ) -> Dict[str, Any]: + """Execute long action: Buy shares or cover shorts first""" + print( + f"\n📈 {ticker} Long operation: Current Long {current_long}, " + f"Short {current_short} → Target quantity {target_quantity}", + ) + + if target_quantity <= 0: + print(" ⏸️ Quantity is 0, no trade needed") + return {"status": "success"} + + remaining = target_quantity + + # If has short position, cover first + if current_short > 0: + cover_qty = min(remaining, current_short) + print(f" 1️⃣ Cover short: {cover_qty} shares") + cover_result = self._cover_short_position( + ticker, + cover_qty, + price, + date, + ) + if cover_result["status"] == "failed": + return cover_result + trades_executed.append(f"Cover {cover_qty} shares") + remaining -= cover_qty + + # If still has remaining quantity, buy long + if remaining > 0: + print(f" 2️⃣ Buy long: {remaining} shares") + buy_result = self._buy_long_position( + ticker, + remaining, + price, + date, + ) + if buy_result["status"] == "failed": + return buy_result + trades_executed.append(f"Buy {remaining} shares") + + # Display final result + final_long = self.portfolio["positions"][ticker]["long"] + final_short = self.portfolio["positions"][ticker]["short"] + print( + f" ✅ Final state: Long {final_long} shares, Short {final_short} shares", + ) + + return {"status": "success"} + + def _execute_short_action( + self, + ticker: str, + target_quantity: int, + price: float, + date: str, + current_long: int, + current_short: int, + trades_executed: list, + ) -> Dict[str, Any]: + """Execute short action: Sell long positions first, then short if needed""" + print( + f"\n📉 {ticker} Short operation (quantity={target_quantity} shares):", + ) + print( + f" Current state: Long {current_long} shares, Short {current_short} shares", + ) + + if target_quantity <= 0: + print(" ⏸️ Quantity is 0, no trade needed") + return {"status": "success"} + + remaining_quantity = target_quantity + + # Step 1: If there are long positions, sell first + if current_long > 0: + sell_quantity = min(remaining_quantity, current_long) + print(f" 1️⃣ Sell long: {sell_quantity} shares") + sell_result = self._sell_long_position( + ticker, + sell_quantity, + price, + date, + ) + if sell_result["status"] == "failed": + return sell_result + trades_executed.append(f"Sell {sell_quantity} shares") + remaining_quantity -= sell_quantity + + # Step 2: If there's remaining quantity, establish or increase short position + if remaining_quantity > 0: + print(f" 2️⃣ Short: {remaining_quantity} shares") + short_result = self._open_short_position( + ticker, + remaining_quantity, + price, + date, + ) + if short_result["status"] == "failed": + return short_result + trades_executed.append(f"Short {remaining_quantity} shares") + + # Display final result + final_long = self.portfolio["positions"][ticker]["long"] + final_short = self.portfolio["positions"][ticker]["short"] + print( + f" ✅ Final state: Long {final_long} shares, Short {final_short} shares", + ) + + return {"status": "success"} + + def _buy_long_position( + self, + ticker: str, + quantity: int, + price: float, + _date: str, + ) -> Dict[str, Any]: + """Buy long position""" + position = self.portfolio["positions"][ticker] + trade_value = quantity * price + + if self.portfolio["cash"] < trade_value: + return { + "status": "failed", + "ticker": ticker, + "action": "buy", + "quantity": quantity, + "price": price, + "reason": f"Insufficient cash (needed: ${trade_value:.2f}, available: " + f"${self.portfolio['cash']:.2f})", + } + + # Update position cost basis + old_long = position["long"] + old_cost_basis = position["long_cost_basis"] + new_long = old_long + quantity + + # 🐛 Debug info + print(f" 🔍 Buy {ticker}:") + print(f" Old position: {old_long} shares @ ${old_cost_basis:.2f}") + print(f" Buy: {quantity} shares @ ${price:.2f}") + print(f" New position: {new_long} shares") + + if new_long > 0: + new_cost_basis = ( + (old_long * old_cost_basis) + (quantity * price) + ) / new_long + print( + f" New cost: ${new_cost_basis:.2f} = " + f"(({old_long} × ${old_cost_basis:.2f}) + " + f"({quantity} × ${price:.2f})) / {new_long}", + ) + position["long_cost_basis"] = new_cost_basis + position["long"] = new_long + + # Deduct cash + self.portfolio["cash"] -= trade_value + + return {"status": "success"} + + def _sell_long_position( + self, + ticker: str, + quantity: int, + price: float, + _date: str, + ) -> Dict[str, Any]: + """Sell long position""" + position = self.portfolio["positions"][ticker] + + if position["long"] < quantity: + return { + "status": "failed", + "ticker": ticker, + "action": "sell", + "quantity": quantity, + "price": price, + "reason": f"Insufficient long position (holding: {position['long']}," + f" trying to sell: {quantity})", + } + + # Reduce position + position["long"] -= quantity + if position["long"] == 0: + position["long_cost_basis"] = 0.0 + + # Increase cash + trade_value = quantity * price + self.portfolio["cash"] += trade_value + + return {"status": "success"} + + def _open_short_position( + self, + ticker: str, + quantity: int, + price: float, + _date: str, + ) -> Dict[str, Any]: + """Open short position""" + position = self.portfolio["positions"][ticker] + trade_value = quantity * price + margin_needed = trade_value * self.portfolio["margin_requirement"] + + if self.portfolio["cash"] < margin_needed: + return { + "status": "failed", + "ticker": ticker, + "action": "short", + "quantity": quantity, + "price": price, + "reason": f"Insufficient margin (needed: ${margin_needed:.2f}, " + f"available: ${self.portfolio['cash']:.2f})", + } + + # Update position cost basis + old_short = position["short"] + old_cost_basis = position["short_cost_basis"] + new_short = old_short + quantity + if new_short > 0: + position["short_cost_basis"] = ( + (old_short * old_cost_basis) + (quantity * price) + ) / new_short + position["short"] = new_short + + # Increase cash (short sale proceeds) and margin used + self.portfolio["cash"] += trade_value - margin_needed + self.portfolio["margin_used"] += margin_needed + + return {"status": "success"} + + def _cover_short_position( + self, + ticker: str, + quantity: int, + price: float, + _date: str, + ) -> Dict[str, Any]: + """Cover short position""" + position = self.portfolio["positions"][ticker] + + if position["short"] < quantity: + return { + "status": "failed", + "ticker": ticker, + "action": "cover", + "quantity": quantity, + "price": price, + "reason": f"Insufficient short position (holding: {position['short']}, " + f"trying to cover: {quantity})", + } + + # Calculate released margin - 🔧 FIX: Use cost_basis instead of current price + trade_value = quantity * price + cost_basis = position["short_cost_basis"] + margin_released = ( + quantity * cost_basis * self.portfolio["margin_requirement"] + ) + + # Reduce position + position["short"] -= quantity + if position["short"] == 0: + position["short_cost_basis"] = 0.0 + + # Deduct cash (buy to cover) and release margin + self.portfolio["cash"] -= trade_value + self.portfolio["cash"] += margin_released + self.portfolio["margin_used"] -= margin_released + + return {"status": "success"} + + def _calculate_portfolio_value( + self, + current_prices: Dict[str, float], + ) -> float: + """Calculate total portfolio value (net liquidation value)""" + # Add margin_used back because it's frozen cash, not lost money + total_value = self.portfolio["cash"] + self.portfolio["margin_used"] + + for ticker, position in self.portfolio["positions"].items(): + if ticker in current_prices: + price = current_prices[ticker] + # Add long position value + total_value += position["long"] * price + # Subtract short position value (liability) + total_value -= position["short"] * price + + return total_value + + def get_portfolio_summary( + self, + current_prices: Dict[str, float], + ) -> Dict[str, Any]: + """Get portfolio summary""" + portfolio_value = self._calculate_portfolio_value(current_prices) + + positions_summary = [] + for ticker, position in self.portfolio["positions"].items(): + if position["long"] > 0 or position["short"] > 0: + price = current_prices.get(ticker, 0) + long_value = position["long"] * price + short_value = position["short"] * price + + positions_summary.append( + { + "ticker": ticker, + "long_shares": position["long"], + "short_shares": position["short"], + "long_value": long_value, + "short_value": short_value, + "long_cost_basis": position["long_cost_basis"], + "short_cost_basis": position["short_cost_basis"], + "long_pnl": ( + long_value + - (position["long"] * position["long_cost_basis"]) + if position["long"] > 0 + else 0 + ), + "short_pnl": ( + (position["short"] * position["short_cost_basis"]) + - short_value + if position["short"] > 0 + else 0 + ), + }, + ) + + return { + "portfolio_value": portfolio_value, + "cash": self.portfolio["cash"], + "margin_used": self.portfolio["margin_used"], + "positions": positions_summary, + "total_trades": len(self.trade_history), + } + + +def execute_trading_decisions( + pm_decisions: Dict[str, Any], + current_date: str = None, +) -> Dict[str, Any]: + """ + Convenience function to record directional signal decisions (Signal mode) + + Args: + pm_decisions: PM's direction decisions + current_date: Current date (optional) + + Returns: + Signal recording report + """ + # Parse PM decisions + decisions = parse_pm_decisions(pm_decisions) + + # Create direction signal recorder + recorder = DirectionSignalRecorder() + + # Record directional signals + signal_report = recorder.record_direction_signals(decisions, current_date) + + return signal_report + + +def execute_portfolio_trades( + pm_decisions: Dict[str, Any], + current_prices: Dict[str, float], + portfolio: Dict[str, Any], + current_date: str = None, +) -> Dict[str, Any]: + """ + Execute Portfolio mode trading decisions + + Args: + pm_decisions: PM's trading decisions + current_prices: Current prices + portfolio: Current portfolio state + current_date: Current date (optional) + + Returns: + Trade execution report and updated portfolio + """ + # Parse PM decisions + decisions = parse_pm_decisions(pm_decisions) + + # Create Portfolio trade executor + executor = PortfolioTradeExecutor(initial_portfolio=portfolio) + + # Execute trades + execution_report = executor.execute_trades( + decisions, + current_prices, + current_date, + ) + + # Add portfolio summary + execution_report["portfolio_summary"] = executor.get_portfolio_summary( + current_prices, + ) + + # Return updated portfolio + execution_report["updated_portfolio"] = executor.portfolio + + return execution_report diff --git a/evotraders/docs/assets/dashboard.jpg b/evotraders/docs/assets/dashboard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6709d534c4adf6e33697fc040b94e134908438e3 GIT binary patch literal 184735 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 VEZo=l)tDPWq_^?C8Fn9kiUc7@Mb(kW!7vA-@% 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

90t<;SvYQhY>k(h#p)$AMbc5W}fmchn(O#KWzWN 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

bCn0kIU!uy8Ui0pnmwm?Jx4j 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%0Dj6rsoVlW6kuzg;73 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

*{P@^bBx(LGEv#5mon8)eTv1 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

E)iG+(3J`ThM74P!#? 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

o; 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%0A+c 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

&~9d2NqT@isr{z$RPWA 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

~ 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/RlH%W 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

h8GuBAO^6H7{s|@gj@H#*M={`hehTz}D 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%0AU0! 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 Ogd{b-DWU=Z;Qs~92Yn9! literal 0 HcmV?d00001 diff --git a/evotraders/docs/assets/evotraders_logo.jpg b/evotraders/docs/assets/evotraders_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8658286f08de8bd2eef33eeeb5cfc229ea0f709 GIT binary patch literal 48711 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 literal 0 HcmV?d00001 diff --git a/evotraders/docs/assets/evotraders_pipeline.jpg b/evotraders/docs/assets/evotraders_pipeline.jpg new file mode 100644 index 0000000000000000000000000000000000000000..abca522eb93726dbee4bd5a45ff064512a3e8e5a GIT binary patch literal 183917 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≪wg~x1OG5S(p)^IKP12AvkDoi#@UjMw+LU#; z6MXY{_6ql%AbTNS{*W@g{LkQw)~G4UrvhlW0u-N%+IK+HK@xAr>e3L=F;_%5Fli|8 z#jmp=jj-NeK~=DUiw%%zRu1)Q4;7scw?uE?TxV_RULQn86B{>o)%OVp$$`n&o6#mq z5RjnmFUTdOnGSt~FUOs;-~uQfNU{YEM4n=9Z**Z75gXQxW*-GH^MO_h0w>@?Ql7E< zW0(#32R$LD5#z!yE%I9$G58X#S|p%64MmV&>PpPf%Q)YO?Y45*khQYPNnDY9q_2+t zUBcE0k)NRvyNDgqD)RkWuP1SxR^6zyEbvSrbkQ=J^jV|&DMD@kY_wk+M)0i{fc zWcGvTi6e}QgS$X#6DYvZvCn=^a8lj6bvCG4Dqt8bodcHVxgORF;xK?}yA3tFAPVWS z3jL?G(HO)|i&$Bw*)eu=mxiqtupy{88;~oO_kujfLu?F5ZYpzT#_4-*(#^8YcU-fk zGG)swasCsPK^KbR>wm^u7=zgr|KP)Y@-@~*3wb?+^7ZnPl?S%>8OUD>$fh~Lo?Mk@ zu31`R!@)w8#&ozgUy%6Q zTohgdBW+bt6{s?+N;UDpU7h2Kvx|idCS<64q

ScE@JPN5<*Ij?+atppB~e_x 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

TD#t8|pEO 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

(4XOBgoKQ8#?ypl1-zs)^hifeV5oA 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 z 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

6(S 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 S&;v={Oad7Pv*-M8@&5q)Ef4Ad literal 0 HcmV?d00001 diff --git a/evotraders/env.template b/evotraders/env.template new file mode 100644 index 0000000..2aa96ad --- /dev/null +++ b/evotraders/env.template @@ -0,0 +1,59 @@ +# ================== General Configuration | 通用配置 ================== +# List of stock ticker symbols to analyze (comma-separated) | 想要分析的股票代码列表(用逗号分隔) +TICKERS=AAPL,MSFT,GOOGL,NVDA,TSLA,META,AMZN + +# Financial Data API +# At least FINANCIAL_DATASETS_API_KEY is required, corresponding to FIN_DATA_SOURCE=financial_datasets; It's recommended to add FINNHUB_API_KEY, corresponding to FIN_DATA_SOURCE=finnhub; FINNHUB_API_KEY is mandatory for live mode +# 至少需要FINANCIAL_DATASETS_API_KEY,对应FIN_DATA_SOURCE=financial_datasets;推荐添加FINNHUB_API_KEY,对应FIN_DATA_SOURCE=finnhub;如果使用live模式必须添加FINNHUB_API_KEY + +# finnhub: https://finnhub.io/register +# financial datasets: https://www.financialdatasets.ai/ + +FIN_DATA_SOURCE = #finnhub or financial_datasets | finnhub 或 financial_datasets +FINANCIAL_DATASETS_API_KEY= #required | 必填 +FINNHUB_API_KEY= #optional | 可选 + +# Model API +OPENAI_API_KEY= +OPENAI_BASE_URL= +MODEL_NAME=qwen3-max-preview + +#记忆模块(Embedding and llm calls for Reme memory) +# default to use aliyun dashscope url, more details: https://help.aliyun.com/zh/model-studio/what-is-model-studio +MEMORY_API_KEY= + + +# ================== Agent-Specific Model Configuration | Agent特定模型配置 ================== +# Configure different base models for different roles | 为不同角色配置不同的基座模型 +# If not configured, global MODEL_NAME and MODEL_PROVIDER will be used | 如果未配置,将使用全局MODEL_NAME和MODEL_PROVIDER +# +# Role List | 角色列表: +# - SENTIMENT_ANALYST: Sentiment Analyst | 情绪分析师 +# - TECHNICAL_ANALYST: Technical Analyst | 技术分析师 +# - FUNDAMENTALS_ANALYST: Fundamentals Analyst | 基本面分析师 +# - VALUATION_ANALYST: Valuation Analyst | 估值分析师 +# - PORTFOLIO_MANAGER: Portfolio Manager | 投资组合经理 +# - RISK_MANAGER: Risk Manager | 风险管理经理 + +AGENT_SENTIMENT_ANALYST_MODEL_NAME=deepseek-v3.2-exp +AGENT_TECHNICAL_ANALYST_MODEL_NAME=glm-4.6 +AGENT_FUNDAMENTALS_ANALYST_MODEL_NAME=qwen3-max-preview +AGENT_VALUATION_ANALYST_MODEL_NAME=Moonshot-Kimi-K2-Instruct +AGENT_RISK_MANAGER_MODEL_NAME=qwen3-max-preview +AGENT_PORTFOLIO_MANAGER_MODEL_NAME=qwen3-max-preview + + +# ================== Advanced Configuration | 高阶配置 ================== + +# Maximum conference discussion cycles (default: 2) | 最大会议讨论轮数(默认:2) +MAX_COMM_CYCLES=2 + +# Margin Requirement | 保证金比例 +MARGIN_REQUIREMENT=0.5 +# 0.5 = Standard margin (recommended) | 标准保证金(推荐) +# 0.25 = Maintenance margin (aggressive) | 维持保证金(激进) + +# Historical data start date +DATA_START_DATE=2022-01-01 +# Auto update data on startup (true/false) +AUTO_UPDATE_DATA=true \ No newline at end of file diff --git a/evotraders/frontend/.gitignore b/evotraders/frontend/.gitignore new file mode 100644 index 0000000..fa8bfd1 --- /dev/null +++ b/evotraders/frontend/.gitignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* +.env.local + +# Dependencies +node_modules + +# Build output +dist +dist-ssr +*.local + +# Lock files +package-lock.json +yarn.lock +pnpm-lock.yaml + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/evotraders/frontend/README.md b/evotraders/frontend/README.md new file mode 100644 index 0000000..b5b523f --- /dev/null +++ b/evotraders/frontend/README.md @@ -0,0 +1,7 @@ + +## QuickStart +```bash +cd frontend +npm install +npm run dev +``` \ No newline at end of file diff --git a/evotraders/frontend/components.json b/evotraders/frontend/components.json new file mode 100644 index 0000000..41716e3 --- /dev/null +++ b/evotraders/frontend/components.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "registries": {} +} diff --git a/evotraders/frontend/env.template b/evotraders/frontend/env.template new file mode 100644 index 0000000..0499b80 --- /dev/null +++ b/evotraders/frontend/env.template @@ -0,0 +1,10 @@ +# Frontend Environment Variables Template +# 复制此文件为 .env 并修改配置 + +# WebSocket服务器地址 +# 本地开发 +VITE_WS_URL=ws://localhost:8765 + +# 生产环境(替换为你的实际服务器地址) +# VITE_WS_URL=wss://your-server.com:8765 + diff --git a/evotraders/frontend/eslint.config.js b/evotraders/frontend/eslint.config.js new file mode 100644 index 0000000..777fe18 --- /dev/null +++ b/evotraders/frontend/eslint.config.js @@ -0,0 +1,29 @@ +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import { defineConfig, globalIgnores } from "eslint/config"; + +export default defineConfig([ + globalIgnores(["dist"]), + { + files: ["**/*.{js,jsx}"], + extends: [ + js.configs.recommended, + reactHooks.configs["recommended-latest"], + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: "latest", + ecmaFeatures: { jsx: true }, + sourceType: "module", + }, + }, + rules: { + "no-unused-vars": ["error", { varsIgnorePattern: "^[A-Z_]" }], + }, + }, +]); diff --git a/evotraders/frontend/index.css b/evotraders/frontend/index.css new file mode 100644 index 0000000..fcfdfb9 --- /dev/null +++ b/evotraders/frontend/index.css @@ -0,0 +1,68 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --radius: 0.5rem + } + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55% + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/evotraders/frontend/index.html b/evotraders/frontend/index.html new file mode 100644 index 0000000..aa0c766 --- /dev/null +++ b/evotraders/frontend/index.html @@ -0,0 +1,14 @@ + + + + + + + + EvoTraders + + +

+ + + diff --git a/evotraders/frontend/package.json b/evotraders/frontend/package.json new file mode 100644 index 0000000..3efd982 --- /dev/null +++ b/evotraders/frontend/package.json @@ -0,0 +1,55 @@ +{ + "name": "live-trading-demo", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview", + "preview:host": "vite preview --host" + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-slider": "^1.3.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-tooltip": "^1.2.8", + "@react-three/drei": "^10.7.6", + "@react-three/fiber": "^9.3.0", + "@tailwindcss/vite": "^4.1.13", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "framer-motion": "^12.23.13", + "lucide-react": "^0.544.0", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "react-markdown": "^10.1.0", + "recharts": "^3.2.1", + "remark-gfm": "^4.0.1", + "tailwind-merge": "^3.3.1", + "three": "^0.180.0", + "zustand": "^5.0.8" + }, + "devDependencies": { + "@eslint/js": "^9.33.0", + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.0", + "autoprefixer": "^10.4.21", + "eslint": "^9.33.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.3.0", + "postcss": "^8.5.6", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.9.2", + "vite": "^7.1.2", + "vite-tsconfig-paths": "^5.1.4" + } +} diff --git a/evotraders/frontend/postcss.config.js b/evotraders/frontend/postcss.config.js new file mode 100644 index 0000000..2aa7205 --- /dev/null +++ b/evotraders/frontend/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/evotraders/frontend/public/trading_logo.png b/evotraders/frontend/public/trading_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..029a0d48f79128767c17d3a5acc7e8aaf6a31feb GIT binary patch literal 41505 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�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 literal 0 HcmV?d00001 diff --git a/evotraders/frontend/src/App.css b/evotraders/frontend/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/evotraders/frontend/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/evotraders/frontend/src/App.jsx b/evotraders/frontend/src/App.jsx new file mode 100644 index 0000000..bf2f071 --- /dev/null +++ b/evotraders/frontend/src/App.jsx @@ -0,0 +1,1031 @@ +import React, { useEffect, useMemo, useRef, useState, useCallback } from "react"; + +// Configuration and constants +import { AGENTS, INITIAL_TICKERS } from './config/constants'; + +// Services +import { ReadOnlyClient } from './services/websocket'; + +// Hooks +import { useFeedProcessor } from './hooks/useFeedProcessor'; + +// Styles +import GlobalStyles from './styles/GlobalStyles'; + +// Components +import RoomView from './components/RoomView'; +import NetValueChart from './components/NetValueChart'; +import AgentFeed from './components/AgentFeed'; +import StockLogo from './components/StockLogo'; +import StatisticsView from './components/StatisticsView'; +import PerformanceView from './components/PerformanceView'; +import AboutModal from './components/AboutModal'; +import RulesView from './components/RulesView'; +import Header from './components/Header.jsx'; + +// Utils +import { formatNumber, formatTickerPrice } from './utils/formatters'; + +/** + * Live Trading Intelligence Platform - Read-Only Dashboard + * Geek Style - Terminal-inspired, minimal, monochrome + * + */ + +export default function LiveTradingApp() { + const [isConnected, setIsConnected] = useState(false); + const [connectionStatus, setConnectionStatus] = useState('connecting'); // 'connecting' | 'connected' | 'disconnected' + const [systemStatus, setSystemStatus] = useState('initializing'); // 'initializing' | 'running' | 'completed' + const [currentDate, setCurrentDate] = useState(null); + const [progress, setProgress] = useState({ current: 0, total: 0 }); + const [now, setNow] = useState(() => new Date()); + const [showAboutModal, setShowAboutModal] = useState(false); + + // View toggle: 'rules' | 'room' | 'chart' | 'statistics' + const [currentView, setCurrentView] = useState('chart'); // Start with chart, then animate to room + const [isInitialAnimating, setIsInitialAnimating] = useState(true); + const [lastUpdate, setLastUpdate] = useState(new Date()); + const [isUpdating, setIsUpdating] = useState(false); + + // Chart data + const [chartTab, setChartTab] = useState('all'); + const [portfolioData, setPortfolioData] = useState({ + netValue: 10000, + pnl: 0, + equity: [], + baseline: [], // Baseline strategy (Buy & Hold - Equal Weight) + baseline_vw: [], // Baseline strategy (Buy & Hold - Value Weighted) + momentum: [], // Momentum strategy + strategies: [] // Other strategies + }); + + // Feed data (using hook for simplified processing) + const { feed, processHistoricalFeed, processFeedEvent, addSystemMessage } = useFeedProcessor(); + + // Statistics data + const [holdings, setHoldings] = useState([]); + const [trades, setTrades] = useState([]); + const [stats, setStats] = useState(null); + const [leaderboard, setLeaderboard] = useState([]); + + // Ticker prices (now from real-time data) + const [tickers, setTickers] = useState(INITIAL_TICKERS); + const [rollingTickers, setRollingTickers] = useState({}); + + // Room bubbles + const [bubbles, setBubbles] = useState({}); + + // Resizable panels + const [leftWidth, setLeftWidth] = useState(70); // percentage + const [isResizing, setIsResizing] = useState(false); + + // Market status + const [serverMode, setServerMode] = useState(null); // 'live' | 'backtest' | null + const [marketStatus, setMarketStatus] = useState(null); // { status, status_text, ... } + const [virtualTime, setVirtualTime] = useState(null); // Virtual time from server (for mock mode) + + const clientRef = useRef(null); + const containerRef = useRef(null); + const agentFeedRef = useRef(null); + + // Track last virtual time update to calculate increment + const lastVirtualTimeRef = useRef(null); + const virtualTimeOffsetRef = useRef(0); + + // Last day history for replay + const [lastDayHistory, setLastDayHistory] = useState([]); + + // Determine if LIVE tab should be enabled + const isLiveEnabled = useMemo(() => { + if (!marketStatus) return false; + return marketStatus.status === 'open'; + }, [marketStatus]); + + // Switch away from LIVE tab when market closes + useEffect(() => { + if (!isLiveEnabled && chartTab === 'live') { + setChartTab('all'); + } + }, [isLiveEnabled, chartTab]); + + // Clock - use virtual time if available (for mock mode) + useEffect(() => { + if (virtualTime) { + // In mock mode, calculate offset from real time + const virtualTimeMs = new Date(virtualTime).getTime(); + const realTimeMs = Date.now(); + virtualTimeOffsetRef.current = virtualTimeMs - realTimeMs; + lastVirtualTimeRef.current = virtualTimeMs; + setNow(new Date(virtualTime)); + + // Update clock every second based on offset + const id = setInterval(() => { + const currentRealTime = Date.now(); + const currentVirtualTime = currentRealTime + virtualTimeOffsetRef.current; + setNow(new Date(currentVirtualTime)); + }, 1000); + + return () => clearInterval(id); + } else { + // In live mode, use real time + const id = setInterval(() => setNow(new Date()), 1000); + return () => clearInterval(id); + } + }, [virtualTime]); + + // Update clock when virtual time changes (recalculate offset) + useEffect(() => { + if (virtualTime) { + const virtualTimeMs = new Date(virtualTime).getTime(); + const realTimeMs = Date.now(); + virtualTimeOffsetRef.current = virtualTimeMs - realTimeMs; + lastVirtualTimeRef.current = virtualTimeMs; + setNow(new Date(virtualTime)); + } + }, [virtualTime]); + + // Track updates with visual feedback + useEffect(() => { + setLastUpdate(new Date()); + setIsUpdating(true); + const timer = setTimeout(() => setIsUpdating(false), 500); + return () => clearTimeout(timer); + }, [holdings, stats, trades, portfolioData.netValue]); + + // Initial animation: show room drawer sliding in + useEffect(() => { + // Wait a bit after mount, then trigger slide to room + const slideTimer = setTimeout(() => { + setCurrentView('room'); + }, 1200); // Wait 1200ms before starting animation (2x slower) + + // Disable animation flag after animation completes + const completeTimer = setTimeout(() => { + setIsInitialAnimating(false); + }, 5000); // 1200ms delay + 1600ms animation duration + 400ms buffer + + return () => { + clearTimeout(slideTimer); + clearTimeout(completeTimer); + }; + }, []); + + // Helper to check if bubble should still be visible + // Bubbles persist until replaced by ANY new message (cross-role) + // When any agent sends a new message, all previous bubbles are cleared + // Can search by agentId or agentName + const bubbleFor = (idOrName) => { + // First try direct lookup by id + let b = bubbles[idOrName]; + if (b) { + return b; + } + + // If not found, search by agentName + const agent = AGENTS.find(a => a.name === idOrName || a.id === idOrName); + if (agent) { + b = bubbles[agent.id]; + if (b) { + return b; + } + } + + return null; + }; + + // Handle jump to message in feed + const handleJumpToMessage = useCallback((bubble) => { + // Switch to room tab (if not already there) for better context + // Then scroll AgentFeed to the message + if (agentFeedRef.current && agentFeedRef.current.scrollToMessage) { + agentFeedRef.current.scrollToMessage(bubble); + } + }, []); + + // Auto-connect to server on mount + useEffect(() => { + // Define pushEvent inside useEffect to avoid dependency issues + const handlePushEvent = (evt) => { + if (!evt) return; + + try { + handleEventInternal(evt); + } catch (error) { + console.error('[Event Handler] Error:', error); + } + }; + + const handleEventInternal = (evt) => { + // Helper: Update tickers from realtime prices + const updateTickersFromPrices = (realtimePrices) => { + try { + setTickers(prevTickers => { + return prevTickers.map(ticker => { + const realtimeData = realtimePrices[ticker.symbol]; + if (realtimeData && realtimeData.price !== null && realtimeData.price !== undefined) { + // Use 'ret' from realtime data (relative to open price) if available + const newChange = (realtimeData.ret !== null && realtimeData.ret !== undefined) + ? realtimeData.ret + : (ticker.change !== null && ticker.change !== undefined ? ticker.change : 0); + + return { + ...ticker, + price: realtimeData.price, + change: newChange, + open: realtimeData.open || ticker.open + }; + } + return ticker; + }); + }); + } catch (error) { + console.error('Error updating tickers from prices:', error); + } + }; + + const handlers = { + // Error response (for fast forward errors) + error: (e) => { + console.error('[Error]', e.message); + + // Handle fast forward errors + if (e.message && e.message.includes('fast forward')) { + console.warn(`⚠️ ${e.message}`); + handlePushEvent({ + type: 'system', + content: `⚠️ ${e.message}`, + timestamp: Date.now() + }); + } + }, + + // Connection events + system: (e) => { + console.log('[System]', e.content); + if (e.content.includes('Connected')) { + setConnectionStatus('connected'); + setIsConnected(true); + } else if (e.content.includes('Disconnected')) { + setConnectionStatus('disconnected'); + setIsConnected(false); + } + processFeedEvent(e); + }, + + // Pong response from server + pong: (e) => { + console.log('[Heartbeat] Pong received'); + }, + + // Initial state from server + initial_state: (e) => { + try { + const state = e.state; + if (!state) return; + + setSystemStatus(state.status || 'initializing'); + setCurrentDate(state.current_date); + + // 设置服务器模式和市场状态 + if (state.server_mode) { + setServerMode(state.server_mode); + } + // 检查是否是mock模式 + const isMockMode = state.is_mock_mode === true; + if (state.market_status) { + setMarketStatus(state.market_status); + // 只在Mock模式下,如果市场状态包含虚拟时间,才保存它 + if (isMockMode && state.market_status.current_time) { + try { + const virtualTimeDate = new Date(state.market_status.current_time); + setVirtualTime(virtualTimeDate); + } catch (error) { + console.error('Error parsing virtual time from market_status:', error); + } + } else { + // 非Mock模式下清除virtualTime + setVirtualTime(null); + } + } + + if (state.trading_days_total) { + setProgress({ + current: state.trading_days_completed || 0, + total: state.trading_days_total + }); + } + + if (state.portfolio) { + setPortfolioData(prev => ({ + ...prev, + netValue: state.portfolio.total_value || prev.netValue, + pnl: state.portfolio.pnl_percent || 0, + equity: state.portfolio.equity || prev.equity, + baseline: state.portfolio.baseline || prev.baseline, + baseline_vw: state.portfolio.baseline_vw || prev.baseline_vw, + momentum: state.portfolio.momentum || prev.momentum, + strategies: state.portfolio.strategies || prev.strategies, + equity_return: state.portfolio.equity_return || prev.equity_return, + baseline_return: state.portfolio.baseline_return || prev.baseline_return, + baseline_vw_return: state.portfolio.baseline_vw_return || prev.baseline_vw_return, + momentum_return: state.portfolio.momentum_return || prev.momentum_return + })); + } + + if (state.holdings) setHoldings(state.holdings); + if (state.trades) setTrades(state.trades); + if (state.stats) setStats(state.stats); + if (state.leaderboard) setLeaderboard(state.leaderboard); + if (state.realtime_prices) updateTickersFromPrices(state.realtime_prices); + + // Load and process historical feed data + if (state.feed_history && Array.isArray(state.feed_history)) { + console.log(`✅ Loading ${state.feed_history.length} historical events`); + processHistoricalFeed(state.feed_history); + } + + // Load last day history for replay + if (state.last_day_history && Array.isArray(state.last_day_history)) { + setLastDayHistory(state.last_day_history); + console.log(`✅ Loaded ${state.last_day_history.length} last day events for replay`); + } + + console.log('Initial state loaded'); + } catch (error) { + console.error('Error loading initial state:', error); + } + }, + + // Market status update + market_status_update: (e) => { + if (e.market_status) { + setMarketStatus(e.market_status); + } + }, + + // Real-time price updates + price_update: (e) => { + try { + const { symbol, price, ret, open, portfolio, realtime_prices } = e; + + if (!symbol || !price) { + console.warn('[Price Update] Missing symbol or price:', e); + return; + } + + console.log(`[Price Update] ${symbol}: $${price} (ret: ${ret !== undefined ? ret.toFixed(2) : 'N/A'}%)`); + + // Update ticker price with animation + setTickers(prevTickers => { + return prevTickers.map(ticker => { + if (ticker.symbol === symbol) { + const oldPrice = ticker.price; + + // Use 'ret' from server (relative to open price) if available + // Otherwise fallback to calculating change from previous price + let newChange = ticker.change; + if (ret !== null && ret !== undefined) { + // Use server-provided ret (relative to open price) + newChange = ret; + } else if (oldPrice !== null && oldPrice !== undefined && isFinite(oldPrice)) { + // Fallback: calculate change from previous price + const priceChange = ((price - oldPrice) / oldPrice) * 100; + newChange = (newChange !== null && newChange !== undefined) + ? newChange + priceChange + : priceChange; + } else { + // First price received, set change to 0 + newChange = 0; + } + + // Trigger rolling animation only if price actually changed + if (oldPrice !== price) { + setRollingTickers(prev => ({ ...prev, [symbol]: true })); + setTimeout(() => { + setRollingTickers(prev => ({ ...prev, [symbol]: false })); + }, 500); + } + + return { + ...ticker, + price: price, + change: newChange, + open: open || ticker.open // Store open price + }; + } + return ticker; + }); + }); + + // Update all tickers from realtime_prices if provided + if (realtime_prices) { + updateTickersFromPrices(realtime_prices); + } + + // Update portfolio value if provided + if (portfolio && portfolio.total_value) { + setPortfolioData(prev => ({ + ...prev, + netValue: portfolio.total_value, + pnl: portfolio.pnl_percent || 0, + equity: portfolio.equity || prev.equity // Update equity curve + })); + } + } catch (error) { + console.error('[Price Update] Error:', error); + } + }, + + // Day progress events + day_start: (e) => { + setCurrentDate(e.date); + if (e.progress !== undefined) { + setProgress(prev => ({ + ...prev, + current: Math.floor(e.progress * (prev.total || 1)) + })); + } + setSystemStatus('running'); + processFeedEvent(e); + }, + + day_complete: (e) => { + // Update from day result + const result = e.result; + if (result && typeof result === 'object') { + // Update portfolio equity if available + if (result.portfolio_summary) { + const summary = result.portfolio_summary; + setPortfolioData(prev => { + const newEquity = [...prev.equity]; + // Add new data point + const dateObj = new Date(e.date); + newEquity.push({ + t: dateObj.getTime(), + v: summary.total_value || summary.cash || prev.netValue + }); + + return { + ...prev, + netValue: summary.total_value || summary.cash || prev.netValue, + pnl: summary.pnl_percent || 0, + equity: newEquity + }; + }); + } + } + processFeedEvent(e); + }, + + day_error: (e) => { + console.error('Day error:', e.date, e.error); + processFeedEvent(e); + }, + + conference_start: (e) => { + processFeedEvent(e); + }, + + conference_end: (e) => { + processFeedEvent(e); + }, + + agent_message: (e) => { + const agent = AGENTS.find(a => a.id === e.agentId); + + // Update bubbles for room view + setBubbles({ + [e.agentId]: { + text: e.content, + ts: Date.now(), + agentName: agent?.name || e.agentName || e.agentId + } + }); + + processFeedEvent(e); + }, + + conference_message: (e) => { + const agent = AGENTS.find(a => a.id === e.agentId); + + // Update bubbles for room view + setBubbles({ + [e.agentId]: { + text: e.content, + ts: Date.now(), + agentName: agent?.name || e.agentName || e.agentId + } + }); + + processFeedEvent(e); + }, + + memory: (e) => { + processFeedEvent(e); + }, + + team_summary: (e) => { + // Update portfolio data silently without creating feed messages + setPortfolioData(prev => ({ + ...prev, + netValue: e.balance || prev.netValue, + pnl: e.pnlPct || 0, + equity: e.equity || prev.equity, + baseline: e.baseline || prev.baseline, + baseline_vw: e.baseline_vw || prev.baseline_vw, + momentum: e.momentum || prev.momentum, + equity_return: e.equity_return || prev.equity_return, + baseline_return: e.baseline_return || prev.baseline_return, + baseline_vw_return: e.baseline_vw_return || prev.baseline_vw_return, + momentum_return: e.momentum_return || prev.momentum_return + })); + + // Portfolio updates are shown in the ticker bar, no need for feed messages + }, + + team_portfolio: (e) => { + if (e.holdings) setHoldings(e.holdings); + }, + + // ✅ 监听 holdings 更新(服务器广播的事件名) + team_holdings: (e) => { + if (e.data && Array.isArray(e.data)) { + setHoldings(e.data); + console.log(`✅ Holdings updated: ${e.data.length} positions`); + } + }, + + team_trades: (e) => { + // 支持两种格式:完整列表或单笔交易 + if (e.mode === 'full' && e.data && Array.isArray(e.data)) { + setTrades(e.data); + console.log(`✅ Trades updated (full): ${e.data.length} trades`); + } else if (Array.isArray(e.trades)) { + setTrades(e.trades); + } else if (e.trade) { + setTrades(prev => [e.trade, ...prev].slice(0, 100)); + } + }, + + team_stats: (e) => { + if (e.data) { + setStats(e.data); + console.log('✅ Stats updated'); + } else if (e.stats) { + setStats(e.stats); + } + }, + + team_leaderboard: (e) => { + // 服务器发送的格式: { type: 'team_leaderboard', data: [...], timestamp: ... } + if (Array.isArray(e.data)) { + setLeaderboard(e.data); + console.log('✅ Leaderboard updated:', e.data.length, 'agents'); + } else if (Array.isArray(e.rows)) { + setLeaderboard(e.rows); + } else if (Array.isArray(e.leaderboard)) { + setLeaderboard(e.leaderboard); + } + }, + + // 虚拟时间更新(Mock模式下的时间广播) + time_update: (e) => { + if (e.beijing_time_str) { + const statusEmoji = { + 'market_open': '📊', + 'off_market': '⏸️', + 'non_trading_day': '📅', + 'trade_execution': '💼' + }; + + const emoji = statusEmoji[e.status] || '⏰'; + const isMockMode = e.is_mock_mode === true; + let logMessage = `${emoji} ${isMockMode ? '虚拟时间' : '时间'}: ${e.beijing_time_str} | 状态: ${e.status}`; + + if (e.hours_to_open !== undefined) { + logMessage += ` | 距离开盘: ${e.hours_to_open}小时`; + } + if (e.hours_to_trade !== undefined) { + logMessage += ` | 距离交易: ${e.hours_to_trade}小时`; + } + if (e.trading_date) { + logMessage += ` | 交易日: ${e.trading_date}`; + } + + console.log(logMessage); + + // 只在Mock模式下保存虚拟时间(用于图表过滤和UI显示) + if (isMockMode && e.beijing_time) { + try { + const virtualTimeDate = new Date(e.beijing_time); + setVirtualTime(virtualTimeDate); + } catch (error) { + console.error('Error parsing virtual time:', error); + } + } else { + // 非Mock模式下清除virtualTime + setVirtualTime(null); + } + } + + // 更新市场状态(如果包含在time_update中) + if (e.market_status) { + setMarketStatus(e.market_status); + } + }, + + // 时间快进事件(Mock模式) + time_fast_forwarded: (e) => { + console.log(`⏩ 时间已快进 ${e.minutes} 分钟: ${e.old_time_str} → ${e.new_time_str}`); + + // 更新虚拟时间 + if (e.new_time) { + try { + const virtualTimeDate = new Date(e.new_time); + setVirtualTime(virtualTimeDate); + + // 添加到feed显示 + handlePushEvent({ + type: 'system', + content: `⏩ 时间快进 ${e.minutes} 分钟: ${e.old_time_str} → ${e.new_time_str}`, + timestamp: Date.now() + }); + } catch (error) { + console.error('Error parsing fast forwarded time:', error); + } + } + }, + + // 快进成功响应 + fast_forward_success: (e) => { + console.log(`✅ ${e.message}`); + }, + }; + + // Call handler or do nothing + try { + const handler = handlers[evt.type]; + if (handler) { + handler(evt); + } else { + console.log('[handleEvent] Unknown event type:', evt.type); + } + } catch (error) { + console.error('[handleEvent] Error handling event:', evt.type, error); + } + }; + + // Create and connect WebSocket client + const client = new ReadOnlyClient(handlePushEvent); + clientRef.current = client; + client.connect(); + setConnectionStatus('connecting'); + + return () => { + // Cleanup on unmount + if (clientRef.current) { + clientRef.current.disconnect(); + } + }; + }, []); // Empty dependency array - only run once on mount + + // Resizing handlers + const handleMouseDown = (e) => { + e.preventDefault(); + setIsResizing(true); + }; + + useEffect(() => { + if (!isResizing) return; + + const handleMouseMove = (e) => { + if (!containerRef.current) return; + const containerRect = containerRef.current.getBoundingClientRect(); + const newLeftWidth = ((e.clientX - containerRect.left) / containerRect.width) * 100; + + // Limit between 30% and 85% + if (newLeftWidth >= 30 && newLeftWidth <= 85) { + setLeftWidth(newLeftWidth); + } + }; + + const handleMouseUp = () => { + setIsResizing(false); + }; + + document.addEventListener('mousemove', handleMouseMove); + document.addEventListener('mouseup', handleMouseUp); + + return () => { + document.removeEventListener('mousemove', handleMouseMove); + document.removeEventListener('mouseup', handleMouseUp); + }; + }, [isResizing]); + + return ( +
+ + + {/* Header */} +
+
setShowAboutModal(true)} + evoTradersLinkStyle="default" + /> + +
+ {/* Mock Mode Indicator */} + {virtualTime && ( +
+ + + LIVE MOCK MODE + +
+ )} + + + {/* Clock Display (only in Mock mode) */} + {virtualTime && ( +
+
+ + VIRTUAL TIME + + + {now.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false })} + + + {now.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })} + +
+ + {/* Fast Forward Button (only in Mock mode) */} + +
+ )} + + {/* Unified Status Indicator */} +
+ + + {isConnected ? (isUpdating ? 'SYNCING' : 'LIVE') : 'OFFLINE'} + + {marketStatus && ( + <> + · + + {marketStatus.status_text || (marketStatus.status === 'open' ? 'OPEN' : 'CLOSED')} + + + )} + · + {lastUpdate.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false })} +
+
+
+ + {/* Main Content */} + <> + {/* Ticker Bar */} +
+
+ {[0, 1].map((groupIdx) => ( +
+ {tickers.map(ticker => ( +
+ + {ticker.symbol} + + + {ticker.price !== null && ticker.price !== undefined + ? `$${formatTickerPrice(ticker.price)}` + : '-'} + + + = 0 ? 'positive' : 'negative' + }`}> + {ticker.change !== null && ticker.change !== undefined + ? `${ticker.change >= 0 ? '+' : ''}${ticker.change.toFixed(2)}%` + : '-'} + +
+ ))} +
+ ))} +
+
+ PORTFOLIO + ${formatNumber(portfolioData.netValue)} +
+
+ +
+ {/* Left Panel: Three-View Toggle (Room/Chart/Statistics) */} +
+
+
+
+ + + + + + + +
+ + {/* Slider container with four views */} +
+ {/* Rules View Panel */} +
+ +
+ + {/* Room View Panel */} +
+ +
+ + {/* Chart View Panel */} +
+
+ {/* Floating Timeframe Tabs */} +
+ + {/* */} +
+ + +
+
+ + {/* Statistics View Panel */} +
+ +
+
+
+
+
+ + {/* Resizer */} +
+ + {/* Right Panel: Agent Feed */} +
+ +
+
+ + + {/* About Modal */} + {showAboutModal && setShowAboutModal(false)} />} +
+ ); +} diff --git a/evotraders/frontend/src/components/AboutModal.jsx b/evotraders/frontend/src/components/AboutModal.jsx new file mode 100644 index 0000000..c192708 --- /dev/null +++ b/evotraders/frontend/src/components/AboutModal.jsx @@ -0,0 +1,358 @@ +import React, { useState } from 'react'; +import Header from './Header.jsx'; + +export default function AboutModal({ onClose }) { + const [isClosing, setIsClosing] = useState(false); + const [language, setLanguage] = useState('en'); // 'en' or 'zh' + + const handleClose = () => { + setIsClosing(true); + // Wait for animation to complete before actually closing + setTimeout(() => { + onClose(); + }, 600); // Match animation duration + }; + + const overlayStyle = { + position: 'fixed', + top: 0, + left: 0, + right: 0, + bottom: 0, + background: '#ffffff', + zIndex: 9999, + animation: isClosing + ? 'collapseUp 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards' + : 'expandDown 0.6s cubic-bezier(0.4, 0, 0.2, 1)', + transformOrigin: 'top center', + overflowY: 'auto' + }; + + const contentStyle = { + maxWidth: '900px', + width: '90%', + margin: '0 auto', + textAlign: 'left', + fontFamily: "'IBM Plex Mono', monospace", + color: '#000000', + lineHeight: 1.8, + fontSize: '14px', + letterSpacing: '0.01em', + padding: '60px 20px 80px', + animation: isClosing + ? 'fadeOutContent 0.4s ease forwards' + : 'fadeInContent 0.8s ease 0.3s backwards' + }; + + const highlight = { + color: '#615CED', + fontWeight: 600 + }; + + const linkStyle = { + color: '#615CED', + textDecoration: 'none', + borderBottom: '1px solid #615CED', + transition: 'all 0.2s' + }; + + const closeHintStyle = { + marginTop: '50px', + fontSize: '11px', + color: '#999', + cursor: 'pointer', + textAlign: 'center' + }; + + const languageSwitchStyle = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + marginBottom: '25px', + marginTop: '10px', + gap: '0px', + fontSize: '11px', + fontFamily: "'IBM Plex Mono', monospace" + }; + + const getLangStyle = (isActive) => ({ + padding: '3px 8px', + cursor: 'pointer', + transition: 'all 0.2s', + background: isActive ? '#000' : '#fff', + color: isActive ? '#fff' : '#000', + border: 'none' + }); + + const content = { + en: { + + question: "What happens if AI models don't compete with each other, but instead trade like a ", + questionHighlight: "well-coordinated, high-performance team", + questionEnd: "?", + + intro: "Not arena, but TEAM. We Hope that AI is no longer entering the financial markets as isolated models—it is stepping in as ", + introHighlight1: "teams", + introContinue: ", collaborating in one of the most challenging and noise-filled ", + introHighlight2: "real-time environments", + introContinue2: ".", + + + point1Highlight: "✦ Complementary skills", + point1: " - across multiple agents—data analysis, strategy generation, risk management—working together like a real trading desk, exchanging information through notifications and meetings.", + + point2Highlight: "✦ An agent system that continually evolves", + point2: " — with memory modules that retain experience, learn from market feedback, reflect, and develop their own methodology over time.", + + point3Highlight: "✦ AI teams interacting with live markets", + point3: " — learning from real-time data and making immediate decisions, not just theoretical simulations." + }, + zh: { + intro: "如果不是让模型彼此竞争,而是像一支高效协作的团队一样进行实时交易,会发生什么?", + question: "这里不是竞技场,而是团队。我们希望Agents不再单打独斗,而是「组团」进入实时金融市场——这一十分困难且充满噪声的环境。", + + title1: "✦ 多智能体的技能互补", + point1: "不同模型、不同角色的智能体像真实的金融团队一样协作,各自承担数据分析、策略生成、风险控制等职责。", + + title2: "✦ 能够持续进化的智能体系统", + point2: "依托「记忆」模块,每个智能体都能跨回合保留经验,不断学习、反思与调整。我们希望能看到在长期实时交易中,Agent形成自己的独特方法论,而不是一次性偶然的推理。", + + title3: "✦ 实时参与市场的 AI Agents", + point3: "Agents从实时行情中学习,并给予即时决策;不是纸上谈兵,而是面对市场的真实波动。" + } + }; + + return ( + <> + + +
+ {/* Header */} +
e.stopPropagation()}> +
+
+ + {/* Content */} +
e.stopPropagation()}> + {/* Language Switch */} +
+ setLanguage('zh')} + > + 中文 + + + setLanguage('en')} + > + EN + +
+ + {language === 'en' ? ( + // English Content + <> + +
+ {content.en.question} + {content.en.questionHighlight} + {content.en.questionEnd} +
+ +
+ {content.en.intro} + {content.en.introHighlight1} + {content.en.introContinue} + {content.en.introHighlight2} + {content.en.introContinue2} +
+ +
+ {content.en.point1Highlight} + {content.en.point1} +
+ +
+ {content.en.point2Highlight} + {content.en.point2} +
+ +
+ {content.en.point3Highlight} + {content.en.point3} +
+ +
+ + ) : ( + // Chinese Content + <> +
+ {content.zh.intro} +
+ +
+ {content.zh.question} +
+ +
+ {content.zh.trying} +
+ +
+
+ {content.zh.title1} +
+
+ {content.zh.point1} +
+
+ {content.zh.point1Sub} +
+
+ +
+
+ {content.zh.title2} +
+
+ {content.zh.point2} +
+
+ {content.zh.point2Sub} +
+
+ +
+
+ {content.zh.title3} +
+
+ {content.zh.point3} +
+
+ +
+ 我们已经在github上开源。 +
+
+ EvoTraders 基于{' '} + + AgentScope + + {' '}搭建,并使用其中的{' '} + + ReMe + + {' '}作为记忆管理核心。 +
+ +
+ 你可以在此找到完整项目与示例: +
+ + )} + + + +
+ {language === 'en' ? 'Click here to close' : '点击此处关闭'} +
+
+
+ + ); +} + diff --git a/evotraders/frontend/src/components/AgentCard.jsx b/evotraders/frontend/src/components/AgentCard.jsx new file mode 100644 index 0000000..cbe3c69 --- /dev/null +++ b/evotraders/frontend/src/components/AgentCard.jsx @@ -0,0 +1,517 @@ +import React from 'react'; +import { ASSETS } from '../config/constants'; +import { getModelIcon, getShortModelName } from '../utils/modelIcons'; + +/** + * Get rank medal/trophy + */ +function getRankMedal(rank) { + if (rank === 1) return { emoji: '🏆', color: '#FFD700', label: 'Gold' }; + if (rank === 2) return { emoji: '🥈', color: '#C0C0C0', label: 'Silver' }; + if (rank === 3) return { emoji: '🥉', color: '#CD7F32', label: 'Bronze' }; + return { emoji: `#${rank}`, color: '#333333', label: `#${rank}` }; +} + +/** + * Agent Performance Card Component + * Horizontal dropdown panel displayed below the agent indicator bar + */ +export default function AgentCard({ agent, onClose, isClosing }) { + if (!agent) return null; + + const bullTotal = agent.bull?.n || 0; + const bullWins = agent.bull?.win || 0; + const bullUnknown = agent.bull?.unknown || 0; + const bearTotal = agent.bear?.n || 0; + const bearWins = agent.bear?.win || 0; + const bearUnknown = agent.bear?.unknown || 0; + const totalSignals = bullTotal + bearTotal; + const evaluatedBull = Math.max(bullTotal - bullUnknown, 0); + const evaluatedBear = Math.max(bearTotal - bearUnknown, 0); + const evaluatedTotal = evaluatedBull + evaluatedBear; + const bullWinRate = evaluatedBull > 0 ? (bullWins / evaluatedBull) : null; + const bearWinRate = evaluatedBear > 0 ? (bearWins / evaluatedBear) : null; + const overallWinRate = agent.winRate != null + ? agent.winRate + : (evaluatedTotal > 0 ? ((bullWins + bearWins) / evaluatedTotal) : null); + const overallColor = overallWinRate != null + ? (overallWinRate >= 0.5 ? '#00C853' : '#FF1744') + : '#555555'; + + const rankMedal = agent.rank ? getRankMedal(agent.rank) : null; + const isPortfolioManager = agent.id === 'portfolio_manager'; + const isRiskManager = agent.id === 'risk_manager'; + const displayName = isPortfolioManager ? 'Team' : agent.name; + + // Get model icon configuration + const modelInfo = getModelIcon(agent.modelName, agent.modelProvider); + const shortModelName = getShortModelName(agent.modelName); + + return ( +
+ {/* Horizontal scrollable content */} +
+ + +
+ {/* Agent Info with Rank */} +
+ {isPortfolioManager ? ( + Team + ) : agent.avatar ? ( + {agent.name} + ) : null} +
+
+ {displayName} +
+ {rankMedal && !isPortfolioManager && ( +
+ {rankMedal.emoji} Rank #{agent.rank} +
+ )} +
+
+ + {/* Risk Manager Note */} + {isRiskManager && ( +
+
+ ⓘ Risk Manager focuses on risk management and does not participate in prediction accuracy ranking. +
+
+ )} + + {/* Portfolio Manager Note */} + {isPortfolioManager && ( +
+
+ ⓘ Portfolio Manager provides the team's final signal(position), synthesizing all analyst recommendations, and does not participate in ranking. +
+
+ )} + + {/* Model Info Card */} + {agent.modelName && ( +
+
+ Model +
+
+ {modelInfo.logoPath ? ( + {modelInfo.provider} + ) : ( +
+ 🤖 +
+ )} +
+
+ {shortModelName} +
+
+ {modelInfo.provider} +
+
+ )} + + {/* Overall Win Rate */} + {!isRiskManager && !isPortfolioManager && ( +
+
+ Win Rate +
+
+ {overallWinRate != null ? `${(overallWinRate * 100).toFixed(1)}%` : 'N/A'} +
+
+ {bullWins + bearWins}Win / {evaluatedTotal}Eval +
+
+ Eval: total evaluated bull & bear signals.{'\n'}Win Rate = correct signals / total evaluated signals +
+
+ )} + + {/* Bull Stats */} + {!isRiskManager && !isPortfolioManager && ( +
+
+ Bull Win Rate +
+
= 0.5 ? '#00C853' : '#333333') : '#555555', + marginBottom: 2, + lineHeight: 1 + }}> + {bullWinRate != null ? `${(bullWinRate * 100).toFixed(1)}%` : 'N/A'} +
+
+ {bullWins}Win / {evaluatedBull}Eval + {bullUnknown > 0 && ` / ${bullUnknown}P`} +
+
+ )} + + {/* Bear Stats */} + {!isRiskManager && !isPortfolioManager && ( +
+
+ Bear Win Rate +
+
= 0.5 ? '#00C853' : '#333333') : '#555555', + marginBottom: 2, + lineHeight: 1 + }}> + {bearWinRate != null ? `${(bearWinRate * 100).toFixed(1)}%` : 'N/A'} +
+
+ {bearWins}Win / {evaluatedBear}Eval + {bearUnknown > 0 && ` / ${bearUnknown}P`} +
+
+ )} + + {/* Recent Signals - Horizontal scroll */} + {agent.signals && agent.signals.length > 0 && ( +
+ {[...agent.signals] + .filter(signal => signal && signal.signal) + .sort((a, b) => { + // Sort by date descending (newest first) + const dateA = a.date || ''; + const dateB = b.date || ''; + return dateB.localeCompare(dateA); + }) + .slice(0, 35) + .map((signal, idx) => { + const signalType = signal.signal.toLowerCase(); + const isBull = signalType.includes('bull') || signalType === 'long'; + const isBear = signalType.includes('bear') || signalType === 'short'; + const isNeutral = (!isBull && !isBear) || signalType.includes('neutral') || signalType === 'hold'; + const isCorrect = signal.is_correct === true; + const isUnknown = signal.is_correct === 'unknown' || signal.is_correct === null; + + // Determine result symbol/text and color: unknown has priority over neutral + let resultDisplay; + let resultColor = '#555555'; + let resultFontSize = 18; + + if (isUnknown) { + resultDisplay = '?'; + resultColor = '#FFA726'; // Orange for unknown + resultFontSize = 14; // Smaller font for text + } else if (isNeutral) { + resultDisplay = '-'; + resultColor = '#555555'; // Gray for neutral + } else { + resultDisplay = isCorrect ? '✓' : '✗'; + resultColor = isCorrect ? '#00C853' : '#FF1744'; // Green for correct, Red for wrong + } + + return ( +
+
+ {signal.ticker} +
+
+ {isBull ? 'bull' : isBear ? 'bear' : 'neutral'} +
+
+ {signal.date?.substring(5, 10) || 'N/A'} +
+
+ {resultDisplay} +
+
+ ); + })} + {/* Info card explaining signal display */} +
+
+ ⓘ Info +
+
+ Showing recent 5 trading days (1 week) signals only +
+
+
+ )} +
+
+ + +
+ ); +} + diff --git a/evotraders/frontend/src/components/AgentFeed.jsx b/evotraders/frontend/src/components/AgentFeed.jsx new file mode 100644 index 0000000..c2aed02 --- /dev/null +++ b/evotraders/frontend/src/components/AgentFeed.jsx @@ -0,0 +1,641 @@ +import React, { useState, useRef, useImperativeHandle, forwardRef } from 'react'; +import { formatTime } from '../utils/formatters'; +import { MESSAGE_COLORS, getAgentColors, AGENTS, ASSETS } from '../config/constants'; +import { getModelIcon } from '../utils/modelIcons'; +import MarkdownModal from './MarkdownModal'; + +const isAnalyst = (agentId, agentName) => { + if (agentId && agentId.includes('analyst')) return true; + if (agentName && agentName.toLowerCase().includes('analyst')) return true; + return false; +}; + +const isManager = (agentId, agentName) => { + if (agentId && agentId.includes('manager')) return true; + if (agentName && agentName.toLowerCase().includes('manager')) return true; + return false; +}; + +const stripMarkdown = (text) => { + return text + .replace(/[\s\S]*?<\/think>/gi, '') + .replace(/#{1,6}\s+/g, '') + .replace(/\*\*\*(.+?)\*\*\*/g, '$1') + .replace(/\*\*(.+?)\*\*/g, '$1') + .replace(/__(.+?)__/g, '$1') + .replace(/\*(.+?)\*/g, '$1') + .replace(/_(.+?)_/g, '$1') + .replace(/`(.+?)`/g, '$1') + .replace(/\[(.+?)\]\(.+?\)/g, '$1') + .replace(/!\[.*?\]\(.+?\)/g, '') + .replace(/^\s*[-*+]\s+/gm, '') + .replace(/^\s*\d+\.\s+/gm, '') + .replace(/^\s*>\s+/gm, '') + .replace(/\|/g, ' ') + .replace(/^[-=]+$/gm, ''); +}; + +const AgentFeed = forwardRef(({ feed, leaderboard }, ref) => { + const feedContentRef = useRef(null); + const [highlightedId, setHighlightedId] = useState(null); + const [selectedAgent, setSelectedAgent] = useState('all'); + const [dropdownOpen, setDropdownOpen] = useState(false); + + const getAgentModelInfo = (agentId) => { + if (!leaderboard || !agentId) return { modelName: null, modelProvider: null }; + const agentData = leaderboard.find(lb => lb.id === agentId || lb.agentId === agentId); + return { + modelName: agentData?.modelName, + modelProvider: agentData?.modelProvider + }; + }; + + // Get agent info by name + const getAgentInfoByName = (agentName) => { + if (!leaderboard || !agentName) return null; + const agentData = leaderboard.find(lb => lb.name === agentName || lb.agentName === agentName); + if (!agentData) return null; + return { + agentId: agentData.id || agentData.agentId, + modelName: agentData.modelName, + modelProvider: agentData.modelProvider + }; + }; + + // Get unique agent names from feed (only registered agents in AGENTS) + const getUniqueAgents = () => { + const agentNamesInFeed = new Set(); + + // Collect all agent names that appear in the feed + feed.forEach(item => { + if (item.type === 'message' && item.data?.agent) { + agentNamesInFeed.add(item.data.agent); + } else if (item.type === 'conference' && item.data?.messages) { + item.data.messages.forEach(msg => { + if (msg.agent) { + agentNamesInFeed.add(msg.agent); + } + }); + } + }); + + // Filter to only include registered agents and sort by AGENTS array order + const registeredAgentNames = AGENTS.map(a => a.name); + return registeredAgentNames.filter(name => agentNamesInFeed.has(name)); + }; + + // Filter feed based on selected agent + const filteredFeed = selectedAgent === 'all' + ? feed + : feed.filter(item => { + if (item.type === 'message') { + return item.data?.agent === selectedAgent; + } else if (item.type === 'conference') { + return item.data?.messages?.some(msg => msg.agent === selectedAgent); + } + return false; + }); + + useImperativeHandle(ref, () => ({ + scrollToMessage: (bubble) => { + if (!bubble || !feedContentRef.current) return; + + // Direct feedItemId match (used by replay mode) + if (bubble.feedItemId) { + const element = document.getElementById(`feed-item-${bubble.feedItemId}`); + if (element) { + element.scrollIntoView({ behavior: 'smooth', block: 'center' }); + setHighlightedId(bubble.feedItemId); + setTimeout(() => setHighlightedId(null), 2000); + return; + } + } + + const bubbleTimestamp = bubble.ts || bubble.timestamp; + + // Check if a message matches the bubble + const isMatch = (msg, checkTime = true) => { + const agentMatch = msg.agentId === bubble.agentId || msg.agent === bubble.agentName; + if (!agentMatch || !checkTime) return agentMatch; + return Math.abs(msg.timestamp - bubbleTimestamp) < 5000; + }; + + // Check if a feed item contains the target message + const itemContains = (item, checkTime = true) => { + if (item.type === 'message' && item.data) return isMatch(item.data, checkTime); + if (item.type === 'conference' && item.data?.messages) { + return item.data.messages.some(msg => isMatch(msg, checkTime)); + } + return false; + }; + + // Find exact match first, then fallback to agent match + const targetItem = feed.find(item => itemContains(item, true)) + || feed.find(item => itemContains(item, false)); + + if (targetItem) { + const element = document.getElementById(`feed-item-${targetItem.id}`); + if (element) { + element.scrollIntoView({ behavior: 'smooth', block: 'center' }); + setHighlightedId(targetItem.id); + setTimeout(() => setHighlightedId(null), 2000); + } + } + } + }), [feed]); + + const uniqueAgents = getUniqueAgents(); + + // Get current selection display info + const getCurrentSelectionInfo = () => { + if (selectedAgent === 'all') { + return { label: 'All Agents', modelInfo: null }; + } + const agentInfo = getAgentInfoByName(selectedAgent); + const modelInfo = agentInfo ? getModelIcon(agentInfo.modelName, agentInfo.modelProvider) : null; + return { label: selectedAgent, modelInfo }; + }; + + const currentSelection = getCurrentSelectionInfo(); + + return ( +
+
+

ACTIVITY FEED

+
+ +
+ + {dropdownOpen && ( +
+
{ + setSelectedAgent('all'); + setDropdownOpen(false); + }} + > + All Agents +
+ {uniqueAgents.map(agent => { + const agentInfo = getAgentInfoByName(agent); + const modelInfo = agentInfo ? getModelIcon(agentInfo.modelName, agentInfo.modelProvider) : null; + return ( +
{ + setSelectedAgent(agent); + setDropdownOpen(false); + }} + > + {modelInfo?.logoPath && ( + {modelInfo.provider} + )} + {agent} +
+ ); + })} +
+ )} +
+
+
+
+ {filteredFeed.length === 0 && ( +
+ {selectedAgent === 'all' + ? 'Waiting for system updates...' + : `No messages from ${selectedAgent}`} +
+ )} + + {filteredFeed.map(item => { + const isHighlighted = item.id === highlightedId; + if (item.type === 'conference') { + return ; + } else if (item.type === 'memory') { + return ; + } else if (item.data?.agent === 'System') { + return ; + } else { + return ; + } + })} +
+
+ ); +}); + +AgentFeed.displayName = 'AgentFeed'; + +export default AgentFeed; + +function SystemDivider({ message, itemId }) { + const content = String(message.content || '').substring(0, 100); + + return ( +
+
+ + {content} + +
+
+ ); +} + +function ConferenceItem({ conference, itemId, isHighlighted, getAgentModelInfo }) { + const colors = MESSAGE_COLORS.conference; + + return ( +
+
+ + CONFERENCE + + {conference.isLive && ● LIVE} + {formatTime(conference.startTime)} +
+ +
+ {conference.title} +
+ +
+ {conference.messages.map((msg, idx) => ( + + ))} +
+
+ ); +} + +function ConferenceMessage({ message, getAgentModelInfo }) { + const [expanded, setExpanded] = useState(false); + + const agentColors = message.agent === 'System' ? MESSAGE_COLORS.system : + message.agent === 'Memory' ? MESSAGE_COLORS.memory : + getAgentColors(message.agentId, message.agent); + + const agentModelData = message.agentId && getAgentModelInfo ? + getAgentModelInfo(message.agentId) : + { modelName: null, modelProvider: null }; + const modelInfo = getModelIcon(agentModelData.modelName, agentModelData.modelProvider); + + let content = message.content || ''; + if (typeof content === 'object') { + content = JSON.stringify(content, null, 2); + } else { + content = String(content); + } + + const needsTruncation = content.length > 200; + const MAX_EXPANDED_LENGTH = 10000; + + let displayContent = content; + if (!expanded && needsTruncation) { + displayContent = content.substring(0, 200) + '...'; + } else if (expanded && content.length > MAX_EXPANDED_LENGTH) { + displayContent = content.substring(0, MAX_EXPANDED_LENGTH) + '...'; + } + + return ( +
+
+ {modelInfo.logoPath && ( + {modelInfo.provider} + )} + {message.agent} +
+
+ {stripMarkdown(displayContent)} + {needsTruncation && ( + + )} +
+
+ ); +} + +function MemoryItem({ memory, itemId, isHighlighted }) { + const [expanded, setExpanded] = useState(false); + const [showTooltip, setShowTooltip] = useState(false); + const colors = MESSAGE_COLORS.memory; + + let content = memory.content || ''; + if (typeof content === 'object') { + content = JSON.stringify(content, null, 2); + } else { + content = String(content); + } + + const needsTruncation = content.length > 200; + const MAX_EXPANDED_LENGTH = 10000; + + let displayContent = content; + if (!expanded && needsTruncation) { + displayContent = content.substring(0, 200) + '...'; + } else if (expanded && content.length > MAX_EXPANDED_LENGTH) { + displayContent = content.substring(0, MAX_EXPANDED_LENGTH) + '...'; + } + + const agentLabel = memory.agent && memory.agent !== 'Memory' + ? `MEMORY · ${memory.agent}` + : 'MEMORY'; + + return ( +
+
+ +
setShowTooltip(true)} + onMouseLeave={() => setShowTooltip(false)} + > + + ReMe + + ↗ + + +
+ + {agentLabel} + +
+ {formatTime(memory.timestamp)} +
+ +
+
+ Memory powered by AgentScope-ReMe +
+
+ Not only retrieves historical memories but also generates suggestions and hints for the current task based on latest context. +
+
+ +
{stripMarkdown(displayContent)}
+ + {needsTruncation && ( + + )} +
+ ); +} + +function MessageItem({ message, itemId, isHighlighted, getAgentModelInfo }) { + const [expanded, setExpanded] = useState(false); + const [showModal, setShowModal] = useState(false); + const [isHovering, setIsHovering] = useState(false); + + const colors = message.agent === 'Memory' ? MESSAGE_COLORS.memory : + getAgentColors(message.agentId, message.agent); + const title = message.agent === 'Memory' ? 'MEMORY' : message.agent || 'AGENT'; + + const agentModelData = message.agentId && getAgentModelInfo ? + getAgentModelInfo(message.agentId) : + { modelName: null, modelProvider: null }; + const modelInfo = getModelIcon(agentModelData.modelName, agentModelData.modelProvider); + + const isAnalystAgent = isAnalyst(message.agentId, message.agent); + const isManagerAgent = isManager(message.agentId, message.agent); + const useModalView = isAnalystAgent || isManagerAgent; + + let content = message.content || ''; + if (typeof content === 'object') { + content = JSON.stringify(content, null, 2); + } else { + content = String(content); + } + + let displayContent = content; + let showExpandButton = false; + + if (useModalView) { + displayContent = content.length > 150 ? content.substring(0, 150) + '...' : content; + } else { + const needsTruncation = content.length > 200; + const MAX_EXPANDED_LENGTH = 8000; + + if (!expanded && needsTruncation) { + displayContent = content.substring(0, 200) + '...'; + showExpandButton = true; + } else if (expanded && content.length > MAX_EXPANDED_LENGTH) { + displayContent = content.substring(0, MAX_EXPANDED_LENGTH) + '...'; + showExpandButton = needsTruncation; + } else { + showExpandButton = needsTruncation; + } + } + + return ( + <> +
+
+ + {modelInfo.logoPath && message.agent !== 'Memory' && ( + {modelInfo.provider} + )} + {title} + + {formatTime(message.timestamp)} +
+ +
{stripMarkdown(displayContent)}
+ + {useModalView && ( + + )} + + {showExpandButton && ( + + )} +
+ {useModalView && ( + setShowModal(false)} + content={content} + agentName={message.agent} + reportType={isManagerAgent ? 'decision' : 'analysis'} + /> + )} + + ); +} diff --git a/evotraders/frontend/src/components/Header.jsx b/evotraders/frontend/src/components/Header.jsx new file mode 100644 index 0000000..7afb5e9 --- /dev/null +++ b/evotraders/frontend/src/components/Header.jsx @@ -0,0 +1,253 @@ +import React, { useState } from 'react'; + +/** + * Header Component + * Reusable header brand with EvoTraders logo, GitHub link, and Contact Us section + * + * @param {Function} onEvoTradersClick - Optional callback when EvoTraders is clicked + * @param {string} evoTradersLinkStyle - Optional style variant: 'default' | 'close' + */ +export default function Header({ + onEvoTradersClick = null, + evoTradersLinkStyle = 'default' // 'default' shows ↗, 'close' shows ↙ +}) { + const [activeContactCard, setActiveContactCard] = useState({ yue: false, jiaji: false }); + const [clickedContactCard, setClickedContactCard] = useState(null); + + const handleEvoTradersClick = () => { + if (onEvoTradersClick) { + onEvoTradersClick(); + } + }; + + return ( +
+ + EvoTraders Logo + EvoTraders {evoTradersLinkStyle === 'close' ? ( + + ) : ( + + )} + + + + + + OPEN SOURCE + + + + + + + agentscope-samples + + + + + + + + agentscope-ReMe + + + + + +
{ + const bothActive = activeContactCard.yue && activeContactCard.jiaji; + if (!bothActive) { + setActiveContactCard({ yue: true, jiaji: true }); + setClickedContactCard('both'); + } else { + setActiveContactCard({ yue: false, jiaji: false }); + setClickedContactCard(null); + } + }} + > + + Contact Us + + + {/* Two contact buttons */} +
+
{ + e.stopPropagation(); + if (activeContactCard.yue) { + setActiveContactCard(prev => ({ ...prev, yue: false })); + if (clickedContactCard === 'yue' || clickedContactCard === 'both') { + setClickedContactCard(null); + } + } else { + setActiveContactCard(prev => ({ ...prev, yue: true })); + setClickedContactCard('yue'); + } + }} + onMouseEnter={() => { + if (!clickedContactCard || clickedContactCard === 'yue' || clickedContactCard === 'both') { + setActiveContactCard(prev => ({ ...prev, yue: true })); + } + }} + onMouseLeave={() => { + if (clickedContactCard !== 'yue' && clickedContactCard !== 'both') { + setActiveContactCard(prev => ({ ...prev, yue: false })); + } + }} + style={{ + padding: '4px 8px', + background: activeContactCard.yue ? '#615CED' : '#f5f5f5', + color: activeContactCard.yue ? '#fff' : '#333', + border: '1px solid', + borderColor: activeContactCard.yue ? '#615CED' : '#e0e0e0', + borderRadius: '3px', + fontSize: '10px', + fontWeight: 700, + fontFamily: "'IBM Plex Mono', monospace", + cursor: 'pointer', + transition: 'all 0.2s', + letterSpacing: '0.5px', + whiteSpace: 'nowrap', + overflow: 'hidden', + maxWidth: activeContactCard.yue ? '80px' : '32px', + minWidth: activeContactCard.yue ? '80px' : '32px' + }} + > + {activeContactCard.yue ? ( + e.stopPropagation()} + > + Yue Wu ↗ + + ) : 'YW'} +
+ +
{ + e.stopPropagation(); + if (activeContactCard.jiaji) { + setActiveContactCard(prev => ({ ...prev, jiaji: false })); + if (clickedContactCard === 'jiaji' || clickedContactCard === 'both') { + setClickedContactCard(null); + } + } else { + setActiveContactCard(prev => ({ ...prev, jiaji: true })); + setClickedContactCard('jiaji'); + } + }} + onMouseEnter={() => { + if (!clickedContactCard || clickedContactCard === 'jiaji' || clickedContactCard === 'both') { + setActiveContactCard(prev => ({ ...prev, jiaji: true })); + } + }} + onMouseLeave={() => { + if (clickedContactCard !== 'jiaji' && clickedContactCard !== 'both') { + setActiveContactCard(prev => ({ ...prev, jiaji: false })); + } + }} + style={{ + padding: '4px 8px', + background: activeContactCard.jiaji ? '#615CED' : '#f5f5f5', + color: activeContactCard.jiaji ? '#fff' : '#333', + border: '1px solid', + borderColor: activeContactCard.jiaji ? '#615CED' : '#e0e0e0', + borderRadius: '3px', + fontSize: '10px', + fontWeight: 700, + fontFamily: "'IBM Plex Mono', monospace", + cursor: 'pointer', + transition: 'all 0.2s', + letterSpacing: '0.5px', + whiteSpace: 'nowrap', + overflow: 'hidden', + maxWidth: activeContactCard.jiaji ? '100px' : '32px', + minWidth: activeContactCard.jiaji ? '100px' : '32px' + }} + > + {activeContactCard.jiaji ? ( + e.stopPropagation()} + > + Jiaji Deng ↗ + + ) : 'JD'} +
+
+
+
+ ); +} + diff --git a/evotraders/frontend/src/components/MarkdownModal.jsx b/evotraders/frontend/src/components/MarkdownModal.jsx new file mode 100644 index 0000000..0e7015d --- /dev/null +++ b/evotraders/frontend/src/components/MarkdownModal.jsx @@ -0,0 +1,276 @@ +import React from 'react'; +import ReactMarkdown from 'react-markdown'; +import remarkGfm from 'remark-gfm'; + +function MarkdownModal({ isOpen, onClose, content, agentName, reportType = 'analysis' }) { + if (!isOpen) return null; + + const subtitle = reportType === 'decision' ? 'Decision Log' : 'Financial Analysis Report'; + + return ( +
+
e.stopPropagation()} + > + {/* Header */} +
+
+

+ {agentName} +

+

+ {subtitle} +

+
+ +
+ + {/* Content */} +
+ +
+ {content} +
+
+
+
+ ); +} + +export default MarkdownModal; + diff --git a/evotraders/frontend/src/components/NetValueChart.jsx b/evotraders/frontend/src/components/NetValueChart.jsx new file mode 100644 index 0000000..35bde68 --- /dev/null +++ b/evotraders/frontend/src/components/NetValueChart.jsx @@ -0,0 +1,831 @@ +import React, { useMemo, useState, useEffect } from 'react'; +import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend } from 'recharts'; +import { formatNumber, formatFullNumber } from '../utils/formatters'; + +/** + * Helper function to get the start time of the most recent trading session + * Trading session: 22:30 - next day 05:00 + * @param {Date|null} virtualTime - Virtual time from server (for mock mode), or null to use real time + */ +function getRecentTradingSessionStart(virtualTime = null) { + // Use virtual time if provided (for mock mode), otherwise use real time + let now; + if (virtualTime) { + // Ensure virtualTime is a valid Date object + if (virtualTime instanceof Date && !isNaN(virtualTime.getTime())) { + now = virtualTime; + } else if (typeof virtualTime === 'string') { + now = new Date(virtualTime); + if (isNaN(now.getTime())) { + console.warn('Invalid virtualTime string, using current time:', virtualTime); + now = new Date(); + } + } else { + console.warn('Invalid virtualTime type, using current time:', typeof virtualTime); + now = new Date(); + } + } else { + now = new Date(); + } + + const currentHour = now.getHours(); + const currentMinute = now.getMinutes(); + + // Check if currently in trading session + const isInTradingSession = (currentHour === 22 && currentMinute >= 30) || + currentHour >= 23 || + (currentHour >= 0 && currentHour < 5) || + (currentHour === 5 && currentMinute === 0); + + let sessionStartTime; + if (isInTradingSession) { + // Currently in trading session, find today's 22:30 + sessionStartTime = new Date(now); + sessionStartTime.setHours(22, 30, 0, 0); + // If current time is before 22:30, it means yesterday's 22:30 + if (now < sessionStartTime) { + sessionStartTime.setDate(sessionStartTime.getDate() - 1); + } + } else { + // Not in trading session, find previous session start (yesterday 22:30) + sessionStartTime = new Date(now); + sessionStartTime.setDate(sessionStartTime.getDate() - 1); + sessionStartTime.setHours(22, 30, 0, 0); + } + + return sessionStartTime; +} + +/** + * Helper function to filter strategy data for live view + * NOTE: Live mode returns are now pre-processed by the backend, restricted to the + * latest trading session and already starting at 0% at session start. This helper + * is kept for potential future use but is no longer used in live mode. + */ +function filterStrategyDataForLive(strategyData, equity, sessionStartTime) { + if (!strategyData || strategyData.length === 0 || !equity || equity.length === 0) return []; + + try { + if (!sessionStartTime || isNaN(sessionStartTime.getTime())) { + console.warn('Invalid sessionStartTime in filterStrategyDataForLive'); + return []; + } + + const sessionStartTimestamp = sessionStartTime.getTime(); + + // Find the last index before session + let lastDataBeforeSession = null; + for (let i = equity.length - 1; i >= 0; i--) { + if (equity[i] && typeof equity[i].t === 'number' && equity[i].t < sessionStartTimestamp) { + if (strategyData[i] && strategyData[i].v !== undefined && strategyData[i].v !== null) { + lastDataBeforeSession = strategyData[i]; + } + break; + } + } + + // Find data points in the session + const sessionData = []; + for (let i = 0; i < equity.length; i++) { + if (equity[i] && typeof equity[i].t === 'number' && + equity[i].t >= sessionStartTimestamp && + strategyData[i] && + strategyData[i].v !== undefined && strategyData[i].v !== null) { + sessionData.push(strategyData[i]); + } + } + + // If we have a value before session and session data, add the start point + // Create a start point with timestamp just before session start + if (lastDataBeforeSession && sessionData.length > 0) { + const startPoint = { + t: sessionStartTimestamp - 1, + v: lastDataBeforeSession.v + }; + return [startPoint, ...sessionData]; + } + + return sessionData; + } catch (error) { + console.error('Error in filterStrategyDataForLive:', error); + return []; + } +} + +/** + * Net Value Chart Component + * Displays portfolio value over time with multiple strategy comparisons + */ +export default function NetValueChart({ equity, baseline, baseline_vw, momentum, strategies, equity_return, baseline_return, baseline_vw_return, momentum_return, chartTab = 'all', virtualTime = null }) { + const [activePoint, setActivePoint] = useState(null); + const [stableYRange, setStableYRange] = useState(null); + const [legendTooltip, setLegendTooltip] = useState(null); + + // Legend descriptions + const legendDescriptions = { + 'EvoTraders': 'EvoTraders is our agents investment strategy', + 'Buy & Hold (EW)': 'Equal Weight: Can be viewed as an equal-weighted index of all invested stocks', + 'Buy & Hold (VW)': 'Value Weighted: Can be viewed as a market-cap weighted index of all invested stocks', + 'Momentum': 'Momentum Strategy: Buy stocks that have performed well in the past', + }; + + + // For live mode, use cumulative returns calculated by backend + // For all mode, use portfolio values directly + const dataSource = useMemo(() => { + if (chartTab === 'live') { + return { + equity: equity_return || equity, + baseline: baseline_return || baseline, + baseline_vw: baseline_vw_return || baseline_vw, + momentum: momentum_return || momentum + }; + } + return { + equity: equity, + baseline: baseline, + baseline_vw: baseline_vw, + momentum: momentum + }; + }, [chartTab, equity, baseline, baseline_vw, momentum, equity_return, baseline_return, baseline_vw_return, momentum_return]); + // Filter equity data based on chartTab + const filteredEquity = useMemo(() => { + if (chartTab === 'all') { + const sourceEquity = dataSource.equity; + if (!sourceEquity || sourceEquity.length === 0) return []; + + // ALL chart: Show only the last point per day + // Logic: Keep the last equity value before 22:30 each day (the last equity value before US next trading day opens) + // Data after 22:30 belongs to the next trading day's session and is not shown in this chart + // Time handling: timestamp(ms) -> UTC -> Asia/Shanghai timezone, then group and filter based on Asia/Shanghai time + const dailyData = {}; + + sourceEquity.forEach((d) => { + // Timestamp is in milliseconds, first create UTC time, then convert to Asia/Shanghai timezone + // Equivalent to: pd.to_datetime(timestamp, unit='ms', utc=True).dt.tz_convert('Asia/Shanghai') + const utcDate = new Date(d.t); // timestamp(ms) -> UTC time + + // Use Intl API to get date/time components in Asia/Shanghai timezone + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: 'Asia/Shanghai', + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + hour12: false + }); + + const parts = formatter.formatToParts(utcDate); + const year = parts.find(p => p.type === 'year').value; + const month = parts.find(p => p.type === 'month').value; + const day = parts.find(p => p.type === 'day').value; + const hour = parseInt(parts.find(p => p.type === 'hour').value); + const minute = parseInt(parts.find(p => p.type === 'minute').value); + + // Check if before 22:30 (Asia/Shanghai timezone) + const isBefore2230 = hour < 22 || (hour === 22 && minute < 30); + + // Only process data before 22:30 + if (isBefore2230) { + // Use Asia/Shanghai timezone date as key + const dateKey = `${year}-${month}-${day}`; + + // Update if this day has no data yet, or if current data is later in time + if (!dailyData[dateKey] || new Date(d.t) > new Date(dailyData[dateKey].t)) { + dailyData[dateKey] = d; + } + } + }); + + // Convert to array and sort by time + return Object.values(dailyData).sort((a, b) => a.t - b.t); + } else if (chartTab === 'live') { + // LIVE chart: Show all updates from the most recent trading session (22:30-05:00) + // Live mode: Backend has already returned return curves for "current trading session + 0% starting point", frontend can use directly + const sourceEquity = dataSource.equity; + if (!sourceEquity || sourceEquity.length === 0) return []; + return sourceEquity; + } + return dataSource.equity || []; + }, [dataSource.equity, chartTab, virtualTime]); + // Helper function to get daily indices for 'all' view + const getDailyIndices = useMemo(() => { + if (!equity || equity.length === 0) return new Set(); + const dailyIndices = new Set(); + const dailyData = {}; + + const formatter = new Intl.DateTimeFormat('en-US', { + timeZone: 'Asia/Shanghai', + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + hour12: false + }); + + equity.forEach((d, idx) => { + const utcDate = new Date(d.t); + const parts = formatter.formatToParts(utcDate); + const hour = parseInt(parts.find(p => p.type === 'hour').value); + const minute = parseInt(parts.find(p => p.type === 'minute').value); + + // Check if before 22:30 (Asia/Shanghai timezone) + const isBefore2230 = hour < 22 || (hour === 22 && minute < 30); + + // Only process data before 22:30 + if (isBefore2230) { + const year = parts.find(p => p.type === 'year').value; + const month = parts.find(p => p.type === 'month').value; + const day = parts.find(p => p.type === 'day').value; + const dateKey = `${year}-${month}-${day}`; + + if (!dailyData[dateKey] || new Date(d.t) > new Date(dailyData[dateKey].t)) { + dailyData[dateKey] = { data: d, index: idx }; + } + } + }); + + Object.values(dailyData).forEach(({ index }) => dailyIndices.add(index)); + return dailyIndices; + }, [equity]); + + // Filter baseline, baseline_vw, momentum, strategies to match filteredEquity indices + const filteredBaseline = useMemo(() => { + const sourceBaseline = dataSource.baseline; + if (!sourceBaseline || sourceBaseline.length === 0 || !equity || equity.length === 0) return []; + if (chartTab === 'all') { + return sourceBaseline.filter((_, idx) => getDailyIndices.has(idx)); + } else if (chartTab === 'live') { + // Live mode: Use backend pre-processed baseline return curves directly + return sourceBaseline; + } + return sourceBaseline; + }, [dataSource.baseline, equity, chartTab, getDailyIndices, virtualTime]); + const filteredBaselineVw = useMemo(() => { + const sourceBaselineVw = dataSource.baseline_vw; + if (!sourceBaselineVw || sourceBaselineVw.length === 0 || !equity || equity.length === 0) return []; + if (chartTab === 'all') { + return sourceBaselineVw.filter((_, idx) => getDailyIndices.has(idx)); + } else if (chartTab === 'live') { + // Live mode: Use backend pre-processed baseline return curves directly + return sourceBaselineVw; + } + return sourceBaselineVw; + }, [dataSource.baseline_vw, equity, chartTab, getDailyIndices, virtualTime]); + const filteredMomentum = useMemo(() => { + const sourceMomentum = dataSource.momentum; + if (!sourceMomentum || sourceMomentum.length === 0 || !equity || equity.length === 0) return []; + if (chartTab === 'all') { + return sourceMomentum.filter((_, idx) => getDailyIndices.has(idx)); + } else if (chartTab === 'live') { + // Live mode: Use backend pre-processed momentum return curves directly + return sourceMomentum; + } + return sourceMomentum; + }, [dataSource.momentum, equity, chartTab, getDailyIndices, virtualTime]); + const filteredStrategies = useMemo(() => { + if (!strategies || strategies.length === 0 || !equity || equity.length === 0) return []; + if (chartTab === 'all') { + return strategies.filter((_, idx) => getDailyIndices.has(idx)); + } else if (chartTab === 'live') { + const sessionStartTime = getRecentTradingSessionStart(virtualTime); + return filterStrategyDataForLive(strategies, equity, sessionStartTime); + } + return strategies; + }, [strategies, equity, chartTab, getDailyIndices, virtualTime]); + + const chartData = useMemo(() => { + if (!filteredEquity || filteredEquity.length === 0) return []; + + try { + // LIVE mode: Align all curves by timestamp with forward filling to ensure consistent point counts and aligned starting points + if (chartTab === 'live') { + // Build timestamp -> value mapping + const toMap = (arr) => { + const m = new Map(); + if (Array.isArray(arr)) { + arr.forEach((p) => { + if (p && typeof p.t === 'number' && typeof p.v === 'number') { + m.set(p.t, p.v); + } + }); + } + return m; + }; + + const portfolioMap = toMap(filteredEquity); + const baselineMap = toMap(filteredBaseline); + const baselineVwMap = toMap(filteredBaselineVw); + const momentumMap = toMap(filteredMomentum); + const strategyMap = toMap(filteredStrategies); + + // Collect all timestamps, sort by time + const timestampSet = new Set(); + [filteredEquity, filteredBaseline, filteredBaselineVw, filteredMomentum, filteredStrategies].forEach(arr => { + if (Array.isArray(arr)) { + arr.forEach(p => { + if (p && typeof p.t === 'number') timestampSet.add(p.t); + }); + } + }); + + const timestamps = Array.from(timestampSet).sort((a, b) => a - b); + if (timestamps.length === 0) return []; + + // Current values for forward filling, initialized to 0% to ensure starting point alignment + let currentPortfolio = 0; + let currentBaseline = 0; + let currentBaselineVw = 0; + let currentMomentum = 0; + let currentStrategy = 0; + + return timestamps.map((t, idx) => { + if (portfolioMap.has(t)) currentPortfolio = portfolioMap.get(t); + if (baselineMap.has(t)) currentBaseline = baselineMap.get(t); + if (baselineVwMap.has(t)) currentBaselineVw = baselineVwMap.get(t); + if (momentumMap.has(t)) currentMomentum = momentumMap.get(t); + if (strategyMap.has(t)) currentStrategy = strategyMap.get(t); + + const date = new Date(t); + if (isNaN(date.getTime())) { + console.warn('Invalid timestamp in live chart data:', t); + return null; + } + + return { + index: idx, + time: + date.toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + }) + + ' ' + + date.toLocaleTimeString('en-US', { + hour: '2-digit', + minute: '2-digit', + hour12: false, + }), + timestamp: t, + portfolio: currentPortfolio, + baseline: currentBaseline, + baseline_vw: currentBaselineVw, + momentum: currentMomentum, + strategy: currentStrategy, + }; + }).filter(item => item !== null); + } + + // ALL mode: Keep the original index-based alignment logic + return filteredEquity.map((d, idx) => { + if (!d || typeof d.t !== 'number' || typeof d.v !== 'number') { + console.warn('Invalid equity data point:', d); + return null; + } + + const date = new Date(d.t); + if (isNaN(date.getTime())) { + console.warn('Invalid timestamp:', d.t); + return null; + } + + const baselineVal = filteredBaseline?.[idx] + ? (typeof filteredBaseline[idx] === 'object' ? filteredBaseline[idx].v : filteredBaseline[idx]) + : null; + const baselineVwVal = filteredBaselineVw?.[idx] + ? (typeof filteredBaselineVw[idx] === 'object' ? filteredBaselineVw[idx].v : filteredBaselineVw[idx]) + : null; + const momentumVal = filteredMomentum?.[idx] + ? (typeof filteredMomentum[idx] === 'object' ? filteredMomentum[idx].v : filteredMomentum[idx]) + : null; + const strategyVal = filteredStrategies?.[idx] + ? (typeof filteredStrategies[idx] === 'object' ? filteredStrategies[idx].v : filteredStrategies[idx]) + : null; + + return { + index: idx, + time: + date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) + + ' ' + + date.toLocaleTimeString('en-US', { + hour: '2-digit', + minute: '2-digit', + hour12: false, + }), + timestamp: d.t, + portfolio: d.v, + baseline: baselineVal || null, + baseline_vw: baselineVwVal || null, + momentum: momentumVal || null, + strategy: strategyVal || null, + }; + }).filter(item => item !== null); // Remove null entries + } catch (error) { + console.error('Error processing chart data:', error); + return []; + } + }, [filteredEquity, filteredBaseline, filteredBaselineVw, filteredMomentum, filteredStrategies, chartTab]); + + const { yMin, yMax, xTickIndices } = useMemo(() => { + if (chartData.length === 0) return { yMin: 0, yMax: 1, xTickIndices: [] }; + + // Calculate min and max from all series + const allValues = chartData.flatMap(d => + [d.portfolio, d.baseline, d.baseline_vw, d.momentum, d.strategy].filter(v => v !== null && isFinite(v)) + ); + + if (allValues.length === 0) { + return { yMin: 0, yMax: 1000000, xTickIndices: [] }; + } + + const dataMin = Math.min(...allValues); + const dataMax = Math.max(...allValues); + const range = dataMax - dataMin || 1; + + // For live mode (percentage data), use smaller padding and finer rounding + // For all mode (dollar amounts), use larger padding and coarser rounding + const isLiveMode = chartTab === 'live'; + + const paddingFactor = isLiveMode ? range * 0.15 : range * 0.03; + + let yMinCalc = dataMin - paddingFactor; + let yMaxCalc = dataMax + paddingFactor; + + // Smart rounding based on magnitude and mode + const magnitude = Math.max(Math.abs(yMinCalc), Math.abs(yMaxCalc)); + let roundTo; + + if (isLiveMode) { + // For percentage data, use much finer rounding + if (magnitude >= 100) { + roundTo = 10; + } else if (magnitude >= 10) { + roundTo = 1; + } else if (magnitude >= 1) { + roundTo = 0.1; + } else { + roundTo = 0.01; + } + } else { + // For dollar amounts, use coarser rounding + if (magnitude >= 1e6) { + roundTo = 10000; + } else if (magnitude >= 1e5) { + roundTo = 5000; + } else if (magnitude >= 1e4) { + roundTo = 1000; + } else { + roundTo = 100; + } + } + + yMinCalc = Math.floor(yMinCalc / roundTo) * roundTo; + yMaxCalc = Math.ceil(yMaxCalc / roundTo) * roundTo; + + // Stable range to prevent frequent updates + if (stableYRange) { + const { min: stableMin, max: stableMax } = stableYRange; + const stableRange = stableMax - stableMin; + const threshold = stableRange * 0.05; + + const needsUpdate = + dataMin < (stableMin + threshold) || + dataMax > (stableMax - threshold); + + if (!needsUpdate) { + yMinCalc = stableMin; + yMaxCalc = stableMax; + } + } + + // Calculate x-axis tick indices + const safeLength = Math.min(chartData.length, 10000); + const targetTicks = Math.min(8, Math.max(5, Math.floor(safeLength / 10))); + const step = Math.max(1, Math.floor(safeLength / (targetTicks - 1))); + + const indices = []; + for (let i = 0; i < safeLength && indices.length < 100; i += step) { + indices.push(i); + } + + if (safeLength > 0 && indices[indices.length - 1] !== safeLength - 1) { + indices.push(safeLength - 1); + } + + return { yMin: yMinCalc, yMax: yMaxCalc, xTickIndices: indices }; + }, [chartData, stableYRange]); + + // Update stableYRange in useEffect to avoid infinite re-renders + // Use functional update to avoid dependency on stableYRange + useEffect(() => { + if (yMin !== undefined && yMax !== undefined && yMin !== null && yMax !== null && isFinite(yMin) && isFinite(yMax)) { + setStableYRange(prevRange => { + if (!prevRange) { + // Initialize stable range + return { min: yMin, max: yMax }; + } else { + // Check if update is needed (5% threshold) + const stableRange = prevRange.max - prevRange.min; + const threshold = stableRange * 0.05; + const needsUpdate = + yMin < (prevRange.min + threshold) || + yMax > (prevRange.max - threshold); + + if (needsUpdate) { + return { min: yMin, max: yMax }; + } + // No update needed, return previous range + return prevRange; + } + }); + } + }, [yMin, yMax]); + + if (!equity || equity.length === 0) { + return ( +
+ NO DATA AVAILABLE +
+ ); + } + + const CustomTooltip = ({ active, payload }) => { + if (active && payload && payload.length) { + const isLiveMode = chartTab === 'live'; + return ( +
+
+ {payload[0].payload.time} +
+ {payload.map((entry, index) => ( +
+ {entry.name}: {isLiveMode ? `${entry.value.toFixed(2)}%` : `$${formatNumber(entry.value)}`}
+ ))} +
+ ); + } + return null; + }; + + const CustomDot = ({ dataKey, ...props }) => { + const { cx, cy, payload, index } = props; + const isActive = activePoint === index; + const isLastPoint = index === chartData.length - 1; + + // Only show dot for the last point + if (!isLastPoint) { + return null; + } + const colors = { + portfolio: '#00C853', + baseline: '#FF6B00', + baseline_vw: '#9C27B0', + momentum: '#2196F3', + strategy: '#795548' + }; + + return ( + setActivePoint(index)} + onMouseLeave={() => setActivePoint(null)} + onClick={() => console.log('Clicked point:', { dataKey, ...payload })} + /> + ); + }; + + const CustomXAxisTick = ({ x, y, payload }) => { + const shouldShow = xTickIndices.includes(payload.index); + if (!shouldShow) return null; + + return ( + + + {payload.value} + + + ); + }; + + const CustomLegend = ({ payload }) => { + if (!payload || payload.length === 0) return null; + + return ( +
+ {payload.map((entry, index) => { + const description = legendDescriptions[entry.value] || ''; + const isActive = legendTooltip === entry.value; + + return ( +
setLegendTooltip(entry.value)} + onMouseLeave={() => setLegendTooltip(null)} + onClick={(e) => { + e.stopPropagation(); + setLegendTooltip(isActive ? null : entry.value); + }} + > +
+ + {entry.value} + + {isActive && description && ( +
+ {description} +
+ )} +
+ ); + })} +
+ ); + }; + + return ( + + + } + interval={0} + /> + chartTab === 'live' ? `${value.toFixed(2)}%` : formatFullNumber(value)} + width={75} + /> + } /> + } + /> + + {/* Portfolio line */} + } + activeDot={{ r: 6, stroke: '#ffffff', strokeWidth: 2 }} + isAnimationActive={false} + /> + + {/* Baseline Equal Weight */} + {baseline && baseline.length > 0 && ( + } + activeDot={{ r: 6, stroke: '#ffffff', strokeWidth: 2 }} + isAnimationActive={false} + /> + )} + + {/* Baseline Value Weighted */} + {baseline_vw && baseline_vw.length > 0 && ( + } + activeDot={{ r: 6, stroke: '#ffffff', strokeWidth: 2 }} + isAnimationActive={false} + /> + )} + + {/* Momentum Strategy */} + {momentum && momentum.length > 0 && ( + } + activeDot={{ r: 6, stroke: '#ffffff', strokeWidth: 2 }} + isAnimationActive={false} + /> + )} + + {/* Other Strategies */} + {strategies && strategies.length > 0 && ( + } + activeDot={{ r: 6, stroke: '#ffffff', strokeWidth: 2 }} + isAnimationActive={false} + /> + )} + + + ); +} + diff --git a/evotraders/frontend/src/components/PerformanceView.jsx b/evotraders/frontend/src/components/PerformanceView.jsx new file mode 100644 index 0000000..8aea55e --- /dev/null +++ b/evotraders/frontend/src/components/PerformanceView.jsx @@ -0,0 +1,236 @@ +import React from 'react'; + +/** + * Performance View Component + * Displays agent performance leaderboard and signal history + */ +export default function PerformanceView({ leaderboard }) { + const rankedAgents = Array.isArray(leaderboard) + ? leaderboard.filter(agent => agent.agentId !== 'risk_manager') + : []; + return ( +
+ {/* Agent Performance Section */} +
+
+

Agent Performance - Signal Accuracy

+
+ + {rankedAgents.length === 0 ? ( +
No leaderboard data available
+ ) : ( +
+ + + + + + + + + + + + + + + {rankedAgents.map(agent => { + const bullTotal = agent.bull?.n || 0; + const bullWins = agent.bull?.win || 0; + const bullUnknown = agent.bull?.unknown || 0; + const bearTotal = agent.bear?.n || 0; + const bearWins = agent.bear?.win || 0; + const bearUnknown = agent.bear?.unknown || 0; + const totalSignals = bullTotal + bearTotal; + const evaluatedBull = Math.max(bullTotal - bullUnknown, 0); + const evaluatedBear = Math.max(bearTotal - bearUnknown, 0); + const evaluatedTotal = evaluatedBull + evaluatedBear; + const bullWinRate = evaluatedBull > 0 ? (bullWins / evaluatedBull) : null; + const bearWinRate = evaluatedBear > 0 ? (bearWins / evaluatedBear) : null; + const overallWinRate = agent.winRate != null + ? agent.winRate + : (evaluatedTotal > 0 ? ((bullWins + bearWins) / evaluatedTotal) : null); + const overallColor = overallWinRate != null + ? (overallWinRate >= 0.5 ? '#00C853' : '#FF1744') + : '#999999'; + + return ( + + + + + + + + + + + ); + })} + +
RankAgentWin RateBull SignalsBull Win RateBear SignalsBear Win RateTotal Signals
+ + {agent.rank === 1 ? '★ 1' : agent.rank} + + +
{agent.name}
+
{agent.role}
+
+ {overallWinRate != null ? `${(overallWinRate * 100).toFixed(1)}%` : 'N/A'} + +
{bullTotal} signals
+
{bullWins} wins
+ {bullUnknown > 0 && ( +
{bullUnknown} unknown
+ )} +
= 0.5 ? '#00C853' : '#999999') : '#999999' }}> + {bullWinRate != null ? `${(bullWinRate * 100).toFixed(1)}%` : 'N/A'} + +
{bearTotal} signals
+
{bearWins} wins
+ {bearUnknown > 0 && ( +
{bearUnknown} unknown
+ )} +
= 0.5 ? '#00C853' : '#999999') : '#999999' }}> + {bearWinRate != null ? `${(bearWinRate * 100).toFixed(1)}%` : 'N/A'} + {totalSignals}
+
+ )} +
+ + {/* Signal History with Dates */} + {rankedAgents.length > 0 && rankedAgents.some(agent => agent.signals && agent.signals.length > 0) && ( +
+
+

Signal History

+
+ +
+ {rankedAgents.map(agent => { + if (!agent.signals || agent.signals.length === 0) return null; + + // Sort by date descending (newest first) + const sortedSignals = [...agent.signals].sort((a, b) => + new Date(b.date).getTime() - new Date(a.date).getTime() + ); + + return ( +
+
+ {agent.name} +
+
+ {sortedSignals.map((signal, idx) => { + const signalType = signal.signal.toLowerCase(); + const isBull = signalType.includes('bull') || signalType === 'long'; + const isBear = signalType.includes('bear') || signalType === 'short'; + const isNeutral = signalType.includes('neutral') || signalType === 'hold'; + const resultStatus = signal.is_correct; + const isCorrect = resultStatus === true; + const isResultUnknown = resultStatus === 'unknown' || resultStatus === null || typeof resultStatus === 'undefined'; + const realReturnValue = signal.real_return; + const hasRealReturn = typeof realReturnValue === 'number' && Number.isFinite(realReturnValue); + const realReturnDisplay = hasRealReturn + ? `${realReturnValue >= 0 ? '+' : ''}${(realReturnValue * 100).toFixed(2)}%` + : 'Unknown'; + const realReturnColor = hasRealReturn + ? (realReturnValue >= 0 ? '#00C853' : '#FF1744') + : '#999999'; + const statusColor = isResultUnknown ? '#999999' : (isCorrect ? '#00C853' : '#FF1744'); + const statusSymbol = isResultUnknown ? '?' : (isCorrect ? '✓' : '✗'); + + return ( +
+
+ + {signal.date} + + + {signal.ticker} + + + {isBull ? 'Bull' : isBear ? 'Bear' : 'Neutral'} + + {!isNeutral && ( + + {realReturnDisplay} + + )} +
+ {!isNeutral && ( + + {statusSymbol} + + )} +
+ ); + })} +
+
+ Total: {sortedSignals.length} signals +
+
+ ); + })} +
+
+ )} +
+ ); +} + diff --git a/evotraders/frontend/src/components/RoomView.jsx b/evotraders/frontend/src/components/RoomView.jsx new file mode 100644 index 0000000..15a9f9e --- /dev/null +++ b/evotraders/frontend/src/components/RoomView.jsx @@ -0,0 +1,770 @@ +import React, { useEffect, useMemo, useRef, useState, useCallback } from 'react'; +import { ASSETS, SCENE_NATIVE, AGENT_SEATS, AGENTS } from '../config/constants'; +import AgentCard from './AgentCard'; +import { getModelIcon } from '../utils/modelIcons'; + +/** + * Custom hook to load an image + */ +function useImage(src) { + const [img, setImg] = useState(null); + useEffect(() => { + if (!src) { + setImg(null); + return; + } + // Reset image state when backend changes + setImg(null); + const image = new Image(); + image.src = src; + image.onload = () => setImg(image); + image.onerror = () => { + console.error(`Failed to load image: ${src}`); + setImg(null); + }; + // Cleanup: cancel loading if backend changes + return () => { + image.onload = null; + image.onerror = null; + }; + }, [src]); + return img; +} + +/** + * Get rank medal/trophy for display + */ +function getRankMedal(rank) { + if (rank === 1) return '🏆'; + if (rank === 2) return '🥈'; + if (rank === 3) return '🥉'; + return null; +} + +/** + * Room View Component + * Displays the conference room with agents, speech bubbles, and agent cards + * Supports click and hover (1.5s) to show agent performance cards + * Supports replay mode - completely independent from live mode + */ +export default function RoomView({ bubbles, bubbleFor, leaderboard, feed, onJumpToMessage }) { + const canvasRef = useRef(null); + const containerRef = useRef(null); + + // Agent selection and hover state + const [selectedAgent, setSelectedAgent] = useState(null); + const [hoveredAgent, setHoveredAgent] = useState(null); + const [isClosing, setIsClosing] = useState(false); + const hoverTimerRef = useRef(null); + const closeTimerRef = useRef(null); + + // Bubble expansion state + const [expandedBubbles, setExpandedBubbles] = useState({}); + + // Hidden bubbles (locally dismissed) + const [hiddenBubbles, setHiddenBubbles] = useState({}); + + // Handle bubble close + const handleCloseBubble = (agentId, bubbleKey, e) => { + e.stopPropagation(); + setHiddenBubbles(prev => ({ + ...prev, + [bubbleKey]: true + })); + }; + + // Replay state (must be defined before using in useMemo) + const [isReplaying, setIsReplaying] = useState(false); + const [replayBubbles, setReplayBubbles] = useState({}); + const [modeTransition, setModeTransition] = useState(null); // 'entering-replay' | 'exiting-replay' | null + const [isPaused, setIsPaused] = useState(false); + const replayTimerRef = useRef(null); + const replayTimeoutsRef = useRef([]); + const replayStateRef = useRef({ messages: [], currentIndex: 0 }); + + // Background image + const roomBgSrc = ASSETS.roomBg; + + const bgImg = useImage(roomBgSrc); + + // Calculate scale to fit canvas in container (80% of available space) + const [scale, setScale] = useState(0.8); + + useEffect(() => { + const updateScale = () => { + const container = containerRef.current; + if (!container) return; + + const { clientWidth, clientHeight } = container; + if (clientWidth <= 0 || clientHeight <= 0) return; + + const scaleX = clientWidth / SCENE_NATIVE.width; + const scaleY = clientHeight / SCENE_NATIVE.height; + const newScale = Math.min(scaleX, scaleY, 1.0) * 0.8; // Scale to 80% of original size + setScale(Math.max(0.3, newScale)); + }; + + updateScale(); + const resizeObserver = new ResizeObserver(updateScale); + if (containerRef.current) { + resizeObserver.observe(containerRef.current); + } + window.addEventListener('resize', updateScale); + + return () => { + resizeObserver.disconnect(); + window.removeEventListener('resize', updateScale); + }; + }, []); + + // Set canvas size + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + canvas.width = SCENE_NATIVE.width; + canvas.height = SCENE_NATIVE.height; + + const displayWidth = Math.round(SCENE_NATIVE.width * scale); + const displayHeight = Math.round(SCENE_NATIVE.height * scale); + canvas.style.width = `${displayWidth}px`; + canvas.style.height = `${displayHeight}px`; + }, [scale]); + + // Draw room background + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + const ctx = canvas.getContext('2d'); + ctx.imageSmoothingEnabled = false; + + // Clear canvas first + ctx.clearRect(0, 0, canvas.width, canvas.height); + + // Draw image if loaded + if (bgImg) { + ctx.drawImage(bgImg, 0, 0, SCENE_NATIVE.width, SCENE_NATIVE.height); + } + }, [bgImg, scale, roomBgSrc]); + + // Determine which agents are speaking + const speakingAgents = useMemo(() => { + const speaking = {}; + AGENTS.forEach(agent => { + const bubble = bubbleFor(agent.name); + speaking[agent.id] = !!bubble; + }); + return speaking; + }, [bubbles, bubbleFor]); + + // Find agent data from leaderboard + const getAgentData = (agentId) => { + const agent = AGENTS.find(a => a.id === agentId); + if (!agent) return null; + + // If no leaderboard data, return agent with default stats + if (!leaderboard || !Array.isArray(leaderboard)) { + return { + ...agent, + bull: { n: 0, win: 0, unknown: 0 }, + bear: { n: 0, win: 0, unknown: 0 }, + winRate: null, + signals: [], + rank: null + }; + } + + const leaderboardData = leaderboard.find(lb => lb.agentId === agentId); + + // If agent not in leaderboard, return agent with default stats + if (!leaderboardData) { + return { + ...agent, + bull: { n: 0, win: 0, unknown: 0 }, + bear: { n: 0, win: 0, unknown: 0 }, + winRate: null, + signals: [], + rank: null + }; + } + + // Merge data but preserve the correct avatar from AGENTS config + return { + ...agent, + ...leaderboardData, + avatar: agent.avatar // Always use the frontend's avatar URL + }; + }; + + // Get agent rank for display + const getAgentRank = (agentId) => { + const agentData = getAgentData(agentId); + return agentData?.rank || null; + }; + + // Handle agent click + const handleAgentClick = (agentId) => { + // Cancel any closing animation + if (closeTimerRef.current) { + clearTimeout(closeTimerRef.current); + closeTimerRef.current = null; + } + setIsClosing(false); + + const agentData = getAgentData(agentId); + if (agentData) { + setSelectedAgent(agentData); + } + }; + + // Handle agent hover + const handleAgentMouseEnter = (agentId) => { + setHoveredAgent(agentId); + // Clear any existing timer + if (hoverTimerRef.current) { + clearTimeout(hoverTimerRef.current); + hoverTimerRef.current = null; + } + // Cancel any closing animation + if (closeTimerRef.current) { + clearTimeout(closeTimerRef.current); + closeTimerRef.current = null; + } + setIsClosing(false); + + // If there's already a selected agent, switch immediately + // Otherwise, show after a short delay (0ms = immediate) + const agentData = getAgentData(agentId); + if (agentData) { + if (selectedAgent) { + // Already have a card open, switch immediately + setSelectedAgent(agentData); + } else { + // No card open, show after delay (currently 0ms = immediate) + hoverTimerRef.current = setTimeout(() => { + setSelectedAgent(agentData); + hoverTimerRef.current = null; + }, 0); + } + } + }; + + const handleAgentMouseLeave = () => { + setHoveredAgent(null); + // Clear timer if mouse leaves before 1.5 seconds + if (hoverTimerRef.current) { + clearTimeout(hoverTimerRef.current); + hoverTimerRef.current = null; + } + }; + + // Handle closing with animation + const handleClose = () => { + setIsClosing(true); + // Wait for animation to complete before removing + closeTimerRef.current = setTimeout(() => { + setSelectedAgent(null); + setIsClosing(false); + closeTimerRef.current = null; + }, 200); // Match the slideUp animation duration + }; + + // Cleanup timer on unmount + useEffect(() => { + return () => { + if (hoverTimerRef.current) { + clearTimeout(hoverTimerRef.current); + } + if (closeTimerRef.current) { + clearTimeout(closeTimerRef.current); + } + // Clean up replay timers + if (replayTimerRef.current) { + clearTimeout(replayTimerRef.current); + } + replayTimeoutsRef.current.forEach(timeoutId => clearTimeout(timeoutId)); + replayTimeoutsRef.current = []; + }; + }, []); + + // Show replay button when not in replay mode and has feed history + const showReplayButton = !isReplaying && feed && feed.length > 0; + + // Start replay with feed data + const handleReplayClick = useCallback(() => { + if (!feed || feed.length === 0) { + return; + } + startReplay(feed); + }, [feed]); + + // Extract agent messages from feed items + const extractAgentMessages = useCallback((feedItems) => { + const messages = []; + + feedItems.forEach((item, itemIndex) => { + if (item.type === 'message' && item.data) { + const msg = item.data; + // Skip system messages + if (msg.agent === 'System') return; + // Find matching agent + const agent = AGENTS.find(a => + a.id === msg.agentId || + a.name === msg.agent + ); + if (agent) { + messages.push({ + feedItemId: item.id, + agentId: agent.id, + agentName: agent.name, + content: msg.content, + timestamp: msg.timestamp + }); + } + } else if (item.type === 'conference' && item.data?.messages) { + item.data.messages.forEach((msg, msgIndex) => { + if (msg.agent === 'System') return; + const agent = AGENTS.find(a => + a.id === msg.agentId || + a.name === msg.agent + ); + if (agent) { + messages.push({ + feedItemId: item.id, + agentId: agent.id, + agentName: agent.name, + content: msg.content, + timestamp: msg.timestamp + }); + } + }); + } + }); + + return messages; + }, []); + + // Show next message in replay + const showNextMessage = useCallback(() => { + const { messages, currentIndex } = replayStateRef.current; + if (currentIndex >= messages.length) { + // End replay + setModeTransition('exiting-replay'); + setTimeout(() => { + setModeTransition(null); + setIsReplaying(false); + setIsPaused(false); + setReplayBubbles({}); + replayStateRef.current = { messages: [], currentIndex: 0 }; + }, 500); + return; + } + + const msg = messages[currentIndex]; + const bubbleId = `replay_${msg.agentId}_${currentIndex}`; + + setReplayBubbles(prev => ({ + ...prev, + [bubbleId]: { + id: bubbleId, + feedItemId: msg.feedItemId, + agentId: msg.agentId, + agentName: msg.agentName, + text: msg.content, + timestamp: msg.timestamp, + ts: msg.timestamp + } + })); + + // Remove bubble after 10 seconds (previously 5s) to keep replay text visible longer + const hideTimeout = setTimeout(() => { + setReplayBubbles(prev => { + const newBubbles = { ...prev }; + delete newBubbles[bubbleId]; + return newBubbles; + }); + }, 10000); + replayTimeoutsRef.current.push(hideTimeout); + + // Schedule next message + replayStateRef.current.currentIndex = currentIndex + 1; + // Wait longer before next bubble to match extended visibility (was 3s) + const nextTimeout = setTimeout(() => { + showNextMessage(); + }, 6000); + replayTimerRef.current = nextTimeout; + replayTimeoutsRef.current.push(nextTimeout); + }, []); + + // Start replay with feed data + const startReplay = useCallback((feedItems) => { + if (!feedItems || feedItems.length === 0) { + return; + } + + const agentMessages = extractAgentMessages(feedItems).reverse(); + if (agentMessages.length === 0) { + return; + } + + // Store messages for pause/resume + replayStateRef.current = { messages: agentMessages, currentIndex: 0 }; + + // Start transition animation + setModeTransition('entering-replay'); + setIsReplaying(true); + setIsPaused(false); + setReplayBubbles({}); + + // Clear any existing timeouts + replayTimeoutsRef.current.forEach(timeoutId => clearTimeout(timeoutId)); + replayTimeoutsRef.current = []; + + // Clear transition and start replay after animation completes + setTimeout(() => { + setModeTransition(null); + showNextMessage(); + }, 500); + }, [extractAgentMessages, showNextMessage]); + + // Pause replay + const pauseReplay = useCallback(() => { + if (replayTimerRef.current) { + clearTimeout(replayTimerRef.current); + replayTimerRef.current = null; + } + setIsPaused(true); + }, []); + + // Resume replay + const resumeReplay = useCallback(() => { + setIsPaused(false); + showNextMessage(); + }, [showNextMessage]); + + // Stop replay + const stopReplay = useCallback(() => { + // Clear all timeouts + replayTimeoutsRef.current.forEach(timeoutId => clearTimeout(timeoutId)); + replayTimeoutsRef.current = []; + + if (replayTimerRef.current) { + clearTimeout(replayTimerRef.current); + replayTimerRef.current = null; + } + + // Transition out of replay mode + setModeTransition('exiting-replay'); + // Clear transition and replay state after animation completes + setTimeout(() => { + setModeTransition(null); + setIsReplaying(false); + setIsPaused(false); + setReplayBubbles({}); + replayStateRef.current = { messages: [], currentIndex: 0 }; + }, 500); + }, []); + + // Get bubble for specific agent (supports both live and replay mode) + const getBubbleForAgent = useCallback((agentName) => { + if (isReplaying) { + // Find replay bubble for this agent + const bubble = Object.values(replayBubbles).find(b => { + const agent = AGENTS.find(a => a.id === b.agentId); + return agent && agent.name === agentName; + }); + return bubble || null; + } else { + // Use normal bubbleFor function + return bubbleFor(agentName); + } + }, [isReplaying, replayBubbles, bubbleFor]); + + return ( +
+ {/* Agents Indicator Bar */} +
+ {AGENTS.map((agent, index) => { + const rank = getAgentRank(agent.id); + const medal = rank ? getRankMedal(rank) : null; + const agentData = getAgentData(agent.id); + const modelInfo = getModelIcon(agentData?.modelName, agentData?.modelProvider); + + return ( + +
handleAgentClick(agent.id)} + onMouseEnter={() => handleAgentMouseEnter(agent.id)} + onMouseLeave={handleAgentMouseLeave} + > +
+ {agent.name} + + {medal && ( + + {medal} + + )} + {modelInfo.logoPath && ( + {modelInfo.provider} + )} +
+ {agent.name} +
+ {/* Divider after Risk Manager (index 1) */} + {index === 1 && ( +
+ )} + + ); + })} + + {/* Hint Text */} +
+ Click avatar to view details +
+
+ + {/* Room Canvas */} +
+
+
+ + + {/* Speech Bubbles */} + {AGENTS.map((agent, idx) => { + const bubble = getBubbleForAgent(agent.name); + if (!bubble) return null; + + const bubbleKey = `${agent.id}_${bubble.timestamp || bubble.id || bubble.ts}`; + + // Check if bubble is hidden + if (hiddenBubbles[bubbleKey]) return null; + + const pos = AGENT_SEATS[idx]; + const scaledWidth = SCENE_NATIVE.width * scale; + const scaledHeight = SCENE_NATIVE.height * scale; + + // Bubble left-bottom corner aligns to agent position + const left = Math.round(pos.x * scaledWidth); + const bottom = Math.round(pos.y * scaledHeight); + + // Get agent data for model info + const agentData = getAgentData(agent.id); + const modelInfo = getModelIcon(agentData?.modelName, agentData?.modelProvider); + + // Truncate long text - 200 collapsed, 500 expanded max + const maxLength = 200; + const maxExpandedLength = 500; + const isTruncated = bubble.text.length > maxLength; + const isExpanded = expandedBubbles[bubbleKey]; + const displayText = (!isExpanded && isTruncated) + ? bubble.text.substring(0, maxLength) + '...' + : (isExpanded && bubble.text.length > maxExpandedLength) + ? bubble.text.substring(0, maxExpandedLength) + '...' + : bubble.text; + + const toggleExpand = (e) => { + e.stopPropagation(); + setExpandedBubbles(prev => ({ + ...prev, + [bubbleKey]: !prev[bubbleKey] + })); + }; + + const handleJumpToFeed = (e) => { + e.stopPropagation(); + if (onJumpToMessage) { + onJumpToMessage(bubble); + } + }; + + return ( +
+ {/* Action buttons */} +
+ + +
+ + {/* Agent header with model icon */} +
+ {modelInfo.logoPath && ( + {modelInfo.provider} + )} +
{bubble.agentName || agent.name}
+
+ +
+ + {/* Message content */} +
+ {displayText} + {isTruncated && ( + + )} +
+
+ ); + })} +
+
+ + {/* Agent Card - Dropdown style below indicator bar */} + {selectedAgent && ( + <> + {/* Transparent overlay to close card */} +
+ + {/* Agent Card */} + + + )} + + {/* Mode Transition Overlay - sweeps in the dark gradient */} + {modeTransition === 'entering-replay' && ( +
+ )} + + {/* Mode Transition Overlay - sweeps out the dark gradient */} + {modeTransition === 'exiting-replay' && ( +
+ )} + + {/* Replay Button */} + {showReplayButton && ( +
+ +
+ )} + + {/* Replay Mode Background + Indicator */} + {isReplaying && !modeTransition && ( + <> +
+
+ {isPaused ? 'PAUSED' : 'REPLAY MODE'} + + +
+ + )} +
+
+ ); +} + diff --git a/evotraders/frontend/src/components/RulesView.jsx b/evotraders/frontend/src/components/RulesView.jsx new file mode 100644 index 0000000..8cdd583 --- /dev/null +++ b/evotraders/frontend/src/components/RulesView.jsx @@ -0,0 +1,483 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { LLM_MODEL_LOGOS } from '../config/constants'; + +export default function RulesView() { + const [language, setLanguage] = useState('en'); // 'en' or 'zh' + const [scale, setScale] = useState(1); + const containerRef = useRef(null); + const contentRef = useRef(null); + + // Auto-scale content to fit container without scrolling + useEffect(() => { + const handleResize = () => { + if (containerRef.current && contentRef.current) { + const containerHeight = containerRef.current.clientHeight; + const contentHeight = contentRef.current.scrollHeight; + + if (contentHeight > containerHeight) { + const newScale = containerHeight / contentHeight; + setScale(Math.max(newScale * 0.95, 0.5)); // Min scale 0.5, with 95% of available space + } else { + setScale(1); + } + } + }; + + // Initial resize + handleResize(); + + // Listen to window resize + window.addEventListener('resize', handleResize); + + // Observe content changes + const observer = new ResizeObserver(handleResize); + if (contentRef.current) { + observer.observe(contentRef.current); + } + + return () => { + window.removeEventListener('resize', handleResize); + observer.disconnect(); + }; + }, [language]); + + const containerStyle = { + width: '100%', + height: '100%', + overflow: 'hidden', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: '#FFFFFF', + padding: '10px' + }; + + const contentWrapperStyle = { + transform: `scale(${scale})`, + transformOrigin: 'center center', + transition: 'transform 0.3s ease', + width: '100%', + maxWidth: '900px' + }; + + const innerContentStyle = { + color: '#000000', + fontFamily: "'IBM Plex Mono', monospace", + fontSize: '13px', + lineHeight: '1.6', + letterSpacing: '0.01em', + padding: '0 10px' + }; + + const highlight = { + color: '#000000', + fontWeight: 700 + }; + + const sectionTitleStyle = { + color: '#615CED', + fontSize: '16px', + fontWeight: 700, + marginBottom: '8px', + marginTop: '12px', + marginLeft: '-10px', + marginRight: '-10px', + width: 'calc(100% + 20px)', + padding: '8px 10px', + backgroundColor: '#FFFFFF', + letterSpacing: '0.5px', + boxSizing: 'border-box' + }; + + const subsectionStyle = { + marginBottom: '8px', + paddingLeft: '10px', + borderLeft: '2px solid #CCCCCC' + }; + + const linkStyle = { + color: '#615CED', + textDecoration: 'none', + borderBottom: '1px solid #615CED', + transition: 'all 0.2s' + }; + + const languageSwitchStyle = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + marginBottom: '12px', + gap: '0px', + fontSize: '11px', + fontFamily: "'IBM Plex Mono', monospace" + }; + + const getLangStyle = (isActive) => ({ + padding: '4px 10px', + cursor: 'pointer', + transition: 'all 0.2s', + background: isActive ? '#000000' : 'transparent', + color: isActive ? '#FFFFFF' : '#666666', + border: 'none', + borderRadius: '2px' + }); + + const llmLogos = [ + { name: 'Alibaba', file: 'Alibaba.jpeg', label: 'Qwen', url: LLM_MODEL_LOGOS['Alibaba'] }, + { name: 'DeepSeek', file: 'DeepSeek.png', label: 'DeepSeek', url: LLM_MODEL_LOGOS['DeepSeek'] }, + { name: 'Moonshot', file: 'Moonshot.jpeg', label: 'Moonshot', url: LLM_MODEL_LOGOS['Moonshot'] }, + { name: 'Zhipu AI', file: 'Zhipu AI.png', label: 'Zhipu AI', url: LLM_MODEL_LOGOS['Zhipu AI'] } + ]; + + const content = { + en: { + section1Title: "Agent Setup", + pmRole: "Portfolio Manager", + pmDesc: "Makes final trading decisions and orchestrates team collaboration", + rmRole: "Risk Manager", + rmDesc: "Monitors portfolio risk and enforces risk limits", + analystsRole: "Analysts", + analystsDesc: "Conduct specialized research with different tools and AI models:", + analysts: [ + { name: "Valuation Analyst", model: "Moonshot", modelKey: "Moonshot" }, + { name: "Sentiment Analyst", model: "Qwen", modelKey: "Alibaba" }, + { name: "Fundamentals Analyst", model: "DeepSeek", modelKey: "DeepSeek" }, + { name: "Technical Analyst", model: "Zhipu AI", modelKey: "Zhipu AI" } + ], + + section2Title: "Agent Decision Mechanism", + + tradingProcess: "Daily Trading Process", + tradingDesc: "Agents trade on a daily frequency while continuously tracking portfolio performance. Before each day's final trading decision, agents go through three key phases:", + + analysisPhase: "• Analysis Phase", + analysisDesc: "All agents independently analyze information and form judgments based on their specialized tools.", + + communicationPhase: "• Communication Phase", + commIntro: "Multiple communication channels enable effective collaboration: 1v1 Private Chat / 1vN Notification / NvN Conference", + + decisionPhase: "• Decision Phase", + decisionDesc: "Portfolio Manager aggregates all information and makes the final team trading decision. The original trading signals from analysts are only used for individual-level ranking.", + + reflectionTitle: "Learning & Evolution", + reflectionDesc: "Agents reflect on daily investment performance, summarize insights, and store them in ", + remeLink: "ReMe", + reflectionDesc2: " memory framework for continuous improvement.", + + section3Title: "Performance Evaluation", + + chartTitle: "• Performance Chart", + chartDesc: "Track portfolio equity curve vs. benchmarks (equal-weight, value-weighted, momentum). Use this to assess overall strategy effectiveness.", + + rankingTitle: "• Analyst Rankings", + rankingDesc: "Click avatars in Trading Room to view analyst performance (Win Rate, Bull/Bear Win Rate). Use this to understand which analysts provide the most valuable insights.", + + statsTitle: "• Statistics", + statsDesc: "Detailed holdings and trade history. Use this for in-depth analysis of position management and execution quality.", + + callToAction: "Fork on ", + repoLink: "GitHub", + callToAction2: " to customize!" + }, + zh: { + section1Title: "Agent 设定", + pmRole: "Portfolio Manager", + pmDesc: "负责最终交易决策和团队协作", + rmRole: "Risk Manager", + rmDesc: "监控组合风险并执行风险限制", + analystsRole: "Analysts", + analystsDesc: "使用不同工具和 AI 模型进行专业研究:", + analysts: [ + { name: "Valuation Analyst", model: "Moonshot", modelKey: "Moonshot" }, + { name: "Sentiment Analyst", model: "Qwen", modelKey: "Alibaba" }, + { name: "Fundamentals Analyst", model: "DeepSeek", modelKey: "DeepSeek" }, + { name: "Technical Analyst", model: "Zhipu AI", modelKey: "Zhipu AI" } + ], + + section2Title: "Agent 决策机制", + + tradingProcess: "交易流程", + tradingDesc: "Agents 进行日频交易并持续跟踪组合净值。每天最终交易决策前,agents 经历三个关键阶段:", + + analysisPhase: "• 分析阶段", + analysisDesc: "所有 agents 根据各自的工具和信息独立分析并形成判断。", + + communicationPhase: "• 沟通阶段", + commIntro: "提供了多种沟通渠道:1v1 私聊 / 1vN 通知 / NvN 会议", + + decisionPhase: "• 决策阶段", + decisionDesc: "由 portfolio manager 汇总所有信息,并给出最终的团队交易。analysts 给出的原始交易信号仅做个人维度的排名。", + + reflectionTitle: "学习与进化", + reflectionDesc: "Agents 根据当日实际收益反思决策、总结经验,并存入 ", + remeLink: "ReMe", + reflectionDesc2: " 记忆框架以持续改进。", + + section3Title: "收益评估", + + chartTitle: "• 业绩图表", + chartDesc: "追踪组合收益曲线 vs. 基准策略(等权、市值加权、动量)。用于评估整体策略有效性。", + + rankingTitle: "• 分析师排名", + rankingDesc: "在 Trading Room 点击头像查看分析师表现(胜率、牛/熊市胜率)。用于了解哪些分析师提供最有价值的洞察。", + + statsTitle: "• 统计数据", + statsDesc: "详细的持仓和交易历史。用于深入分析仓位管理和执行质量。", + + callToAction: "在 ", + repoLink: "GitHub", + callToAction2: " 上 fork 并自定义!" + } + }; + + return ( +
+
+
+ {/* Language Switch */} +
+ setLanguage('zh')} + > + 中文 + + + setLanguage('en')} + > + EN + +
+ + {language === 'en' ? ( + // English Content + <> + {/* Section 1: Agent Setup */} +
{content.en.section1Title}
+ + {/* Roles */} +
+
+ {content.en.pmRole}: {content.en.pmDesc} +
+
+ {content.en.rmRole}: {content.en.rmDesc} +
+
+ {content.en.analystsRole}: {content.en.analystsDesc} +
+
+ + {/* Analysts with AI Models */} +
+ {content.en.analysts.map(analyst => { + const logo = llmLogos.find(l => l.name === analyst.modelKey); + return ( +
+ {logo && ( + {logo.label} + )} + {analyst.name} + - {analyst.model} +
+ ); + })} +
+ +
+ {content.en.callToAction} + + {content.en.repoLink} + + {content.en.callToAction2} +
+ + {/* Section 2: Agent Decision Mechanism */} +
{content.en.section2Title}
+ +
+
{content.en.tradingProcess}
+
{content.en.tradingDesc}
+ +
+
+ {content.en.analysisPhase.replace('• ', '')}: {content.en.analysisDesc} +
+ +
+ {content.en.communicationPhase.replace('• ', '')}: {content.en.commIntro} +
+ +
+ {content.en.decisionPhase.replace('• ', '')}: {content.en.decisionDesc} +
+
+
+ +
+
{content.en.reflectionTitle}
+
+ {content.en.reflectionDesc} + + {content.en.remeLink} + + {content.en.reflectionDesc2} +
+
+ + {/* Section 3: Performance Evaluation */} +
{content.en.section3Title}
+
+
+ {content.en.chartTitle.replace('• ', '')}: {content.en.chartDesc} +
+
+ {content.en.rankingTitle.replace('• ', '')}: {content.en.rankingDesc} +
+
+ {content.en.statsTitle.replace('• ', '')}: {content.en.statsDesc} +
+
+ + ) : ( + // Chinese Content + <> + {/* 第一部分:Agent 设定 */} +
{content.zh.section1Title}
+ + {/* 角色 */} +
+
+ {content.zh.pmRole}: {content.zh.pmDesc} +
+
+ {content.zh.rmRole}: {content.zh.rmDesc} +
+
+ {content.zh.analystsRole}: {content.zh.analystsDesc} +
+
+ + {/* Analysts 与 AI 模型 */} +
+ {content.zh.analysts.map(analyst => { + const logo = llmLogos.find(l => l.name === analyst.modelKey); + return ( +
+ {logo && ( + {logo.label} + )} + {analyst.name} + - {analyst.model} +
+ ); + })} +
+ +
+ {content.zh.callToAction} + + {content.zh.repoLink} + + {content.zh.callToAction2} +
+ + {/* 第二部分:Agent 决策机制 */} +
{content.zh.section2Title}
+ +
+
{content.zh.tradingProcess}
+
{content.zh.tradingDesc}
+ +
+
+ {content.zh.analysisPhase.replace('• ', '')}: {content.zh.analysisDesc} +
+ +
+ {content.zh.communicationPhase.replace('• ', '')}: {content.zh.commIntro} +
+ +
+ {content.zh.decisionPhase.replace('• ', '')}: {content.zh.decisionDesc} +
+
+
+ +
+
{content.zh.reflectionTitle}
+
+ {content.zh.reflectionDesc} + + {content.zh.remeLink} + + {content.zh.reflectionDesc2} +
+
+ + {/* 第三部分:收益评估 */} +
{content.zh.section3Title}
+
+
+ {content.zh.chartTitle.replace('• ', '')}: {content.zh.chartDesc} +
+
+ {content.zh.rankingTitle.replace('• ', '')}: {content.zh.rankingDesc} +
+
+ {content.zh.statsTitle.replace('• ', '')}: {content.zh.statsDesc} +
+
+ + )} +
+
+
+ ); +} diff --git a/evotraders/frontend/src/components/StatisticsView.jsx b/evotraders/frontend/src/components/StatisticsView.jsx new file mode 100644 index 0000000..cbe6dd0 --- /dev/null +++ b/evotraders/frontend/src/components/StatisticsView.jsx @@ -0,0 +1,593 @@ +import React, { useState, useEffect } from 'react'; +import StockLogo from './StockLogo'; +import { formatNumber, formatDateTime } from '../utils/formatters'; + +/** + * Statistics View Component + * Displays portfolio overview, holdings, and trade history in a side-by-side layout + * Left: Performance Overview (35%) | Right: Holdings + Trades (65%) + * No scrolling - content fits within viewport with pagination + */ +export default function StatisticsView({ trades, holdings, stats, baseline_vw, equity }) { + const [holdingsPage, setHoldingsPage] = useState(1); + const [tradesPage, setTradesPage] = useState(1); + const holdingsPerPage = 5; + const tradesPerPage = 8; + + // Calculate pagination for holdings + const totalHoldingsPages = Math.ceil(holdings.length / holdingsPerPage); + const holdingsStartIndex = (holdingsPage - 1) * holdingsPerPage; + const holdingsEndIndex = holdingsStartIndex + holdingsPerPage; + const currentHoldings = holdings.slice(holdingsStartIndex, holdingsEndIndex); + + // Calculate pagination for trades + const totalTradesPages = Math.ceil(trades.length / tradesPerPage); + const tradesStartIndex = (tradesPage - 1) * tradesPerPage; + const tradesEndIndex = tradesStartIndex + tradesPerPage; + const currentTrades = trades.slice(tradesStartIndex, tradesEndIndex); + + // Calculate excess return (Evatraders return - benchmark value-weighted return) + const calculateExcessReturn = () => { + if (!stats || !baseline_vw || baseline_vw.length === 0) { + return null; + } + + // Get Evatraders return from stats + const evatradersReturn = stats.totalReturn || 0; // Already in percentage + + // Calculate benchmark return from baseline_vw + // baseline_vw format: [{t: timestamp, v: value}, ...] or [value, ...] + let benchmarkInitialValue, benchmarkCurrentValue; + + if (baseline_vw.length > 0) { + const firstPoint = baseline_vw[0]; + const lastPoint = baseline_vw[baseline_vw.length - 1]; + + benchmarkInitialValue = typeof firstPoint === 'object' ? firstPoint.v : firstPoint; + benchmarkCurrentValue = typeof lastPoint === 'object' ? lastPoint.v : lastPoint; + + if (benchmarkInitialValue && benchmarkInitialValue > 0 && benchmarkCurrentValue) { + const benchmarkReturn = ((benchmarkCurrentValue - benchmarkInitialValue) / benchmarkInitialValue) * 100; + const excessReturn = evatradersReturn - benchmarkReturn; + return { + excessReturn: excessReturn, + benchmarkReturn: benchmarkReturn, + evatradersReturn: evatradersReturn + }; + } + } + + return null; + }; + + const excessReturnData = calculateExcessReturn(); + + // Reset to page 1 when data changes + useEffect(() => { + setHoldingsPage(1); + }, [holdings.length]); + + useEffect(() => { + setTradesPage(1); + }, [trades.length]); + + return ( +
+ {/* Left Panel: Performance Overview (35%) */} +
+ {stats ? ( +
+ {/* Header */} +
+

+ Performance +

+
+ + {/* Main Stats - Hierarchical Layout */} +
+ {/* Primary Metric - Total Asset Value */} +
+
+ Total Asset Value +
+
+ ${formatNumber(stats.totalAssetValue || 0)} +
+
+ + {/* Secondary Metrics - Grid: Excess Return, Win Rate, Absolute Return */} +
+ {/* 1. Excess Return */} + {excessReturnData ? ( +
+
+ Excess Return +
+
= 0 ? '#00C853' : '#FF1744', + fontFamily: '"Courier New", monospace' + }}> + {excessReturnData.excessReturn >= 0 ? '+' : ''}{excessReturnData.excessReturn.toFixed(2)}% +
+
+ vs. VW: {excessReturnData.benchmarkReturn >= 0 ? '+' : ''}{excessReturnData.benchmarkReturn.toFixed(2)}% +
+
+ ) : null} + + {/* 2. Win Rate */} +
+
+ Win Rate +
+
+ {Math.round(stats.winRate * 100)}% +
+
+ + {/* 3. Absolute Return */} +
+
+ Absolute Return +
+
= 0 ? '#00C853' : '#FF1744', + fontFamily: '"Courier New", monospace' + }}> + {(stats.totalReturn || 0) >= 0 ? '+' : ''}{(stats.totalReturn || 0).toFixed(2)}% +
+
+
+ + {/* Tertiary Metrics - Compact List */} +
+
+
+ Cash Position +
+
+ ${formatNumber(stats.cashPosition || 0)} +
+
+ +
+
+ Total Trades +
+
+ {stats.totalTrades || 0} +
+
+
+ + {/* Ticker Weights - Compact */} + {stats.tickerWeights && Object.keys(stats.tickerWeights).length > 0 && ( +
+
+ Portfolio Weights +
+
+ {Object.entries(stats.tickerWeights).map(([ticker, weight]) => ( +
+ {ticker} + {(weight * 100).toFixed(1)}% +
+ ))} +
+
+ )} +
+
+ ) : ( +
+ No statistics available +
+ )} +
+ + {/* Right Panel: Holdings + Trades (65%) */} +
+ {/* Portfolio Holdings - Top Half */} +
+
+

+ Portfolio Holdings +

+
+ +
+ {holdings.length === 0 ? ( +
+ No positions currently held +
+ ) : ( + <> +
+ + + + + + + + + + + + {currentHoldings.map(h => ( + + + + + + + + ))} + +
TickerQuantityPriceValueWeight
+
+ {h.ticker !== 'CASH' && } + {h.ticker} +
+
{h.ticker === 'CASH' ? '-' : h.quantity}{h.ticker === 'CASH' ? '-' : `$${Number(h.currentPrice).toFixed(2)}`}${formatNumber(h.marketValue)}{(Number(h.weight) * 100).toFixed(2)}%
+
+ + {totalHoldingsPages > 1 && ( +
+ + +
+ {holdingsPage} / {totalHoldingsPages} +
+ + +
+ )} + + )} +
+
+ + {/* Transaction History - Bottom Half */} +
+
+

+ Transaction History +

+ {trades.length > 0 && ( +
+ {trades.length} total +
+ )} +
+ +
+ {trades.length === 0 ? ( +
+ No trades recorded +
+ ) : ( + <> +
+ + + + + + + + + + + + {currentTrades.map((t, idx) => ( + + + + + + + + ))} + +
TimeStockSideQtyPrice
+ {formatDateTime(t.timestamp)} + +
+ + {t.ticker} +
+
+ + {t.side} + + {t.qty}${Number(t.price).toFixed(2)}
+
+ + {totalTradesPages > 1 && ( +
+ + +
+ {tradesPage} / {totalTradesPages} +
+ + +
+ )} + + )} +
+
+
+
+ ); +} diff --git a/evotraders/frontend/src/components/StockLogo.jsx b/evotraders/frontend/src/components/StockLogo.jsx new file mode 100644 index 0000000..b2f4d8b --- /dev/null +++ b/evotraders/frontend/src/components/StockLogo.jsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { STOCK_LOGOS } from '../config/constants'; + +/** + * Stock Logo Component + * Displays company logo for a given ticker symbol + */ +export default function StockLogo({ ticker, size = 20 }) { + const logoUrl = STOCK_LOGOS[ticker]; + if (!logoUrl) return null; + + return ( + {ticker} { e.target.style.display = 'none'; }} + /> + ); +} + diff --git a/evotraders/frontend/src/config/constants.js b/evotraders/frontend/src/config/constants.js new file mode 100644 index 0000000..8e19c75 --- /dev/null +++ b/evotraders/frontend/src/config/constants.js @@ -0,0 +1,145 @@ +/** + * Application Configuration Constants + */ + +// Centralized CDN asset URLs +export const CDN_ASSETS = { + companyRoom: { + agent_1: "https://img.alicdn.com/imgextra/i4/O1CN01Lr7SOl1lSExV0tOwv_!!6000000004817-2-tps-370-320.png", + agent_2: "https://img.alicdn.com/imgextra/i3/O1CN017Kb8cY1VQNUmuK47o_!!6000000002647-2-tps-368-312.png", + agent_3: "https://img.alicdn.com/imgextra/i3/O1CN010Fp55w1YqtGpVjgsS_!!6000000003111-2-tps-370-320.png", + agent_4: "https://img.alicdn.com/imgextra/i3/O1CN01VnUsML1Dkq6fHw3ks_!!6000000000255-2-tps-366-316.png", + agent_5: "https://img.alicdn.com/imgextra/i4/O1CN01o0kCQw1kyvbulBSl7_!!6000000004753-2-tps-370-314.png", + agent_6: "https://img.alicdn.com/imgextra/i2/O1CN01cLV0zl1FI6ULAunTp_!!6000000000463-2-tps-368-320.png", + team_logo: "https://img.alicdn.com/imgextra/i2/O1CN01n2S8aV25hcZhhNH95_!!6000000007558-2-tps-616-700.png", + reme_logo: "https://img.alicdn.com/imgextra/i2/O1CN01FhncuT1Tqp8LfCaft_!!6000000002434-2-tps-915-250.png", + full_room_dark: "https://img.alicdn.com/imgextra/i2/O1CN014sOgzK28re5haGC3X_!!6000000007986-2-tps-1248-832.png", + full_room_with_roles_tech_style: "https://img.alicdn.com/imgextra/i1/O1CN01qhupIj1KU4vF3yoT2_!!6000000001166-2-tps-1248-832.png", + }, + llmModelLogos: { + "Zhipu AI": "https://img.alicdn.com/imgextra/i4/O1CN01PavE4h1SdFmbeUj6h_!!6000000002269-2-tps-92-92.png", + "Alibaba": "https://img.alicdn.com/imgextra/i4/O1CN01mTs8oZ1gsHOj0xy7O_!!6000000004197-0-tps-204-192.jpg", + "DeepSeek": "https://img.alicdn.com/imgextra/i3/O1CN01ocd9iO1D7S2qgEIXQ_!!6000000000169-2-tps-203-148.png", + "Moonshot": "https://img.alicdn.com/imgextra/i3/O1CN01rFzJg01wE0QFHNGLy_!!6000000006275-0-tps-182-148.jpg", + "Anthropic": "https://img.alicdn.com/imgextra/i4/O1CN01Sg8gbo1HKVnoU16rm_!!6000000000739-2-tps-148-148.png", + "Google": "https://img.alicdn.com/imgextra/i1/O1CN01fZwVYk1caBHdzh9qh_!!6000000003616-0-tps-148-148.jpg", + "OpenAI": "https://img.alicdn.com/imgextra/i3/O1CN01T1eaM8287qU0nZm91_!!6000000007886-2-tps-148-148.png", + "Groq": "https://img.alicdn.com/imgextra/i1/O1CN01WxASMc1QjXzhVl3eQ_!!6000000002012-2-tps-170-148.png", + "Ollama": "https://img.alicdn.com/imgextra/i1/O1CN01pN615e1i4vxLkQjVd_!!6000000004360-2-tps-204-192.png", + }, + stockLogos: { + "TSLA": "https://img.alicdn.com/imgextra/i4/O1CN01Pch4DD1DDrad8BQAQ_!!6000000000183-2-tps-128-128.png", + "AMZN": "https://img.alicdn.com/imgextra/i3/O1CN01KMsfnU25Wd4MGSgue_!!6000000007534-2-tps-128-128.png", + "NVDA": "https://img.alicdn.com/imgextra/i4/O1CN01Lq1eJr1mLeslgx6a0_!!6000000004938-2-tps-128-128.png", + "GOOGL": "https://img.alicdn.com/imgextra/i2/O1CN01kjJJbb25B6SESkOCn_!!6000000007487-2-tps-128-128.png", + "MSFT": "https://img.alicdn.com/imgextra/i4/O1CN01tdlNtQ1aFS7vHYfMG_!!6000000003300-2-tps-128-128.png", + "AAPL": "https://img.alicdn.com/imgextra/i4/O1CN01r0GH0q1diiHHOwxiO_!!6000000003770-2-tps-128-128.png", + "META": "https://img.alicdn.com/imgextra/i3/O1CN01pWAvHt1IkRqZoUG96_!!6000000000931-2-tps-130-96.png", + } +}; + +// Derived asset shortcuts +export const ASSETS = { + roomBg: CDN_ASSETS.companyRoom.full_room_with_roles_tech_style, + teamLogo: CDN_ASSETS.companyRoom.team_logo, + remeLogo: CDN_ASSETS.companyRoom.reme_logo, +}; + +// Stock logos mapping +export const STOCK_LOGOS = { ...CDN_ASSETS.stockLogos }; + +// Scene dimensions (actual image size) +export const SCENE_NATIVE = { width: 1248, height: 832 }; + +// Agent seat positions (percentage relative to image, origin at bottom-left) +// Format: { x: horizontal %, y: vertical % from bottom } +export const AGENT_SEATS = [ + { x: 0.44, y: 0.58 }, // portfolio_manager + { x: 0.55, y: 0.58 }, // risk_manager + { x: 0.33, y: 0.52 }, // valuation_analyst + { x: 0.42, y: 0.42 }, // sentiment_analyst + { x: 0.56, y: 0.42 }, // fundamentals_analyst + { x: 0.61, y: 0.49 }, // technical_analyst +]; + +// Agent definitions with subtle color schemes (very light backgrounds) +export const AGENTS = [ + { + id: "portfolio_manager", + name: "Portfolio Manager", + role: "Portfolio Manager", + avatar: CDN_ASSETS.companyRoom.agent_1, + colors: { bg: "#F9FDFF", text: "#1565C0", accent: "#1565C0" } + }, + { + id: "risk_manager", + name: "Risk Manager", + role: "Risk Manager", + avatar: CDN_ASSETS.companyRoom.agent_2, + colors: { bg: "#FFF8F8", text: "#C62828", accent: "#C62828" } + }, + { + id: "valuation_analyst", + name: "Valuation Analyst", + role: "Valuation Analyst", + avatar: CDN_ASSETS.companyRoom.agent_3, + colors: { bg: "#FAFFFA", text: "#2E7D32", accent: "#2E7D32" } + }, + { + id: "sentiment_analyst", + name: "Sentiment Analyst", + role: "Sentiment Analyst", + avatar: CDN_ASSETS.companyRoom.agent_4, + colors: { bg: "#FCFAFF", text: "#6A1B9A", accent: "#6A1B9A" } + }, + { + id: "fundamentals_analyst", + name: "Fundamentals Analyst", + role: "Fundamentals Analyst", + avatar: CDN_ASSETS.companyRoom.agent_5, + colors: { bg: "#FFFCF7", text: "#E65100", accent: "#E65100" } + }, + { + id: "technical_analyst", + name: "Technical Analyst", + role: "Technical Analyst", + avatar: CDN_ASSETS.companyRoom.agent_6, + colors: { bg: "#F9FEFF", text: "#00838F", accent: "#00838F" } + }, +]; + +// LLM logo URLs for reuse +export const LLM_MODEL_LOGOS = { ...CDN_ASSETS.llmModelLogos }; + +// Message type colors (very subtle backgrounds) +export const MESSAGE_COLORS = { + system: { bg: "#FAFAFA", text: "#424242", accent: "#424242" }, + memory: { bg: "#F2FDFF", text: "#00838F", accent: "#00838F" }, + conference: { bg: "#F1F4FF", text: "#3949AB", accent: "#3949AB" } +}; + +// Helper function to get agent colors by ID or name +export const getAgentColors = (agentId, agentName) => { + const agent = AGENTS.find(a => a.id === agentId || a.name === agentName); + return agent?.colors || MESSAGE_COLORS.system; +}; + +// UI timing constants +export const BUBBLE_LIFETIME_MS = 8000; +export const CHART_MARGIN = { left: 60, right: 20, top: 20, bottom: 40 }; +export const AXIS_TICKS = 5; + +// WebSocket configuration +export const WS_URL = import.meta.env.VITE_WS_URL || "ws://localhost:8765"; + +// Initial ticker symbols (MAG7 companies) +export const INITIAL_TICKERS = [ + { symbol: "AAPL", price: null, change: null }, + { symbol: "MSFT", price: null, change: null }, + { symbol: "GOOGL", price: null, change: null }, + { symbol: "AMZN", price: null, change: null }, + { symbol: "NVDA", price: null, change: null }, + { symbol: "META", price: null, change: null }, + { symbol: "TSLA", price: null, change: null } +]; + diff --git a/evotraders/frontend/src/hooks/useFeedProcessor.js b/evotraders/frontend/src/hooks/useFeedProcessor.js new file mode 100644 index 0000000..af8f8bd --- /dev/null +++ b/evotraders/frontend/src/hooks/useFeedProcessor.js @@ -0,0 +1,363 @@ +import { useState, useCallback, useRef } from "react"; +import { AGENTS } from "../config/constants"; + +const MAX_FEED_ITEMS = 200; + +/** + * Generate a unique ID for feed items + */ +const generateId = (prefix = "item") => `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; + +/** + * Convert raw event to a message object (for use within conferences or standalone) + */ +const eventToMessage = (evt) => { + if (!evt || !evt.type) { + return null; + } + + const agent = AGENTS.find(a => a.id === evt.agentId); + const timestamp = evt.timestamp || evt.ts || Date.now(); + + switch (evt.type) { + case "agent_message": + case "conference_message": + return { + id: generateId("msg"), + timestamp, + agentId: evt.agentId, + agent: agent?.name || evt.agentName || evt.agentId || "Agent", + role: agent?.role || evt.role || "Agent", + content: evt.content + }; + + case "memory": + return { + id: generateId("memory"), + timestamp, + agentId: evt.agentId, + agent: agent?.name || evt.agentId || "Memory", + role: "Memory", + content: evt.content || evt.text || "" + }; + + case "system": + case "day_start": + case "day_complete": + case "day_error": + return { + id: generateId("sys"), + timestamp, + agent: "System", + role: "System", + content: evt.content || `${evt.type}: ${evt.date || ""}` + }; + + default: + return null; + } +}; + +/** + * Convert raw event to a standalone feed item (non-conference) + */ +const eventToFeedItem = (evt) => { + if (!evt || !evt.type) { + return null; + } + + const message = eventToMessage(evt); + if (!message) { + return null; + } + + if (evt.type === "memory") { + return { + type: "memory", + id: message.id, + data: { + timestamp: message.timestamp, + agentId: message.agentId, + agent: message.agent, + content: message.content + } + }; + } + + return { + type: "message", + id: message.id, + data: message + }; +}; + +/** + * Custom hook for processing feed events with conference aggregation + */ +export function useFeedProcessor() { + const [feed, setFeed] = useState([]); + + // Active conference ref for real-time event handling + const activeConferenceRef = useRef(null); + + /** + * Process historical events from server + * Events come in reverse chronological order (newest first) + * So conference_end appears BEFORE conference_start in the array + */ + const processHistoricalFeed = useCallback((events) => { + if (!Array.isArray(events)) { + console.warn("processHistoricalFeed: expected array, got", typeof events); + return; + } + + console.log("📋 Processing historical events:", events.length); + + const feedItems = []; + let currentConference = null; + + // Process in chronological order (reverse the array) + const chronological = [...events].reverse(); + + for (const evt of chronological) { + if (!evt || !evt.type) { + continue; + } + + try { + if (evt.type === "conference_start") { + // Start a new conference + currentConference = { + id: evt.conferenceId || generateId("conf"), + title: evt.title || "Team Conference", + startTime: evt.timestamp || evt.ts || Date.now(), + endTime: null, + isLive: false, + participants: evt.participants || [], + messages: [] + }; + } else if (evt.type === "conference_end") { + // End current conference + if (currentConference) { + currentConference.endTime = evt.timestamp || evt.ts || Date.now(); + currentConference.isLive = false; + feedItems.push({ + type: "conference", + id: currentConference.id, + data: currentConference + }); + currentConference = null; + } + } else if (evt.type === "conference_message") { + // Add to current conference if exists + const message = eventToMessage(evt); + if (message && currentConference) { + currentConference.messages.push(message); + } else if (message) { + // Fallback: show as standalone message if no active conference + feedItems.push({ + type: "message", + id: message.id, + data: message + }); + } + } else { + // Non-conference events + const feedItem = eventToFeedItem(evt); + if (feedItem) { + if (currentConference) { + // Add to conference messages + currentConference.messages.push(feedItem.data); + } else { + feedItems.push(feedItem); + } + } + } + } catch (error) { + console.error("Error processing historical event:", evt.type, error); + } + } + + // If there's an unclosed conference, it's still live + if (currentConference) { + currentConference.isLive = true; + feedItems.push({ + type: "conference", + id: currentConference.id, + data: currentConference + }); + // Store as active for real-time updates + activeConferenceRef.current = currentConference; + console.log(`🔴 Restored active conference: ${currentConference.id} with ${currentConference.messages.length} messages`); + } + + // Reverse back to newest-first order + setFeed(feedItems.reverse()); + console.log(`✅ Processed ${feedItems.length} feed items from ${events.length} events`); + }, []); + + /** + * Process a single real-time event + * Handles conference aggregation for live events + */ + const processFeedEvent = useCallback((evt) => { + if (!evt || !evt.type) { + return null; + } + + // Handle conference start + if (evt.type === "conference_start") { + const conference = { + id: evt.conferenceId || generateId("conf"), + title: evt.title || "Team Conference", + startTime: evt.timestamp || evt.ts || Date.now(), + endTime: null, + isLive: true, + participants: evt.participants || [], + messages: [] + }; + activeConferenceRef.current = conference; + setFeed(prev => [{ type: "conference", id: conference.id, data: conference }, ...prev].slice(0, MAX_FEED_ITEMS)); + return conference; + } + + // Handle conference end + if (evt.type === "conference_end") { + const activeConf = activeConferenceRef.current; + activeConferenceRef.current = null; + + if (activeConf) { + const ended = { + ...activeConf, + endTime: evt.timestamp || evt.ts || Date.now(), + isLive: false + }; + setFeed(prev => prev.map(item => + item.type === "conference" && item.id === activeConf.id + ? { ...item, data: ended } + : item + )); + return ended; + } + return null; + } + + // Handle conference message + if (evt.type === "conference_message") { + const message = eventToMessage(evt); + if (!message) { + return null; + } + + const activeConf = activeConferenceRef.current; + if (activeConf) { + // Add to active conference + const updated = { + ...activeConf, + messages: [...activeConf.messages, message] + }; + activeConferenceRef.current = updated; + setFeed(prev => prev.map(item => + item.type === "conference" && item.id === activeConf.id + ? { ...item, data: updated } + : item + )); + return message; + } else { + // No active conference, show as standalone + const feedItem = { type: "message", id: message.id, data: message }; + setFeed(prev => [feedItem, ...prev].slice(0, MAX_FEED_ITEMS)); + return feedItem; + } + } + + // Handle other feed events (agent_message, memory, system, etc.) + const feedEventTypes = ["agent_message", "memory", "system", "day_start", "day_complete", "day_error"]; + if (!feedEventTypes.includes(evt.type)) { + return null; + } + + const feedItem = eventToFeedItem(evt); + if (!feedItem) { + return null; + } + + const activeConf = activeConferenceRef.current; + if (activeConf) { + // Add to active conference + const updated = { + ...activeConf, + messages: [...activeConf.messages, feedItem.data] + }; + activeConferenceRef.current = updated; + setFeed(prev => prev.map(item => + item.type === "conference" && item.id === activeConf.id + ? { ...item, data: updated } + : item + )); + return feedItem.data; + } else { + // No active conference, add as standalone + setFeed(prev => [feedItem, ...prev].slice(0, MAX_FEED_ITEMS)); + return feedItem; + } + }, []); + + /** + * Add a system message to the feed + */ + const addSystemMessage = useCallback((content) => { + const message = { + id: generateId("sys"), + timestamp: Date.now(), + agent: "System", + role: "System", + content + }; + + const activeConf = activeConferenceRef.current; + if (activeConf) { + const updated = { + ...activeConf, + messages: [...activeConf.messages, message] + }; + activeConferenceRef.current = updated; + setFeed(prev => prev.map(item => + item.type === "conference" && item.id === activeConf.id + ? { ...item, data: updated } + : item + )); + } else { + const feedItem = { type: "message", id: message.id, data: message }; + setFeed(prev => [feedItem, ...prev].slice(0, MAX_FEED_ITEMS)); + } + return message; + }, []); + + /** + * Clear all feed items and reset active conference + */ + const clearFeed = useCallback(() => { + setFeed([]); + activeConferenceRef.current = null; + }, []); + + /** + * Check if there's an active conference + */ + const hasActiveConference = useCallback(() => { + return activeConferenceRef.current !== null; + }, []); + + return { + feed, + setFeed, + processHistoricalFeed, + processFeedEvent, + addSystemMessage, + clearFeed, + hasActiveConference + }; +} + +export default useFeedProcessor; diff --git a/evotraders/frontend/src/index.css b/evotraders/frontend/src/index.css new file mode 100644 index 0000000..08a3ac9 --- /dev/null +++ b/evotraders/frontend/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/evotraders/frontend/src/main.jsx b/evotraders/frontend/src/main.jsx new file mode 100644 index 0000000..44931db --- /dev/null +++ b/evotraders/frontend/src/main.jsx @@ -0,0 +1,8 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import "./index.css"; + +ReactDOM.createRoot(document.getElementById('root')).render( + +) diff --git a/evotraders/frontend/src/services/websocket.js b/evotraders/frontend/src/services/websocket.js new file mode 100644 index 0000000..dc19fc1 --- /dev/null +++ b/evotraders/frontend/src/services/websocket.js @@ -0,0 +1,192 @@ +/** + * WebSocket Client for Read-Only Connection + * Handles connection, reconnection, and heartbeat + */ + +import { WS_URL } from "../config/constants"; + +export class ReadOnlyClient { + constructor(onEvent, { wsUrl = WS_URL, reconnectDelay = 3000, heartbeatInterval = 5000 } = {}) { + this.onEvent = onEvent; + this.wsUrl = wsUrl; + this.baseReconnectDelay = reconnectDelay; + this.reconnectDelay = reconnectDelay; + this.maxReconnectDelay = 30000; + this.heartbeatInterval = heartbeatInterval; + this.ws = null; + this.shouldReconnect = false; + this.reconnectTimer = null; + this.heartbeatTimer = null; + this.reconnectAttempts = 0; + this.lastPongTime = 0; + } + + connect() { + this.shouldReconnect = true; + this.reconnectAttempts = 0; + this.reconnectDelay = this.baseReconnectDelay; + this._connect(); + } + + _connect() { + if (!this.shouldReconnect) { + return; + } + + // Clear any existing connection + if (this.ws) { + this.ws.onopen = null; + this.ws.onmessage = null; + this.ws.onerror = null; + this.ws.onclose = null; + if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) { + this.ws.close(); + } + this.ws = null; + } + + this.ws = new WebSocket(this.wsUrl); + + this.ws.onopen = () => { + this.reconnectAttempts = 0; + this.reconnectDelay = this.baseReconnectDelay; + this.lastPongTime = Date.now(); + this._safeEmit({ type: "system", content: "Connected to live server" }); + console.log("WebSocket connected"); + this._startHeartbeat(); + }; + + this.ws.onmessage = (ev) => { + try { + const msg = JSON.parse(ev.data); + + // Update pong time for any message (server is alive) + this.lastPongTime = Date.now(); + + if (msg.type === "pong") { + return; + } + + console.log("[WebSocket] Message received:", msg.type || "unknown"); + this._safeEmit(msg); + } catch (e) { + console.error("[WebSocket] Parse error:", e); + } + }; + + this.ws.onerror = (error) => { + console.error("WebSocket error:", error); + }; + + this.ws.onclose = (event) => { + const code = event.code || "Unknown"; + console.log(`[WebSocket] Connection closed: Code=${code}, WasClean=${event.wasClean}`); + + this._stopHeartbeat(); + this.ws = null; + + // Always attempt reconnect if shouldReconnect is true + if (this.shouldReconnect) { + this.reconnectAttempts++; + // Exponential backoff with cap + this.reconnectDelay = Math.min( + this.baseReconnectDelay * Math.pow(1.5, this.reconnectAttempts), + this.maxReconnectDelay + ); + + this._safeEmit({ + type: "system", + content: "Try to connect to data server..." + }); + + if (this.reconnectTimer) { + clearTimeout(this.reconnectTimer); + } + + this.reconnectTimer = setTimeout(() => { + console.log(`[WebSocket] Reconnect attempt ${this.reconnectAttempts}...`); + this._connect(); + }, this.reconnectDelay); + } + }; + } + + _safeEmit(msg) { + try { + this.onEvent(msg); + } catch (e) { + console.error("[WebSocket] Error in event handler:", e); + } + } + + _startHeartbeat() { + this._stopHeartbeat(); + this.lastPongTime = Date.now(); + + this.heartbeatTimer = setInterval(() => { + this._sendPing(); + + // Check for stale connection (no response in 60s) + const timeSinceLastPong = Date.now() - this.lastPongTime; + if (timeSinceLastPong > 60000 && this.ws) { + console.warn("[WebSocket] Connection appears stale, forcing reconnect"); + this.ws.close(); + } + }, this.heartbeatInterval); + } + + _sendPing() { + if (this.ws && this.ws.readyState === WebSocket.OPEN) { + try { + this.ws.send(JSON.stringify({ type: "ping" })); + } catch (e) { + console.error("Heartbeat send error:", e); + } + } + } + + _stopHeartbeat() { + if (this.heartbeatTimer) { + clearInterval(this.heartbeatTimer); + this.heartbeatTimer = null; + } + } + + send(message) { + if (this.ws && this.ws.readyState === WebSocket.OPEN) { + try { + const messageStr = typeof message === "string" ? message : JSON.stringify(message); + this.ws.send(messageStr); + return true; + } catch (e) { + console.error("Send error:", e); + return false; + } + } else { + console.warn("WebSocket is not connected, cannot send message"); + return false; + } + } + + disconnect() { + this.shouldReconnect = false; + this._stopHeartbeat(); + if (this.reconnectTimer) { + clearTimeout(this.reconnectTimer); + this.reconnectTimer = null; + } + if (this.ws) { + this.ws.onopen = null; + this.ws.onmessage = null; + this.ws.onerror = null; + this.ws.onclose = null; + try { + this.ws.close(); + } catch (e) { + console.error("Close error:", e); + } + } + this.ws = null; + } +} + diff --git a/evotraders/frontend/src/styles/GlobalStyles.jsx b/evotraders/frontend/src/styles/GlobalStyles.jsx new file mode 100644 index 0000000..df076b1 --- /dev/null +++ b/evotraders/frontend/src/styles/GlobalStyles.jsx @@ -0,0 +1,1876 @@ +import React from 'react'; + +/** + * Global CSS Styles for the EvoTraders Platform + * Terminal-inspired, minimal, monochrome design + */ +export default function GlobalStyles() { + return ( + + ); +} + diff --git a/evotraders/frontend/src/utils/formatters.js b/evotraders/frontend/src/utils/formatters.js new file mode 100644 index 0000000..78364e8 --- /dev/null +++ b/evotraders/frontend/src/utils/formatters.js @@ -0,0 +1,85 @@ +/** + * Formatting utility functions + */ + +/** + * Format time from timestamp + */ +export function formatTime(ts) { + try { + const d = new Date(ts); + return d.toLocaleString([], { + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit" + }); + } catch { + return ""; + } +} + +/** + * Format date and time from timestamp + */ +export function formatDateTime(ts) { + try { + const d = new Date(ts); + const date = d.toLocaleDateString("en-US", { month: "short", day: "numeric" }); + const time = d.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit", hour12: false }); + return `${date} ${time}`; + } catch { + return ""; + } +} + +/** + * Format number with commas (no decimals) + */ +export function formatNumber(num) { + if (!isFinite(num)) { + return "-"; + } + return Math.abs(num).toLocaleString(undefined, { maximumFractionDigits: 0 }); +} + +/** + * Format full number with commas for Y-axis + */ +export function formatFullNumber(num) { + if (!isFinite(num)) { + return "-"; + } + return num.toLocaleString(undefined, { maximumFractionDigits: 0 }); +} + +/** + * Format ticker price with appropriate decimal places + */ +export function formatTickerPrice(price) { + if (!isFinite(price)) { + return "-"; + } + if (price >= 1000) { + return price.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); + } else if (price >= 1) { + return price.toFixed(2); + } else { + return price.toFixed(4); + } +} + +/** + * Calculate duration between two timestamps + */ +export function calculateDuration(start, end) { + const diff = end - start; + const minutes = Math.floor(diff / 60000); + if (minutes < 60) { + return `${minutes}m`; + } + const hours = Math.floor(minutes / 60); + const mins = minutes % 60; + return `${hours}h ${mins}m`; +} + diff --git a/evotraders/frontend/src/utils/modelIcons.js b/evotraders/frontend/src/utils/modelIcons.js new file mode 100644 index 0000000..c8b056d --- /dev/null +++ b/evotraders/frontend/src/utils/modelIcons.js @@ -0,0 +1,396 @@ +/** + * Model Icons and Styling Utilities + * + * Provides icon and styling configuration for different LLM models + */ + +import { LLM_MODEL_LOGOS } from "../config/constants"; + +/** + * Get model icon and styling based on model name + * @param {string} modelName - The model name (e.g., "qwen-plus", "gpt-4o") + * @param {string} modelProvider - The model provider (e.g., "OPENAI", "ANTHROPIC") + * @returns {object} Icon configuration { logoPath, color, bgColor, label, provider } + */ +export function getModelIcon(modelName, modelProvider) { + if (!modelName) { + return { + logoPath: null, + color: "#666666", + bgColor: "#f5f5f5", + label: "Default", + provider: "Default" + }; + } + + const name = modelName.toLowerCase(); + const provider = (modelProvider || "").toUpperCase(); + + // ========== Priority 1: Model Name Based Detection (Highest Priority) ========== + // This ensures we infer the correct logo from model name even if provider is OPENAI + + // GLM Models (智谱AI) + if (name.includes("glm")) { + return { + logoPath: LLM_MODEL_LOGOS["Zhipu AI"], + color: "#4A90E2", + bgColor: "#E3F2FD", + label: "GLM-4.6", + provider: "Zhipu AI" + }; + } + + // Qwen Models (阿里云/通义千问) + if (name.includes("qwen")) { + return { + logoPath: LLM_MODEL_LOGOS["Alibaba"], + color: "#FF6A00", + bgColor: "#FFF3E0", + label: name.includes("max") ? "Qwen-Max" : name.includes("plus") ? "Qwen-Plus" : "Qwen", + provider: "Alibaba" + }; + } + + // DeepSeek Models + if (name.includes("deepseek")) { + return { + logoPath: LLM_MODEL_LOGOS["DeepSeek"], + color: "#1976D2", + bgColor: "#E3F2FD", + label: "DeepSeek-V3", + provider: "DeepSeek" + }; + } + + // Moonshot/Kimi Models (月之暗面) + if (name.includes("moonshot") || name.includes("kimi")) { + return { + logoPath: LLM_MODEL_LOGOS["Moonshot"], + color: "#7B68EE", + bgColor: "#F3E5F5", + label: "Kimi-K2", + provider: "Moonshot" + }; + } + + // Anthropic Claude Models (check model name first) + if (name.includes("claude")) { + return { + logoPath: LLM_MODEL_LOGOS["Anthropic"], + color: "#D97706", + bgColor: "#FEF3C7", + label: "Claude", + provider: "Anthropic" + }; + } + + // Google Gemini Models (check model name first) + if (name.includes("gemini")) { + return { + logoPath: LLM_MODEL_LOGOS["Google"], + color: "#4285F4", + bgColor: "#E8F0FE", + label: "Gemini", + provider: "Google" + }; + } + + // OpenAI GPT Models (check model name first) + if (name.includes("gpt") || name.includes("o1") || name.includes("o2") || name.includes("o3")) { + return { + logoPath: LLM_MODEL_LOGOS["OpenAI"], + color: "#10A37F", + bgColor: "#E8F5E9", + label: name.includes("4o") ? "GPT-4o" : name.includes("4.5") ? "GPT-4.5" : name.includes("4") ? "GPT-4" : name.includes("3.5") ? "GPT-3.5" : "OpenAI", + provider: "OpenAI" + }; + } + + // ========== Priority 2: Provider Based Detection (Fallback) ========== + // Only use provider if model name doesn't match any known patterns + + // Anthropic Claude Models (provider fallback) + if (provider === "ANTHROPIC") { + return { + logoPath: LLM_MODEL_LOGOS["Anthropic"], + color: "#D97706", + bgColor: "#FEF3C7", + label: "Claude", + provider: "Anthropic" + }; + } + + // Google Gemini Models (provider fallback) + if (provider === "GOOGLE") { + return { + logoPath: LLM_MODEL_LOGOS["Google"], + color: "#4285F4", + bgColor: "#E8F0FE", + label: "Gemini", + provider: "Google" + }; + } + + // OpenAI Models (provider fallback - only if model name doesn't match) + if (provider === "OPENAI") { + return { + logoPath: LLM_MODEL_LOGOS["OpenAI"], + color: "#10A37F", + bgColor: "#E8F5E9", + label: "OpenAI", + provider: "OpenAI" + }; + } + + // Groq Models + if (provider === "GROQ") { + return { + logoPath: LLM_MODEL_LOGOS["Groq"], + color: "#DC2626", + bgColor: "#FEE2E2", + label: "Groq", + provider: "Groq" + }; + } + + // Ollama Models + if (provider === "OLLAMA") { + return { + logoPath: LLM_MODEL_LOGOS["Ollama"], + color: "#000000", + bgColor: "#F5F5F5", + label: "Ollama", + provider: "Ollama" + }; + } + + // OpenRouter Models + if (provider === "OPENROUTER") { + return { + logoPath: null, + color: "#8B5CF6", + bgColor: "#F5F3FF", + label: "OpenRouter", + provider: "OpenRouter" + }; + } + + // GigaChat Models + if (provider === "GIGACHAT") { + return { + logoPath: null, + color: "#9333EA", + bgColor: "#FAF5FF", + label: "GigaChat", + provider: "GigaChat" + }; + } + + // Default fallback + return { + logoPath: null, + color: "#666666", + bgColor: "#f5f5f5", + label: modelName.substring(0, 15), + provider: provider || "Unknown" + }; +} + +/** + * Get short model name for display + * @param {string} modelName - The full model name + * @returns {string} Short version of the model name (preserves full version numbers and suffixes) + */ +export function getShortModelName(modelName) { + if (!modelName) { + return "N/A"; + } + + const name = modelName.toLowerCase(); + + // Helper function to capitalize first letter of each word + const capitalizeWords = (str) => { + return str.split(/[-_\s]/).map(word => + word.charAt(0).toUpperCase() + word.slice(1) + ).join("-"); + }; + + // GLM - preserve version numbers + if (name.includes("glm")) { + // Extract version number if present (e.g., glm-4.6, glm-4.5) + const versionMatch = name.match(/glm[_-]?(\d+\.\d+)/); + if (versionMatch) { + return `GLM-${versionMatch[1]}`; + } + return "GLM-4.6"; // Default + } + + // Qwen - preserve full version and suffixes + if (name.includes("qwen")) { + // Match patterns like: qwen3-max-preview, qwen-max, qwen-plus, qwen-flash + if (name.includes("qwen3-max")) { + // Extract suffix if present (e.g., -preview) + const fullMatch = name.match(/qwen3-max[_-]?([a-z0-9-]+)?/); + if (fullMatch && fullMatch[1]) { + return `Qwen3-Max-${capitalizeWords(fullMatch[1])}`; + } + return "Qwen3-Max"; + } + if (name.includes("qwen-max")) { + const fullMatch = name.match(/qwen-max[_-]?([a-z0-9-]+)?/); + if (fullMatch && fullMatch[1]) { + return `Qwen-Max-${capitalizeWords(fullMatch[1])}`; + } + return "Qwen-Max"; + } + if (name.includes("qwen-plus")) { + const fullMatch = name.match(/qwen-plus[_-]?([a-z0-9-]+)?/); + if (fullMatch && fullMatch[1]) { + return `Qwen-Plus-${capitalizeWords(fullMatch[1])}`; + } + return "Qwen-Plus"; + } + if (name.includes("qwen-flash")) { + const fullMatch = name.match(/qwen-flash[_-]?([a-z0-9-]+)?/); + if (fullMatch && fullMatch[1]) { + return `Qwen-Flash-${capitalizeWords(fullMatch[1])}`; + } + return "Qwen-Flash"; + } + // Generic qwen with version + const versionMatch = name.match(/qwen[_-]?(\d+[a-z0-9-]*)?/); + if (versionMatch && versionMatch[1]) { + return `Qwen-${capitalizeWords(versionMatch[1])}`; + } + return "Qwen"; + } + + // DeepSeek - preserve full version numbers and suffixes + if (name.includes("deepseek")) { + // Match patterns like: deepseek-v3.1, deepseek-v3.2-exp, deepseek-v3 + // First try to match with version and suffix + const fullMatch = name.match(/deepseek[_-]?v?(\d+\.\d+[a-z0-9]*)[_-]?([a-z0-9-]+)?/); + if (fullMatch) { + const version = fullMatch[1]; + const suffix = fullMatch[2]; + if (suffix) { + return `DeepSeek-V${version}-${capitalizeWords(suffix)}`; + } + return `DeepSeek-V${version}`; + } + // Try to match just version + const versionMatch = name.match(/deepseek[_-]?v?(\d+\.\d+)/); + if (versionMatch) { + return `DeepSeek-V${versionMatch[1]}`; + } + // Fallback to generic DeepSeek + return "DeepSeek"; + } + + // Moonshot/Kimi - preserve full model names + if (name.includes("moonshot") || name.includes("kimi")) { + // Match patterns like: moonshot-kimi-k2-instruct, kimi-k2-instruct + // First check if it contains k2 + if (name.includes("k2")) { + // Try to extract suffix after k2 (e.g., -instruct) + const k2Match = name.match(/k2[_-]?([a-z0-9-]+)?/); + if (k2Match && k2Match[1]) { + return `Moonshot-Kimi-K2-${capitalizeWords(k2Match[1])}`; + } + return "Moonshot-Kimi-K2"; + } + if (name.includes("kimi")) { + return "Kimi"; + } + return "Moonshot"; + } + + // OpenAI - preserve full version numbers + if (name.includes("gpt") || name.includes("o1") || name.includes("o2") || name.includes("o3")) { + // Match patterns like: gpt-4o, gpt-4.5, gpt-4, gpt-3.5-turbo + if (name.includes("gpt-4o")) { + const suffixMatch = name.match(/gpt-4o[_-]?([a-z0-9-]+)?/); + if (suffixMatch && suffixMatch[1]) { + return `GPT-4o-${capitalizeWords(suffixMatch[1])}`; + } + return "GPT-4o"; + } + if (name.includes("gpt-4.5")) { + const suffixMatch = name.match(/gpt-4\.5[_-]?([a-z0-9-]+)?/); + if (suffixMatch && suffixMatch[1]) { + return `GPT-4.5-${capitalizeWords(suffixMatch[1])}`; + } + return "GPT-4.5"; + } + if (name.includes("gpt-4")) { + const suffixMatch = name.match(/gpt-4[_-]?([a-z0-9-]+)?/); + if (suffixMatch && suffixMatch[1]) { + return `GPT-4-${capitalizeWords(suffixMatch[1])}`; + } + return "GPT-4"; + } + if (name.includes("gpt-3.5")) { + const suffixMatch = name.match(/gpt-3\.5[_-]?([a-z0-9-]+)?/); + if (suffixMatch && suffixMatch[1]) { + return `GPT-3.5-${capitalizeWords(suffixMatch[1])}`; + } + return "GPT-3.5"; + } + // O-series models + if (name.includes("o3")) { + return "O3"; + } + if (name.includes("o2")) { + return "O2"; + } + if (name.includes("o1")) { + return "O1"; + } + return "OpenAI"; + } + + // Claude - preserve full model names + if (name.includes("claude")) { + if (name.includes("claude-opus")) { + const versionMatch = name.match(/claude-opus[_-]?(\d+[a-z0-9-]*)?/); + if (versionMatch && versionMatch[1]) { + return `Claude-Opus-${capitalizeWords(versionMatch[1])}`; + } + return "Claude-Opus"; + } + if (name.includes("claude-sonnet")) { + const versionMatch = name.match(/claude-sonnet[_-]?(\d+[a-z0-9-]*)?/); + if (versionMatch && versionMatch[1]) { + return `Claude-Sonnet-${capitalizeWords(versionMatch[1])}`; + } + return "Claude-Sonnet"; + } + if (name.includes("claude-haiku")) { + const versionMatch = name.match(/claude-haiku[_-]?(\d+[a-z0-9-]*)?/); + if (versionMatch && versionMatch[1]) { + return `Claude-Haiku-${capitalizeWords(versionMatch[1])}`; + } + return "Claude-Haiku"; + } + return "Claude"; + } + + // Google Gemini + if (name.includes("gemini")) { + const versionMatch = name.match(/gemini[_-]?([a-z0-9.-]+)?/); + if (versionMatch && versionMatch[1]) { + return `Gemini-${capitalizeWords(versionMatch[1])}`; + } + return "Gemini"; + } + + // If no specific pattern matched, return formatted original name + // Truncate only if extremely long (over 30 chars) + if (modelName.length > 30) { + return capitalizeWords(modelName.substring(0, 27)) + "..."; + } + + // Return formatted original name + return capitalizeWords(modelName); +} + diff --git a/evotraders/frontend/tailwind.config.js b/evotraders/frontend/tailwind.config.js new file mode 100644 index 0000000..cc653b7 --- /dev/null +++ b/evotraders/frontend/tailwind.config.js @@ -0,0 +1,60 @@ +import tailwindcssAnimate from "tailwindcss-animate"; + +/** @type {import('tailwindcss').Config} */ +const config = { + darkMode: ["class"], + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: { + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)" + }, + colors: { + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))" + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))" + }, + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))" + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))" + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))" + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))" + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))" + }, + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + chart: { + "1": "hsl(var(--chart-1))", + "2": "hsl(var(--chart-2))", + "3": "hsl(var(--chart-3))", + "4": "hsl(var(--chart-4))", + "5": "hsl(var(--chart-5))" + } + } + } + }, + plugins: [tailwindcssAnimate, require("tailwindcss-animate")], +}; +export default config; diff --git a/evotraders/frontend/tsconfig.json b/evotraders/frontend/tsconfig.json new file mode 100644 index 0000000..b945d5f --- /dev/null +++ b/evotraders/frontend/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "baseUrl": "src", + "paths": { + "@/*": ["*"] + }, + "module": "nodenext", + "target": "esnext", + "types": [], + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "noUncheckedIndexedAccess": true, + "exactOptionalPropertyTypes": true, + "strict": true, + "jsx": "react-jsx", + "verbatimModuleSyntax": true, + "isolatedModules": true, + "noUncheckedSideEffectImports": true, + "moduleDetection": "force", + "skipLibCheck": true + } +} diff --git a/evotraders/frontend/vite.config.js b/evotraders/frontend/vite.config.js new file mode 100644 index 0000000..7391a96 --- /dev/null +++ b/evotraders/frontend/vite.config.js @@ -0,0 +1,16 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import tsconfigPaths from "vite-tsconfig-paths"; +import tailwindcss from "@tailwindcss/vite"; + +export default defineConfig({ + server: { + allowedHosts: ["localhost", "trading.evoagents.cn","www.evoagents.cn"] + }, + plugins: [react(), tsconfigPaths(),tailwindcss()], + preview: { + host: "0.0.0.0", + port: 4173 + }, +}); + diff --git a/evotraders/pyproject.toml b/evotraders/pyproject.toml new file mode 100644 index 0000000..bc48298 --- /dev/null +++ b/evotraders/pyproject.toml @@ -0,0 +1,80 @@ +[build-system] +requires = ["setuptools>=61.0", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "evotraders" +version = "0.1.0" +description = "EvoTraders: A self-evolving multi-agent trading system" +readme = "README.md" +requires-python = ">=3.9" +license = {text = "MIT"} +authors = [ + {name = "EvoTraders Team "} +] +keywords = ["trading", "ai", "multi-agent", "fintech", "algorithmic-trading"] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Intended Audience :: Financial and Insurance Industry", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Office/Business :: Financial :: Investment", +] + +dependencies = [ + "agentscope>=1.0.8", + "reme-ai>=0.2.0.3", + "asyncio>=3.4.3", + "rich>=13.6.0", + "websockets>=12.0", + "websocket-client>=1.6.0", + "python-dotenv>=1.0.0", + "finnhub-python>=2.4.25", + "numpy>=1.24.0", + "pandas>=2.0.0", + "matplotlib>=3.7.0", + "seaborn>=0.12.0", + "pandas-market-calendars>=5.0.0", + "typer>=0.12.5", + "openai>=2.9.0", + "anthropic>=0.20.0", + "dotenv", + "typer", +] + + +[project.optional-dependencies] +dev = [ + "pytest>=8.3.3", + "ruff>=0.6.9", + "black>=25.0.0" +] + +[project.urls] +Homepage = "http://trading.evoagents.cn" +Repository = "https://github.com/agentscope-ai/agentscope-samples/evotraders" +Documentation = "https://github.com/agentscope-ai/agentscope-samples/evotraders/README.md" +"Bug Tracker" = "https://github.com/agentscope-ai/agentscope-samples/issues" + +[project.scripts] +evotraders = "backend.cli:app" + +[tool.setuptools] +packages = ["backend", "backend.agents", "backend.config", + "backend.data", "backend.llm", + "backend.tools", "backend.utils", "backend.services"] + +[tool.ruff] +line-length = 88 +target-version = "py39" + +[tool.pytest.ini_options] +testpaths = ["backend/tests"] +python_files = ["test_*.py"] +python_classes = ["Test*"] +python_functions = ["test_*"] +

uv9Q~?eBjBJmB?~ zH^B>T@Pi{fHUeKb!yE2!Y4bbcaD6z%D{k?NmpS1Y-#EuRj%$pAJmexDd6Ok>a$b@= zYD^{4Zn13l;tpE=QsZuFzqQRqrvI@1B( z^QRB3=~ACM)rpPtt7ARuTCZ5uyYBU`lN#z`e-qftZuYZ}dFyIlJKNj-N3_E|?s8}M z*y}E#x#K=9y2l0Xd+&Rd z&p!CVAO3BBZ~Wr}fA_mbKJ%NuaNpNZfhsQqmyMONKgFpP@FRAy- zZ~pIV|6lCqUqAbSJ^uH@KmN07KmF?;?DY5C{`%klp5^cV{{tW$@ZSIuV4vY%#1&uy zDj<~wU;{cJ04`tzN+1IsAh}K81!7Uj%VED0I1%hA*ir@&6U^!&q38En1b>IrJ z;OwQ~3&P;@l%T7{U=7-!%e7z*>R{yEU=R8r4$h#X{ooK1;UDba5h7vRHBS*TVH1j5 z5GtAzO5qJAVHH{-(oJC&G9eTWnihIt3SMCtis8#G;mUF08KPktsv)v{VH;-P7{Xy3 z8k`%_p$)F##MNOQE}$IpVIO9j9s(i?-eEljVj&KoA0lER?wTPoVgwE%$~9snvR{kY z|JMTeQ0G|UW{nsnVqzy|;*5DBD28GUh1e%@;whS9DvqKmvZ5%KVk^SpCBEV&#^Nfv z;+9EIZA};=7FtQ?j`Jym(Sc%mlEf(W4-l8!&<1R8|G)m*BG$S-}q9kJD zAwFUfWn(vX-!_6{IEo|Bd1E=Y-#Gq_IjUpxp<_F`<2%0EI?7}D!K0PT<30XfJ?i5= z@?(PG<3BoIKf(n-5@hQMHo7g`oX51<#a*#i3TnB*t`Qp%lC+T~sDBVF3x5TpTDk`1S=C0qCRctXg?tM(X(m^iC1D!DF{VLpK>;OH zW@c8VXo682aAJ*#CS-0Vk3c49;-uHW!EH7hU+z(E>ZVVif?lE>UJ_?f~l)TIZozW^K;qmSyI5LIfO0|0W1YW{Wju zZ%yW7I?i$)gl(SYZ|aw7BBns_=5m@Ri?k=yZKr|w=9L^KVjySP8E1kjXc``9`|)Lb zI;J6I&b{myVOG=9bb)0i&OAlPXtvIfWWn|@XGORsY6bvmI)x=1*Cdh-xSrxMqNYW_X6^fMn<|JZKa7X>1niDR^k0@TWNZ|0s!`s3sL?4^*ew zJSs1}$J{9C5j^ILPG*39sZ*6GP@F1r66$4=sAw?ih&mOED(9zU0aQljqyA|KVarYK zX~GZ;mViM?^ra6BtElE@b$aKe0;+h12%}O(q^|0UW~WKKYFiRb2ViTqYU{RgYq!Qj zUrJ^dsAg+sXNWrMU&yDT)@CK-=61enZr*9g)#<#_tMbL`;8lPFNWi}GYrp#Ize+#_ zBtWb}X?K>WV)ABGO(wyf==NCX3s5VRA}lCuDy5FVfD)|DIOVAVDr+umE5PdCT!06V zY{{DJ$)YUDUI1fC>|};#jl8GJE^B`Z!^a}3X2R&QzCfc?|LntxrewjYkp3qbaOH^Z z!FZ}j0Yt#kGHug3?b9x;1>h#Q>PWjz`?fcXeR8=R!wY1L1SKQ zqYe!RP(a(d?c2g_+)@Asc%C%Jy(;eF z+8yHVUA{U%16eJUo%vT7`$XIW*Zu|DY@^(gTkM##cM z$Ofvoma7@0Zsb@118DE|a&Px~ul7bjGEyqW)~B-m|0n(&Dxmg5bfQt(lI!z=YGnR^ zs^(^bHlkuEjC#26M2uH}lbtP?(*)|LlR#ylMbR?C=^)TCgakX3(ZyukSAA z0&i}*rbYAqP4<587=Lg0vTO-(toovGG*of(W-2LE@sPHz8@B;|4(Js3X|aa!{swR# z1MmPZ1(AY58*HkEwx<#k?X&`KN6c{X(r*^j|8XQ6=m!s72V3$bHyb6-T?mhGCtq&H ze)05n@rTgB5A%fun{p{gtN#=-tX8ZmtF58RFu53v;bQR(1Mv{+^6mC+ATR1@UTQ3; zfnwtFd7?4KX2p?;vY9gPE%z{`(yZO8ZD!8J-R5w`s*Mx>lMdu6q7|PKNZC8u^-cO{{k|wR%#?40jw_YB5NpXo(7BJF&GnX7u$e7 zv+E>l^7CPGLpwALE;QV6vL}nMz=HBJOz+@EFf!wCJI8YCNbCC=R~w%y07$8FrZR2H z@SpVUs9y6&=khM^axX`(WB#f7D##u=|L1Lb=g$%_?M!coqHS8dEOW{1@S>{P66%J6 z=EMp!(oTp4L;yE)vl$yiVX|@xhpCPZbzy|8A*a|-Qzi^_Y}K~&$ZT{v7ez{6i3Zej zJ>PSjxF$FoF#I;K&$KkLX6TF#b0aq_7lAD#=W{z}WJLShLnC%#FPdQwCjnHzV?%ai zOZH@2bW?h<9j{So0_pFzaAXGPyNdI=60aAZF+P;530UY@i$xrV@ddc{Yr}SI%eHH$ zM1?( zTKlCi%Vxx;>u~Qa)jsiwC^GhP|3G=0_j#i?dP}!ulQnB%HhfxWPj`1yA9u9Ys(e1I z1uHaT=bQK{_J0F7A@cX{?WZ1J#N9qCabu`~%e80wCNM61CO!0PSgKBD{?^cJmcGo6P5%e0Xa{Ty1F@KpI7cy&`EgBg(ewM{$D{_jb z`1o?Pmo2q`26kZUbpx|9?BaD$%dlu5hAX3e z;TUT#8k#Q{bw$mY-+7$3|Cf8o1fYA*nlf0q?8{Z+SebKqjy=nzhh-&3`gGA6qJO%U zA2ybwda7HJsVC=2g!rM?IieamwCPE#dzlgsmaX>!tMmHERk^AId$6xaudiRUMrDmT z)++HSvYl(Hy;bWRdoB?Bw1eEQ3;VTWyH8Mi`H{w}U%MVXJF{8qwv#)>S$npld%AmM zxno~gnx(3D7fZ7HybIj9tNXp<`!3M?zE_;~@%z8yo4x1zzz;mY8+^U1-oY!px(PhN zJAAq?e8dMl;z@kPgImLwLu|Xz!*hJSTKvbaoBDzL$V1$U6o6}EK>x0H$Fux`lKjhu zTmHfP%)4LG()I=P|1a;xc1pH<&x<6@1AWO$T+kCes9}7d-vG|{F$G+}%KQA&mt@gP z{r&CR)LT8E9X&9-HVSwET+=kvgZ)Kb{n(3|vyuJT_aCPa25pN$%GdMPhke{DB-+zG z)-zk({Vu?E5pTfArtHbGJxp8x1!%wpaDdaFL*ch=T%Q65yf)oB{rbeVc{jZZ zK)!32H{u_R2DB~Qmx<#$N#e%_<5Pg*$Cv0+3+c1s1!%xW6aedk!sV|_+y3e)xW4Tl zOyonp>{EW^qrTjm+*|HBpPxH@MY}-c{qpCTvN8YjTiM>P%mmQ($Z8*g-c#99K`t%z5n*|F-TZwc!-#&xX9S(_y`#(IZ0V*d5M{+ zxyjk-`3V{-I!anJ4;(@dyAW^yUW|_`>WW}>M=2Kv9VEb40f@M z%=Oe@WHnNfLe;|}Vt_I&EmeXoZKSPnZFD5U!Q)M#CGeCkd?hbneoj4qw={Gm{qC;; zKmhAb|Gbl-%>|EaFAT85HbKgQhekB$Nx}{TyMeAcdi)47q{xvZONP;dvd%UGdH{XF z!_rU6m>q%HyoocX&Ye7a`uqtrXeEhbJi@Y)@FLN zGBd$pMKmo+vaBfkP1ps42=wqHQlQ`ri6q$4#b~9#y@)#ECESq~hK#Un-)@P?dr=S#}8rpKU9wYz_-g5*Iy z<`>{pF%%P+3ZXM1FE0Io!l zad(hebyfLky6UdW?no@g#F9%a#j1cxbMP74Y_VEuYQO&e3vj?uwfl;|1|N)Y!U~sy zDjV5tw~Ug-V6f^k%4GOMY2KKoZG_sSH;!XdAuGZ?RZu{svfF-KZDoOx4Cat)7DPih z>qJWgWrMarb7>q*&_jc4UE3K$RT;r?H%2_U5Jd1140Y5}PyGXJd7xxs7q%hr?jJ7k zyKvZIk4<*ji%{)?*=n!NcH5XX%!aDSJiOhJ$q-Yq7XWrcmbNiFaRQrx|3Ahnn$1pF z@}6U+L+r@a!mK!EGn+#}4DQ_gjzc(1Q=R}c!y`kU?1ZD=eM~43nRr=%OPJxQV~lp} zvd{jZihSw|Yo%4sOUKqJ+1`rV!Vgb;@i5MAeDcaK&%94?ufZzB*vY*?^mboRVS}Lu z(Ym(=rb>mx-1M5br~vejO0#-HsOp>GU99~p0n%Uo)$cYsilOJtM5 zN8KS_!PMX$kBQ7=mQ7vCY^F1x$*De~!2m8C5P^qT`F{; zWW=D?P}C?C33Hwl{95p!iP4N|G)Rfss7F5v(&==BnyzX_lU5}$BV}&~@8p|u4roasoR86qvzqnEYNTTwr_+E%ScV_VX#;ftDM8<4 zO4T_rE2aan9JFp|Q>hA(p=2%V>`vsOH{Rh4YOM|7E*jFf%5|;-D->Ptir2i_M4D`U z;oMAGJ?gn44lCtCTM=mnSb@f{KM2iRC%D*?jPJ z2(GY&@u-{&Yk0%PQ}Bd84B`-rm_r;cv5A={k`t?V#bfjEh+hoj7|WOyEIycvXN=<< zhp@&x?(x5Ftm7aHdB`L7v5}7)u$mxw$xH?kkckZCC`&oLO|G()-}Z(pYkAAjdGeIM z4CXN3mdj)=^YPYT<}|Chu3~Ppo8JuGHOqO<|7=bJo$rk2op>3}eD1TKp_b=B3%Vzu z8nmGgU5h>cdC`n+bZQZO97Q{N(r$*dr7wL7NmF{$obEJSF%9Zao5CofF14vo=;>6e zdetU5wX0vP2`<2T*0eT+rdf^aTuao`weGdA6CsFS3;Wc!*0r&ZJ?UX9d)drx_MwZ7 z>}X5-&Cag2wXcosB}04K-0n7%vkmTWi+kJw-nO^TjqVted)@4Ax4TJe?sUt0-VuJc zz3+|heD5*d^zOI6ca2?r3w+=NFL?3z{qKY;JkADhxWgX~@qQtE;S{fUXd{mCjB9-3 zG@7`@KMwL-a(v_@FS*H`;_;BHeB}u||GCRw4)d6UkmU_cBh7CP@Pf&F=REJZ&pE+w z!WI)z7Bxv5A6%jVDBZIkDiPDECPAD_?dMdly49~rHr*4Cx;q5CoFnO!<+ zFo@WwB|QLMw|Ohbo`$ZA-9tyeP1tiT^>tx=?|koj$<19NuXBBk>T>#P@2)kopC;*U zmmOidE~1WH0P$>qJl+Y#_+8E>?^E-;=RXhnfp1$jUT4(Y3ANckD1h=>yL?Ct(DpFG zKJtT=I~->3`liPoZcpbtGeZyj;0r(7+s6GDEJ|1vIS{Ryg;X3GzuD$9J^8)Q-343J zR;&eJUY?~sMX%qaqI*FPkmvqI|F-snw5D}lTfj~34J-cIuzw52Z~y%5@BFQ|{rPMZ zzlvoFVPIwZ7 z;DIrCJ1oeAQMe5?D0qt3hG>|EFbIcZsC1=QhZI;68OVoy=!b{~ZKP)a9XNQ~r-hJr zhl00%h{$$|NPBQ7h-&nP{{t`xwBdzpS1AjqhIUwjl(%+VXo+jLd3S(_cldRsXo}VM z1BLL0rpJ25M|zW3g_^j8d?12ym<*_xhY@6mKQM#6D2Z(NiC-8Wx|lDr2#gQZh^OZQ zr8tSFICy60D1ldqSp$Qh*n_6%e7cy7-1v2RxQBlzj^jvGx)R+>3urK77j3Q8e>t}QLsC~5861JCmbJ!52*A{_idYBjo3i*BqX(Evo ziGBc#{iu&Lp^g{%ko>rRZk0wS=!)A{HDXwdYgB(mh>$Ijj|7=McL#wTnUS!!kE@4? zWblr-2a+6VjVzgw|2c^-`=@||Fq0Xnj$_!1v8amR_-WAjC*i* znJ0HCNRuXFb}4u}R5_7$xPwDUl9@FGCux*}*n#xIlDzncRalgKP?jhOjVf4$#wU}D zGM8Hrml7qF0??OkxobT+kzv_>07!}*c_IXfm^8VKtk+q#hm&2|m5T|KCP5C(n}?N#Xm+oOH8cp8l;@L)*_oWVOLWL~ zY`Kqi_l<^`bZS|DLivqgFq)oeN14f+t=SS>ScA#g1?88CUH6QEIhwkdiW}gNiAR-* znVpL`iaNP#|H)^Q=olZ1D3UT6h5-#k(&MKpZ_^rQHhZB zCx)*%f?O$^kq3JRs(ti$o8{@4Bh#4c37^%8o!I%CFEF9PnT-|NjLq4Y2GE>ONS_Em z2v*sR;Yp$KDW6ICm92;(7dnG#RWBqdqgi+WCEAQCDv9zLF9o`p=~W+!)3w=^Tvx!=i z$|?dBI|dG!wKOS)q*tyyshDP@t`2&NX?sCgX>V{}Yiy8}ubt|N`xT9n#i?&IE%-FD8cdkszopZ_? zFv^K+D6yOPmAJ^A0*Q(?$b^53sdx&qCOEuWo1NP@iS(F=vb(Eb>7LU`ypanw|CVdM z=Zn6X0upriipWcuVM=~s%CyjUi_S}f?`n$5+pxxKw5_;{>??yasCa~cy9eO1V91Q5 zSir?wp2Lc~4!ppchodgQzNo6a75tdQ2!^NfGZGTGaec`5KnBQs9yx)Kl^c+ieh?L^4TyaSs91PssPcEj zXQY5dz)I%dF|j$%Lx8L3ql09LlZi%CGDxm<*@(C&-cO zg|ocM8#F{d(Q2A&g%@%@m#OK?9TN}&wM7&`K-@a zYR~;#&HD_{0d1Q8Owh(G&*3(*yA(R?@2QhuE+jq38%+`q1$~b92kN(Va5qeO%vLmw8YUeG|15paYf#HJ*V0IA z)2so~Lrv5scX%Q=bRU}|^OzbzeFjHJ6znV0AhEw3yFmH7xfm+4>xt8C3`0*kz8dnh zB@v6$${}9ZR!0cc!xW}St;M-1)I}}Va}99#!lA)e&6GY^8r) z{VCMgJCu^hq-fZAO{a!E$bF5us+%scn4fJont4gK+bf~aJ6d!N+M%s)BUO5$7}gQw z)M7o=A~DwZn%Zh$ouVkrtq`+lW3iWN*jt%<<9gPs&DxUPA+gxN?ufC(UE19#o_}2w zqRrgR&2FUKw$#bna-5XBO{GojMsNMY?ZPRJH_D@W8(w{B)tYFAu=|X#KAmH!y*jQhyy1*nO{Z_D z=dp{r$Y{cM{nhko>J*Nn*T~rpeCbI(x+wDKS9^TA*n)}7y2$N~3GwKxsqG$osJULS z&ui9>*|cvdu$0N?oY~;Q{oRFT=!w@DJH7tI7MaMt>cYVo zFN-}-kJ=k~`J?5Dopm6$`WTS_*WeE%@g$E%|KNS13i$Gf4TXy7j)AwWUv2C+Ka$B= zxAEDxE+3+KknUL?k!J3TDOr@34f9kwrb)PakWTJz6qbyq+fkpegZ}PgPxgW)px+qs zBzfDzskNmGn9e$_1`D!NySh%R)Kl678vmB%xty7&z)5ZL+-gBTz6ZAZoXHxih3l)t zd$UA)ml)dxayz&B?(u#8_H!!tR+x?y&-OT;dq)nwir4r-KYq2Xz`z;Z+5owTucsLj z^3>_~iPe~B+qQEDj~Ct#OJ+c`j~ewNyYDvtR-I~C z#eMFEKle|#?a?aged+W_c&QOZ1~O`c|KDEPnw<4OS@i$-0c1&?JjwFouYau{`EVbt z<)8WoSxikDn1Roa#BA&!AONFM41qBM%2}-EAdW^5xGJ8LuyO0EVGzTyP&k<46&Na+ zBm*?KOcI4Y;HfA3aY@UR3aJE-4_#F;Wg3bBv|*50bRxtiquZ*BUeEr&%7@?}VWHt6 zVxr}oZLRGsZm#Yw zCZO-$)KM_eTc4EB0Mu3;-p`uP9assBka87rGFeXAg0R*OUNM^9Zyw!=i9m+6Yoj0z!;U+WVZ?E)+D1PR;n5^%@((v|HmfbD zsMC%~0qc6wtNMo*)~s5$a_#E%E7-7N$C52;_AJ`8YS*%D>o%=bUqdar(YbR;K960V zjZ>NP9L|P8xee4N6Ji0oe_-lJcZCL?cF#oKBv>Y{FFOhEWQ!7|TgelGdrGz#mFfY; zOTT#joLR9K8`r>`CVH+mFoy-__0_%8_hl@y^%B*#vRs@Ru=(~i9*pn^sK}zk%R_RY za-P42CajH{3*lm`d#t7t{}pmS*qAZDZSVd){P^xcLPE5-9e%m)L;OD5D*b=wH?+`V!(m)P62`#*MdM86|qr)bVbBlRpreC-5DkP zG@$^c*_GfL-*KqVe2&6kPF%?EpPKXnY zK6F|3QgRylq*HfI7FSP;r)ANOc-jp)Rg4WOH`+GK1nA3ub=r9+o_XrIC!c-#`6r-( z3OcAJb7s^LWFO5S1a+!|K7kDS7KsDIujGMl?Y`|rBZ0utOEguBb%3PRxBXNUXv*bS&q7! zIZ7G?>NbqY^+j(mdI#*M%_N6tH3VJs#B)4&hFcKU7zzlX@ya_dz4h9AFTVNeyDz`} zmh$co#kgqVr8kJMEKv1K=z>gl+;}SigHWchjxzCTus;|Ml47MC4M9M|JS1^08U$#m zCdBC05R@M>!hw=LCBzJ|Kd0&V#-wXVhS)(O`N5eCAY=R-(9v~d5e<_D>*|o91yq2~ z%tFmBh_QhYhZYXA>5Td|2gmT=5_pwx&a*{`q2%w>nrW4V-b403fHwMXse23z{Ui;(b<%BAYY#7 zwZ24+OGN;`wB~N3W+`jh;*>k*wcjS>9LXbqx$f@pj{G~`Qm6OG>_SF5|7DsSL|96B7Q!3}b- zgC6`K2tz2s5i$;g!fD8s0)s-HRE8h?=!4F%VXgRaE+?5g(9ZCZ9ddBSb}=&-wuHhE zl>MUy{~Ze--kt`79TIVgQ<{kZb?_bO;EiZbeBm|Rq?;ll35%aPkQcY(AlAWSiDc~E z#d5H~yI4_&3n2sOT!_BPP{Uy3S|K|+wV-8#pXZo(gP$CzY)vHK3Z0k5DIFs_ zTeFlC^R`F8?dnnTLj&1@C%rdH>slytP|8dg2ojRAl%_l-DpRS-RkE^`mJsFo_z=pQ zv_^ji*`CjyfD;(P1ZswbOX5|<@wo5Hf zT;nR&t=^<-&Wh?sb(Yk*^0fe@KwH1BuskbZ11s3U61K30J?vZjs@TPrbd8LCEMz0g zR-DMNtNnPQWHYN-Iw7{Rp8YInLo3?RlJ<3*JuPa{h}zY%wzW6y2T6%aS@gNKwvR0> zZvS(u+uicEx4s>mZG-z*tqQle#*M7Z_9|1Mh4Q%0RqJn~E8Xc*x4PE7ZdjhH-R*L> zyWagSc*ENT?2@;<<~=WZ)2rS?h_}7&eJ_0DE8qFPi+Jn3FMji@-~IB}rS$zTfCDVx z0TXz${XH;(6Rh9`Ggw~*elUb1Ea3@Lm>vzjForX%;SF;*rWO7$h(j#m5qG!4CO$EW zQ>@|@dxFF+eld(=EMvH`xW+cVF^+S5;TiL|$3Ffskm04{ArraCMm}@ z)48W_zB8Wltmi#zrMO3}GoS-4=;QLa(1t!Vq7w}uSf2B#t(j;up~}=hJG7~D?Wk27 z4KP~Dv$dLj@TcDz>SifdrjdqgUC(S^MYFoqu735N8%tYy1m+!t4C?bJ2}w#T6_%=< z6FUu6>!i|?t|0qaAMyHFVTl^Ea+x((*APZgj@l>CzA~({t?g}d8_JEnAVqVx5o^v10x6&HjxDq!~%4!V`{R zSrfcjLSi?j=O^zJ@f$PjriZ|VZ9sv3+uogys{0tL@3(&ZRsQa2jfe{{j{le3$qIit z%wsO|>vmiKN2O^#nN_TjN!sS0PPtTf>R6dIHMz^M!_O5)PMi{*Ykv;5$Cg^{pl9__ zFtj+Z-$|^A%)3Nj(P$yALUS6w_CrIb6 zsY{({^mc%weB1gld2|;DoU>m1=waWyH#Yuq&a}O=tttBT(eaZ3g!(+?luguM5AEPA z{Q!kOz|yAx_6-Wc>Nnq%DZm~n>csSHNy=9;QnN6ec0@f_+BG5MG`9A^9)4(fbpsGfmHP}xY1+RWCp=?sAol9~(xY_(mo z;RxtFAmpT-3K1%Nt;-UaVAfDlMq)iO8p_SMU?Rer<`JfLD_?U=7!` zQ04H_9)=;nk)bITGI3nO^$}`FVA?!g4q5sNFI3O4LMuD(^#QZ?)K*;~F zN(3E?ugD`$h=a(uVlX%gr$~vqMMUxFW9yt9vgP8-NFG$8j9r{vB#rM_4^%*71k_!DiKJitC13_7Skzn^u}F0=o2hIK$w1Kx zmdfc+T>d4}C^khOq2*0d41wqbq~O3IOwUZ1maXU{Dk_NtNyq!(AgT-@Q#PMGO6F)F zhGyCi#)U)Xj3#7K1wu&XP_`2`gb~M$+)oT2hNNXw7UX5wMGuCGL-G-ZupF2?=QD00 zNB);!R;P7dCw8&|!{KILm}HOug3M}0Net1@)gVf2>WVh$O+3_E|D9)Ure_N3Uxa)>J^Z1D zDCD>h1Z-Ai>r4%kV4(TU5qk#Ud_v@*&?Sntr;nItfMutPz9@{w=p+y(ABM_dK3qC( z5$Y(6_&63e{-{pb=bB8*RK6!_FwIzE9kF0b9Qww6b= z_mmm~UFrSpsKmKvlr96#$iUb9CO6W~CcYwvVhQ~j=(PYzO?*xk1XB)a2zL}@x`>I7 z4w#Gvs-O-kjM8X_YM~%1%Fap6(2dS%&i`g)QqoH_>0nHpL=IAT zieLokS`P{gmbNB%x~Y_~C^kyXnfgMS7AJTr(WTN2xLwtTdMOVKh;z*8N2JXKcBQop zPhEE4{)qrqTIzJt7oj$*vp(xblH>u9OvcRG0`VgDJV;{h#G{U>ts&>y^dgn0>X3eG z1x1e;pe1r9$j+H*o1!b%0gc8f!L`|?bIsv z5EIR`Y0R8l`XnWfu4^=^C&3P82{BoyyFA4Uix6PoDtd?nYK4A$Dr zaB`?ZT*p&_(p#2KG_dJSqU_d6)A+EDGnOHdv`NRtm&hJ2;wEml#ou^BlLzKZ0Fg)y z-e-1n=R!PC-Yn~Yen=##1OHtnXlRQjP9y{Y1aCBH@+kxm4hx(tssW-O?cNilF7Gwr)A()e(Qo{2Pvfa!Z0(cKO6u{EpXLM&0f*G1?Qdt~)gZymIq9C{ z32^?RQ~a*exXsqofw1l|9}@B=)^=a<%>c~O69*rZnRaZk0l_nMnm8qJ<8-J5-+irf!xhuo)fQKw56oT#ohFJ3KbtDa%C~9N%2fQF<)ky z7e{dz+uaviF_1B_8m}=M=h&bH81$9#8_zKvBUKyUF&^jf!qstr$uS@QF(8+N9uG1h z7xH}tG9o9kB8QkEH~+FDKeBW!vLsJ3B~vFPUos|VvS(E?CwH0^g|Q$ME7$=7qmoU^hIxUKxgzpGc-qgG)Is0M@KYC$MZ@1^FXI`K(BO4yEIET zbW9`kOp`QB*Nt>Mn>0>~bV~CyPLDJ@2enWS^_`$IBo5O65CZQEQ~lJ^Qa80RCG`gw z)Kj-cRY!pX8q~U6uvTAnRCBdfGqqM5LRf!wS)27)J2hCRwOF$?RJ*lRuQgorP9d~4 zT)*{QTeXMewOaEvRv&_2qqSdiLJ*L3VB_^+>vdfxHexgOx=^(NU$9h0PICJXU3DTtopHyP<97?pP(W6L{DqY$K zXbPWBNkpZw4_XSDOtWg;%C)Q4uVBNzBr;W~*t2NUs$I*rty_#{4VmzX^{w5zc=PJr z%eU_n1V!pnWk7gpi&AC%DqhUEvE#>(9SeprSz6@Fm@{kM%(=7Y&s!^l9!C>oF z0}`Fdur6IP>Swqf4JoowoDp z*t2Wj&b_->!7N*Xsay(yh3j*@t6$H)z5DlkCc8#|6$eXu&!XLj2*1Do{{RLkAQJQy z$AnnR%zvx z%}D8lg)kP0<(FWFDdw2JXvxBaP(*1JnQXS{=9_RbVrHCl)@kRRcrr6*o_zM{=bwOf zvL_H|25RV`h$gD&fvx1Y=%bKEDye&eb~Ndwm}aUerJHu@>8GHED(a}DmTD@fmHLtD zsjRl@>Z`EED(kGY)@tjmxaO+suDtf@>#x8DE9|hu7HjOW$R?}ovdlK??6c5DEA6z@ zR%`A5wb*8>?Y7)@>+QGThAZy4+ZYo#w+i<^ww+dz4+#<@4o!@ z>+in+2Q2Ww1Q%@Z!3Za;@WKo??C`@7M=bHg6jyBV#TaL-@x~l??D5AShb;2QB$sUR z$tb6+^2#i??DESn$1L;AG}mnN%{b?*^Ugf??DNk+2QBo_L>F!J(MTt)^wLZ>?ex=7 zM=kZ#R99{F)mUe(_10W>?e*7Shb{KlWS4FB*=VP&_S$T>?e^Pn$1V5Vbk}Y7-FWA% z_uhQ>?f2h+2QK*Fgcol3;fN=$_~MK=?)c-7M=tr~lvi%~<(Ox#`R1H=?)m4Shc5d6 z=%kl!`st{ruKMb%x9q5~Ys$xeFmlb{S`0P#pl8jA9is7$3QSLs3hW%89qJR~b; zNy`Bapq98ymGc9>Ba2`>MNxWt^*U8Ryx-){!Z00-XNzZyBbCA`1r8@1&&mC^F zp8&Pt0J8W>ahB4L7Q?3z*C;?tGBkuG6yrYw7*PXERDc7J=m9et#)}63Afo{dDFZoL zz>NOWq!<;WN+()EjCxe0evIchGl)`(p46f#ov1`#O3^UF^rryi=t*1JQsjb} zcf58*76Y=F#)tY-ye1s)XG>V#0pd2J-v#e(BmCIN(ifna9q)Sk>)wx^Fu<}!?`;)O z-492xlwULt0v3P({bCTso26}uO)J~lhVic+eJ+AsJjdZ0HvmRHatGTBK;$l0v?pXK zg@G(q4QH6hZhY!OCCOz%N_ENvFd;_2TV?WwIf2Y=F_z0%=AhcJy+d9xkO>H344+xU zab9y3?Q2do<~NV~)$J{vjOQr7mjD($p-VF>W?&{u0vU+^w1amzVXszrv;V#HXU9C- zjY3wO32piCVs*1G-p&NOJqWN8~H1t6Ez$ySk*} zJ@>WU*wUdk`naMUH=PSG-$QS+vX8a)x|?X5a|p^ z;D-q(w|jw&XNsy=&eHz$zPnl8Xm1w6&$aZyd+gU%gL>mRoM9LVqtXh{*w(nN?JfJN z(>qVQ$2}Hsm_3eiC@LArKL@%8k^AF_^BmoA?yE)rdEE0RX8VfW-uAb*-RB~TyTmz1 z;L*oy(Q-F^ict=`qC@D|qXXOPPyVN{gDTpuN3q{%ooT?0x^{}ETHOVVxE_}^fQDz_ z);`=i+oA31gxh_^`qsGH|JdfauQ=aCFSf)nOYg8Ueepk3xfmm``7YY{g6W<)+A%$N zPG=qGG{?LXnO$7g2QcV?{;`ioU+2b?9_bi9x#~ao^j$*0o`+UqKBKiY=haK)qFVci#S1OYGt{>Od)6|{cjCwiIIb%?fo`^R-Am3ty|QUnM= zcSKh$;aY%pW3v@j1$TRw_i<@gU`oY+4@6Y9H-QS|ddmiTDwshRW>`x1WR2BGyh*FZFfZ!y?YS?E!I6*TLV~C639c#!f*{|Kt?tJ zeAtIASb!B~XS79l|CE0thj^`qXsb4dR>oXe2!?3re~g$w^ReR(A9qXt9(RA|Mun(Wg2)Amlel|9H-7^3hZppMrbc^? zB}SGuWE7`~VHjSYc#B`xgPQb%uyl1B6=FIkSrn&t3sj4sD2kD2Xwla~fhcd6h=?*6 zSTtyjONfo3r;R1mMc}7J7r>5KBmwd`k6LtwBej64h+wCtb3W!%c{h4Xm~OU6PNsr~ zk*0?Y(1!{+0lY{-*>{MrScq-McC*-O$rW+(9*oSvLCVTc+ zU@}>R(^Q9ZBzEpbebMD?t0sF`7hsKNjQ2QT@x@Ixxn~4G0fu>)h)Dqj5OogVcaqji z2WVoqM}*^bmEs6NG1*vOnP8^UcMS)41SEfaD3ubFe*|}WmpK3zcYm4YVO>aTipkFjY%nW=b_NnR4Bi0HOW&n1blsgyk@QwNnn%{O8NhG8NmdApgLuDOK6DVqqn zi>{}Fq&Yz!Xo*PJVw#wntTVvwL2f5J7I zP8n#sHk8@dn!#3ur^lTc8K6AGKX0af%vpnn=75%VZ!>A48)TenrGXULo+PJk#TaoH z7E$XdqZ*`S*m<2B>Vi1Bo0h4GJ-VVmdO_HgN!^B?LU@K4seH&cWyIN}P*|T?`j3gm zq-J(v=XQjCsij>wpaiOr9MG5vs-Tg{q9XU8>e-f6#4HHva0`^7u$PK}rGWbBr|id^ zKq+%o>R(^lrDh65(dMC*IdNIIbYiuJ%9*GWqxs|{oTXqu*cxTbCDrVPq;MP)*37p4$Or&Po&Jc*DAnVljOUT!6>Ss90k$Xkad zliI4RPQ-v8O072vT4;xZa)zh@s(C9%SNSEZ1Q%qvR<87xsv2gmGOCNFx~BmruyRI@ z#2BF@s)X!{K(ack&nSfcNn($ft_KFEts1cXqT?vDDVA&I+y3 z8fgofu<&YT$>^%oMsEnkt>cG4dJ3+uX?yl*OCoDxiAIOgr?PQWX7)#ii*~eM*o{cL zK+Pn6&a_|uQbwPBDY8mSut18iD_EqpT2(^pv_eatWgE2;J4|I6gvG~G5f!Wx8dM&2 zn`qm#hDNrvidl8(QWzxy(k6CwD{U;BrY`%kF}qe`JGNQ7Ktl^h&(f{dsiA>8xs*Ff zG@5~xo4F=BvH7IAjl`uv>$!k50E1hgY-+eUTQQhR7=8%0qWijudbyYjyR?gfPYPA( zRJ(`-x^%0%>{hx9S-8=9xO;ao&BTzd>$}P;o3abJ%lo`2$GNbySJ0cZyj#6>M7qw} zhr-*Y#7jpS!%RMlz2xh5&6`5yo4(hEyN0B`b6KD6D@VYqrl%XNshcq}6ubg4_jeTfLMGf9{*%HfyumDNPZ;3AhUr&aHb(b*!Zv)vMiGEGyu&=)!#@1OKpezE zJj6s?#72C?NSwqwF`JjP^P z#%6rRXq?7syvA(Y#%}z^a2&^SJjZlg$98tzJjjGx$cB8# zh@8lZyvU5)$d3HTkQ~X9Jjs+?$(DS{n4HO)yvdy0$)5blpd8AgJj$e8%BFnEsGQ3G zs=Ugq+{&)}%CH>EvOLSQT+6n6%eb7&y1dK0+{?cF%fKAW!aU5xT+GIN%*dR~%Dl|X z+|17W%+MUo(mc)7T+P;e&DfmH+Pux&+|Azn&EOo);yljeT+Zfv&gh)Z>b%bE+|KU& z&hQ-1@;uMR^eI=$08-P1n((?A{6LOs+(UDQT>)JUDwO1;!f-PBI~)KDGOQa#oGR9)3p zebrc<)mpvPT;0`P{ncO{)?z)@WL?%~eb#85)@r@hY~9vw{nl_D*K$4AbY0hWeb;!M z*LuCzeBIZ6{nvmU*n&OSgk9K%eb|Vd*owW_jNRCd{n(Hl*^)iklwH}Dec70u*_yrC zoZZ=;{n?-$+M+$$q+QykecGs<+N!KF#9iFRecZ^M+{(S&%-!71{oK$U-O@eX)Lq>qtpF%cSlJC)B5(kq_1)m@ zU0n&@*sTEuM&9LZ-ReCF<*maiFy4{%SU=$12Vepiw%+(X2?J091;F3`EkNG@9^L>T z1JIS<27U=TY*_%vYdx^v@9p0Q9^sB4UMY~?26h5~6$6Qt-8LZJ=`Ghj^=8< z=4{^PZvN(Q9_L=3;Y=N{E>Pn=PU3i;=ObWPgf-(|5m-uH-vr+0C!XUvfZ}q#=xNUA zj{fM79_f-k>6BjSmVW7tj_I1d>73r_p8n~e9_j*4=R*DCDd67!6}|)gt>L2H>aPCk zupaBOKI^nz>$ZODxSs2}zU#dHUqKHxeofIq%reRTrKuID8%;(Sivy`JgO zKJCHv5H^zGv~z5?og?*@PH?vC&Zzwiv-@DBg*5bx;u{?g=L>^xrK zf3D$up5h{q@rcgq5g+m*Kk_7B@+N=sD4+7xKJims@qq3b+Wqn}ZwxU%^EMw0HGlIu zj|(}!^FBWdJ^%AU?+QUb^hTcwMSt{4?+Ho2^iH1%P5<=&Qcnp{KlO5A_1(?#SikiX zuJv61^@AYjU_bVZQ1xVg_IP0SXm1CFvh`}e_HYjeZy)z`zXo$(_jpeRcc1rZ(Dq!v z_k17tTmbljU-(x*_=cbOQh@l1zXhuT;*8(;lCK1jKlxcu6;faM@!;=}KH_8q7NUb4-Ado`o1C)kFVaRpAxXY9IO8rN3NMJU;3?5`<&DJz7XWR zFZ{YP`ymee5TzvF^@{sj&S#10_FZ}jD##_+#e8!`X?T>%1-Hj<@zqN%#Ft^2~UJkzy( z-~bm;xYLoI3Ln#YP#%x!{hQf zy>7qb^ZGr%@Bae^3NEn?8Xh7hDlRfM7Ok-XKsr)ZTE>Z}6kKw4dVYe2ijI<&(iNJf zs;;uOx^6+nw!PBUIyTtm>hALP`u+m5q6QNe8y_Qcp~))DCO<|gTVG>mYx@mv zdw+w6e=EF;H`9v3Ym_i-f2k|t08qD-k#fy$OHUp8sz3?@x4{%YdPsdHz+ zgFJr%%_);W(4sjevN&+lDAT4+pYrkvbt+Xpn;fC3qO}>M+_`~M5J7)F3Ul_zUB zL%1;J&YnMm4s8#u=+ZhRr_#Jxu4#`*Tf>em`y%POs9mz1?c#Q+!K(`x)}1n}@Z!dg zSF25zx2xR95iuX-dv);V)~{pFt{n;2$YU-)1Hav`u-~j7jZd$BJ^RLQ+sk3uHu^LA zp;Z5_4u3!Y{{9`mXOetQ*q4QP{}EIF;5g=0p&x?aye0*44^mj6g(hfq5&}>th(m`L z<}rX9A98{pbs%~(VH6~y*rJQsDL3DX7_oR3gTT$W4*@FX*rSgq#;6tmKSoqzB_?jh zSOEtT*`$+CzSLcmZvEh#Dpp#@q>eX2c?^$SMA)U6V=l*6U`E0qqG%3UgeF#8lIa=) zb21QSoOj~+RFHY{sUe(wMr0?TgAyu~nJr=YW1@uqS!h6CIvS~@DD63^r9Iuq=B1oK zO30?4f;v*Ap^`cel7y9-VydgMno)qQ!dlN;=4l%1Ae}xTsI9y5icN;S0*lV6an<^c zn?f9`*K4?*plh(tLYo?7(NgRGYo;(IW|y-yOvG%p-+~LwsNs_P%CK;Cv}n2OvfJ*8 z)4Ch4E$5!ckGcqEi^8@z>?^Oo|9&wpzymiz@2~dKFkr$2Gu&{y0y`WrAk!rY&!UNG znVAgvI@ti7{Yo6N$U8thvdMKA+@QraG&7_IYOZjb0>w(=LdGZKoO6p(>fAFo3>J&f zy(A1kfFwb4?6cBKzgRNUPh*iXjsy+88-}xa%R|;sbKS7hU4u=?wZ<}$bl7L3jqjmp zvwelsL2E~mYIUOS+bmn6IG9#Kpf z-2bTY`R79iFTC-`f4;l&%NzPS^JGEpYUa;VUp@7jS)bRY)Ta1TVmfwpG}BkBT)9%@BMWRXJ4_3(#M98(Z0)WRupsELs< z92Upmu{jB@i(=&ei4(`Dv!PtkjA~q?a5mt^H_C#IA{&Yv!|=sA)iIAaDIW6Ps7J4D zF_1O11m&jZu z6K%NxmN7F{$Bd>BVoA+ws$xRHtL4T>iA^U>(|p$aCOLI7$*ZxGZ2I z{VG{~0LNkCv#el+s#@FXRuufy2-<{WA8q z_|hu>-Rqvk1i(#76-FCf>>B5^s>`hg$qQbDPDBELozq}1JKXagN4)TzuMc_a1ZUN? zu=IV7eD~{Lgt|8Y0v@n?d69wtUZcON>nwsBTn32_uf2|?$5}g<-^OA%!y3LYhdb=y z4}&e-~b6YAj$_W0h6_>f++)e4q6Okmb*N@%HF}Zue~e@s%+sR*TTtI z)_?@otO6yQxdm?aav-)G3(x+T&cDnWB88fZ3@F(FG>CJVSwLtj>lqGq<|X*do9IXX zDqaeCD}RWzk0kJmF2Yt*V>gj?Vfb+9O=(n-*SA29G@Dm&WlT zFuw1&tb9}89xq4#n)40?Gk2E2tj3G}E}jn=%~SvA-%331dtbWi)3SPY(OmAG(0%Q9 z1#T?}3h^Xp`~uF`d#6vHZBgX?@fRDW2nb&T2EaP#G{EQPpCs z^*{uWl+w}9)^S|{(#E?*j`~3$O)&=nCX(av-)&XkXh`5fRRacgV5~%+@pZxRG|RRW z-v|oG2eRM`5(;q$nhm@X@kN-~a@G9Nq*I?qNkdAyt{-@FgOk^kEqA z9rbli09fMmeIMUFq9O{O!ffIvVn?yfS<4ZE0utXO@*N>w;#LU%SbLDxS1lr`c#IyB zKqH2NErOzxAYQ+v04}cEBPP;e>!Uo>SfHPvw7a5~~RUwBVvU$_70aBxdj<$3;K`03#K!V?`2V{&*tWd?O=5 z0X`;yM>b?dFk~V@UzDv^ouHip2&6?~V@NWD3-T8QAi_wxB(0qRuR+;KDj?RaBugS; zP0GqadKO3m<;g_jZpiy>AKvh=%Wl@e=8rso5764MJmr^c( zN>=1p7L6)NQ!Y)Vbszu*Smjj)0!^j^QDWsj9$~i0M77l=iQ%PQ^5tFnC10L^2aFkS zK-FIw=3%bEYZT^=N!tyw+B62_SO&lVP-Yyy;#_9KM!LuRz@@hlfB}GJ9ExUWf@WzN zKpd7PYNn=Xk|t}Orfaq)Y^tVg!scq4=4`qqW!h$Kj%IDX=5O-mZqjCMlBH>4fF)vp z2e2k?E@yN4CUY|9Z4PH@;vfS6=X5$}aMosbHD+~ABmqcfAu<|fQkYNzi(HcDY!m=f zhG%=a=X=6ue9Gs1(r10z=Y8U5e(L9b@+W=9p|$z{)_00!AsPTN7EQ&Z=Q?O6Rehfk zbfy!ar}wdEe^O|LTIhvhXohO&hF0kGQQHl&mj(dhdQN6!t|DPLWrEI&d8%kbk|>A5 zXpG9}jM8Y0#;AvOCs-a00a#{(7$^=MOpBgF+6j`73PFTE+Kbxgk}_$NI_Z;cXgWe0 zh)&~<#)UOXDJdH1OWxsZeb0l&o03B5n38Fkn(3HwqpzJBk$xs77N{kbWr}WTEiC9^ zOn^*g50Xmgneu6$`stri=mC;|BxC|04i9L`#g9JVoLWOCYH4RQ=m<=Jh3u6t>8Uu1 zDWGcVrgEyLV!#A&z;09@n<6S3VCfe!YTU5@XlS(MR^2HdT&hukDH6o$ab;?!;%cty zs*MUNk@-V_rQ>I|$LJ`uR7E45C&y(r<@k+ zDmbcoOzI~@B1sTyAIxf)PAIji>$_Ve53vYdEAOb`)%$@aq!9QnQXg#9kM`4s6D1ETI0L2?SWeqRYa1 zL%rffh&n>-t%t?>L9G@O#%}D(!Yq{HsI_$%By5GqegnxK#@ZNy$muJEv|NPnh{bZN zNx5vyB5l&j=*-e=&1xaes%n>BhrO}?p(0!!Y_RMK)Q`&Q*3l~M*Me<_HZ9FUtvKi` zUBp##vSp~A!jknz>+v4frk2-+ZQa^!ePUw56ptnpUD@XB+13RF*c${q>>+e4XcX-Z zIE&mSp=Z(U-9m2UO6K(GEh6%*<@#-ct!ihmSJi3=4qR&3d6K!x z*5gX<>qhSM-7D-6)9hvj?PYGG!enuL?pDpoxW)kln664>?H%-so)#}!rYr0+Z|v$V z)8($_0-$h&YYI3(=-NT@E=0s?FBV2Y_fnJVHt+Z*?OaqZBhDuqG|BWLD-AS14}!=k$dpJK`oA!)a<3XB2>-Fb{}er&zIKrSVuApnLqX@FSAz{#b42%^HPqd-n_{9h zx;31VXk3?QT6;8659D2Ec6^33NK5o(|8!(u0#U(d26>t04Jwh*l`WjIh4%oP*!B`w z6@!le1=L*%1bGPvF$@5?JiCB{$M&7g#xh%{p)tUYCj)NJ?^E!$ry(?bPo|dZcQ>!G zC(EaP-=~%zbvMg#Ih*-W!}yJ=0Fp~s9MQ8ESe2Wn_6jKZ2-uU9yTB<|7M=U}3eb7@ zdUt8`E(QR!3k-l&io$Z;c|BZt9@w9TE3t29=q9hZfOGf9`obv(`V1%+qc{2q%v;); zfbHV{_zxiYGIu%!Ti~FJMiixVDLixdxxlO+vpYPsepV)!U;1=sy3GQERSNW}d-`&D zK>n@3pSyOlp)ylxniKtxgvn0J^C-@dVbz! zuVZ=&Nc(ef00(d(EU&^U=W`D{Z1pPp2yk`2Yk)oRdkOTav)4eVFF6D129OVV4YYd? zoaD#g;A`0W4MhB)fyG>&dwx>7x{oh+|2VwMD=!E;5wteG)4;x?K&SgVN;ek2;|<3P zc}ZDRxon!t+rYoC0L4vwMwC0|N!G<{{Lfpo4ivz<2Wd6bGkK?W!p{K7pZpEP)sct) zH@BO>ysZ@3;SI}wY6}p&EJ1i)q~XHnfUP6;B7?!V*TJ?QK~3+x#`!$ZyS;n5e8_IP z3RpW2*psVDJ)SdH4UpdXlDfW=hY-LI*xNbG%LL7fhRrKMp1t!7j9UtreJG%PO;Bld zT0R)jS=+z;<~QZo9?!?K!c_}2;phDf2z(4w)}JfB38d-ii@FJ{J~nmnY*=gTFA)hG z@ez}L7UcXF^nN4o_Rx*f+MAK)bN=xoept#oC=h$y&uP~~1qL9n?Z1IQH$JDmz7I@( zAVmIE#pUH&J}vg`Vj2JOZ+@m*SVro?sXPBU>^?t1zfs(TKao8UFhG>yzrd0I91C1O z2x#I+mgb43>dLn63!_p@*Y=I)`p)-$Ri#G>(tOe&Ymrqfm!1g6xg^@`1Ex7@Dx z3l59Nh=3PfYcN?U7ti<_$(6P4!s3mhywOk8Ztwe|_O z%iQdYGVm-tOVY7T*6+q!)VH*PJX+7iiqYwCss2p3OKfQrOwj|G4knsR`3 zmEgPGwlaPUIr2-ilq*}l{L8=s0GvB}{tSBHh@Fy4n?8-Yblsz=Qzwqmm7q@%BL^*3 zj2Q845xZOa{tZ01p0SvV8$WJbbLi#FJueduJ-YPi*H&+~OP!&B60xt%PJ+Qf-&BXs zsbHGDt>Yct)4PA4i8%84^y|k|-rO?_I11qV{|{h*NYHiEA_B($LxEIsv`2(hwHcuk z3F4hHhbb9UfMIWnrSRPg;~fZMh$8YNpM55th@vlQ;lS32F1`rkdj%pDqcsW|Axa*v zDWM<)h@nRwg^+ak!j3f_iDZ(_l$c_ZPCl8%iYRb!!XnP~r(~8|Zkd&J+i=ND15OdC z1cNEKqTvZ?I`JWG%>bFnm~vvk37lZ|VdkBB{>LPge*Sr)lu$gkXQ753%8r-VAsR>l zQ&3RAUxhW1;Ef{WiGq=VEMNjDKISGQ2?#JJs9w1A)*+dUuF7hwP{0Ietg_NqDh(~V zifgXA3ZkfiyUqd13aX}q!K6L38AOgt{B_HkOFT%zuq8PE^=q}(ZrSIo+HOl$t-KI= zZMfo&J4vtPx??GK4fX+T3Y8k`W?0gmOK-i@Wy@{8`tIW`45Zl$aKPdADw@DUtfv73 zOE?8@4QPflN4qOfnS`ANUyO0aukOon$Nb_D5`P+xOfr`Q)>X0(lOjBX2Nce z<}4BoE2U`+{f-b#$}1@AbI^&x>T%IVXXZl(;0n!j)9w-Mw7*oKV8EC;>w)PD7P|m* z4D*g~bJSvw-88=1zH)ThX5g1!+np^&R9;<`Tfia0dlGZM{U-NfCa0 z_S*Lm`xm@lQM>Nq@pV42p%1L*0)?pn zdta=h9T8Q;F66F!7wn@F|MP0q`>; zHEME`G@_(fNRTHu0)>t!pq?j>FvL@CFOOVET)=t}l^aFGU_MWQ$O{{ZEK-(IOXRD!*!vtOygAU{%x2zBhY`+LZU8MKA zZMkf5-+P(kBKJznWp6V?Yu}2zp|q&2u64Dy+am~71PtJdw9bnJjUad(p~|m=x%Asm z3>Ur>o{xOz`?mT%c*7>^ucG{GM%EtBwMFQyDP)+5N_`hRLLe`PW%1&&O}N4|#>|B= zEaDg=N~Jnx(f+n~7!sGm1*O}BsKVP%gA6!uE%SpyGa%$152DD9Td$NQL1h|7_-8Y& zv6svKT=vYL`imQGmV=ASY~?bOsLNmOvrWQ0U*+og zA%iB!3+;=53%HD0C1A?`mKPiZx7I?gcWwrx>-E(_W6ZsN?le9Cja)%%denwW^Os&c zuRM=N#eG=v5h~4skSH)>h>v|ZV=B%i14Qy=v_{u@9EhLy{+rYUx2xPi+ z3S_NHRTIM2!8S>*ca3co;g~tUuC}*pbm&oUM+B0}NiLSn3|fDC-3g&~C6dMGY|ES1 z+wSa`*^TcQX~VfSlYt*=9FcDq+TvB7_ zpWtY3sGEIMfHo^4Q6Do!)SbL?#~zvOYlv*7VY2@s6_K9gq;Zs^NrA`l;K`$2d**#k zHsnzk>f7HkAm>RSUM97w(^C&w&wUA0|FIgx+gvpxR-WnF`e;=Fo(hOH)y7BKPez{8 znqP2*!-{8C@?eYQQBN&E%8h36W_EDK=ME^VvPAbDu(q4$CZOTr!(#g`#XiO4Z>@v_ z1wOQ)DzFivuga^e4>qse=Lsl62Crh#DpD$na@2<8&E8!Vp%F8`Hc2pUOk=n?D9Vqc*ZpMFk@ zP(}BaVmKG50IC>YsS#M26%wr>XI)~CB?-S#E{NYD9=zP%s?ct;$Ii=KJ_aHF^w8d{ zW**?swBV9~x{}_SC&v6{wzAa0`V;|5oHPN30gffX-Emkl$R4Rs{?^<*PCn43);XY8IBq2e%)P$`io&nAj`5|FLEwG3o5#u8f z9C!BRFL1t+ew5VyX%cSU$#^+xo?+AxGsQs~l5U+Nfh63XOHiQO--+N6hslws)|`k- z=x7ARu-g(H{5t@s4`@Y-zjBIOky>OzNu*^+h_RVpk%YH$h$quYP`kQczp4M0y8lEl zPMr(pnYzmZHPXue<5nCnZdG;_3>b6hxu1Y=G#?MV!btGB*OB#p2e460X)0&&ra(ZV)@D9v38zfIlj#Y3eI=3MTntu|*sPl$*z( zfk`YUM&w+G>$CGC5Q{ZHP8w89V6#uaNlF~*PY9d~O@qX4EJn6FMeSB&HAzmA&`-|X z10d^bx)`GA!6X^;gjYyJn7Jk+lsGRG+S|AyN8-e7#F#m_ro@|rtHXeWvfw$~C4>z$n{zN8Rtkv)}k7mAO(%DFD#^(NMo34bCXsg1voe)BLiW$*+J)ENyD?lR!2;!3|^pYiO zlC3+K2@ytC7Yb5q4hGNbIu{CnI06li$@&a+xS&b%Z%k^-`A2+|OY~+y4EqOK8hT7B zFJU!}of$-&6BolG7bQ5imMf={CBKI=n<^}yM;ZxxhpeP0n<>qjr7T|z7Zyso;43y; z;_WBIj21N|_}NXqaGRxQS%FwhZn{hU?=~=4($t3@EJY{&{nA458nfM7J0;q}Zxiiz zTA^hcJFhed)oG5#D~e)RQD#w*jdX!^Y4OdhJrZZ}!wIX0eUY<8uIpMc&scG2893!w zNyHn8lSPSMP)T%H4!C1s(wn@^ZE;!~kM9{+9B(OyYH5~qwzWkWumm)>G)ygzw+utI ztRgHeg|>WlwzM(KjPb3^6SKUmBu72Ebex=MGZ>ToRV2)70%Jo@Ym{fA@CZJW$}SoMWj zb>mtgSaLuPZ*UF(^fL^c>KG0c4h_CN492|%unqxr4)J5ZraYuh6}kS3m&yRSp6n7o7Hd2LhpyqLVnb^&qAO{g{9`ppdnMI*4J}?H5JIb7>!v|DCVjW8QB9#9 z{=G_HpZE$?NiaTUYEDtHX~VIbKX+x4q;T@cJ|h2Vj0?om+h2L`ZUOkoN8|a7Sh!>)72`4w=br5YFIWsrq_eX zmhGf>aW(u6U+ej;luelKn9U~70yeih~Jm1wc(@%L*EMr;7$`483&NSIxA$d_b zEYi=>;WJA+NKsRJHxvB(f)4}ab8Nf{YdJ2zaDzGTdjim@i0^Q zfbRy2zjlAr8tr$|=G!q2haaox8^+tiG_V>4rUZ`iJz->2j4Ew3<#qtnWD%SqxX;IV z2A{ASA`s#|#A%y#81Lh(Y9k7xqcU;*J@n%X z!W9D_XzjVh_d`TN8<&LrpJSkfU+pu*%cMDK>|G}Hi=o(JIN1F-EO zHkC0&nK1VF(X&iH1K}xsBn#GVFo5tdeOA#9iGY9GF$#__JG3%Fqdy)o2ji!pcHF3c zQ8t~kKEsDKgTdf@-&8@@3D`x>jm77j@pZ^^>+^5tBmkE#(V89;%-$Q{Zx>)FJ zol?zoR?(gjvHrW~G1KP&rinm!APYY8XI_eU$20uZN|>jb{Vn{CP9X|X^J}k7a973VRBh_qY3tlz zYR^9EFiDUI%gaa9>*8BmdFkIgor1@?!6n~PY3o_9$U6$*+WC!m@g{iICwRE}>rChC zQjPEeS@6Qx{>IDX;;Kr0bm~TG*sHWhxVDQz@BYlVjyy~5!l&*AX}hf4SCcThyh;0d zYvzLYW}6iR?9Pi)rt}ss`sYbjrk8a#BGVn$H7cRcsw4wJAHw||***8R;RwS6ro^rM z78J!c0u~Y&0RjO~5P0uBcl&c2Y#yGstm{mL>96#54nxl)cR%dS)EzqLqvG~2k?Kbi zn|pI6V?Di8raH0^9gKyeGK#P);$QC1#IaISyb{+dhp zCBEvJFXYL0JGPARmHVuAs}q$9SOAi|su~Y0G}IfU z!-2l<&!?<;;qiIS6M8Gbe=Ul(E1Q0gVLorhJkRyUO(Q}#&VKi;dw+;{V`zTru7(o3 zcsm#WkW)9-u*q2zU9mxdg7E@KOB-_h)>yS<~zK zh>0_m%9rRk%Qqd`x0tx;3FF6)*j7Q*>({Tiw1tVe&!6}NtK}h{zJ&C1q_g$E_0cUK zQc}awUNR$cBeMU~M~^cl|4$#y>V+SoDK|vNwW_$F|BpUem86MpdyTJSS#!f|Uwg~q zPk-SFAw?28Id5912?lVBhOl}d?xcq)_61(M6*;^dZ067M|?7)Wn^M-B&0 zC6QwlN}o0E3zx~>@mxbXmBH(L))6wBJd`3DjLKlKFehok9L;Kt8{fx<^s6`xRwD6- zoS{Z0G>A())qnKSyxZ4!wVCq&=%aXSG;GZd$8(SQ1&mviTK7%VHOaGj7_^2eY%D1& zyQF%ftTq=dwX5}Zb9a?iudF6YcHYKU7dVo;K1xFIONNQ1i|wqxEOBE1X9z3804S}G z7tX59T~uWj~Rd(N(#w9+gf15^t416qbSXDNPxY?4U?#0(Mpkw2Xm9H%kg6N zL!^ntl`@TwhXyA>r|p$819t+8DpN&TfhsH2iX#m{G!Attb_9DRAk`e#&5ReU!c{fh zmG_N0*in?%oGY|YIERu{LCw!8!AH&r0XYL&$z>~;d zrR}KkP}Ln}9>~lHpZrU8gTpekHFF<1^c(>879^hr6+HbXRt&#t%W_TJa@v%tZBb}RrMVVD3-XQD${%d?RkQ7D3A zSvzq~Zy9qa<$)kmR}9pd!4~b2g0phpKJ4<+Ft#pt1TBoBa?PTv!dMlO)#_= zmA_8|Cpjba4(HS+_dzUMY}J8|kWSogVt+EmN*WOQs_!sOEv5dXFntPatGK+2_uMPy z5`Wz}U%+>*EdI(|wDLSlYOI|pyCN7gKt+5b)C-*4M%g zx!tB`Qsygu{u8mJC-7C)6RrUDGmW$ZN-*D3%w-dNn;ZlYJ;sk2IU7n0y7Du$CctSV z2ZlwFAF}5fmD=bBoH8~(@>orf3u!I_St3AYwhFOvJ_rnu(*H-@&VkhsM=k8c4{^^o zbk*+9x!DMFy{BDB;ykWUMGM=jd8~|dM=x+%vgbRUPvTd-3Wnb90!~v_8_Cy~izg5w zfCJ4El@_wg-$f0(!$BJ9^g{;#q#l7Wh$Z(oTEYIDX%#yQiB3)nZUgvoi(mOhCUh8i z?1YTIO``(ZQ6i&I;*c`b5kVQ9+9ywohLqRg&!i??5CfwOcDHBjRaV;i=eyM%VLbw@lSa%c z)RA~%p$AD`0b3*Ko^8X5ia#}O!o@}^J!eLj{S*el3NZvyQRety!VKE|Y~IU&o?0~2 zp}HV|Ew`MH3Wi+xSMc7THhSea9}}=_77oWWUk9~B0u&Y0uC|64{BsyYBUb6mn7x4U zQbR)TOekdRFZ%RCzf_^dd?bWJu^`4Uzc($X@quy)e@iJ9a__HvH*i8IV_KEQ+8H_y z_OdRpoZnit7+SDL*z%KQYVNR0wTNUTMwQx()6%e2Wf+1C)^yrp21_ldaxPYdmQ+_^ z%O;`!s=Ye3WPxSbiK1kcev@bhNarD4v`w|%DdmP_stf4YoOO5_$;Pg4ixUp2NHLdI zqnJ{FSwB@|$P+~>;jk%?(ME8PZ?sf~PAdk&sfiX2!<-{WZ5`9NG)SS6tOr+X3$>ZM zk%6(FGE7@Rma`@JCFRlQT?>df5MJM}!{`K|ENP;^(vGuU>HIvSZ79jr;nY&)+S$I@ zQh-&#j&WhKUam4U#?^jbYT^01x6Us~6*87M?h@RhH(m6D@SGp}fArCoUc~>^N6F~A zF`tG^nXIVrcbdTomTnLnq^Xg|6T8T>tb^ob(NWHKyP53BB>+~#tDQ-x^s2RgWFz*c zid=>nTW<+y#{oEKZ60-+ZXb zuDtF9XGMBj6OH`^Nj|gf1GfRHjnUGhNNneq?vpgM#HH5@a~mo{vqja> z9&Jx>A)I+Z-SoyEQ3dcZtxnQv7TLDCa_R`l6m-vy-2zUvDmHZZ<$;hL_6 z>upnoe!jHedJ+F!W|+N1yc?JIs*$<&_#!8AnK8}S&X(dneP;WOUzjC6XYMJ&jJP<~ z{}t^?<+E>Tn=QX$_|R5N7vyz46A!n|+LfJz2cs89$(Qsrc)gdKEuXtj=KtnyJA`Yb zXWJqp^cs2n_0Y@og~sju!Ajos%C&p?e3S7oR&4q@uh(}n-u+cNVEJ(=FY<8i&2U)^ zG`+&;d+XIQiqrviq5=tWlmvWFX>!0&VV?zZpenOSq=-3lQ0)scAxyp>;5mTVY$(Bg zkhme>;!JvAj_E&Q*gJVZ6)~|{Hr!m`ysPrp;Lejz4gw(})FQMXO$?;T5d2&Y?9t9^ z12Kvh?D442Q^F34MJy<1E}9n+I&Xlx$0n@$F1n2pf{6k8BOI3Q5YiP0+TJ==)g*G# z?v=t$dj<(EZUA`1F2iTHgwt=AGBa)%lfb30V(P;0(laPw_CqWrNM`Vu*7ZNWi?|>OdO1lO| zu?0dy=u19^OiBBPv}&&_bq>Kb?>oU}2EI$a*F#6yPk*&{vp~wC`D>eijK(K{DNmS= zcAuapM+S$CJu4kc)ldHx3CD{*gBOd7j zCHw7KPe%x>^>ZY+E97qBvkS?#*VPy5+*TrbHXl5 za>zU&c1~2N`lg>9CYPIp?s=x;D7`M2z2~`!7H+5>Z}BEaru*1HRH3`$-JI0FHu=h+ z)M8Nsl3m5Ve(*|8eL|X4*YxAduf|ek$9}xg(zGXmy8WI>!mg0B9&w_=T$B z;t9(LbuhEJ){$A~rPLEUu5IWEsMN8VG}A3{$x(juJle=Se^NxF60*$6DDu<9 zsZqhn4Ax4#Q-wnuM5!Xp(jBDIj!q+5sIt$*;4?z*GL^Y;(j6EMG+98iD1+noKumCq zxxPxZ>Pidt{9{B&X|~L$*)5DK2pE5#;l`4en2d%+ov|1J&FKcrf)~uw#mh>U$fCO} zh(Ah(G5m_&K#T9-E2Vd`#%M_f%c@mH{r^CgPeJ^Hq$9?ls#}sOZK5^97p-mUNlKE9 ziL$6>wDe>zum5u%rE^ZjNYxTVryWAqnpEDJMJMA>PEm4*qEZg|<9zV}dR@*k#jU(8 z4ZmiKj%((e^QPSRz#?v~{F_&8x+|>%_;vpQlZbT7Wl6Q(nm1}KB=3!XBk&|gF>xEK`=E4fN>!UT`&1IZ&*?HZy- znwY9uB0#dLplYErY76fF`sNF)2sOof@95z&au9le7bwt`!y0QTe=EjQ2nxb3>Kc!~ z3r4*DkpFf2L8rv9(uBG^hc}uuF$ei$KCNs8Rm3)}k^q^3*n^%9pP`QOa@AyL-H)Li z7XoCp69345D~o=+N_O%tce=uQdr4#?4rCXA{d>kbmhy`DkUp$MV%-8jM6j^;XJJ|J zDjMGgVaJ+X-KMbY;b#Dsi4FYv0m~KYa(Nfu~OX z#9P9bMO1+dO!u7C_kv6h;?)nom>yNDA4RdxA*+)>s-K*G+$q64om@TVja%H=JbR)2 z%&I2-%b2mjc-2O?#901X#-zp0_~|fEiQE6;1pHwWx%Ji8GwqgBzQvUIv^j}d1EO;g ze6uA0qR@)42YfpDAiYufV1PJJx?&XhA{B#N7P)m0g?hdO*Q?>zA%j8dmk6q{3G2HF zJAomReCn!+P`A4gzY?&rqiJBKLN9}V?xB3LOPFCs*82%w?=z0bA|1hu+8n^hXzy_H z8%1p#itm<&ngt^{09lWPxWw-7Trnov#e^5jws8qIk}txx@P{TKP+9^v*&c?d0&gF` zd!Tl3E8ZEl4}JP42%H`EyuH>&77>@G#}9kr^&do7cfWV?F&yde+aWsIm`J1hNF`XM zAICwJ?{I{m$dy@H2AQeyD@VQR;4fJ0w1KjO>mp+IECBgB>h*z>CI>aeF-j~O805OP zI#zniCAULX>P*%>HwU&?MqF04Y=c?w9ea;5~cx zk3^Gu;g~vH!+v~DHb%#KgCG9vP}N*a(chvG!?p+>)(8ie17+t8PyW3SxJ~yQ2-~tS zYS_09g!DdDqX_<2xs#RWSd5pb;bg2{ly8ue>#qQ{9hyEA@kZcH2Qu5W zzoIGThbJZaAN^2ZdZKa`>^zQtrHBxvni~X+9A?f$_-t`K5NqC08&=p^WT7Pb{1A#J z@3ao6WY)J?(0Uc!B?X?@zs^9PN`MavTM+MEuT3Tk;OFUVbrflEy0}CaM>M{ z@533I=U|!~)f}iLnmKpa-V-0}m7m|H8bz_3J=A3gE?4=$0-TvR|5|bh?r^#hftm98 z>Mqwcl>Ky9GjytMrlf85Gz0?B5}k`8oPU(|*jYMz9ybf_G;=%p%evnX@ZZ1<;KPkP zQQSD2?={$|I3XGSdp={=1Bvmb!nlI%>V=$gMD zQqO(hz!k{{K~nCJ3V#000357v{}^^rwleqW?y%9QJa3gKZN+$j?@Oi-*_Uy{yb~Zi%JQh0 zb_Kn=ZW%BK0$ZzFByf~1aL!r?7d za4&Cu^z7ObCuA;{_k1U6f_~jy8{-}9@LnkVf(Pebg(U(;a6Ol35I3e?s?Pkkdi}dX zLbuZ0IQ{&O`yvla&inK2#4Y@!`kk;YK&*Pfz56a32|;QrArLJ88zk=>@4DmWzo*B( zOK%FqmR`LHp z!1@vOTF8iqJsO?)=KAz&L6 zyFV2{b;%${F$K*vyRwJug#Uqn6N8aAd9!3+%@}l#!S_o_#WfD6-O#=vU|z;eutMc> zn|&Sv3kLT>xsw2MFF~ zK&S{oS(1ZNIl6;|hP|+mgPp-(W}xDvU9uZAxB;qRgdarx2X!M;A&(6ss)SSw5YW6A z&b(%)7s2iTJ&FXK5i;m+QJ}sbeG3hJ5W~!CMED;F*e{Cw1}e;3S{x_FLrJwXH<&2P z^f2kipC*WC;TAQ&Xdl^;!&D`O(4(}MOjVF{JI>~SR9iFg=?svA(&PVyfFWs5asn{_ z7Xr?U;5_>;1bkYMplb172)H!sX5jSHoz3eT0`6DXp(rhJS~4%I5XG|ihJY;s9DXy? zoLADdhMZTGb&j1^$NR#7RkG^a^+G6Q&_>ksaN_yL0H?&=lhfx^$MG5YVsPN=mz*pC z4O>C(iLnczmNshD<~dfde?@nyn%HF}kExo*T&gN8w#u1Qx~{$LfA*&xzn`dQ!Cw2C_}L@8dVQT-nq zQf+kkn)Z|2;q$gr{O9nPP~w8Jed%&PO8ip(KyNyRa4}szuu)gPJuEaK3qW<$-k6oo zsdT3}EbB+hs;wAt?c1ZM*MmABNhcy$&f5%oj!ii%Plno)XH1H&{bU|JXtO+#tKB5+ zlY7}s`yt2nt`T162V{Z?5DZDo=h(c+?_UOCsbVxcPk|gj@x$Qm8|D{qC8*I39`P< z`v~FtuzMQ`1Hc;4UVp`4ve49cFS}0qez#h)<`DZZ_3S`f;=Q5IZ zt#NRMr{8CkQXV!Sy!B7*3Cs*Imwf?OqH?e*QVXMzL%#dT>D6nD^`Jia%3q&8eQre9 z!!tbC>6d!&K>5*eH~#nNkX^x{m>&s64r9h4E8>+>@Emj8^Q|5NttX%4>Q%nuq&~+e zpHj4wdo(cXJO{BbO_WTt*X^x04+uF+`BSWZDsoRDBktY|VwPqu*r}l)*`G?%mY%kTxJ)JLu%VRg2c?QP z)GL(ZZ4qE8G18R z%X;0$Bjdl8t4@6JeHp@?IcFK-$}7+3aXo{T=5A?HS|0{X=_bS%K478*2qHc5Eh~5C zzZxGmqKmXAB^MRMF1z{ySWNl_17%{w+7JoZJ=FA<0qS41VQLe5nEoq$_UV_R5ETYg zPfbuOpWce2M2*(Tu2a^G*o1AK;PX)@r{8J!+GOQ(*0{V6!ub)-^1R`>1TG|bQoZW7f z7o3Z&t8Zrycl&;E4}|7lhjPiT zQ8Kp-GVESQG8OF+USC{_W<^HD^RvSXy{4u)b0wztZ7>o|Sr{S~2hVp9Q+B^Hc?T{G=OA^SNXWm27o7 zYM@YNKw!Dq5mVF~RRK*)-t;xzV_e{1H9iy|ezeqDicM0JWsp&l7+mwl?>Of0TiTI<_%>31WCXH>0HA zj}`#LOaNyJ6m&=crMd|lh#!oZH#(ZHteHQhaPUNM(Zx6y~3+b>BHQK6JRd&z2Hy2@R%M656p6-tdBq^j%_kf~^Gw9rPSIT^DvH9Bk(jng$)d zq#j7I0{FdxcBB&Mr0I}B zdey@snqy1+A~>aD2|^Ki3Y~*O44ayQupt0(V-+e z*W?$9WEUL7gFF`ZS4`8}BySB4H=Yyz!XjkE#%C zb2$|2OU=gNi)|IBnw*_^_#vrU(MY?!I>%c zB*sOX*T{>$&86n$htvmI*!LiB%VU+6#cH$Qq5^?r24RHdW7ZU4<3*u*%crrxzJj*r zF3Ud<^@OJ>;2bM(RLuWn0m0LjFZ~v+=vMgKpb*0-y*)3FlDkl9%mdE95Dlg1)3xYZ z+_h*cvRW&$fGrd*O0tNB(zhu3bCz$ER_qQ{T-;I+8lP{pn8(!Su31(b)aL53rst)J z0|ipzJC+}Sn;*s~DdtouKu) zdaalnBW>ZWY-g!hN~=Urtz6TL+FPjH;Z5zqtupedJaDTz-l;fAQ~Z9}UY!MQyj7u_ zSKVn=hnQB+FIBy?RV(6Df0X5Z;MTOCR=>m60NiV&C2C&EDxlYE%DAf#`PklYYtiY_ zkhN+{gsZXJYeNcap1!eGyt;YET2eeFT&+54%PjKrx+Rx7`u94f{n|&^I%chU0qXiY ziyF@MdXhHh2(#j|?|GVKIGqe(8!w7PyU{jpgRDCrcRLHPzyemvQgC&(L6xs==do-_ zv|eq!as8xmoU2x!ugOKNAP%2YZzTQ^nULG{wP|Md|LD%A1Uf+`53VYMGo2Hk! z-rfb*u~XJGuwK)~*X*3$F(uPJEz@9t)!B*H0P)_s0N2#5)h_1VzRK5Pt<^d5-pOX! zv3b^cFy1l4-OiZabvE9)Op~_~>>0Y7d}Z0TJ6`bJ(A@n&SNg2gaU+xY$=8$j++A$h z>5qc|-qAy2-V+esbII0G-e&ks0H2@t7`1nv()7|;^ukT_Vq3Kzjl+k$rwu$15o-66 z!1qjvwW8+t&`gwqcJx8P^_cDEfj1IhRk^P<5>k;9oG}vdkrlo%5<{OA zjX#=z-@T$Wn&MFypD~(Ik)FOWn$wY%jXwq~=or4#8Y`jC&(9dE_((3_7^|TV_2eI4 zZSHRP9|)Mf9|8Xx0xk#@5%RT!dW37}&FE9Xbsv=FADVg!?m%hRh8)1%smG@i4-fV26B3TAu)5EO<5+{k&3$~lM_H{{C&@rhYNgnS4D z_gC4uW9>Pr%q8=UOu@cNliothFQ$c31oq# zkMM=k=ILLN^SY7l4w=}9lS}RlvnmLyd}|A`1S>_wE6wmr;*sv}9gB5P%d%EW4d2dl z=2|52>JOb&Wb0{0={5CF5+>{ALbVCHOo|1MSqPA+n)>z6iG{9Cw*tAf284wWf~mGV z=60RmGM^=#n=9F-lbD|Ko^nF{1RMsNuGI)`3Z4^bnG_I_%kctkos|m&i4#rK8|#yi zpvuFl{_{WPr&cT1A1fMx|3IdQ<+dNKw%B#HUpKdltOwaD)=K3-*mYJJ?pD$W*6?EH zS~h3PzMpTGo4}53B*9s6rP=AvY1pf2T-|YEgjvGKnTw6BtYb~E?{x`3Q?JJ^_SU>n z;W945w92I`R#!d?;$EI-BDMZHcU3;V0Q)k-R=o8_-f;;n!VJyM45h+;&T?;#+N}Pk zAjamt-{kZUvS~=g*{068LjpHx-Gxj1J+NOp5H>sJk@=hqZJwQxb_lzizh*Uc4)UQE z6*CVPIz?2n)};j&8EFA%nfd&mB!dWx`?Ax}){}EON4{@UI+@2`9R~_m^HFOj4+4ve znJl(ZF-&rsBLqi49LBRu)8nA8B`3Kpb+6^7%CqdxnSY-rqA-C9N|36N2U%2yL~-b1 zf&kY}5$~v7G7t*)&Bfav6WN0MgM=3aQJc-W=gGgO4P3`8bT4m3w-$7umM@QBZ8jn< zmue9XG9?bIKQGNrjy2`Zo$MB8HWzlTNT?BU;3ij*O`_syK5?TldWeXVGiR8FJV6g6ww! zXXS*G%a>=s6~tA(%?H`cd8+9Zt;j{G?(=(_eF?-V&h8j|-5b>F3-ankweAP9uJwqh zLqx(NC!38j#AV8ylLKYrd~l$;lYY>|F<$Vl*>9|H1oYp!2#Ath>`N8n!AbIaexthA};7LPpUuyR< zJn9%2ceTypb;m#TDhCfpuIuVxmfC2xygdz0_Jq*N2;MhA&Mc|Iw#5t0}t^28p=;YM2>pJI4c*SB96oy)) zftZ)n``IWm1%n!rFUxF<1^GNwNWH{k z$mB6`7~rYXXVzI-EL7|ds^D}6EJ?rSWA>a(6$l1GPMnRMOxuv}pko`bm6oOHgX;7@ z7ey<}1j2$CJ*naqp>4HIZoCI?aR240j`aPfZYD3!*xzdPL9x7rS}a1yK`QyHQDY@F&N)fw}A39acJdXD*TPZ&Ll0bu*{n% zAFvTlR%_)Mgph*ZMd2*2wp0Esh1hUM^uXKO)}?+l?I?U0Jx=NNFaF)^Vin<>?IuN| zaWZW@noNN3{bPa@HWhuU~=s5s2L5aKBH zHNT?NqVzDjx^D=WsSi6pf^AMcKay+D1;Tc~`X?s)mxnS4UP3JddMJ#6WZxe!i=1Wr zYafFJW+J8Esm3C?palAn_^t37qI15HTHZdR#J|Xy2aS^bu~)LN8}+e{Rfl=A#YIgWthpET58fFad+AxJ#5- zekTz?Ijk{=VRs+`A8l>%4ESiYV}yRLsl}lRoygM#1Y9AfwFx6dZ9z{;Q{c`j5_e1r zpPWk<=e^EfN+aW3`BicYhBmER>fdR7MfWy!x7;!ry&zkyQ10+RRlgD}!wi;?I){zg zVIu!;2$(EhyKaRPsJsYmd+8uw>3G%UEvaFW9aJH?M{b(^lSHDLeh(#)PxKth> zKYSz|+mY4C4->BqiGRRB)K)&&!bf000~1ucW)^HZQ*0BAIBx-Sc{( zz0=lyJN%%!GnXCN?s3>E~RIM2n7_*#R>80-TF6pxz`oVUjAdY%Y^ z&a4;i53@h+1~C-hNiPy9i61HcZgBu)A6g!BAgwkDoYpr4+{YY*ze@yTX(lG0q7cNp zL4xFd(oY0n2@%ErGi>J4PeywC7x@X2ua97xd<^S>crGQ9PZA+A1_D2Iq$91QkhzCD&`w+%9)_mg3vzM?26aB>nj z^ARyp*4QxZ@51R&QgKn%xVQ{*3Oe&q8Ks$6nm%$WzSB{8Kh}gi{6h~oj&k!!%Rgw5gZ##9?WdErery@2spxBxXzf;cY?)`;RDA2Da(}|uvhFgd1kP8% z9I}*2R2-><-cP5!0qi-~;0U;v<}?1J?70sflqEM5Gr^+ld8nBuoER3s+3;@(xU9ne z&4a3ATWVTzKA&1j#$qo1kE}BYLy5T7*<5npLrjAxL^`4>$zRXvzcW1&f{JJJ*#M3b zYGZTRaEpa}(tiV<7Iz1$~88Ol-kc0tNk!SO!JYji)M56 zki{GgeN$A|&z73|FtQ9X>2%I5mJxrAecRr$ZTP?aTn0I6{0Qg`Acot)HaKd-bm$F< zlGT!5OSm5LR=rC!SH?9l>(d6yIPuO`r~Nn^s@>?*N#C)ofB&*h*I}^KYS+vQ<7}$S zWUzJ=TPwQbpcD0j)F2}dj}42en;fsO47b$YBV4Wtsbp|WKi@b8MjbSjLnm7dKOj}F z4r2g7HRa>aH?RHF0<;4eUB@lA?qO@xeuSaNmGsm9bb-a3kX|zAx7>c;Tdq0TWb%GL z*CUpE=8+wgCc}(n&w?#9=u@_nv`yTG665Zp`D6;Dv)YA|k*gj{!|PwbL>dVK#YVKb zQK5*~*bAB(c)6qx`VRyw*36iVovpBf%zrb3&6reYI;+Lb#@Wl~V zKTc{xK1=$!)iGZ%^_1HdTlR5_2|rldB=?JB4wPG(AQ>-kHf$<~8Se5#Ld-2KJd3^X z|KaN{!s6=M1q~y?B?Jg=!QI_LfZ!h7-QC^Yf&_Q1!rk57-QA&Z4^;F0a{637=;io=usV?s;+-e!V+Tmvoc_X=n=jSnDAW0AsoclASj(x1 zr)6`dwWldomCaG*HDQHy#Jk)})M)K`ab`s3HP=n~5v*TW$K&v=%w}`u3cQ_L8S$;5 zMQ}E>U0kqR@vZL?Jz_S$T{snZ4e#r6wXF$!asu#e-k>tYZ`fRV?eW20Wpj1CzO8y5 z@ohs9KXty@Tm`{lZA0sE_butz2aE9UX4-HM&{bZ9N%QaF6YQhIw+vJ0 z-^BB6$Ka^*jA?;xQoQ&N8G4@vt!!`oV$}|Lw|IaSzPCBh0$J5pV(f|Ci{Ta#t4RHqzM2xbz{e^Uga0c=V zs{sb@4u-G+rqm9mk^vH)0lJ|9R_P47ssXm=4tAgcPUH?wf&q+f9#*~qp5qtnWCQ%x z9sFJcg3%p<{B7LQ9l~7$qM03{8w28(9bza_uE}f*}nQ_#2h4;fJ^Qu8>dDx=Yt5K7F#yT?Wu%fh(Fu4Kfa zxktlE#%{UC85+&5yT=u1#2rZnyGY8FzQ>at$rZcDTWiGES^!QW;~m}OKV9Wp-4oa? z;2R_pxH0;^swxO&EQDyx3M%-HxBsIvloxehnAKQ>*N~IcSX9cGgva=&=KfDo!yj_{ zVvgj|`upO6#uA#}L|u&~)AwVdx8G@EC2EbOEpx@Pjb%oSZ3+veSNCOi$@vrZWp0e+ zU&sjrcI6Qd6wnW_VN4WBO_XR4&hK|LOtcOsDhcFO_=E9~X zp(dvJrk0Vra;~OUrxZMhrjY!U7M(@Ln#Gp8rnZ9QR;{LXjK#RVMITOwmXxUj9zg%p zSljgv@jfwJ{ejIc@rycyI)uM7quGjMRbP*;leJuQ~)H1lMXfC!y(3#5XvEw-bj{_aZ& znLwo$N*R1(ChUD+!AS+fE)*(d>T{~6WeN;c^7r$k4(~1U89fZkrw&yTf|DqM6s3&h z?Edt06ctDvW(zQ`J$~OYcaEhFe*wIYm>R#B#mxfTNFhQwg~IVpVmEUl508Da&7qf% zLyCb3n`REaz_|3jD7>RT?`9IK%P}i@sgA$pNa3)1<;A_5{@B28 z=NJ&-C#i>)3P98$*K^!}^L3)aVf16Y&LX(KkejoVb(QqshI470i)AU3KaTz$u(msn z43mQAt?%^nf|YZ+R;`E(GlQk|!Y7kA<=L(fKu(59UbBf^;ssw|Z(zk+39yZ`@-X%! zdhmEh=_vlN{M?XnrMB>zAh7EFG;Oi)COB{fwm+cKgmA{@niW_xd1yaNsjb_cI@_}a zdp-p^kKn94f2Tjdqpwi9OyDhVv7|YTtmIL+*k=UA)Sh*zG9_$UgvO!SXV2j;AyNd@ikIH~1EPzobXga%Wde!zPt$*e0GAOyE>VftQ{_=`8{#xmZ z2Z~A`5kPXqppSZFFUDM$Y&wMndb2Ez5iB!KW`dlm^q{p29i=!^1;9&J7M7aND4lkR zF}~MSwGmZD+5#0ME>4teK2w#PTAFRg+6ikj#QRp=_nMakQupkhLGl?xeeU~ZEni)F z0i6;A>aFrS4IY$*X|-N4%iZZ!+0EqxsN|5_%kw~2J zVAB3z@e01G`W{pR?6f^yH8ln~AQQ8mp|a#0UL(4lh6`Gs#$J7Lt|AdJ4e`Awo2C7# zRx{8Go}~76xHg^yy~hqfS>gP4pu-@mjx@CiJb>l8gzT@a-8@{jciMQBR38pmOLiCo=O$b?C1v#+m0fhpO8l&rEv!l+5yTBHhY7cN z^km}BD0M)*D!~I`PO%Gt*qeFnrA`C$RE}iLSe!;m)un# zt1)YHXcpU}WArTtgCiI2gp;ZSnk(SZS|tO|sEr|=+XfbdzN#r4RfCiGp_1DL6Ly|M zvb8gsY5qidO)Hxt;g2=5*} zy~(?c!j;Yem6}m1^`ObejRqtQRIn`vC)|68`YVUzT=HY0(@Mj zGhrA2?Ct)=wmE>7-pfgu5ZOi!+SSvM+Qi{0p4~n2m16=yGD^f+#NFLv=*j=K8M4tL z7@CJ2vD?eZ!1|`*JBIsjy61$P?cZ?EiE~>pwI;QQ^(5Nv3~V0BRvv_wEPuROP!jh3 zP@TbQb0<(eCl`36<8#vad1OoxBYGah|7uE~^T?VrbZqm;{!X0v-Bk#1oi=80zx zy_7%`wmpAVt7`2k~9XrZdmX&C3^9)c{LaC&Bu7P z)Oq!1d$soQ%~W``oteg9zO)T_bsF(?+_r^&Z|;QV?|yvkPT|df``bg-j>T!x%jP{W z!Pg_wt{ywu#N|Dp<$c5O_k;8uoXe(k_&XHjo$uu}oajA5r#qP8J^FdAuc__YpeIuN zukB*p=p29D7k5{5SBz4}#LIRj-_#HgiCmb$)Q~siuGa+F8(;*?zVcN6*%td#K2@Aj z1On$9W@AtIx8qp2ZFg>ix$izRPTMn7Z_D!OkQvg`#{ElNxlq8j)J6f=&ORL0=GN4m zH4Kuay1%f49gu4R%dc%ki9Xv+t1)$bG-^JdiQXY=J3>_|7v)JdQ@-u*>3ODdvtj<7 zEwfQV%iHgIdix@_xzyT#^nM(+>LV32;9W}7^^|}^eHO<3`|$5oq3^s14d0ZnES;D? zEb#X9U7Gye?G#dHyjfh4J`Cfn68(*4PVlG+bp48hPifBqpEB)dR%z)Q$>)1kaB;-l z)g=nBz!dbnajqVmEtnoRA@yqD<2|YKJNeyxzvR13ayupp7OtH2WAYvr6o|HcRzM@UK7c>-0MEAvYQ9 z!hL+1v-%=0{m^v^J%c@p4fyvdj?!+jn~um>I9$1k!1zAwyA%pTWw>SYrs2Z|S7?mX zl9rK`lV=1xT3#tlOIlCypC-err!R>3bbQkPhJf3~*3SM50eeShmbZ_upZ`TBWcUXH z_KC@==$P2Jctas#6lCus;Dicv=)XklC1#lhU!MgY?{&!CkzYuY8|UXRc$1S_M(pK`KvTgU z7BoAGLQ-K(^?1!wNsWX<3D1&*&tw((o{_MscrXK6N|ehqJ0dx(7L-|4<6jXu%a?2Z zfq&2kL*9jtES8=4dSZz<7+eL%$K!4ENyji>epKu$ zA6AQ#M!?~a4z`=}AF^8MZvn5KSTjt6`W)$K)zCm5sa|&4sM)i&bVvM!7YW$+za9bN zMD5~BwykT|V%WuOR*JT*=H$zxYMh*k;xXd>xuHv+QeQo7Kka%UbrEJ#JpQ?JC(~x= zuC}hYJ6r4e{oT)epak>+{tVXlheG{GDq)Gj^#c(ZhxLO{iMVl9LU9y^u>lienSxyi zadL+Eq+-+7(G@9i4&?TYzloCeuLeWE-QPir5E8*b=<%ju=aJx7)WmyGJBAiSW#-}x zI*O8BX~mQ2xEuc>Z#3WcJk)WY_0BR^4>uYiR1{9w`_@trhqX(+i?5BSk?w0*Ibxb& z3mVE%`#dRWmgTw`VV3O)8Zpc9eMd0QoucnXv|`Wa{2iK#>DnLm7~HHL&2;EqD3aE! z+ONo(p#IGe9e(JflLC zq23BZ6rtrsk0a4v(R0BDgl*_cr`7z`hNr~xh+HOiKR6-JGB$mYY?~__7H}a0v!iTV zPb|<%%pLG9)pl z#;1856igV5JuIr@93%GRz?-jS&2rySIDGa;h3pno^@e0EK(9fb5 z)xTiW7T?4qeeD51LE59~IFC0m*b0mDJvh|SM4Ape{fsiJbU#j=lIq?LW1`5ICA5*Q z)>XWm^tx1&wXt39{VeZ&JxKi9`(~7h>F;J}WC@e3`E9PNUg~_W!+K(Ti9qky&RU=G z;fWLn0Wv`uK!Bpu$K`IIHiY&2aK2arRTT1VSh<1_7u?^GuisTOe11r(T zm2z0?%v)|&nwXvLuQIn;Fihb+PW=%u<7c^W-{E`FBJG38>GKdGAd6u@JCdervyf>{ zbn|Z}?B-WrF)W9=Fb1rxAwGB^OJHZ_*9qIwHChOPL+a`l$AS|W@ISG9{u-QikJ=20qbuqw<(P}67bxPNX{T)6t_OP=F3z_L z=ibAYM+}A^7D9B43#Kppc2+CA+YcLk`2(+J8pw%j31T^~-kIU2!i_+Xbs}Wx7ogQ> zrJP~>%84#ih5mC*4EY3-l!o%XrKhT2~n3t&#XYq?=X4*&s4;ubE#9- z`Fc8$v_UFoZmz;?YnJHK0h7O^5(#l0)q3qcw+$~$1YUTuj1)EwYopLNM8Z*wxoJek zKm+a%e`p6)qmkS_JRmhT3K4k2jKO~=1&z4@tb%>14c1kHk&-NwsqafvI4%efkB$(- zKTU~KVi%QMDH7r-f{d5=k}2wv&YdMT=}PNTB4bnfD+h4_2n+9UOsq%n@vZf_kh?pVF7lyr`qxP_^9yOmEdo9DI?!#pn z=L@DXB!$3uOOe@;ewHSmc2M*40pw?j)ASt^AI1|z`(r!N)DlG03 zl}k!p8_I1etn`r9mRnI+t1wJ|90T(8OM6qgCF!0mGl*Q2om}q7un(0#t!uL~JMlD+ zgB_BhnpRouTY+)5_*E<4&TPN6Tv~%1{EG07*6G?cMNNxeZU`RuvD;TK(7yz0t@#5f z?a9ALA;(GbfEwYOv1S=<^~_{0klpnB1S$eP(>I_zC^jP7RtFIy@4!oQTW$QTzC0c) z1`AAA5)i3{FdUDeYN^u|mhXkjNAJGWhFN0R)3?cASM|q4J zGuEX|wNEno;SODzq`NO6n>kP9G+A%L+CD_Kb`RJOK;lsmigY7+X=KrPfp2r{DO;V%3W5J z_AG-Ze6&iU&k*$6X5T1_YykVoVoOw}Lf?kfL{a)tv(9XHo!w8*f14Vwm zPPIjCmbZOL2?izG7V(E|tWUlA=HO)x-@liSIU9-6LOxG@xqmVPe|b6(Z++^)XPpXj zeQjd-V`TW)VMoM5!&nfG-N=~KpZpoF|ESu2G0NFz@kLWhfE@n z!aUI2!N>4U5IMl(kjhJ2?7QPnjCX(SZz`k=E~MPeuwrN$sVQD=Dk_opf$#P>!r>kf zWj^1Rd&6)hbeB@LsP1YqLq&Ec)}VIulFS z9|vWT8!jm_w~XTm0}}-38HV*lk%3whfH*95jk@Xpz2L1kcw1wsNZJ_m&?Dkc709nMs551x< zy3PlZNda0q*S}1Kem?`z`x~@n-O+;$h+s`Tui#vM=JM`x;1qL_ru3=b9FvbIx@k_+ zh9=U>gvT#klRZ6|#?O(j2f^m#|3>rhM{?qES)xq^Xs9fB;2^+-_Gqg*hoh{~>rkibm*;&oztNGc#dz!f(>n>zvL7UXfd>SA;%uI zE*zRLgz#HD;_8;VuY}pqBjJJ~O13|Rkqqa>5;Ir@{{JzAFvF(o?x1iJ5_34cSik;z+Z6_Z)b?Q zh+Kry+;eyV0}Ga`Zk|Vk6c~gr3!lCSTz{9G!#8(Ku=ik&i(nY{2x&A-Quz{mRDwe_ z>Zaa6!*eZ$F2!kGl+T$fqxE0|B~wN|H)#7iC;342M1<_CnswU zHF?Qy9^ zs%b!>iB>L|?FU`RY?w)Xk_s*AZB?T2y9od$hKbh6r*V)H{R>Sl!>!q+uJ4x``g18a zPC}_g*p*w=`oJ;Qc(knJv<$)w)iko$nj9}CA`WsiOywt|pa!$k3yl*we#R=EyID@i z$TzXsOmfcx433}5B?Wj~-fn$7*T4$ZMU^YbiX8u+6PQKO7Qa>0BQJOqzXP+NMN7~} zGcfx~HKd%crx^w{SfV9WJB^uMaPo*-weQKe4OoG2XGMCa>0Pun7}7P+O%Md0)#3SW z@17Z3Lo9oWk)bC7KZ2_Vh9eXqst~91qR=93JWG^$%W3X2U0+~sp0Vj(WiDAVS$;8i z*ZfYlh@qVqK-uRkbTncADa6`V^P|-O%mJy%B`q$!n)dlu1?3o`hvGL#>1z8qU}CN~ zU5nuEKHU{9l!t~Hsd|k?S)-MeE%us(shVHcK~$b+6#1@KZ@p;oZv9CK>q!A0bYc-q zC|9Nt)ZS{sXUzgP3%{SU4cWPcNgO#S)cCv)lC~!~C}Tw4aQXJa==sXge5G}z<`F+m z)9|tQ!d-sCH7BPy!$|bh(3)ams_SP$R{d&iC`qfq!wQ(?t-3l9QGu8F9olFu-9BK| z-gejs{X>*qBdgt+lMg9u7A7J2Oxs2?3vnzImWNbDl2kabUWq4>e>g~ZJE0bi7Ih@9 zHIOINHQsovFhC@#8(l{nhXo=z2E3%1^%;XfliFB7B=~}?q;rQJlD<=Qp(qHkz>7kc zr8#aUJ%N(6lbt#-t)@w*9~(UF{zT&CXbg|M-u|*I*nosjsD%dIm(Y@-FnO)JxYC03 zjN_eO*5cXDCez1}X*q&~8NZ;>Y8b!&M6gdCc^0p(?xnPp8WaXoaxYX0CDDKCS-MFb zB==1nCq5cbt6DGFznz%cUzpBB(u*u2DApd`g3G|5MOWk*6#G>ks-)o@(Q`#&;I@!2 z;%n5x@-LDb`2df6Zaz$BFAaZtD9z}uq2pHK#2N}229fQ)A&*FEK4y3HK0mX*M46GK zb~6@)td+GtGpmu(*QLzl&R`aa3K4THSq~Q&gU&#-(>;7E^UmR~gVpF^n*(vhnObf*k@eoX8RMb7^f6GP|%SU*-c|>WNFme5xO?2@?d_$Xqs^`Y_V2hLKr*37Yqz>J&kNr^HX|~L~ z;aezCBziS0zwPW!WqKk0MQ$td{}6#)FaP*yupq4==a%#T3~RTqXq+a$ww_j-BD|O( zX3*MV)#`Vx@}aV+f*^>&ch2c)qhxStvBdX9nq`yy$a$5k&Fm>IX14}m*DQ&n+UFk6 zZCP#Re%j27qe%P^5Cu1t&Qmp+KoOQN;MB^>T7g36)nXPj-hL==_-SW3#0<{YCy(gr zED%&In8hqwpl}*bEZSTw>YFZFGAudCE)6A4*~Kh*ye;-=E%{t5`3W$2GAswlE*E3^ z`Nu3rR4iX9Eyr9e>!Qp_G%hE~t|Xz1{Ek^ki*eC3Tgkdu$w66-!Wq%|vRY)b3Shua zuUIV;aBTZI4@6n3VOZPmUTv^hdv^U#jr6ayRjf^G-$f9Qn9gyf*dwDy*KNO@Vt@EvM}^)yLS~LWaajl$zxsP z<2Gx4FyY;a;sPeQt6Y!SdS&gSG%0r9F zgC(t_I+-K!;Ugd22~WmDb4GcG$^)m(gFvEVDYu4cZybHlab)aKJm}cUcGL|d8Hait zz~80sd-ORB5*Z@1E8+b(9RziO2?g=(`4bE)1RexE1Oy4h9fA@J1PnO$|3?Gh{T?oK z9I@ujnFcybRcKcI4-Mch!`Oy%SnoMu+qQMp>@8QdcKOuqJM~{0!2b)gc}QebbWH5; zxcG#`KmVZtGPAOCBIxrJ3)qTsfF-46<^QGu>gpRBo0>DeAOkczKJGd8_Vo`84h@ft z{zC&yP5)`@Qk$PyT3%UQTi^H>4Y0Q_)x&v2e!{;<-cEH!+kSCy|M2+q{POzu?Hvpe zGC&ugzsip>mrQOQK$6=RhDP=e4Uj(&h4VNQ^aw)!5ewiP#o=Hc7)-$Z1uoSdsr?rX zFq#=*w1b$zC7M1hS@#bO5QIo5RS#6uq*lC>(zK^S$tH8>(NO5dYVcQOb3Ri-=9+K@lXbO+^dE=SYjUaix$@-?sN za%;{X>GNjB($&^&9M$*9_UG$^$%3Or*^UnyV7bohd9`h*y?--`c)iTF<>B^tu1s&L zQ(y_iGmB@;OjsYA(7)5BR_ERY21CG7Z~HsQsE`CW-#tozec(Bdw}a5csCR;u&wC>S zF-<>c00P%zgCMNRz@0GiWb@q!>f$H0@X~1D2MsVty%)`{+HV-ceF)r(<$sXajv*e< z-$oR9U^b3tBRSbikl{SpPgLlHBDdHJpa@PN#e~q{g=XMTuwWFUIZQQ9wm3{fY!KPv z?GGp-<|V7vz(=x4z%ujT4T(7XHw|ElRlgjQ=k1c3jrWHfi=Rm!;XgD0uN+T0eDJ1) z8nX06^`zvV&<`4*FgY^6D7rBYGoK>7nAW|N)AF>ue$n!*0+1IuU6krO6km>4zek(3 z75^!%Du285ymp-P%vz)-gwZ>aeLCyD9;ODA-;B}^Dc)dx>ZiXQXJ4|uo#5VDznSEJJg;kK z(&{~(62-Q;n-PT78JU*gy11KDumZAE$cWqAFQ}Wv=q_lwUED9}w?%JK=}c_VGdp%55_4j6+>+iy-s>GJ*cYKRH^_io7!{PuKI1%Chg_>m+*Am>8BNpwTuUHQYy z!&|)yss*mSm zH4P6idR|BABNyNdNeqHn)32k=WeV_?h6g!YuVd_^3kZ%RhIm)6W8KFKh#rTB1YfRy z`y&^Uz)21ZAu{gbR!othe?hb;@zeW%M`Pk zJo}sS-lk1^3qcf1PFQN*rZ0~db2g1k*m~Y(Y$F4>ha@K*({D46WdOWOBa^PJw^>)w z0RAJ5Nyz2f?5A-mXjq{s-j}OqAVDdS5O1A?6WT7MmMxJ|T$M>^y(?mlDUmUg`sFMr1jRj30!^R* ziKN~QA%s#2$*DP)kN353lD||bWpuun_r63Src@cwDjTEuwLp2IRJCbzp%QVvkPgL4 zz3612HvPWbT-J&sgGLozq8n08rA!-uxR{jSQt3WXru#U$)cL|utcG&V|1P!Mi}z4{ zUT&p@jTF#E`cM-WV{QDkZ8i&0wKi3S+GNPHecbb*j_hl>`48#U*>tSZ3=?a0`LR|1 zo4ST-pCbqytCjA-hsGmi8>y(Uwau4@tbD=?yD;hX-PvDFr7qeezFVvMK{m#i zA}ZK9x$AYG`b?u!{E)H`a(YjstYMmOvM#TN|A5*lbsX`y9)Q8S+bG9Xc{a|LeW^Vm zjMUmGHt90{xBN`H$}_J{#e!37RbC6Qn*OuV*%zt93h~xswn4CV%6CFeunKz~GOods z;_nfZXvUluCwl_|-g54XGvp@-r<&D>3u`Z}i6K_~m3SrwvvA=YKY$TznF>#VH8^C8Nr-^FCe(v!W5_i}KmL$$& zxJ_fsA&hIiMeuS|y3MTd(sZ8byB)1o_CY+cbM0^0=l!u?1wtl59t_nGE`DJfc5-}0 zYwHi@UQ3TfT+O8wV7a!fjko#WErIr*`_+>pnzbHHI(h=#k|JC(C71sfBU zDom=Jse~6TyjP+c#2!bOMYG%&pa+>-i2JcMw42L!33EzdfY-4c;j(>ilH94d--EaV zpwXE$#o;U^e0M&ug$fcuB_J8z&IZec!aaxz7=)9o48nBlH1jZMHU?8QSx>@+Q$HCT zt3)+62TC;uZ+^_OZZ_Ul3Gb!y5`vH9N%2(?4^2t+*1_=`8xGNOH$-uFFnqGU=ZvPp z4!IAGmT1C&A{Qir4%H(*i$jZa}S<_H@lUHrAkdaO%0inFvEL}X2XtRp|QtM4Fy-a$8f;QO{rNZ7XKC; zib30s`P!}S5H2S*;-(Q{QRC*({iLmnoATMh=L+Zdb+9v|MuNAS^M;roJiO1|e3FAl zqOutTqPXHo z3CTpJa1}iH1$~lwbr8Ax^N)2}%Ak4z_ejQ0y=kkdqhC?x=Y|jvRrYmo7{`#j_=&8i zxiy4P>bz(S+g`Tr*Z6M~$;KARdlH$1jsCtVvNCBIZ5El}?G_d2RRx!oc+m&b#OECR zB_~_e+;t7MEgmS+fnZGgJe>4A0tJZ3mQ>v7R5Le|l?tf$&BNyN^m>!&=Niw=9WO z5A1Lgs3CtTuC!DMIgL?ISdIKbwb)Qse{zWkE!^_M`H+e5VoS@ITDJ(N@D#6;@&oc@ zTMmEM^qiFDq#lh5@Iu^bq+9@^BfUq+3UA2zq2YX*tcPdi);#dHR6)E{NfNE8>as;A zSEZ*^)&8f_=@Ho%(^4)?d4#9rakU_srBY9XvRrN(4PZLku~mC|oG6~n)nYajpB&Ct zWk0zU!IXN-dSodeHAtM99?}58k{PlOo>g&{5HF{J`BLfgy!B(F$#Q%t zYF@Iund zuxdCP>%2SboZqi=k!mejw%F9NzlL`KUwBnYw|O+d%b(&I!C7~vi*-Lp%eK7&JI>nl z=*ln;yKcNX@7KDQ?;y6CWXIRq-DtW#pm9?E-qkV>zJeawOgYd%4@Fxqvy9t%q_!Jg zA1Oz7wN)SceRnKgj}BiCFTIkGhTb@zSszBfM7eC=ORwa5zZPd-t4g2TxZ=@C7zO_T z!9X9!Y2OQ8w>p7qAO{5JsFq%IzchcpN#@|hfc{I_An|>x!|7mMNyF1$-sp5Tk4(J4nMYQ6rgu zHLPX)mDWen#G~?&6^lw6;(1HJFNpm`nF@gi{1xMMW&~sPf7Nrmm1H!>TFXDizvp$f z=Y16_;cgg1Nm3kh9@nwY7|k5(Umthmfar|Q6Do2?rGm`M^d8QfSZ$wJU!U0gJF!hL zxywJfuRVF_J$altdD=dCzCH>1J9$Mg^}zw$X-_?PPd#N$y|hpLU7vdYI|V^F4J9!B zNoN|?XBs|h8nI&eb4~D8yp^l%Yg#R!8*&KKFeWQZE5#Q(Kg7M zy+q-JD+vNCe{@!oQOqOXG-5hdR!cip%ik6YWifAMo<4R&B=`t#`8+d5X=`mDf4 zr%n4L%*HYU^L)p~de&;6jphpB=3C&hQs`p5>eA7~;=#oFhUD5=$HryMQk3@UuFlpa z>vD;!{2XBExqb`$)SvZBtk4p7TXJaYv+E{Ib`vb>Hezg8@QbrI<+d~al1f_!B2i*1 zmh#y|C5_p(*wW4oiXMXZ0P#cXxpWRz<}QTwE`@LJh4B_M5o3^mrR!l$RdXCCk>_?} zOEtI2Wr zgNL(Di=$&n%`umcW!M2E!Jg$N0~;uAcd&Nr;Se#cwYbfnq|q$k!G>qj`)5k4R?|Ke zz+~hh+cU-@K=o(>W!rV5Q!v~Rqf>7Y$yiS?vE|SZjADi-7m#OusA`@~VCr#dC1)jg zIyQSqb!rPPr%BN$DNmIRlNYm6=h8PqI$=LHuCP7kk@L_UibQm)twLSWm22weDpu-r z^nWPmQ#<+oe)cW4l7_Yh3lP?)6}=#uhX@S(wN^g;zFW9?(O`Jmvs8W2v3D456ItmT z#C2At+tDOpN!eHyIb6ZsTDaW%aQp>VbQ}Cb1Iq*vMEkV(+ZktIa=^yKGGsCLKfMs-JZw;?XpF=Z3)xvT85amShrr? zA|DLRWb5$(l}8;FG`b4D>(NZbzWauQKsSn)i^tiEcww%=57&}Jw|vCQYQA<7#L+U; zcM})3ikDT3F(Lb@j*V@1vf#(Kn>)NVC(ATFhOTQ%i+jz_9h(Sl@~GZDot<}^4^4u- z3{{&Z^0&8Rm)FU+X`atoQ@H)s?rXAjSACm8)@q0^Z+;Ws+6vq%*j`53IcQku8Fbw*>0O}? zg4RH1f;lhFdbeWD)_7bEjAa)G#;>PSR5;*Gt}V0W;pZFMO$(~O#-^8a@;+7a(cl_X zr~n+CA(rqW$?8aM>TcS(hM0spi}u6e8!<8*2(_0J&qj*62n^wZS@R#)GG8ho)qA#8 zFoBCSspUL5MXLrJqglezR@?&qoqM-00$rD2Xjnv4bSyj~Qc7AzR!&|)VKFH=B~?vb zLsLszM^{hZz|hFpgyi(>{NmEe+Q!z--oeqySwzkaPM9w%$9Txdz|8ReZM2iqVa)F( z+se3KKEV`p-(m5Ko5cV>*}RnocRYc1NA11vADfZQj_fgv4CefQCoWAbvxAKU1Fzlz*Id6JAT&tqlv|2_+J{}e`Ek~zD$WD#aJ?<9%Cuh?J~Np za5(#I4I>dN7yXM0&!CegHa)AS{vIVtWDUoiEk!#nJ0Uv7&uV^X>|8{YeAcs=Jc%&r zh?2kc^^oD5^cgq@cQ%sA(Aoh7f=2!k>5P|&x!N|7A<$0DJH4Tw$>hr2S@s5FiA7@R zJy;J$|G{{K1pns@pvuXaySz~DnzrjgaWmjAL@);__Ap~BFQ;!GGmu$bqXb(2G zdWgh5?eEqa-Ayi~;Hf_F|B@UILWB5hTL0_#b(Z4Up>C)2m_u-Y_4(#-szAQVSK##l zwAJ^U$**&Fr@5O8vZ{;S*MshbZD&dTX8z~4AMd#uI5z<9uqc;*RUmcS{)bPEJ`W5O za4UrElhHTUhY^bGaI%Eu7$HiC6hqCyuWF=(Fw@xoLj$B1#PZ!N7yOP0z$uIqLDwjZ z7bi_C#9(AyDa71#!O=&OQ=%EbWqwaBO4f2*DN4}`#4S!WO3j@5P_$KMqHhRd&FUWmfkhv8`A4b%O9~`kx=PsuS;m zch0+KG^3~b{x1!XESp(7+TXbB5TTgQXFtHW=1@DqwU=2p$#=Vcn??ss=$y|s$8T6Z z>#?Xkv-iASKPN9j*f9UgiLQP@tzhKi120Ac9m;?$)39umsMEM&R`9kL22DEruxitV z;0_C?oe^}jSg%l;+L(>O$;QFhB=hSO%t zQ4TRII2yYyK)3Y-P>|hvT2{vxzDQ{~*Lq$zr`vYXwD-=;-gO0v;jTF#YQO5k&}+XQ zI%^5S9s?H<-b{%QciheW((5qrsnYLwSaaIyc-#si?tI!y)a!gcD#+=4Ijh_1e7*eN zG(gw;>+ROZAp|tDKNJB8B$9bIG%0fcqBaRM{&6>)FmoV!CdvOx0|YV$lM;MGkT(B+ zX#m#DZzxvgefYb~VgHK;fFH|7i!$#gBV~!m;f_Q94-Md@pO0B)K0s$U6RJE;iv5oa z;AkJEPXH#v9Wxh$jJ*Cg4G`YR-ugiUWRej^!42{Ln+7-n4G(>XVvP$7PA7)@Hw}P9 zS4fI~GAu64svaHvZyEs6G9h*S9~wZC$l@k3pMZi!+9F#a{XaB7;HYXZYjSPo0llu| znAR?9O6zzqgWJiN9u!-u-*FLhl*PEwY(nbr2Mv(1B5A_QmOh(V{4G!Ng9c#Bu&FQR z{D%h6jL+C6pyC;O7I8@bhXw#3&5TUC^|ECXIs^F6ET$gLNq)Sn{|^lSMR@Eh7~Jp= z4S=XaErOrU1VLDm>z6_Olg{#AG63ENwK$mXbmn&;dm-t-ro=xqKt6jBtqzT}*6EBF z-Y<`_3>sN0%ejnQb^tpCwY(ReLf8ilAWTTB7^SHkj#cu5L4o#H#_2pjn4?rFi&mw~ za-r;l2GHD~Rr?nWz)@~UNT)GoxmcIaQDF%~Cll4u){jeW??^$Tb7VT-w#!lFxk0Cw zq}){4SyA;54S-~|+}5a)l^tNEtrnWnC(K!!kVS72aj({`%2}7bL2t$0*T)MF@<}8mgqXPW5uA^7e|jpmnFuEe*>0+ri*iv z<@e0mu5Bl`0~>5gtk(w(@cPhCE%reJ5Udkhu?+{~-!w&@@6#Ej)k+P@gw&lMFkxVg zuKc;dgdO@5;%|c}vWbdexeCR^FQLSDz?ynyZFaAj*5UR+13c53S|>a+PJV-**=9D@ zbDqHK;LGINoc;3?T!pLe^FaetG#*s#x6Gz*vQNKzPYB%xY3nNV0VSP}`>urvzOHU? zq5>=r9a_dRvpFihx>!^Xw=TAB-skhn$|}4X@j3WoaOk??E3XO7prXSeeXMS}lfE>Y z?V4{(Xk+<71BBn)vj-5y9{dPi{>joHgXwSnh0T}^S+Q}+dnw&fT666to2%U^i`Z+9 zZ|emXqN(WQVlT6gc$cw0{rAU?Hc~7e@SX6IHS4?^#J9WB*qBAacpX)z{uyxU#@;6# zKNBIh9nAS46Q=_m+@$4<^te%46?2^;zrG_K$}_>19Twx%p0-IjhMLS`pRlyI4k^{t zs`5shKh+LCl*-}gytKJ467iYiS>ov#Atki=o4HQP_@b9K5w+Qac%tR!J{PqxU&C~K zF74i=W#6G(9P2aYmx%r|i^#5as$*BWqe*m($mL9lfYukxx0A*1V(R%yJPkQ~xjM^t zJ-)n7pQ3!3|LLJ1s`7x*jlRzV@SN!8J41O1RrvGq|Il@h-IWCmn}APn;-uqr(6OzK zZ5tiiwr!_l+qP}nwvA3leJ0N{^RAgM^AGmgd#$QnRd-$Y#+)$MPLW^0_%fX*Ow7om zUZM{@HE3hf2!DeW8TwK-%5xKIr#ryS^De6Pe2{_Vo{j2RTeB`2qPSh|1Jy?d9r44M zV{?9WwR4$#!83L~-^xglm(QCYddG9OsSzwjC3NQ>TW{`HKccc*A{z1deRZPN zUEBX$_N|lmiMfaqee$(J@`s~|u;CE3oX5~Ah*159BLs->N{D*Ri7iy}RktFJnSgGL zQN{KkVg}Zg$K-;iPYf!)0#^&7on=G%lwYK9iHL8~WSS|E8zU4QG5krH6cYrLIfNg@ z`w!>-oJ&%a#51ygg9+vKxi}2o`wR9E4t?ed=%v(2l;AiL3PbJ<8D9@N07ey*#NqP? zRD6dxQcL65BuwO5crzq$83inFd8&7Xe70bC=6On#!(n|92h#*RfxsUpMx4wA99+gC zVr!h>%3LXvTm@3xk&{GRdc3v;`LINX+XlEP8ooY-LaxKelm_g+#L9J~=oy>Rfw}2K zMMR!O?6E*GsUw4J;`Qqz`3o%3e+i;eQF1wOBFs`YY3UTMd%%T4Wxiqo;(f`Tq7Mv^ zHcyWLUe{4})tK5Zk}Kc!QV&=3UB}hYldLsfTBCQfN%{NkGr4#4&WBUGLr*RXd z1v1~_-JLDS=a3^+UlaDC93+KeR!_aI*DR?XW7oYAWr0Fwi9`N_BV^Vvc4t!)p%i0J z#EpAX`MynXf~5xO>8okG?WGHK#sd$?q~H&aNqUtZl5o82kiGp9TKd0r!CUY=tcvcG%>%yx7@D=rq{ zd*`K|H}DQ82@V@@jvJbu8yoBgfwEU6!GU_{YG=`chc03f211Z-9r?a_6np@LFt+_) z6GcXvAptpg&&eHVO_6!>ARCnQ%1A{sKi}%BT`Om9ZmGaibGOL ziWrL{Y)`ZO&1l|CA_F%Z&^_Rs*tNrmVaI( z6FQ??D+yOD8@;B~KswJHu?*dy?h7y0;kclfK@WbQ#z-o$gdxvvp)4mxkD{k3Wj-mB z!lq8qD1bY{t5{cAuxOwQ-rRy<>B_FDri$80Wb>{{%)@lK~bTM zl$=!S{i>@hGtF7UfN+P&9;Qy}BEB|0vzk-YZ=xQnDmYrhFxUk9GGe!mY9FZU45wrt zEMb|AI;8URap(*v5IUJT)Q~-m(I|l8d^=8Ud5AMA7YNI6^t*KiY@w*ZWqwjoD8&|ln;y$3_w*a zQ(v;1+JyPqM1<1iOVQ^T(Apbf?XEb;k*|<8`u-Tq5oEo89?AT}f zM_1xnk%Mn)`i8%sGkgVSJ&^)9lDbW4ySb2)xL(;Yy2-f-t!ZJlH9gzkHnCwIn3&`f z&L=OL0;d`Dz5Sy`q90lPe51M!MJ;ePJbObgQ*bNQQu_uDx-O`Xxv8+b-yz?5GrCiw zw`DF?o0H7`Ye#Df@kmdie`QeDVB>;R04sC*byMm??#7>Z4=c&K3x#-D2m;1Sb}xNX zW*ZvL3-L-P{6cUEZn7@HwLcuy5Pnu8Gs1rSE9J|*k_&E`krw32XT#D$tZi;MSu-u9 zumh${@q#)!$y}$!b0@QB@)Ak2C&$DVdyA<>B1>HJp{h5oSs_IYfUc~M0XX1xIs~!R zBs{^tXY4tVP5S8Evr1J0+(^LO?x~TC@G0y&pd2aT9$3W=Uv!yl29W+G)T@e(Ly6tu zC_6@X-IEzTK&#u;BWGquLJjONRYTSCu|m%ZIn=#@?hA413h^7NB5CiD`kfc<&%tgd zeVJ^jWCccmZwLFay6224j*N@qGFpdXVyUkXV~~Hw=;S=bvzoT!UduosZnRr9*g*81J^q__lW^On-73 z@7XMG->iRQ1aVZJ6T&-JU4@JWI_*f+F(`|Ea9&N4(~>u`VD>wSYO(f+Es+O}@$l=N zyHfCym~PQut^B4uM6wAtc#NL07c60(@^si8fRJu*ey&FpHKx0~0 z4YI6&6|T%oxWtB+g&%uS2dXbqI=-Y-#8~M_2|h6h<1`cZE;v037z_}G@M=doT+RcNoEHA z(wuSpue7QjDg30#@+B#$hshL)sZk!rjvlFT9&~}6DY>s1c9@BF_?Zlb8I!14i|xj; z?%8hnS)-^qkDTirugEVR@E4r4K+pV3)%48v{L|gM)`SA?H^t$0f#w)WtO1UzFJGzW;Tebbuit2Nhx{L_{Wb0l}5v#KhK6CJ&b7(&E zQAB3=?;I0dUH3fQ@+c$qpn`en&n0D_Wv$QUZ=bd}UJJLU3-XzZR(&&31IPa0DgN=@ zMm`&rpBs%no1NYBgr6&3J}m)0bZI`{@;^5(KX)E|cHckEExNaG#~WvTQhrCSy~C`d z4NMOrACM@_$_GWTmV+tvoB@rG%`0p}^?>wyMI_lr?;=fDje>bN+w~ha<BKqBQNqU2(t8xcuB~ruPEF6u&Ocdr0tSA0Jv+a++}hq*29=L*jCp+lknlJ>;f(o0{G$us z?V*_ph9b~uG`qr?3P)n_xHB%HnTy7LlS+d!cp{jKC$QnQI=o?7N~Y3Tt$M7_<_c%B zdA!~}U|GxN@`crLcq3WM7m8&vxwg$%Dwh5?4WLRW$NDY8^YedbfaX7}|3d?;8n66^ z2I!7rubrwk>&W?p=cwE34~B<`jpC?37>>r}_LUK;JsMA<(dvoTfFFbyL-6{Cz}0j% zUo zUorsBV9s~AHjud9|E2-9@1PBWQRO6vtRQs54MK5j$3z1R3D5MyiDM-WTrqOO4I`;* z(onzf{*pvQ=9l5Uz4ValQTUm8FS)-=m;M)H)-&{NPf_k>Z7g?HCRP_9Vvo>!+lD4iN$w{(mn4rJhtM#IhX!ck%mg+q{f7ql;qqS^Kr5>4VMf|cC)1_Gw&(4JhODc> z{Bo%I-vUV;Of6FM9pW?nl>H#<@2HUW4>=i!;mt0f{QwTM!`%pe=7Iefaa4jLs=`vb;H}!CUDBS7qQjNXjb-R%|srIH4o~l zyOnwBYf@wNe(#6Zt3~8Wfx$l{eHCj<~RDb6waZ zmbs|w=hBH1jyW9k-!3pNQK}iU~TxYoq@gUSF9K-UvU5n#6_Y&E8@S~(KcY| zj1t3djR&1tFAQXyaVPdB`OI?=?nmi!p+hIB6N3@we5 z(OdYL*kFD`(k$f>gwU3^KXFyc-##Q` zH-s9R!eYeA6)|>ukK%Q@M2;{VA;#ZuFM!Wlv~y%JYpc5e3ZAi|2 z-lS5@E}s{SRryU_U7?C{vQTA-k?^7ffz`M^5EEEWQ&x3MF>9`rqbpz90cIe695#@t z8y7F=G9s5)CTEV_%>NxP3>CWA4J8TCne2aXY1b)v45!# z!+&|qRBlN}OlW#0Cw-Hggwb4ioU}TmKC~)pjR_bDQIAbRD+mf}~ayyTJUUF$}xTdTY^y5&-h?^6aDK(qirjU&Lt!sQ` zp?!q6+;%oVYIm-Pz7Mh{)b}gA zTl?zPkI;kR5C262I8pSY*VF~$MDHWeT=b*f)P)He?ITD1<-?(`kLVrR|5oWf?1%kD z17u~PebE3NIQRw{(T8|;kRv=d^_J!cM}$_C!(8+YzdgWd2u5Svr07H9a}kbBQC`PX zY92(Rg@(zk+Q$`d8dA-SjcC4T0BjAZ70twBx=KzSJ=?}iGZqu(NspPsUrw+KJb^Hg zglZ~7PLdzir$yZ!bHP25S?AGbB4&eA0k#OBJlyRPA!*NrA&#bkFB-s1!1H(9&Ql20 z7Y%S)P{}#oR4&hpD9@s~TooEtrgv>3UFf;us22ICSsf@hDYe>W3t#2;X{@p6xu%M# zH2KtjsY}DX&}aK6Iz;x${L+2>PLnXPoX*_Ls&i;ArKMH1%7oX*YwK;jrJZT(+OCp& zfEty({r2PLF~{p`CV%O;wb9ec<=pwWaYH&owEwe#y9;@0A(dE7rA)ZBn~Bsm=)rv# zDD52*&B;c!6_a2!DC|Tt$3czhiyBqiH%n;7VTm96P%Y+tKr5a(o~-nc+RAmzYDWb% zEzUXkN_QGYvpvIUCXAa9>ntR$Jr@Adbm{X6*XbLVmUc7UDxC%^N@T`ZRO0hOO?BW}-qdM?k=yY1`bB=4ow%g4#4 zuKPTV&JnX+_hq)yTObD7WGR>JUV|Xw<3;@qO_&Z0i z>{$qXf3O~my`n^@N%(hVm|$>o0G33MvO=&HjK4Z%sMB|HcJZ)pW}zNsVHO6+7Vcn} z$Y2PJ0J^h4jJr_#ujlj+aT^Nz|3o5c~2@fv4I7>_xw2R;7P`332c7vk9F+ggV0KL()iNI>!bDoF>v zQ3fHD|7Mb8>okXk>`P#eNMw$X!5>fLU59W11QWvs5tR8NoX1eLC;a-lFPw&-1mw6i zV)KGXR^Cejd9x(DlO$6(B||;%Yegh$yt1gl#;ca|ypV9~OR|})CmT@78k{Ga!X^v< zj51zN;qv%xq0fwwmx`2^>a(8O?2-bNm%wR}s(zFh7LoSJ1Z@=_0XLSGX6`TJ0TlO0 zz!XS>fAwP;i<=K{id9cJfN-(IR@ZP#c4$tnUc%acVzE%q&`?iJ|LLy4nZfmv-gO`} zjO1%Qp0XH8Opc}FD7!e-ZUW}zpgEn8&MGD5>i zCKG7{lUgLqjRS((1EAggNypP0%QM=}Gn_cxo3YgwU^D(GLuFItsz_#z-=*KC=k#M| zu#M+}KF@)zPa4nTxm}WZ9UiiO+xgI&a~84Vi~i&p?*S$y^C#A`_9F6A&hz@6vVUCU z|3-mUNsDQQNl%na-#^dQ1o$y};B%;FdL3zZQvEFR02WdG?6x2*q{^nh$mI|$R8Qw) zz)9|FCvBw?#}xrSdE~KL0+}cB?w*TY8uPzNB|-&eVMyg;Mdr_y=POIG6Tp@Hz$vhh zh}HNNe4hpsrvjtErljp4LVqr(7%y@UDs+Z(srJbG37+Q)m+PHTAbC-AEL5bQm+_9B z>y#nv0hihPnh}0c{0JK#k5is#2~>|P#=HP%O%#7Q>#}GixtiJbc_Al~$)8~*3l2%3 z^tTxGJYTztJod<<*o!jGCXR*kGSLnWWyxHhjdXKPS;UJ>yK?OP;IgBpBA2(yhu4aa z_NwfOWDf z6b`dIU2M5fxZ1~aq36iFruCY}^2#&VT=0xSdX*}w;36gD;-8vzlM{Jf8P#B##WBRy zshZU*8^wsy%v+K5;jqw~l!xX8h|%UHM@5gjU{&9aNldgYC#*m6QN+*(>d=!GgPnj($(dWXqGN8}pgyLv+I zaKT?dRMEslvqWARnjQ6(TbYQMletu_hp%&D*NpEMRWMyXeqzV`4__AZMh>L5O zFN)#_zW*qs@bc|j+8EHQQBk2F z-D_;mH=oE4liXoXn&N-n_s&h-QG~z^R}8K#evsJLNJ9^7=271w()4a4(-1+V4JfaE>!f)YeVZtxipDn2+aCO^4F7Gr~>!UDRGWji>Ppsa-UUQ}trMjki^) zU$CSKVN3$9#HN_}n|Qk4X-9k&r=J#Po8ilf9t%pP#YIkMo4q+>uY}sSfWH#K*&30CV{lQXV((-RxbNLIi$4V1$c`BeJh{gSf3FMfLm`i@R4@sjc z&T0g}qvnL}9u8z(7li--Lt*86^~&Y~Wua%+*yTLUI1godt0PB}UH0PVSW~uEl25j; zzdl&N7Y*=ZjbpkqWN{flCoO*^T;Dlc2tKyB#etGI(Ma29mc_ENRF)Ie*aXy5^O(@K z7rS?oZKaymuUjdf4$9ulc8`H_q|F&|PjI30e>&Un(22cyZ^IJ+>%QLXl?B7=0|P36 zVe4;=#%y6LfQ2H?gd@5o#$@u6&Ha7N2!z~L)fTIttZdg_Hu$-$hrmaHwgM%sc=)3e zLPz~WS(wRk$Dj^p!V4Umkp;m3{HYtFNDS~?y#advGy>b$n4{cWr3QlWEkLYQv|Z=5 zif6GP@}o0?eM8zu`L{Qiy@g@BH5rp?-Yn9B(|>F6S zxpN1>II>LO`NWnf>+B4Zs=UXggLQS?;E;G}~L}!h7!g0B1GWBWnfeHkfa=gfFrzr%1Qv0vZ3L z+IPP;cHL!JNBiTpxo1gxlfNFvjS9DqX@~Kt-8m7l$qfI#m;0W^_X@e|E=#!(A#S6L z=!UXx>$kyKEYcC2@(qQZD8W>Sd<{G#{VinM4cyRC(UW#H{b}W=C?snpqV`8&8m_?Xlx5Y?%Z3x-3tMR z4>f~1KRYxu$Xg=*T{F5*3dXmBZ@Z?`UA42HG7bPi>~wtXii0@#U5|H$xRqV{y*rYZ zUcJYe-Ve9lbJp$lk=lzfh7-^P0Z4iNFCoC1SR;cXqk?9$00(c9MQ4*e=aPGOHF#PP z?1B^(H{USnM>=;H19i4iC5?4e zRfJG=c_78`5WU?keHgId?(S~xipjCzf!V3?k;S=50=N0sHR93?Dw}EXqC8mvgrZCP zE2n428<$t-JGXb&#|Oq1f&XszIR37V6A=XLK{S~DQFuTAe^Q5wbde;^P&g`uQkD5V z@klfd#X9kGT_U|6aR3N~CL&xvCx%+R!TS7xYzpn^=y#?f%g8k4x+9?Ow*mQFo=_Mn zo#hkdLXlKRiM3{6E}oB^5m=J`IZ3fN6hic`u{$N=BxR!nI;%gl8%>t0sAn7(Bos)* z;!rG-GPIjro-YsA@75MLRqS?Zb&C6U`kCzLWBOSnD0^cG6v{Q$ugoV?8Nc@eE*LNl z1XKqHnv=kYR$J714IR&3eqOCLm@V3#tD$enVhYWCn&ki9PHYZCW3c_WIyqtu|4_O4 z;Cwn;C{?c2jfq{Vmp^=(tno<sk$KtrV zy(Rb#9tO*i=l=}Cb|(yk4K(}_gvj-mFc?LOgD7NaZ9j}K$KyqZ5Pm-dTp;upV-6~` z&2yO7ws#p}6kW$(;^?fcQbn!9VRw>P&No#9W6t}(B=Lf9oTR_!Ui-Jr=)U)fyZQfO zB&OK^Ss(#U6Z{<(4&%E%3@HNooT?YqMj1)ENruOXE=yn_e1=WOtEq!1=5b+`%Z3L< zj>m;0l!~H*#6W^9xKKE$qAqg@45qfm8SF8(VP9%u@GC}vy{0EsN%}}ZNlCV+CIJG& z4JUPZafT;#MR|&oKlBzX&KS^_O9Li_I#?}GJv!8piqgD4mzRV>@@daXCd=y7IpJWFG(ydWJd&yHnE>(|;r<(f+@EY) z4qiodTP~a1hRYt8-R!$Q>}>&H)wYupHCoU%IG!OvnK{$@DoW*r{l3y=1sp*>>?i3~ zIlEu`-wWNGXZcn~?B~UqzFZdqi2uweLvZEjA#v3AxJWTtO~*%w(F;`bHJx6$=L+EY zyGFC2Q5o*XX&9t0rnx~pPxFj%%xZdO2laechRzb+PDDoqskN{P^B-aBe-` zt~+}ppYA95`9FP)UZQV%jmrHyh5zR8)~>bCKtx*sq4H5*C)Dd-nCb!;G;`tOPy1k% z>L8yx387fZ`YmEnLYWb~i+C4#VhdJ62VqO5Cl_6fWr5vUTtO}*BBgSZSZ^d`4kJ9}p z0GY7ald6OLMgu0z7tr=Kt_Cpvl0d+BM-9NINU4pb_g+-eOC{2h8&E+wFrID{-#A5Qud+=*v^AU}Yj3`I!B z`Yb`h_B{X1QJ}zbLsBGK(LC!HqH8avzMPTwFl18nXCkQF>Jte*mN9)%VYMyjN zrosS89;5(wD57#%tZRGO(yDkk=!l2OG`PXG72ged!5)+R$a`(de=F8f?Q zfO;waCaFyHC$*AK#!@l!&th4ZbHx~(rBX4~3YBhZwaSbo2gl}0-DcpOQSv6dbot@l|jKJ0@dT-;Dk@P9yXLhV3DgKBPwD(%an$kI5B;2 zElCSUkVd$;bEDLB4Kdr4GTfFaaSO_oQlHlH+0+~J2`x<}ymXezl^e@}td%uBbmj&$ zo9hcHwj|Ybwoa9s+Yc?R3ZK;WK{Q*?HhF-+O){><^}6M@lJINqHK;%3{4X%l?-EtUSMEYfa1k^`>^L z-haF+_7JptV2L%oib^-cY0_ldA>sapid#JD4ona0EJ+8)H>q%W24NL>wa?wP2A4Fy z2113puSD%==%;iibQOp1OdQ~}y9|*)Smf{3OtIWzdp{oAMj;9vJagqn)NS zG&sW*jP>c)m1|C9n$xz|O{Kedr{-fB6= z{Mj~0XL}K>s#bD0cfVyqqMIn7h=SSN3P6pRnBH7qCuVDb5HQqKd0&@GcnVeJIY)|G z+imP~Yk0=BF>2J`hh4o>liS*-F-pnP!*6T7AH9xt>XJSDV+h7a@2J!bCOIbi;pv7PhyTu4>^%NO(w!JE zBWpOniR>F)y$tqadmkovN3rAj=V9l58@G#4%BBMP#|}bPpC5N36hPD#c>JNyk&H|7 zyiKkFJax%=6@fha2|m}gnR&JIA-MQ@pY!1nKX|RB?47roEpTo?2oV_wbD;fie&CjA z18!l_^)u@eV+ZEn?i)rf;)#BixdMPN@7q6plP<8tqjYheyoI_=77>2|g}hUXNZ5ki z&+##|1qC=c?RUp%v+uO-EKkza!icKd?ee6nEgHM8X_@3K5mb}u>mv+ z-!3dZ9xB)14dKAq?;Pxsp$nft%o@PJ_SU=P+yX`ci#^d@fWcqHluKFgE7+KOWL+r97#5#K4m^d^h~|!fbf1Ku zSp4Td5`l;BEk_A_&U0Io>-gmRf5@cghEqiyQaITTn#%L^ZS?0}WkhQ92$hHt4>B4f z(%(LDdH)<1pCA7GO)8Zl`n8mh7Bb3BI^Y!Cbz>aB-Ueqs*cb9Os<%iYgEJIs$>fA0 zoBbrEQ8*}!(0HBB@(vIZ4mFmdFXXsUg7&DyBggEcE|R`K5L}|~ zi8t1KE)s|&WSTPoJOhVz_D{?@Zb$59rvt~zl3#kD2{OSeEK~e!?-+WK%nl^*2I$*K~_+FI4&t--aON%Y5%V+dC!I_BS zoCOG(#V|uS%@k|%nVSg}1nZVXt5C)xol{zu{l=%7jP5ha5gPe!U{ayuvlAF02LR%g z4kMp7c&l@xo{1RdyIdTbO&rj^ou(2CTfH4i>uiN4XGb;{M*%5+XB04x8A;5$hq(_>jHpE8nl*Le!Wzm<-Myzfp zpU~59-&>y+kCeyHlxNG8<>Y{Mt)Qi|;4j$ss)BE>8su+6@jSMv+ZHK?gG>bCo; z3sZTiVfiXBX9!(GF9fhvhe zBYD^Hi;T3hYPhdALS2w>tmrfGl1x%Ja5i*vz(5|^z;_ld3OQtv)TL%A4t1G|T8Th> z+?!D9>tg0fXARMG1<85^d;<3`3)J(GOmAK#>d`6EM-FlTVKF^{dQgMs0uymZ& zng6l#dv%_xitvhNNepytf-I1m(QVsnjafo2b z_bFrp6gfC=wOnvPIXNym-#f8EOhmE{*F|^LY5~zbX%BqqO3H-GnDsg2XI~G zM-SB#ZxiC%W_zf%d-(JPau&B2^xASM^}_@gLXlzn7>gq|qiNsUHj2-6Y@d5(7cLYh z25ws}Qa>}&&Rsxq6DvYvE8(Dv%!?L!Ff2x1yuJid1Y1a{DcUl}cIsEWQ+x871(i!% zbb8=wlp?XNZlK*9W!ZLz>>Y902z_zxpIT_Iz&=iDf#d2|i_^mtYSLnZkCx5d9_#$H zv%P}~ZBlDEcsl_btRnL~<>f1J+G>5vJ4)Uauj6Hw=c`xN`q2#g4cdG6Iy+yUdbagi zc%gbQKc?@UgZOir9qD*0H>!}%vnxo{bw@Yh9re*y;24KQys({#!;F(eFTk%FSSBGE&6>n=1*@LGR%$A&TeQLr4=7+SaM3Q{!fgh2 zC>UfKYnL1-g*W`pSfaA1{Gn7uJ#05sm)cvZea1;han%UoYKxi5<^)$RimfxM(-p%G zc``uzu22pn@-D;_&elCnY^(MgFg4N;{@Pc8ysH6rNlsMzs{22SM3%1zSW;B2$S+)t z>5MeBXyg}|voWAA^B`ZP%unZm0z$hMJ(Y00S+oetQ+J$#w99bVPxLoWht5*K|QpX9MTX#mj^e1Fj?F zxA(e^ox@I6F)jsrrAVDmKqodz?Haw$MdU)e`--1w7nzP&-%gJh92n>c%hh!rA4(jU zeD3QXDt3glTGc8624Su4mw*#&r@i=lQSN9*!8BQ@*-HF$NxuP8f{jRD7xmJ*wHeUx zlu}E;6rJmzreX5iY0>8>43}nupY{0792-w226#bO?xYmA+FHf7T6A_K0^cA8c?!+J zvM4o9S+&?T-xp+@C^%>z*`x5Ev~oEjTfc4QKj_?M;TybAcC)xb0EE8Xx!-ccf&9nk zEev-TJxBxbPym2)>Qy$^0-5i4rvtu0!PTDCut#ooJRVV_VG&r`wYn^vr7YKi2~C2R zFthkAlB@w?n!$tD!RjUQkV<31^xEB4108m052;%H^sai6(nWw{|2#i9K5yHCcSct_vZ;{_DsQRd=Q%;HqYS+5ETM8U|im`u^LH zyOr<{FC?5N)`{b5`fuem6*_;5Ex_n&Hu%-Xw#xDwa*lnniu*eUyPGlpIs<*Ct6;sb@Om|5!xosV=D_?o^PxXACFckQ6PcFRt#a*)#8|bq*aO;LBPFlkHoJ?3{>TA3g-yE6^W% zrJk#|yl^1CJ7}tl2U0a4?0C#K)(yac?r3 zj|dnU0So^pYOn4@swY@mqqpQMJ`+i;M@vu*E0s$0xX*i3rFT0VY=PaGTS3)X*0MT-Ls<-n_B5e{d)T z1<|-7xh-2VGb(o(d%G(9|3bhJaCj1RdHq39`ycy4gAf=rvh*V9;N;t=5$Hr*PK5ag z=`7AmprZh1v!Y>H@1rZpb2HWNNa&QT!T@E{CLOFaK_Qaygjs3saoAxfD-|jo;Y2tZ zWSTz3VueDfY^mmpIgiZ)jqQo%%GFx^!4l?D)hnuC^Tq!Q0cT6M+D0WH*zQ!glfmmz zD)F=(DG7o@#u0inXqV|bD9BM^a~qZ?Ajya@bE7*xwk?MUr-S`?vnWs3XcU!1!IF8_RW*?Ae8W%aqux>d&$+RCy|Axn*o0uIfXa91576C@Q;BkpzxSbMI zu>XrB5M4t?R%ifi*Ec3oQd$vO%2PVALZjlm#1N;DjAF$8zYy?5a@J46xoiw78KHnM zOIUwE#eX5-wi78xlenr1sZ^}jiEu0>7%SPRh6km-+?!W*N+}Tk+ZwHUpvVPf!b(QR zI1Q9{1szVB8r)UuQA($3kd~*_O~+NsWK9jVfY5-$`*{3S_a+PlR!@!j6Kd5R6zyFf zWTFHG1O&ofyzn-*bTK%>?KuM&6VjN78&i+D5$P1v#!&uTL;ew}x4X8Me9F}6%|ve( z@kAo+DD5N1MTyz{6vt^5O9(KtZwdxF?K}vYRL0ubS1eOsK%nBmixnCker|Aqrwhz} z_Lo_8GvA?{x$b~Qa16x{Y${xDtzbxgx>tHeX#uEX3u+^Uv4?CeFDB?$-Kx#& zYPMexFng?R$NGOD;PNgc6=+VBfI%>dtfLMXrA9)U)Y8JerVHe90OK3umJI6WgDcYC zD$z^5H&gNdK)`B{c?fHmBiyV_XQClQLDDdHSo`HM02JE65j9l0*yVErKjw4_PgLFx z9V4$j=`RTQt8Fnb@(Tjqe`#R@>#NQa&Wh?^mO}1D@iz#&Y7{~e1&AObFogqHvJrha z1klm%Aw@E=mOabB7+FzV>cE4rEDZwbeu3`%|04m*Ix{}d?tu?jW#`1E2=2~<8R?k| zL9y(O$V^pR#aKuJctuesMD&BsIhCHn@6!iF4Skva0|BQKVwoN|M1MiRlFdH>DFXb- zeF7)35|Fm#XQrr@0gn^klaA(5#1(V$t$qD6j(lbdH!riXWsmNCQCW~H7Ayu`!b zIY$2n0#1F5*2^$Od<;nh1SBq@`Fvzk(YQtQ8>s1{FO;qk)$JD21`7Xp;a@J)^Z&|Q~X_7ZR3=aSp705Z@|I9^5zwEk9Hja!A>#fKU^efLV4)FYp;kgK=t=4mu$m9 zCbJJ~cH0tPS@%^O62k-@j~eiK7nFO>Ag_t#7T_`FC_6Xk#f#NZ=uPQ#IRPGOE10^m z9Vk-OsoMFVWPXC!5I;+UxnJFiu)Kw2(l4;6YHXju^H2yAwI}}W7@$$`T#MUcjbb`> z+FvVb$$|QlUM4bq&|L2EfN@IyXXop586g$l3m5p|2d(a09kGN~o;qgk-ta>vlQ6W^ zJoao9)O@jtKByvZyY>NF?_QcxJWS?XDr{`PU>pf*O-mV?G#&n1aJaV>^(f1)SEB-q zb^R$PSp{scNexpvSy}~FGk>V57Db9Iw`r^F`u6E=q?Wp5!l^&1SS@|WEVQFq!#~(O z7X-ALup$^0RiH4(jDfXqkdIhgqs+kQul?ZMwzZ=h7uD~Hf$ntEH?C1IiwYW5&|E^6 zfU7Sp@>c`bS@xn@-&@cxzJc=X`CWg|>i^>Fo}cRq{IAiU_=Js`#z|w_Xw+DZ8ryan z+qP}nwr$(Clk?>B#oTA+-nsw6p4t0{wcqQt(uY;6Eev?i1N+u?5PV6hf6CahgrR5g zVX{C7y;}&G6GnPZUJ8PgP0aSrJi$pE?CiruT2X6;n2#&ljAiax_eJJxg9BY@{t$4EYkWB4bG&r`xh%` z6@&RPy+ZqY0PA2P{{`0e$v3D1 zBv<9H1kLS3q9J?A-a%i+ap^dEV+4A`HG3m8b7FiqVNmu!mTq$m8aSljg|t z<;ctD$m`*V8;;0(j;K2dWKKoR?B=NV_b}x}m>^Ms z76m99do$>4`HSxX>_4@!kYkpv6=WXZ(ME7GL}NuLLq?qACB!)?SK?(};{UXOgX|qV z6`ZB4n4#~Dw9Tr0I7`gL0Wn@;2-6TDy#Oysmqe2n973#E)0IRW)C3!>Bs6h&YqY~ljJ`>$yP1N@=b}`{mId=r1qRC@v14FO;idg z_L&bb2>MXcht8fWT1YE2;Nl6?u-`CGNauxOim*~DRdo%A6RSAW;Pp}(UDBFeR4Vtu z5XGb2^6)_m4CZ~-Yz>$QE%F?8alcw9E}v+7o|EgbGLVjvrztZQOK@6JGFDqMIs^Wl zKbUgbNoQf9#@N~fFQM)$`(|Xj7^qTJ8@l)thc9tvsR(E6lE>bsWNG$ffZkWKK4Ix$ zs@=jwtVgjDcS?Bj7NyEDD1IBKj^3sp=Bgd{XO@>_VW?$2y5wM+VSrY0@LzMxb4|^^ zW2vc#V$p8nI{$$n-;lBeA8Ji@_a3Nzvllgkb6=CT};9L@;V5(iqhf_;n2zhqofa4Hq zUX)-PwZttFWlE~S#jEKTw^&Uo<(p<4U(@2dW|AXnl`!{yhuC-maZu-u`R1o^d5y&e zs|r#66_UC}p(~VEFJ+Egm7lIm&aYMAk`^aw)zD`-=zCzu)zv1im6g#!F5Q@Fh0z^w zY7xy$sIP|aT-CVhKX*ef)W+%!+Hk}}aI$oeq-z>2*3ft58L{ zqIG0vgzK+{Tij>ITO8J^yrZ+zOH)*B zp+QC!Nq+Eh3v@kwbs(J)++e6TJE;B=GJ=kwi>s#*0#3xwYJW;wr-sE zUhejO`1Y0V=Ihhu=(ctUe!e($KbWw}WSk(d?2ObkV0a_jwohRLan-1eDEV*RME1nQ zruws5zLGJ-)3(m@wa&}8&TE{mTkfuV^{z*^uIIEa&}&=Q``Q=F)&;=r2IuL9)aZV8 zYabp1j<&T&Q@1R=wc8j~?vi%QrKP2-n0|YQg%^qwUu|hUC9EQAEs3rvp^gbfaNM4$Lm(ji* zocguuZiMwlB!r%6^&Uaz9!LKS1JZzLX=5nW#k!e*6sx6pV(_BjdVOAIkhGh@kbwQ-k= zM@|I#66S@ck0}@R?jw)Hj7*R!>N2QVffAd z)y#s`M~918fG=5q-UXJ}PUB2WZ*60vPLMio&k`?8!u||m{wR&RFgso1SDC5=WdZ@1FlDNm(LL3)?XbF24}hzc2_`ippL&{ZmiFYXJ?u z0@1r7?!8bvG4Y2MK4p7F7O<8eu|)JRS-+7bb!}FIfuIinYuY0kv9Bw)jZrFE9{ey8 zK}15#m^Xg|d}CN>Lnb`tU#aOP#f@001+2#OuZ(%13p38@OV9XKh|xjJ9JR0JT&ymZ zZ^E4~wj(U9(k$6~tU<*r@t7@v#&x%NQrD}ej8fW;GZ79 zSf8YYyX6(k2f){PZ^-9HY~f`?=WZwrZKPj}8EV2E(^{CpFW|83j^T~xbT6LJt`bhn z?`}X2g>K#R`moSJG;UZaE^c{zY~k*#Nt#gjZp>MRZ;Sl0fWu!ax!LY|UzeKPjbNBj z>R7i7n-Kx?K)FC)!V|CF*dWl{#jdQU=v+qO9k`xAqMlSVy@WHA*~y_@&9f}`D&1n$ zIx>jmC#EPZ0c`Vkh88dGiQ*r-rtX{J!%xzJNo_VFeQr-(EL0%RC`>LGBJJeYAE-;i zCF374K^~S=9OzxHR`VW$4Deg*CQd9j+RqRV0M(O&-mBIOE9RTCPQT9Tk$x<^YI8rq z1Mv41@&sZdmNi~NcRL_Gy0fWDyBR;X?dK)*0PGV(F6tyVRGZw@5nPlY;jWagz zD^EydC>JYEHZ+g_Xl;&kqk|D{5m(YTY+hb!v2LBgph^ycq=|dQGc(O`J`v8}Cv|%} zArXGTA!VKqb)K7-oq7`vX#HA=kEE2 zyro^c`?w_Yx@Ep@I%qMwk3^*PqN7;9V){0e0Hhl4Xve(b*kM`(uU%FAJjbzyslEno z%WP6qeo53bHkTKm9wQ{PwRtJ+P5f`y#B^)YxtHLxK#HyhjVbV6X^Nwwqh5^gAm2d5PO8<%ZB0|K zp{&hX{wI2fft`;P*RB)CcXYIhg`&@4Wy2kWj@h3Cgw5KkN1xAvd^?dy7p>a2$y@K_ zS6hOcOEok|^w!_6REP7kKENj4n1>%Nr#6eapBE%s3sageOHZCwC@M)?-^eZunEAMDfooHy5Oxhm1nNOW3Q$2t^)+&*ZZ@^goh|@ zl(g=|{R;x7{9>H+(hx-Qq27FHV`!J&BEp+CpqddY6;*!pu6vMGU3@{nTb+NTY*ZYc zvHt%c;8x0bkyL!_?ELC42)Hnsr#3q^8H2)oBXM{3^{{h35($m`_7nQ)6!r%@H(y(N zImr_~K|HRq_L^CmZ4)J?iT)4FV2C%vlB&9!QC@Gbh|KvtnA8XKx+el$p4N0Aiv|ABzDoRlAf5#}pD?07$3AD^(N zs=W9>pP!&Jrb!c?&li8R0g3Lr(Fgcn2$+v62jKXl^=82cRw$>{lX?uIl4018fq?zzc=@*XW|H?WifU5eGlh~UEtSRG$e%R$V+wVELUzxK3J z+CYukk<*j3+EMDdbtXLkMJWw*FRJ)Ch5{R0U92J(S2;ensCjlArWylw(4t;nPakg8 zYkohDm22(1f`TTiG_iU{!{TAf`U5ZYIcy^@ob!f%mf=%>)i|aGt3}NUR9t>7k3NJ& zdF^cu;l}5)h2(saCyXuWDqLs7P7rY>2bl_iUFB|+5FN^DoI<1!AVELV1%xDF#@cO! zWkA@2Aq$Og@dJqlTM3GJ&m!0WUTBe>U_tGcr7>nNv+XjN87X(K4T8X(H1)qA;Hq*P zp%hXQQY|(Zw{p6YHF+Nh^S)2hX<@R5e*~CrT?omWKLEdGd;bFgZ$DnXyWPVYKAEo8%}=pmm0Ek%)XIFeP2XgjDu0e%7oF(EDMp z>!hw8{X+VJfIr^Qz?}5>J~XWSsrJ7^>^*iHTapr*BqImdK|=@qHf3fQ$7kEV=FVB5 zF%78uJp=xfgZu>nODIOc5Y+aQS6Tfpe z(_slB@tNXTT6k!<;%*~`?rdQxNz>%?jDgN3Mg=0~lu`5m3d@#peLgquA0WjV7aT@6#h~kz3@yo!&f00hVG}~t!r_;%K&qjicR++Q*R|{cX z@}>JU>{AW)jBSD4oM00C5#i4;v}n}>z{Oc4%Xz55%@t6f^C@#4_Qo;H#K25cZb&wf zW^YF|@}HyxbVd-a>323lEJM7Lq$dLthe^&7Tf1*GQbPU=8z;Y`zaZf3esYd_iut_7 zpn_iXB zkeC(wG}r%_D?1A)$M-K(>`@GGKAtMu-G3+d(u`>Ic8ZEVafg;RdTS%ZUa zs=v@5#~=Z7lnCGy(*v8vU@Z39m;>Jl6KUe0RPO-A_mR?}h;9^10_@QVF-yggeiWKV zVg=}H8eLbK^vqP6L_e|ZC?&bpsDnS1{%v1qpmV2{*T$G;*Q6Vac?sSBM|%H`iwB zb=#0pD`Qs&c0L0)hs@?n{j|}{S$l4)Y;P%`5ywOGWEc-Ufv%L%Cqpv1zH2pNeJ)m} zO_n0=2x>pq%cjHEAV?_7@;UJ!IDFT<-J0+ITH}eBEoYYvY!P?A-)iZi+ z<>~HD=4@I!qq$VwSv(|qeCrMabb9rqxX*?R?ss2N^`zDAzYYNb6}r~#E#IUM9bLLS zE=1#=M=$XHCGg3aY64FIi51ixXO>rPdtVUnCVSW0#g!KX&o(##M-RN!wI4Ch4xBbe zAI{}W}6kYO9;DD?%`(m=bO1d7er41%YjWesKwmse}*Dda? zx63DAeV%LIE{>mb!;jk{+k5r>CBM@a=3@Pdb2n`1Mi=DuGM3a9MT#0~(-3m+7HR+5 zTeVJ(SnQU`x?Cj5)HpM8Umzv5APUi6)TQBFLi5S?gy6S1$6dIngIv#$*ti=6x`L4T zRPKA9UaQ^s%sGiOX3MH{4$8bzd-VC>4m_57W$mkj1l`ELwr(i5BeuM(rv~mD3A+$kw&C9-Oxt9d(N>_+A|ZxFK*{ zWq<%bJY%nI3rZQKpe&SsVZ9oBZ9pUMRtp&B)X171%1;z0oSYr3PgC)uo2BcO^dE#P z|8jJue`bLi(xL2<(SE7G8fk*06K`@f=dh+d4K@SE($V83w7$`c9|QYe@g7J$nWuD?oK;wag9Wl!S>EcA+S^i zq>3*#)8bvot@x!Zw%+J1|0K>g#ekVj$E(Gfz{26&P5H5#bkadYNtTx^{_~_~{azJ+ z6-7NKMbGO4D}i*83PbaT(je_5Z^|)Sh)iusc%O1qy&RZF7B5NQyC>@Vn>BP_ES3aA z@oTko(wi`eL?@h`i%4v=|3EXFGj@$e0yCpVS1u=wuU1(IZVMcBAFFbB(sTnR7fWtZ zxRKJZ6^a=9&;ZgEly-yXt*E8vf1=FvnMres>npG?2i}K~tDnA-FF#4l%%-o=ZJ_4* zTfEj#y_FOdmtO_1*ES=o2NttNmb>2G$BIKQVK^Q88dQ1~;Knw&32=>xHrV8m%SLuo#_C#mqzB2Q-(zI) zjvVBRQkpd#^@@aPj-2esSu^wPCrP;lq@7}oU24TeUGrT^i-;VI-CD^JJdGUzXl&4Z zBNay;yG6bzAYCGZ1cO+qI79p$q^ewhS)C0tZW_M^tmR(m3)CK0P9)50cf zn-mtU$5f^!QKfxRwTkYQ`Fyy?kwm7kt%{;^S|o)Qv~n0R!q=IWUhl9}lnQIU$A79}EE zs+CX|fKFt