TradingAgents: Multi-Agents LLM Financial Trading Framework
379 matches across 12 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_structured_agents.py | 33 | def test_minimal_required_fields(self): |
| LOW | tests/test_structured_agents.py | 42 | def test_optional_fields_included_when_present(self): |
| LOW | tests/test_structured_agents.py | 57 | def test_optional_fields_omitted_when_absent(self): |
| LOW | tests/test_structured_agents.py | 122 | def test_structured_path_produces_rendered_markdown(self): |
| LOW | tests/test_structured_agents.py | 141 | def test_prompt_includes_investment_plan(self): |
| LOW | tests/test_structured_agents.py | 150 | def test_falls_back_to_freetext_when_structured_unavailable(self): |
| LOW | tests/test_structured_agents.py | 200 | def test_structured_path_produces_rendered_markdown(self): |
| LOW | tests/test_structured_agents.py | 225 | def test_falls_back_to_freetext_when_structured_unavailable(self): |
| LOW | tests/test_minimax.py | 28 | def test_request_payload_sets_reasoning_split(self): |
| LOW | tests/test_minimax.py | 32 | def test_caller_supplied_reasoning_split_is_preserved(self): |
| LOW | tests/test_minimax.py | 45 | def test_non_reasoning_minimax_does_not_inject_reasoning_split(self): |
| LOW | tests/test_minimax.py | 80 | def test_schema_still_bound_as_tool(self): |
| LOW | tests/test_ollama_base_url.py | 18 | def test_resolver_returns_default_when_env_unset(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 24 | def test_resolver_returns_env_when_set(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 30 | def test_resolver_evaluation_is_call_time(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 38 | def test_resolver_does_not_affect_other_providers(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 46 | def test_client_get_llm_picks_up_env(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 55 | def test_explicit_base_url_overrides_env(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 72 | def test_cli_dropdown_uses_env(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 85 | def test_cli_dropdown_default_when_unset(monkeypatch): |
| LOW | tests/test_ollama_base_url.py | 99 | def test_confirm_endpoint_shows_default(monkeypatch, capsys): |
| LOW | tests/test_ollama_base_url.py | 110 | def test_confirm_endpoint_marks_env_origin(monkeypatch, capsys): |
| LOW | tests/test_ollama_base_url.py | 120 | def test_confirm_endpoint_warns_on_missing_scheme(monkeypatch, capsys): |
| LOW | tests/test_ollama_base_url.py | 131 | def test_confirm_endpoint_warns_on_non_default_port_remote(monkeypatch, capsys): |
| LOW | tests/test_ollama_base_url.py | 141 | def test_confirm_endpoint_quiet_on_local_no_port(monkeypatch, capsys): |
| LOW | tests/test_ollama_base_url.py | 151 | def test_ollama_model_labels_no_local_suffix(): |
| LOW | tests/test_ollama_base_url.py | 159 | def test_ollama_offers_custom_model_id(): |
| LOW | tests/test_capabilities.py | 13 | def test_deepseek_chat_supports_tool_choice(self): |
| LOW | tests/test_capabilities.py | 17 | def test_deepseek_reasoner_rejects_tool_choice(self): |
| LOW | tests/test_capabilities.py | 46 | def test_reasoner_variant_inherits_thinking_quirks(self): |
| LOW | tests/test_capabilities.py | 87 | def test_non_reasoning_minimax_does_not_get_reasoning_split(self): |
| LOW | tests/test_capabilities.py | 108 | def test_unknown_model_default(self): |
| LOW | tests/test_capabilities.py | 112 | def test_exact_match_precedes_pattern(self): |
| LOW | tests/test_capabilities.py | 119 | def test_capabilities_dataclass_is_frozen(): |
| LOW | tests/test_signal_processing.py | 27 | def test_explicit_label_overweight(self): |
| LOW | tests/test_signal_processing.py | 30 | def test_explicit_label_with_markdown_bold_value(self): |
| LOW | tests/test_signal_processing.py | 34 | def test_explicit_label_with_markdown_bold_label(self): |
| LOW | tests/test_signal_processing.py | 37 | def test_rendered_pm_markdown_shape(self): |
| LOW | tests/test_signal_processing.py | 46 | def test_explicit_label_wins_over_prose_with_markdown(self): |
| LOW | tests/test_signal_processing.py | 54 | def test_no_rating_returns_default(self): |
| LOW | tests/test_signal_processing.py | 57 | def test_no_rating_custom_default(self): |
| LOW | tests/test_signal_processing.py | 60 | def test_all_five_tiers_recognised(self): |
| LOW | tests/test_signal_processing.py | 72 | def test_returns_rating_from_pm_markdown(self): |
| LOW | tests/test_signal_processing.py | 88 | def test_default_when_no_rating_present(self): |
| LOW | tests/test_model_validation.py | 26 | def test_cli_catalog_models_are_all_validator_approved(self): |
| LOW | tests/test_model_validation.py | 35 | def test_unknown_model_emits_warning_for_strict_provider(self): |
| LOW | tests/test_model_validation.py | 46 | def test_openrouter_and_ollama_accept_custom_models_without_warning(self): |
| LOW | tests/test_dataflows_config.py | 17 | def test_get_config_returns_deep_copy(self): |
| LOW | tests/test_dataflows_config.py | 26 | def test_set_config_does_not_alias_caller_nested_dicts(self): |
| LOW | tests/test_dataflows_config.py | 40 | def test_partial_nested_update_preserves_existing_defaults(self): |
| LOW | tests/test_dataflows_config.py | 55 | def test_nested_dict_updates_merge_one_level_deep(self): |
| LOW | tests/test_safe_ticker_component.py | 13 | def test_accepts_common_ticker_formats(self): |
| LOW | tests/test_safe_ticker_component.py | 17 | def test_rejects_path_separators(self): |
| LOW | tests/test_safe_ticker_component.py | 22 | def test_rejects_null_byte_and_whitespace(self): |
| LOW | tests/test_safe_ticker_component.py | 27 | def test_rejects_empty_or_non_string(self): |
| LOW | tests/test_safe_ticker_component.py | 32 | def test_rejects_overlong_input(self): |
| LOW | tests/test_safe_ticker_component.py | 36 | def test_rejects_dot_only_values(self): |
| LOW | tests/test_safe_ticker_component.py | 43 | def test_traversal_string_does_not_escape_join(self): |
| LOW | tests/test_analyst_execution.py | 12 | def test_build_plan_preserves_selected_order(self): |
| LOW | tests/test_analyst_execution.py | 21 | def test_rejects_unknown_analyst_keys(self): |
| 129 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/test_structured_agents.py | 26 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_structured_agents.py | 28 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_structured_agents.py | 90 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_structured_agents.py | 92 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_structured_agents.py | 163 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_structured_agents.py | 165 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_signal_processing.py | 17 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_signal_processing.py | 19 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_signal_processing.py | 65 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_signal_processing.py | 67 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 28 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 31 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 51 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 53 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 119 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 121 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 183 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 185 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 227 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_deepseek_reasoning.py | 229 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 105 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 107 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 382 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 384 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 658 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 660 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 790 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 792 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 29 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_memory_log.py | 31 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 27 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 29 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 56 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 58 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 104 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 106 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 166 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/schemas.py | 168 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/analysts/sentiment_analyst.py | 165 | # --------------------------------------------------------------------------- |
| MEDIUM | tradingagents/agents/analysts/sentiment_analyst.py | 167 | # --------------------------------------------------------------------------- |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | test.py | 2 | |
| LOW | test.py | 2 | |
| LOW | test.py | 2 | |
| LOW | test.py | 2 | |
| LOW | test.py | 2 | |
| LOW | tests/test_ollama_base_url.py | 3 | |
| LOW | tests/test_ollama_base_url.py | 7 | |
| LOW | tests/test_capabilities.py | 5 | |
| LOW | tests/test_checkpoint_resume.py | 3 | |
| LOW | tests/test_checkpoint_resume.py | 6 | |
| LOW | tests/test_checkpoint_resume.py | 9 | |
| LOW | tests/test_env_overrides.py | 3 | |
| LOW | tests/test_api_key_env.py | 3 | |
| LOW | tests/test_api_key_env.py | 6 | |
| LOW | cli/models.py | 2 | |
| LOW | cli/models.py | 2 | |
| LOW | cli/models.py | 2 | |
| LOW | cli/models.py | 3 | |
| LOW | cli/utils.py | 3 | |
| LOW | cli/main.py | 1 | |
| LOW | cli/main.py | 11 | |
| LOW | cli/main.py | 18 | |
| LOW | cli/main.py | 31 | |
| LOW | cli/main.py | 32 | |
| LOW | cli/stats_handler.py | 2 | |
| LOW | tradingagents/__init__.py | 24 | |
| LOW | tradingagents/graph/checkpointer.py | 6 | |
| LOW | tradingagents/graph/__init__.py | 3 | |
| LOW | tradingagents/graph/__init__.py | 4 | |
| LOW | tradingagents/graph/__init__.py | 5 | |
| LOW | tradingagents/graph/__init__.py | 6 | |
| LOW | tradingagents/graph/__init__.py | 7 | |
| LOW | tradingagents/graph/__init__.py | 8 | |
| LOW | tradingagents/graph/trading_graph.py | 18 | |
| LOW | tradingagents/graph/trading_graph.py | 22 | |
| LOW | tradingagents/graph/trading_graph.py | 22 | |
| LOW | tradingagents/graph/trading_graph.py | 22 | |
| LOW | tradingagents/graph/setup.py | 7 | |
| LOW | tradingagents/graph/propagation.py | 4 | |
| LOW | tradingagents/graph/signal_processing.py | 13 | |
| LOW | tradingagents/agents/__init__.py | 1 | |
| LOW | tradingagents/agents/__init__.py | 2 | |
| LOW | tradingagents/agents/__init__.py | 2 | |
| LOW | tradingagents/agents/__init__.py | 2 | |
| LOW | tradingagents/agents/__init__.py | 4 | |
| LOW | tradingagents/agents/__init__.py | 5 | |
| LOW | tradingagents/agents/__init__.py | 6 | |
| LOW | tradingagents/agents/__init__.py | 7 | |
| LOW | tradingagents/agents/__init__.py | 7 | |
| LOW | tradingagents/agents/__init__.py | 12 | |
| LOW | tradingagents/agents/__init__.py | 13 | |
| LOW | tradingagents/agents/__init__.py | 15 | |
| LOW | tradingagents/agents/__init__.py | 16 | |
| LOW | tradingagents/agents/__init__.py | 17 | |
| LOW | tradingagents/agents/__init__.py | 19 | |
| LOW | tradingagents/agents/__init__.py | 20 | |
| LOW | tradingagents/agents/__init__.py | 22 | |
| LOW | tradingagents/agents/schemas.py | 19 | |
| LOW | tradingagents/agents/trader/trader.py | 3 | |
| LOW | tradingagents/agents/managers/portfolio_manager.py | 11 | |
| 45 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | cli/utils.py | 176 | except Exception as e: |
| LOW | cli/main.py | 1257 | except Exception as e: |
| LOW | cli/announcements.py | 23 | except Exception: |
| LOW | tradingagents/graph/trading_graph.py | 248 | except Exception as e: |
| LOW | tradingagents/agents/utils/structured.py | 66 | except Exception as exc: |
| LOW | tradingagents/dataflows/alpha_vantage_indicator.py | 220 | except Exception as e: |
| MEDIUM | tradingagents/dataflows/alpha_vantage_indicator.py | 221 | print(f"Error getting Alpha Vantage indicator data for {indicator}: {e}") |
| LOW | tradingagents/dataflows/y_finance.py | 166 | except Exception as e: |
| MEDIUM | tradingagents/dataflows/y_finance.py | 167 | print(f"Error getting bulk stockstats data: {e}") |
| LOW | tradingagents/dataflows/y_finance.py | 239 | except Exception as e: |
| LOW | tradingagents/dataflows/y_finance.py | 301 | except Exception as e: |
| LOW | tradingagents/dataflows/y_finance.py | 333 | except Exception as e: |
| LOW | tradingagents/dataflows/y_finance.py | 365 | except Exception as e: |
| LOW | tradingagents/dataflows/y_finance.py | 397 | except Exception as e: |
| LOW | tradingagents/dataflows/y_finance.py | 421 | except Exception as e: |
| LOW | tradingagents/dataflows/alpha_vantage_common.py | 119 | except Exception as e: |
| LOW | tradingagents/dataflows/yfinance_news.py | 107 | except Exception as e: |
| LOW | tradingagents/dataflows/yfinance_news.py | 201 | except Exception as e: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/test_checkpoint_resume.py | 89 | # Create a checkpoint by crashing |
| MEDIUM | cli/main.py | 45 | # Create a deque to store recent messages with a maximum length |
| MEDIUM | cli/main.py | 496 | # Create a boxed questionnaire for each step |
| MEDIUM | tradingagents/dataflows/y_finance.py | 207 | # Create a dictionary mapping date strings to indicator values |
| MEDIUM | tradingagents/dataflows/alpha_vantage_common.py | 48 | # Create a copy of params to avoid modifying the original |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | cli/main.py | 504 | # Step 1: Ticker symbol |
| LOW | cli/main.py | 518 | # Step 2: Analysis date |
| LOW | cli/main.py | 529 | # Step 3: Output language |
| LOW | cli/main.py | 538 | # Step 4: Select analysts |
| LOW | cli/main.py | 549 | # Step 5: Research depth |
| LOW | cli/main.py | 557 | # Step 6: LLM Provider |
| LOW | cli/main.py | 585 | # Step 7: Thinking agents |
| LOW | cli/main.py | 594 | # Step 8: Provider-specific thinking configuration |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | cli/main.py | 977 | |
| LOW | tradingagents/graph/trading_graph.py | 136 | |
| LOW | tradingagents/dataflows/alpha_vantage_indicator.py | 3 | |
| LOW | tradingagents/dataflows/yfinance_news.py | 54 | |
| LOW | tradingagents/dataflows/yfinance_news.py | 111 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tradingagents/agents/analysts/sentiment_analyst.py | 109 | return f"""You are a financial market sentiment analyst. Your task is to produce a comprehensive sentiment report fo |
| MEDIUM | tradingagents/agents/analysts/sentiment_analyst.py | 134 | ## How to analyze this data (best practices) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tradingagents/llm_clients/factory.py | 21 | Create an LLM client for the specified provider. Provider modules are imported lazily so that simply importing this |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tradingagents/dataflows/alpha_vantage_indicator.py | 194 | # Check if date is in our range |
| LOW | tradingagents/dataflows/y_finance.py | 24 | # Check if data is empty |
| LOW | tradingagents/dataflows/alpha_vantage_common.py | 71 | # Check if response is JSON (error responses are typically JSON) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tradingagents/dataflows/stocktwits.py | 6 | user-labeled sentiment field (``Bullish``/``Bearish``/null), the message |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tradingagents/llm_clients/model_catalog.py | 141 | ("Custom model ID", "custom"), |
| LOW | tradingagents/llm_clients/capabilities.py | 41 | # MiniMax M2.x reasoning models need ``reasoning_split=True`` so the |