TradingAgents/CHANGELOG.md

28 KiB

Changelog

All notable changes to TradingAgents will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • Trade model for execution history with CGT tracking (Issue #6: DB-5)

  • FastAPI backend with JWT authentication and strategies CRUD (Issue #48)

    • FastAPI application with async/await support and health check endpoints file:tradingagents/api/main.py
    • JWT authentication with asymmetric RS256 signing algorithm file:tradingagents/api/services/auth_service.py
    • Argon2 password hashing with automatic salt generation for secure credential storage
    • POST /api/v1/auth/login endpoint with username/password authentication returning JWT tokens
    • GET /api/v1/strategies endpoint with pagination, user isolation, and permission-based access control
    • POST /api/v1/strategies endpoint for creating new strategies with JSON parameters support
    • GET /api/v1/strategies/{id} endpoint for retrieving individual strategies with authorization checks
    • PUT /api/v1/strategies/{id} endpoint for updating strategy metadata and parameters
    • DELETE /api/v1/strategies/{id} endpoint for removing strategies with proper cascade behavior
    • SQLAlchemy ORM with async PostgreSQL/SQLite support file:tradingagents/api/models/
    • User model with hashed passwords, email uniqueness, and active status tracking file:tradingagents/api/models/user.py
    • Strategy model with JSON parameters, description, user association, and active/inactive toggling file:tradingagents/api/models/strategy.py
    • Alembic migration system with version control for database schema changes file:migrations/
    • Initial migration creating users and strategies tables with proper constraints file:migrations/versions/
    • Database configuration with environment variable support (DATABASE_URL, SQLALCHEMY_ECHO) file:tradingagents/api/config.py
    • Pydantic schemas for request validation and response serialization file:tradingagents/api/schemas/
    • CORS middleware configuration with environment-based allowed origins
    • Error handling middleware with consistent JSON error responses and proper HTTP status codes
    • Request logging middleware with sanitized credential exclusion and request ID tracking
    • Comprehensive test suite with 208 tests covering authentication, strategies CRUD, models, migrations, middleware, and configuration file:tests/api/
    • API-focused fixtures with async SQLAlchemy session, FastAPI test client, and test user/strategy data file:tests/api/conftest.py
    • Security tests covering SQL injection prevention, XSS payload handling, JWT tampering detection, and rate limiting
    • Integration tests for endpoint authorization, user isolation, pagination, and cascade operations
    • Migration tests validating schema constraints, rollback behavior, and Alembic configuration
    • New dependencies in pyproject.toml: fastapi, uvicorn, sqlalchemy, alembic, pydantic-settings, passlib, argon2-cffi, python-multipart, python-jose, cryptography
    • API documentation generated from FastAPI OpenAPI schema (available at /docs and /redoc)
  • FRED API integration for economic data (Issue #8: DATA-7)

  • User model enhancement with profile and API key management (Issue #3)

  • Portfolio model for managing trading portfolios (Issue #4: DB-3)

  • Settings model for user preferences and risk management (Issue #5: DB-4)

  • Test fixtures directory with centralized mock data (Issue #51)

  • DeepSeek API support for LLM provider integration (Issue #41)

    • DeepSeek provider integration using ChatOpenAI with base_url pointing to DeepSeek API file:tradingagents/graph/trading_graph.py:105-145
    • DEEPSEEK_API_KEY environment variable handling with validation and helpful error messages
    • Support for DeepSeek models: deepseek-chat and deepseek-reasoner with custom attribution headers
    • Embedding fallback chain for providers without native embeddings (OpenAI -> HuggingFace -> disable memory) file:tradingagents/agents/utils/memory.py:16-57
    • Optional HuggingFace sentence-transformers integration (all-MiniLM-L6-v2 model) for offline embeddings
    • Graceful degradation with informative warnings when embedding backends unavailable
    • Comprehensive test suite for DeepSeek integration file:tests/integration/test_deepseek.py
  • Test directory restructuring into unit/integration/e2e (Issue #50)

    • Organized tests into unit/, integration/, and e2e/ subdirectories by test type
    • Unit tests (5 files) - Fast, isolated tests: conftest_hierarchy, documentation_structure, exceptions, logging_config, report_exporter
    • Integration tests (3 files) - Component interaction tests: akshare, cli_error_handling, openrouter
    • End-to-end tests - Complete workflow tests with dedicated e2e/README.md guidelines
    • Hierarchical conftest.py structure for each test directory with type-specific fixtures
    • Updated pytest.ini with test discovery paths (tests, tests/unit, tests/integration, tests/e2e)
    • Custom markers registered: unit, integration, e2e, llm, chromadb, slow, requires_api_key
    • Updated docs/testing/README.md with new directory structure diagram and fixture organization
    • Improved test isolation with directory-specific fixtures and configurations
  • pytest conftest.py hierarchy for organized test fixtures (Issue #49)

    • Root-level conftest.py with shared fixtures (environment variables, LangChain/ChromaDB mocking, configuration)
    • Unit-level conftest.py with data vendor mocking (akshare, yfinance, sample DataFrames)
    • Integration-level conftest.py with live ChromaDB and temporary directory fixtures
    • Fixture scope management (function, session, module) for test isolation and performance
    • Comprehensive docstrings for all fixtures with usage examples and scope documentation
    • pytest.ini configuration with custom markers (unit, integration, e2e, llm, chromadb, slow, requires_api_key)
    • Test suite validating fixture accessibility across test directories file:tests/test_conftest_hierarchy.py
    • Updated testing documentation with conftest.py hierarchy section file:docs/testing/README.md
    • Fixture usage examples in writing-tests.md file:docs/testing/writing-tests.md
  • Comprehensive documentation structure (Issue #52)

    • Organized docs/ directory with structured documentation sections
    • Quick start guide at docs/QUICKSTART.md
    • Architecture documentation in docs/architecture/ (multi-agent-system, data-flow, llm-integration)
    • API reference documentation in docs/api/ (trading-graph, agents, dataflows)
    • Developer guides in docs/guides/ (adding-new-analyst, adding-llm-provider, adding-data-vendor, configuration)
    • Testing documentation in docs/testing/ (README, running-tests, writing-tests)
    • Development setup guide in docs/development/
    • Central documentation index at docs/README.md with navigation and key concepts
    • Updated PROJECT.md DOCUMENTATION MAP section to reference new docs/ structure
    • Added Documentation section to README.md with links to key guides
  • Export reports to file with metadata (Issue #21)

  • Rate limit error handling for LLM APIs (Issue #39)

  • AKShare data vendor integration for US and Chinese stock market data (Issue #16)

  • OpenRouter API provider support for unified access to multiple LLM models

    • Support for provider/model-name format (e.g., anthropic/claude-sonnet-4.5)
    • Proper API key handling with OPENROUTER_API_KEY environment variable
    • Custom headers for OpenRouter attribution (HTTP-Referer, X-Title)
    • Embedding fallback to OpenAI when using OpenRouter (since OpenRouter lacks embeddings)
    • Comprehensive test suite for OpenRouter provider integration file:tests/test_openrouter.py
  • Expanded .env.example with all supported LLM provider API keys

  • Detailed LLM Provider Options section in README.md with examples for:

    • OpenAI (default)
    • Anthropic
    • OpenRouter (new)
    • Google Generative AI
    • Ollama (local)
  • OpenRouter configuration example in Python usage section

  • Documentation updates in PROJECT.md for OpenRouter support

Changed

Fixed

  • ChromaDB collection persistence issue by using get_or_create_collection() instead of create_collection() to prevent "collection already exists" errors and enable persistent memory across application restarts file:tradingagents/agents/utils/memory.py:29 (Issue #30)
  • Improved error messages for missing OPENROUTER_API_KEY when using openrouter provider
  • Better embedding client initialization for different LLM providers

[1.0.0] - 2025-01-01 (Example - Update with actual release date)

Added

  • Initial multi-agent trading framework release
  • Support for multiple LLM providers
  • Analyst team (fundamental, sentiment, news, technical)
  • Researcher debate mechanism
  • Risk management workflow
  • CLI interface
  • Integration with financial data APIs