8.3 KiB
8.3 KiB
Changelog
All notable changes to the TradingAgents project will be documented in this file.
[Unreleased] - 2026-01-11
Added
- Gemini 2.0 & 3.0 Support: Updated
cli/utils.pyto supportgemini-2.0-flash,gemini-2.5-flash-lite,gemini-2.5-pro,gemini-3-flash-previewandgemini-3-pro-previewmodels. - Console Debugging: Added explicit console print statements for critical "Smoking Gun" debug traces in
market_analyst.pyandtrading_graph.py.
Fixed
- Override Logic Mismatches: Fixed critical Enum-to-String type mismatch in
apply_trend_overridethat was silencing the "Safety Valve" logic. - Data Pipeline Failures: Injected robust error handling and type checking in
market_analyst.pyto identify whyRegimeDetectorreceives invalid data (causing "UNKNOWN" regimes). - Gemini 404 Errors: Removed invalid/deprecated model names causing 404s.
[Unreleased] - 2026-01-10
Added
- Global Market News: Implemented
get_global_market_newsin Alpha Vantage module to support generic market news (topics: economy_macro, financial_markets), fixing the lack of a primary vendor for global news. - Configurable Embeddings Truncation: Added
EMBEDDING_TRUNCATION_LIMITenv var (default 1000) to prevent413 Payload Too Largeerrors with local models. - Local Embedding Service Support: Added support for Anthropic to use local embedding service via URL
- Anthropic doesn't provide embeddings API, so users can run Hugging Face Text Embeddings Inference (TEI) in Docker
- Configure via
EMBEDDING_API_URLenvironment variable (default:http://localhost:11434/v1) - Configure model via
EMBEDDING_MODELenvironment variable (default:all-MiniLM-L6-v2) - Keeps main application lightweight - heavy dependencies (PyTorch) isolated in separate container
- Environment Variable Configuration: Added comprehensive environment variable support for all LLM providers and embedding configuration
OPENAI_API_URL- Custom OpenAI API endpointANTHROPIC_API_URL- Custom Anthropic API endpointGOOGLE_API_URL- Custom Google API endpointOPENROUTER_API_URL- Custom OpenRouter API endpointOLLAMA_API_URL- Custom Ollama API endpointEMBEDDING_PROVIDER- Choose embedding provider:local,openai,google,ollamaEMBEDDING_API_URL- Custom embedding API endpoint (for Ollama or Docker service)EMBEDDING_MODEL- Custom embedding model name
- Anthropic Claude 4.5 Thinking Models: Added support for latest Anthropic thinking models
claude-sonnet-4-5-thinking- Advanced reasoning with extended thinkingclaude-opus-4-5-thinking- Premier reasoning with extended thinking- Removed older Claude models (3.5, 3.7, 4.0) to focus on latest thinking models
- Documentation: Created comprehensive guides and verification tools
docs/LOCAL_EMBEDDINGS.md- Complete guide for local embeddings setupverify_local_embeddings.py- Verification script for sentence-transformersverify_ollama_embeddings.py- Verification script for Ollama (optional)- Updated
.env.examplewith all new configuration options
Changed
- Dependency Cleanup: Removed
sentence-transformersfromrequirements.txtto keep main application lightweight. - Virtual Environment: Recreated
.venvto ensure a clean state without unused heavy dependencies. - Embedding Architecture: Refactored
tradingagents/agents/utils/memory.pyto support multiple embedding providers with clean separation of concerns- Automatic provider selection based on LLM provider
- Local embeddings as default for Anthropic and Ollama providers
- Maintained backward compatibility with existing API-based embeddings
- CLI Provider Selection: Updated
cli/utils.pyto use environment variables for all LLM provider API URLs with sensible defaults - Configuration Documentation: Enhanced
.env.examplewith detailed comments and examples for all configuration options
Fixed
- Global News Failure: Resolved
RuntimeError: All vendor implementations failedforget_global_newsby correctly mapping Alpha Vantage and implementing the missing fallback logic. - Error Reporting: Improved
interface.pyto propagate detailed error messages from failed vendors to help debugging. - Embedding Crash: Fixed crashes when processing large documents with local embedding models by enforcing strict token limits via truncation.
- Anthropic Embedding Error: Resolved
404 Not Founderror when using Anthropic as LLM provider by implementing automatic fallback to local embeddings (Anthropic doesn't provide an embeddings API)
Technical Debt
- None - All changes follow SOLID principles with proper separation of concerns
[Unreleased] - 2026-01-09
Added
- Blindfire Protocol Activated: Fully integrated
TickerAnonymizerinto all analyst agents (Market,News,Fundamentals,Social) and data tools. The LLM now only sees "ASSET_XXX" in prompts, preventing data contamination. - Anonymization Middleware: Implemented transparent request interception in
core_stock_tools.pyand other tool files to deanonymize inputs and anonymize outputs automatically. - State Persistence: Added auto-persistence to
TickerAnonymizer(ticker_map.json) to ensure consistent ticker mapping across isolated agent and tool instances. - API Key Verification: Added
verify_google_key.pyscript to isolate and verify Google API Key functionality for embeddings. - Environment Management: Added
load_dotenvtocli/main.pyandverify_google_key.pyto ensure.envvariables are correctly loaded. - Start Script Enhancements: Updated
start.shto check forGOOGLE_API_KEYexistence and warn the user. - Debug Logging: Added temporary debug logging (commented out) in
memory.pyfor API key verification.
Fixed
- Embedding Model Error: Fixed
BadRequestError/404 Not Foundwhen using Google (Gemini) provider by explicitly settingtext-embedding-004and using the Google-compatible OpenAI endpoint (generativelanguage.googleapis.com). - Data Fetching Failure: Resolved
RuntimeError: All vendor implementations failed for method 'get_fundamentals'by implementing a fallback toyfinanceintradingagents/dataflows/y_finance.pyand registering it ininterface.py. - Report Saving Crash: Fixed
TypeError: write() argument must be str, not listincli/main.pyby converting structured list content to string before writing to files. - API Rate Limiting: Added
max_retrieshandling (exponential backoff) to bothChatGoogleGenerativeAI(10 retries) andOpenAIembedding client (5 retries). - Import Errors: Fixed
NameError: name 'tool' is not definedby restoringlangchain_coreimports in data tools that were accidentally removed during Blindfire integration. - Payload Size Error: Implemented input truncation (max 9000 chars) in
memory.py. - Display Layer De-Anonymization: Added
deanonymize_texttoTickerAnonymizerand patchedcli/main.pyto reverse-map "ASSET_XXX" to real company names in the final report, effectively resolving "[Company Name]" placeholders for the user while keeping the internal system blind. - Alpaca Integration: Added
tradingagents/dataflows/alpaca.pyto supportget_stock_datavia Alpaca Data API v2. Registered as a vendor option ininterface.pyanddefault_config.py. RequiresALPACA_API_KEYandALPACA_API_SECRETin.env. - CRITICAL FIX: Memory Leak: Implemented
FinancialSituationMemory.clear()andTradingAgentsGraph.reset_memory()to wipe agent context between runs. This prevents hallucinations from bleeding across days in long simulations. - CRITICAL FIX: Blind Logs: Updated
_log_stateto explicitly capturemarket_regimeandregime_metrics, ensuring we can audit decision logic relative to market conditions. - CRITICAL FIX: Crash Prevention: Added guard logic in
propagate()to handle "Dead State" (Rejected Trades) gracefully, preventing crashes whenprocess_signaltries to read non-existent buy prices.
Changed
- LLM Configuration: Updated
tradingagents/default_config.pyandcli/utils.pyto use valid Gemini model names (e.g.,gemini-1.5-flash,gemini-1.5-pro) andgemini-pro. - Vendor Configuration: Updated default
fundamental_datavendor to "alpha_vantage, yfinance" to ensure fallback availability.