AI quantitative trading platform for crypto, stocks, and forex with backtesting, live trading, market data, and multi-agent research.vibe-trading ,trading-agents,ai-trader,ai-trading
This report presents the forensic synthetic code analysis of OpenByteInc/QuantDinger, a Python project with 10,190 GitHub stars. SynthScan v2.0 examined 182,859 lines of code across 697 source files, recording 4802 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 28.9 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4802 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_version.py | 39 | except Exception: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 225 | except Exception: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 293 | except Exception: | CODE |
| LOW⚡ | mcp_server/src/quantdinger_mcp/server.py | 1109 | except Exception: | CODE |
| LOW⚡ | mcp_server/src/quantdinger_mcp/server.py | 1114 | except Exception: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/security.py | 84 | except Exception: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/security.py | 109 | except Exception: | CODE |
| LOW | backend_api_python/run.py | 14 | except Exception: | CODE |
| LOW | backend_api_python/run.py | 27 | except Exception: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 70 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 81 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 95 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 103 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 177 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 179 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 185 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 196 | except Exception: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 248 | except Exception: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 255 | except Exception: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 264 | except Exception: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 270 | except Exception: | CODE |
| LOW | backend_api_python/app/startup.py | 140 | except Exception as e: | CODE |
| LOW | backend_api_python/app/startup.py | 207 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/_version.py | 66 | except Exception: | CODE |
| LOW | backend_api_python/app/__init__.py | 16 | except Exception: | CODE |
| LOW | backend_api_python/app/__init__.py | 100 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/__init__.py | 121 | except Exception as sample_exc: | CODE |
| LOW | backend_api_python/app/__init__.py | 123 | except Exception as e: | CODE |
| MEDIUM | backend_api_python/app/__init__.py | 95 | def _configure_ibkr_asyncio() -> None: | CODE |
| MEDIUM | backend_api_python/app/__init__.py | 104 | def _bootstrap_database() -> None: | CODE |
| LOW | backend_api_python/app/tasks/agent_jobs.py | 71 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/utils/json_helpers.py | 18 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/auth.py | 84 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/auth.py | 193 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/db.py | 152 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/utils/db.py | 179 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/utils/db.py | 185 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/utils/config_loader.py | 34 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/config_loader.py | 226 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/config_loader.py | 308 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/request_guard.py | 37 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/request_guard.py | 107 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/request_guard.py | 129 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/timeutil.py | 29 | except Exception: # pragma: no cover - fallback for very old runtimes | CODE |
| LOW | backend_api_python/app/utils/timeutil.py | 45 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/timeutil.py | 80 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/timeutil.py | 95 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 364 | except Exception as exc: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 475 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 522 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 571 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 602 | except Exception: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 606 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 647 | except Exception as e: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 801 | except Exception as e: | CODE |
| MEDIUM | backend_api_python/app/utils/safe_exec.py | 564 | def _worker(code, input_data, max_memory_mb, result_pipe): | CODE |
| LOW | backend_api_python/app/utils/cache.py | 90 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/utils/cache.py | 103 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/utils/cache.py | 111 | except Exception as e: | CODE |
| LOW⚡ | backend_api_python/app/utils/cache.py | 118 | except Exception as e: | CODE |
| 1747 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp_server/tests/test_transport_resolution.py | 39 | def test_transport_default_is_stdio(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 56 | def test_transport_aliases_resolve(monkeypatch, fresh_module, raw, expected): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 61 | def test_transport_unknown_exits(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 67 | def test_apply_http_settings_without_error(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 78 | def test_non_loopback_http_requires_auth(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 86 | def test_non_loopback_http_accepts_distinct_strong_auth(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 94 | def test_non_loopback_authenticated_http_requires_https(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_transport_resolution.py | 104 | def test_invalid_numeric_env_uses_default(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 29 | def test_mcp_tool_registry_complete(fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 36 | def test_mcp_tools_are_actually_registered(fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 41 | def test_strategy_authoring_contract_uses_agent_gateway(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 53 | def test_package_version_matches_pyproject(): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 63 | def test_protocol_server_version_matches_package(fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 69 | def test_create_strategy_uses_canonical_deployment_payload(monkeypatch, fresh_module): | CODE |
| LOW | mcp_server/tests/test_security_and_tools.py | 108 | def test_quick_order_forwards_native_protection(monkeypatch, fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 134 | def test_stop_strategy_requires_confirmation(fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 140 | def test_place_quick_order_requires_confirmation(fresh_module): | CODE |
| LOW⚡ | mcp_server/tests/test_security_and_tools.py | 146 | def test_indicator_code_size_rejected_in_mcp(monkeypatch, fresh_module): | CODE |
| LOW | mcp_server/tests/test_security_and_tools.py | 182 | def test_strategy_source_workspace_payloads(monkeypatch, fresh_module): | CODE |
| LOW | mcp_server/tests/test_security_and_tools.py | 225 | def test_source_restore_and_paper_cancel_require_confirmation(fresh_module): | CODE |
| LOW | mcp_server/tests/test_security_and_tools.py | 245 | def test_redaction_handles_camel_case_and_deep_values(): | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 555 | def get_indicator_authoring_contract() -> Any: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 676 | def get_strategy_authoring_contract() -> Any: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 751 | def list_strategy_source_versions(source_id: int) -> Any: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 757 | def restore_strategy_source_version( | CODE |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 989 | def list_strategy_pending_orders(strategy_id: int, limit: int = 50, cursor: int = 0) -> Any: | CODE |
| LOW⚡ | mcp_server/src/quantdinger_mcp/server.py | 1100 | def _apply_http_settings_from_env() -> None: | CODE |
| LOW⚡ | mcp_server/src/quantdinger_mcp/server.py | 1121 | def _validate_network_security(transport: str) -> None: | CODE |
| LOW | mcp_server/src/quantdinger_mcp/security.py | 31 | def assert_indicator_code_size(code: str) -> None: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 74 | def start_pending_order_worker(): | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 99 | def start_execution_stream_supervisor(): | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 190 | def _schedule_post_restore_position_sync() -> None: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 233 | def _start_trading_support_services() -> None: | CODE |
| LOW⚡ | backend_api_python/app/startup.py | 240 | def _start_scheduler_services(*, include_celery_managed: bool = False) -> None: | CODE |
| LOW | backend_api_python/app/startup.py | 46 | def get_execution_stream_supervisor(): | CODE |
| LOW | backend_api_python/app/startup.py | 55 | def _is_debug_reloader_parent() -> bool: | CODE |
| LOW | backend_api_python/app/startup.py | 144 | def restore_running_strategies(): | CODE |
| LOW | backend_api_python/app/config/redis_urls.py | 38 | def celery_result_backend_url() -> str: | CODE |
| LOW | backend_api_python/app/runtime/roles.py | 26 | def strategy_commands_enabled() -> bool: | CODE |
| LOW | backend_api_python/app/utils/auth.py | 23 | def _configure_jwt_secret_warnings() -> None: | CODE |
| LOW | backend_api_python/app/utils/db.py | 103 | def _resolve_market_symbols_sql_path() -> Path: | CODE |
| LOW | backend_api_python/app/utils/db.py | 107 | def _resolve_strategy_templates_sql_path() -> Path: | CODE |
| LOW | backend_api_python/app/utils/local_brokers.py | 8 | def local_desktop_brokers_allowed() -> bool: | CODE |
| LOW | backend_api_python/app/utils/local_brokers.py | 14 | def desktop_broker_cloud_reject_message() -> str: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 167 | def _dangerous_pd_numpy_import(name: str) -> Optional[str]: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 481 | def safe_exec_with_validation( | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 669 | def _string_has_forbidden_dunder(text: str) -> bool: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 680 | def _is_operator_accessor_call(node: Any) -> bool: | CODE |
| LOW | backend_api_python/app/utils/safe_exec.py | 706 | def _dangerous_pd_numpy_internal(root: Optional[str], attrs: list) -> Optional[str]: | CODE |
| LOW | backend_api_python/app/utils/market_visibility.py | 49 | def enabled_markets_whitelist() -> Set[str]: | CODE |
| LOW | backend_api_python/app/utils/trade_close_reason.py | 121 | def infer_legacy_close_reason( | CODE |
| LOW | backend_api_python/app/utils/trade_close_reason.py | 142 | def resolve_close_reason_for_record( | CODE |
| LOW⚡ | backend_api_python/app/utils/trade_net_pnl.py | 62 | def allocate_open_commissions_fifo(trades: List[Dict[str, Any]]) -> Dict[int, float]: | CODE |
| LOW⚡ | backend_api_python/app/utils/db_postgres.py | 207 | def _probe_pg_connection_limit(params: Dict[str, Any]) -> Optional[Dict[str, int]]: | CODE |
| LOW⚡ | backend_api_python/app/utils/db_postgres.py | 244 | def _resolve_effective_pool_limits(params: Dict[str, Any]) -> tuple[int, int]: | CODE |
| LOW | backend_api_python/app/utils/agent_auth.py | 191 | def ensure_agent_gateway_schema() -> None: | STRING |
| LOW | backend_api_python/app/utils/risk_guard.py | 26 | def trailing_exit_locks_net_profit( | CODE |
| LOW | backend_api_python/app/observability/http.py | 27 | def start_request_observation(): | CODE |
| LOW | backend_api_python/app/observability/http.py | 36 | def finish_request_observation(response): | CODE |
| LOW | backend_api_python/app/observability/http.py | 50 | def clear_request_observation(_error=None): | CODE |
| 1640 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker-compose.yml | 78 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 80 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 113 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 115 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 182 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 184 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 421 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 423 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 457 | # ======================== | COMMENT |
| MEDIUM | docker-compose.yml | 459 | # ======================== | COMMENT |
| MEDIUM | docs/deployment/NOTIFICATION_SMS_CONFIG_CN.md | 93 | # ========================= | COMMENT |
| MEDIUM | docs/deployment/NOTIFICATION_SMS_CONFIG_CN.md | 95 | # ========================= | COMMENT |
| MEDIUM⚡ | docs/deployment/NOTIFICATION_EMAIL_CONFIG_EN.md | 72 | # ========================= | COMMENT |
| MEDIUM⚡ | docs/deployment/NOTIFICATION_EMAIL_CONFIG_EN.md | 74 | # ========================= | COMMENT |
| MEDIUM⚡ | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 92 | # ========================= | COMMENT |
| MEDIUM⚡ | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 94 | # ========================= | COMMENT |
| MEDIUM | docs/deployment/NOTIFICATION_EMAIL_CONFIG_CN.md | 74 | # ========================= | COMMENT |
| MEDIUM | docs/deployment/NOTIFICATION_EMAIL_CONFIG_CN.md | 76 | # ========================= | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_jobs.py | 229 | # ──────────────────────────── progress / streaming ──────────────────────────── | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 350 | # ─────────────────────────── verification ─────────────────────────── | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 393 | # ─────────────────────────── audit ─────────────────────────── | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 483 | # ─────────────────────────── decorator ─────────────────────────── | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 739 | # ─────────────────────────── idempotency ─────────────────────────── | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 776 | # ─────────────────────────── helpers for routes ─────────────────────────── | COMMENT |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 202 | # ─────────────────────────── token primitives ─────────────────────────── | STRING |
| MEDIUM | backend_api_python/app/utils/agent_auth.py | 245 | # ─────────────────────────── distributed rate limit ─────────────────────────── | STRING |
| MEDIUM | backend_api_python/app/data_providers/__init__.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/__init__.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/__init__.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/__init__.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/__init__.py | 154 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/__init__.py | 156 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_providers/opportunities.py | 232 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_providers/opportunities.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/opportunities.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_providers/opportunities.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 491 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 493 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 345 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 347 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/forex.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/forex.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/cache_manager.py | 172 | # ============================================ | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/cache_manager.py | 173 | # ============================================ | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/futures.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/futures.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/circuit_breaker.py | 152 | # ============================================ | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/circuit_breaker.py | 153 | # ============================================ | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/asia_stock_kline.py | 104 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/asia_stock_kline.py | 106 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/asia_stock_kline.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/asia_stock_kline.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/asia_stock_kline.py | 324 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/data_sources/asia_stock_kline.py | 326 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/asia_stock_kline.py | 486 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend_api_python/app/data_sources/asia_stock_kline.py | 488 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend_api_python/app/routes/auth.py | 140 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend_api_python/app/routes/auth.py | 142 | # ============================================================================= | COMMENT |
| 150 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_mojibake.py | 9 | CODE | |
| LOW | scripts/check_docs.py | 4 | CODE | |
| LOW | scripts/bump_version.py | 12 | CODE | |
| LOW | scripts/check_version.py | 12 | CODE | |
| LOW | mcp_server/tests/test_transport_resolution.py | 11 | CODE | |
| LOW | mcp_server/tests/test_security_and_tools.py | 2 | CODE | |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 7 | CODE | |
| LOW | mcp_server/src/quantdinger_mcp/security.py | 2 | CODE | |
| LOW | backend_api_python/app/startup.py | 2 | CODE | |
| LOW | backend_api_python/app/_version.py | 8 | CODE | |
| LOW | backend_api_python/app/celery_app.py | 3 | CODE | |
| LOW | backend_api_python/app/__init__.py | 2 | CODE | |
| LOW | backend_api_python/app/__init__.py | 23 | CODE | |
| LOW | backend_api_python/app/__init__.py | 23 | CODE | |
| LOW | backend_api_python/app/tasks/maintenance.py | 3 | CODE | |
| LOW | backend_api_python/app/tasks/agent_jobs.py | 3 | CODE | |
| LOW | backend_api_python/app/tasks/fast_analysis.py | 3 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 2 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 3 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 4 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 4 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/config/redis_urls.py | 3 | CODE | |
| LOW | backend_api_python/app/runtime/roles.py | 3 | CODE | |
| LOW | backend_api_python/app/runtime/__init__.py | 3 | CODE | |
| LOW | backend_api_python/app/runtime/__init__.py | 3 | CODE | |
| LOW | backend_api_python/app/runtime/process.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/json_helpers.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/db.py | 23 | CODE | |
| LOW | backend_api_python/app/utils/db.py | 23 | CODE | |
| LOW | backend_api_python/app/utils/local_brokers.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/request_guard.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/notification_display.py | 6 | CODE | |
| LOW | backend_api_python/app/utils/timeutil.py | 21 | CODE | |
| LOW | backend_api_python/app/utils/market_visibility.py | 27 | CODE | |
| LOW | backend_api_python/app/utils/technical_indicators.py | 8 | CODE | |
| LOW | backend_api_python/app/utils/technical_indicators.py | 12 | CODE | |
| LOW | backend_api_python/app/utils/__init__.py | 4 | CODE | |
| LOW | backend_api_python/app/utils/__init__.py | 5 | CODE | |
| LOW | backend_api_python/app/utils/__init__.py | 6 | CODE | |
| LOW | backend_api_python/app/utils/trade_close_reason.py | 6 | CODE | |
| LOW | backend_api_python/app/utils/trade_net_pnl.py | 10 | CODE | |
| LOW | backend_api_python/app/utils/agent_jobs.py | 19 | CODE | |
| LOW | backend_api_python/app/utils/resource_guard.py | 8 | CODE | |
| LOW | backend_api_python/app/utils/logger.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/broker_session.py | 19 | CODE | |
| LOW | backend_api_python/app/utils/credential_crypto.py | 8 | CODE | |
| LOW | backend_api_python/app/utils/language.py | 8 | CODE | |
| LOW | backend_api_python/app/utils/strategy_runtime_logs.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/thread_capacity.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/agent_auth.py | 11 | CODE | |
| LOW | backend_api_python/app/utils/risk_guard.py | 3 | CODE | |
| LOW | backend_api_python/app/utils/pnl.py | 2 | CODE | |
| LOW | backend_api_python/app/observability/metrics.py | 3 | CODE | |
| 525 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_mojibake.py | 80 | CODE | |
| LOW | scripts/check_docs.py | 48 | CODE | |
| LOW | mcp_server/src/quantdinger_mcp/security.py | 43 | CODE | |
| LOW | mcp_server/src/quantdinger_mcp/security.py | 90 | CODE | |
| LOW | backend_api_python/app/startup.py | 144 | CODE | |
| LOW | backend_api_python/app/utils/db.py | 163 | CODE | |
| LOW | backend_api_python/app/utils/config_loader.py | 233 | CODE | |
| LOW | backend_api_python/app/utils/request_guard.py | 55 | CODE | |
| LOW | backend_api_python/app/utils/timeutil.py | 50 | CODE | |
| LOW | backend_api_python/app/utils/safe_exec.py | 718 | CODE | |
| LOW | backend_api_python/app/utils/safe_exec.py | 323 | CODE | |
| LOW | backend_api_python/app/utils/agent_jobs.py | 272 | CODE | |
| LOW | backend_api_python/app/utils/db_postgres.py | 456 | CODE | |
| LOW | backend_api_python/app/utils/agent_auth.py | 49 | CODE | |
| LOW | backend_api_python/app/observability/metrics.py | 72 | CODE | |
| LOW | backend_api_python/app/openapi/register.py | 128 | CODE | |
| LOW | backend_api_python/app/openapi/register.py | 163 | CODE | |
| LOW | backend_api_python/app/data_providers/heatmap.py | 143 | CODE | |
| LOW | backend_api_python/app/data_providers/heatmap.py | 163 | CODE | |
| LOW | backend_api_python/app/data_providers/forex.py | 29 | CODE | |
| LOW | backend_api_python/app/data_providers/forex.py | 69 | CODE | |
| LOW | backend_api_python/app/data_providers/forex.py | 109 | CODE | |
| LOW | backend_api_python/app/data_providers/forex.py | 158 | CODE | |
| LOW | backend_api_python/app/data_providers/sentiment.py | 45 | CODE | |
| LOW | backend_api_python/app/data_providers/sentiment.py | 114 | CODE | |
| LOW | backend_api_python/app/data_providers/sentiment.py | 184 | CODE | |
| LOW | backend_api_python/app/data_providers/sentiment.py | 253 | CODE | |
| LOW | backend_api_python/app/data_providers/sentiment.py | 289 | CODE | |
| LOW | backend_api_python/app/data_providers/sentiment.py | 325 | CODE | |
| LOW | backend_api_python/app/data_providers/__init__.py | 306 | CODE | |
| LOW | backend_api_python/app/data_providers/opportunities.py | 85 | CODE | |
| LOW | backend_api_python/app/data_providers/opportunities.py | 143 | CODE | |
| LOW | backend_api_python/app/data_providers/opportunities.py | 236 | CODE | |
| LOW | backend_api_python/app/data_providers/opportunities.py | 283 | CODE | |
| LOW | backend_api_python/app/data_providers/opportunities.py | 323 | CODE | |
| LOW | backend_api_python/app/data_providers/opportunities.py | 384 | CODE | |
| LOW | backend_api_python/app/data_providers/crypto.py | 28 | CODE | |
| LOW | backend_api_python/app/data_providers/crypto.py | 68 | CODE | |
| LOW | backend_api_python/app/data_providers/commodities.py | 29 | CODE | |
| LOW | backend_api_python/app/data_providers/commodities.py | 67 | CODE | |
| LOW | backend_api_python/app/data_providers/commodities.py | 114 | CODE | |
| LOW | backend_api_python/app/data_providers/commodities.py | 161 | CODE | |
| LOW | backend_api_python/app/data_providers/indices.py | 30 | CODE | |
| LOW | backend_api_python/app/data_providers/news.py | 15 | CODE | |
| LOW | backend_api_python/app/workers/trading.py | 93 | CODE | |
| LOW | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 75 | CODE | |
| LOW | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 171 | CODE | |
| LOW | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 513 | CODE | |
| LOW | …kend_api_python/app/data_sources/cn_hk_fundamentals.py | 600 | CODE | |
| LOW | backend_api_python/app/data_sources/forex.py | 135 | CODE | |
| LOW | backend_api_python/app/data_sources/forex.py | 191 | CODE | |
| LOW | backend_api_python/app/data_sources/forex.py | 394 | CODE | |
| LOW | backend_api_python/app/data_sources/us_stock.py | 214 | CODE | |
| LOW | backend_api_python/app/data_sources/us_stock.py | 387 | CODE | |
| LOW | backend_api_python/app/data_sources/us_stock.py | 479 | CODE | |
| LOW | backend_api_python/app/data_sources/factory.py | 186 | CODE | |
| LOW | backend_api_python/app/data_sources/futures.py | 110 | CODE | |
| LOW | backend_api_python/app/data_sources/crypto.py | 56 | CODE | |
| LOW | backend_api_python/app/data_sources/crypto.py | 405 | CODE | |
| LOW | backend_api_python/app/data_sources/crypto.py | 497 | CODE | |
| 248 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend_api_python/app/routes/quick_trade.py | 414 | # Spot input is quote notional. Swap input is margin and expands by leverage. | COMMENT |
| MEDIUM | backend_api_python/app/routes/quick_trade.py | 500 | # 50 USDT notional at leverage=1 needs ~50 USDT collateral. Many users | COMMENT |
| MEDIUM⚡ | backend_api_python/app/routes/global_market.py | 146 | """Get comprehensive market sentiment indicators.""" | STRING |
| MEDIUM | backend_api_python/app/routes/indicator.py | 766 | - Do **not** emit `# @strategy`, `# signal_form`, `# exit_owner`, `# flip_mode`, `# timeframe`, risk defaults, position | CODE |
| MEDIUM | …end_api_python/app/services/ai_generation_contracts.py | 58 | ## Contract leverage | COMMENT |
| MEDIUM⚡ | backend_api_python/app/services/pending_order_worker.py | 1730 | # - For OKX swap, leverage must be set via private endpoint; otherwise exchange defaults apply. | COMMENT |
| MEDIUM⚡ | backend_api_python/app/services/pending_order_worker.py | 1731 | # - For other exchanges, leverage setting is not implemented yet in this local client. | COMMENT |
| MEDIUM | backend_api_python/app/services/llm.py | 1402 | """Safe LLM call with robust JSON parsing and fallback structure.""" | STRING |
| LOW | backend_api_python/app/services/symbol_name.py | 229 | # 1) Seed (already in our DB — nothing to learn, just return). | COMMENT |
| MEDIUM | backend_api_python/app/services/indicator_workspace.py | 66 | "# @strategy, # signal_form, # exit_owner, # flip_mode, # timeframe, risk, leverage, trade direction, stop l | CODE |
| MEDIUM⚡ | backend_api_python/app/services/portfolio_monitor.py | 464 | """Build a comprehensive text report (backward compatible).""" | STRING |
| MEDIUM | backend_api_python/app/services/live_trading/okx.py | 77 | # Best-effort cache for leverage settings to avoid spamming set-leverage on every tick. | COMMENT |
| MEDIUM | …hon/app/services/live_trading/account_configuration.py | 70 | """Apply requested leverage and margin mode or reject the order.""" | STRING |
| MEDIUM⚡ | backend_api_python/app/services/live_trading/bitget.py | 1058 | # For robust parsing: contractSize helps converting contracts->base if needed. | COMMENT |
| MEDIUM | backend_api_python/app/services/live_trading/bitget.py | 65 | # Best-effort cache for leverage settings to avoid spamming set-leverage on every tick. | COMMENT |
| MEDIUM | backend_api_python/app/services/live_trading/gate.py | 586 | # Gate expects ``leverage`` / ``cross_leverage_limit`` as **query parameters**, not JSON body | COMMENT |
| MEDIUM | backend_api_python/app/services/live_trading/gate.py | 587 | # (see gateapi-python: update_position_leverage). Cross / portfolio mode: leverage=0 + cross_leverage_limit. | COMMENT |
| MEDIUM | backend_api_python/app/services/live_trading/binance.py | 1056 | """Read back symbol-level margin mode and leverage from positionRisk. | STRING |
| MEDIUM | …d_api_python/app/services/usdt_payment/watchers/evm.py | 118 | # mainnet, and Etherscan's indexed tokentx endpoint is more robust | COMMENT |
| MEDIUM | backend_api_python/app/services/grid/engine.py | 1240 | """One grid line's base quantity (amountPerGrid × leverage / price), exchange-normalized.""" | STRING |
| MEDIUM | backend_api_python/tests/test_grid_engine.py | 329 | """100 USDT * 20% margin * 20x leverage ≈ 400 USDT notional at 72710.""" | STRING |
| MEDIUM⚡ | backend_api_python/tests/test_indicator_code_quality.py | 74 | # @strategy leverage 2 | COMMENT |
| MEDIUM⚡ | backend_api_python/tests/test_risk_pct_basis.py | 62 | # 92 / 100 = -8% > -9% — must NOT trigger even at 10x leverage. | COMMENT |
| MEDIUM | backend_api_python/tests/test_risk_pct_basis.py | 114 | # 16% price move required regardless of leverage. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend_api_python/run.py | 61 | def _set_if_blank(key: str, value: str) -> None: | CODE |
| LOW | backend_api_python/app/celery_app.py | 83 | __all__ = ["celery_app"] | CODE |
| LOW | backend_api_python/app/config/__init__.py | 15 | __all__ = [ | CODE |
| LOW | backend_api_python/app/runtime/__init__.py | 5 | __all__ = ["ProcessRole", "current_process_role"] | CODE |
| LOW | backend_api_python/app/utils/db.py | 222 | __all__ = [ | CODE |
| LOW | backend_api_python/app/utils/config_loader.py | 67 | def set_nested(cfg: Dict[str, Any], dotted_key: str, value: Any) -> None: | CODE |
| LOW | backend_api_python/app/utils/timeutil.py | 112 | __all__ = ["to_utc_iso"] | CODE |
| LOW | backend_api_python/app/utils/__init__.py | 8 | __all__ = ['get_logger', 'CacheManager', 'get_retry_session'] | CODE |
| LOW | backend_api_python/app/utils/broker_session.py | 116 | __all__ = ['BrokerSessionRegistry'] | CODE |
| LOW | backend_api_python/app/observability/__init__.py | 10 | __all__ = ["init_http_observability"] | CODE |
| LOW | backend_api_python/app/openapi/schemas/__init__.py | 11 | __all__ = [ | CODE |
| LOW | backend_api_python/app/data_providers/news.py | 75 | __all__ = ["fetch_financial_news", "get_economic_calendar", "get_economic_calendar_payload"] | CODE |
| LOW | backend_api_python/app/data_sources/cache_manager.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/data_sources/rate_limiter.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/data_sources/__init__.py | 13 | __all__ = [ | CODE |
| LOW | backend_api_python/app/data_sources/__init__.py | 35 | __all__ = [ | CODE |
| LOW | backend_api_python/app/data_sources/circuit_breaker.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/strategy_daily_pnl.py | 356 | __all__ = [ | STRING |
| LOW | backend_api_python/app/services/usdt_payment_service.py | 17 | __all__ = [ | CODE |
| LOW | …end_api_python/app/services/alpaca_trading/__init__.py | 19 | __all__ = ['AlpacaClient', 'AlpacaConfig', 'normalize_symbol', 'parse_symbol'] | CODE |
| LOW | …d_api_python/app/services/live_trading/binance_spot.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend_api_python/app/services/live_trading/okx.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/live_trading/bybit.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | …nd_api_python/app/services/live_trading/bitget_spot.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ervices/live_trading/alpaca_activity_reconciliation.py | 456 | __all__ = [ | CODE |
| LOW | …nd_api_python/app/services/live_trading/spot_sizing.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/live_trading/factory.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/live_trading/bitget.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/live_trading/gate.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/live_trading/htx.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | …on/app/services/live_trading/funding_reconciliation.py | 238 | __all__ = [ | CODE |
| LOW | backend_api_python/app/services/live_trading/base.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/live_trading/binance.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend_api_python/app/services/strategy_v2/__init__.py | 21 | __all__ = [ | CODE |
| LOW | backend_api_python/app/services/strategy_v2/runtime.py | 179 | def set_default_protection(self, **values: Any) -> None: | CODE |
| LOW | backend_api_python/app/services/strategy_v2/runtime.py | 228 | def update_order_statuses(self, values: Mapping[str, Mapping[str, Any]] | None) -> None: | CODE |
| LOW | backend_api_python/app/services/strategy_v2/runtime.py | 241 | def set_last_exit_reason(self, symbol: object, reason: object) -> None: | CODE |
| LOW | backend_api_python/app/services/strategy_v2/contract.py | 126 | def set_benchmark(self, value: object) -> None: | CODE |
| LOW | backend_api_python/app/services/strategy_v2/contract.py | 145 | def set_warmup(self, bars: object) -> None: | CODE |
| LOW | backend_api_python/app/services/strategy_v2/contract.py | 153 | def set_metadata(self, **values: Any) -> None: | CODE |
| LOW | backend_api_python/app/services/strategy_v2/data.py | 54 | def set_clock(self, current_dt: Any, *, include_current: bool) -> None: | CODE |
| LOW⚡ | …hon/app/services/pending_orders/position_sync_cache.py | 109 | def set_exchange_sync_backoff(cache_key: str, seconds: Optional[float] = None) -> None: | CODE |
| LOW | backend_api_python/app/services/factors/__init__.py | 20 | __all__ = [ | CODE |
| LOW | …ckend_api_python/app/services/usdt_payment/__init__.py | 24 | __all__ = [ | CODE |
| LOW | …_python/app/services/usdt_payment/watchers/__init__.py | 27 | __all__ = ["IncomingTransfer", "WatcherResult", "get_watcher"] | CODE |
| LOW | …_api_python/app/services/execution_streams/__init__.py | 8 | __all__ = ["ExecutionStreamSupervisor", "get_execution_stream_supervisor"] | CODE |
| LOW | …d_api_python/app/services/strategy_runtime/__init__.py | 9 | __all__ = [ | CODE |
| LOW | …ckend_api_python/app/services/ibkr_trading/__init__.py | 14 | __all__ = ['IBKRClient', 'IBKRConfig', 'normalize_symbol', 'parse_symbol'] | CODE |
| LOW | backend_api_python/app/services/bot_scripts/__init__.py | 8 | __all__ = [ | CODE |
| LOW | backend_api_python/app/services/grid/__init__.py | 7 | __all__ = ["GridBotConfig", "GridEngine", "GridRestingRunner"] | CODE |
| LOW | backend_api_python/app/services/grid/engine.py | 151 | def set_runtime_params(self, params: Dict[str, Any]) -> None: | CODE |
| LOW | backend_api_python/app/services/grid/engine.py | 434 | def set_initial_exchange_baseline(self, *, long_size: float = 0.0, short_size: float = 0.0) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 17 | ### Step 1: Create a Google Cloud Project | COMMENT |
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 23 | ### Step 2: Configure OAuth Consent Screen | COMMENT |
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 35 | ### Step 3: Create OAuth 2.0 Client ID | COMMENT |
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 49 | ### Step 4: Configure .env File | COMMENT |
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 62 | ### Step 1: Create GitHub OAuth App | COMMENT |
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 75 | ### Step 2: Get Credentials | COMMENT |
| LOW | docs/deployment/OAUTH_CONFIG_EN.md | 81 | ### Step 3: Configure .env File | COMMENT |
| LOW⚡ | docs/deployment/OAUTH_CONFIG_EN.md | 96 | ### Step 1: Create Turnstile Widget | COMMENT |
| LOW⚡ | docs/deployment/OAUTH_CONFIG_EN.md | 106 | ### Step 2: Get Keys | COMMENT |
| LOW⚡ | docs/deployment/OAUTH_CONFIG_EN.md | 112 | ### Step 3: Configure .env File | COMMENT |
| LOW | docs/deployment/NOTIFICATION_EMAIL_CONFIG_EN.md | 48 | ### Step 1: Obtain SMTP Service Information | COMMENT |
| LOW⚡ | docs/deployment/NOTIFICATION_EMAIL_CONFIG_EN.md | 67 | ### Step 2: Configure Environment Variables | COMMENT |
| LOW | docs/deployment/NOTIFICATION_EMAIL_CONFIG_EN.md | 103 | ### Step 3: Enable Email Notifications in Strategy | COMMENT |
| LOW | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 45 | ### Step 1: Create a Twilio Account | COMMENT |
| LOW | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 57 | ### Step 2: Obtain API Credentials | COMMENT |
| LOW | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 71 | ### Step 3: Get a Phone Number | COMMENT |
| LOW⚡ | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 87 | ### Step 4: Configure Environment Variables | COMMENT |
| LOW | docs/deployment/NOTIFICATION_SMS_CONFIG_EN.md | 113 | ### Step 5: Enable SMS Notifications in Strategy | COMMENT |
| LOW | docs/deployment/NOTIFICATION_TELEGRAM_CONFIG_EN.md | 27 | ## Step 1: Create a Telegram Bot | COMMENT |
| LOW | docs/deployment/NOTIFICATION_TELEGRAM_CONFIG_EN.md | 38 | ## Step 2: Obtain Bot Token | COMMENT |
| LOW | docs/deployment/NOTIFICATION_TELEGRAM_CONFIG_EN.md | 50 | ## Step 3: Get Your User ID | COMMENT |
| LOW | docs/deployment/NOTIFICATION_TELEGRAM_CONFIG_EN.md | 77 | ## Step 4: Configure Environment Variables | COMMENT |
| LOW | docs/deployment/NOTIFICATION_TELEGRAM_CONFIG_EN.md | 90 | ## Step 5: Enable Telegram Notifications in Strategy | COMMENT |
| LOW⚡ | backend_api_python/app/routes/auth.py | 175 | # Step 1: Verify Turnstile (if enabled) | COMMENT |
| LOW⚡ | backend_api_python/app/routes/auth.py | 184 | # Step 2: Check rate limiting | COMMENT |
| LOW⚡ | backend_api_python/app/routes/auth.py | 191 | # Step 3: Authenticate | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 272 | # Step 4: Record successful login | COMMENT |
| LOW | …pi_python/app/services/usdt_payment/watchers/solana.py | 181 | # Step 1: resolve the watched account. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/generate-secret-key.sh | 9 | # Check if .env exists. | COMMENT |
| LOW | backend_api_python/docker-entrypoint.sh | 11 | # Check if .env file exists | COMMENT |
| LOW⚡ | backend_api_python/app/routes/auth.py | 197 | # Check if user has no password set (code-login user) | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 416 | # Check if user exists | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 421 | # Check if registration is enabled | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 719 | # Check if registration is enabled | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 764 | # Check if username already exists | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 769 | # Check if email already exists | COMMENT |
| LOW | backend_api_python/app/routes/indicator.py | 895 | # Check if any LLM provider is configured | COMMENT |
| LOW | backend_api_python/app/routes/portfolio.py | 86 | # Check if force refresh (skip cache) | COMMENT |
| LOW | backend_api_python/app/routes/portfolio.py | 316 | # Check if force refresh | COMMENT |
| LOW | backend_api_python/app/routes/portfolio.py | 728 | # Check if alert already exists for this position (unique constraint) | COMMENT |
| LOW | backend_api_python/app/services/pending_order_worker.py | 1638 | # Check if this is an IBKR client (US stocks) | COMMENT |
| LOW⚡ | backend_api_python/app/services/oauth_service.py | 681 | # Check if user has password (can't unlink last auth method) | COMMENT |
| LOW⚡ | backend_api_python/app/services/oauth_service.py | 689 | # Check if this is the only OAuth link | COMMENT |
| LOW | backend_api_python/app/services/oauth_service.py | 466 | # Check if OAuth link exists | COMMENT |
| LOW | backend_api_python/app/services/oauth_service.py | 516 | # Check if user exists with same email | COMMENT |
| LOW | backend_api_python/app/services/llm.py | 1143 | # Check if we have API key for the detected provider | COMMENT |
| LOW | backend_api_python/app/services/security_service.py | 275 | # Check if still in block period | COMMENT |
| LOW⚡ | backend_api_python/app/services/email_service.py | 53 | # Check if email is properly configured | COMMENT |
| LOW | backend_api_python/app/services/email_service.py | 135 | # Check if locked due to too many failed attempts | COMMENT |
| LOW | backend_api_python/app/services/email_service.py | 171 | # Check if code matches | COMMENT |
| LOW | backend_api_python/app/services/portfolio_monitor.py | 1530 | # Check if we can trigger (not triggered yet, or repeat interval passed) | STRING |
| LOW | backend_api_python/app/services/user_service.py | 644 | # Check if user has no password (code-login user) | COMMENT |
| LOW | backend_api_python/app/services/user_service.py | 766 | # Check if username already exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend_api_python/app/services/live_trading/bybit.py | 0 | convert decimal to string with controlled precision. bitget requires quantities to match sizestep/sizeplace precision. a | STRING |
| HIGH | …nd_api_python/app/services/live_trading/bitget_spot.py | 0 | convert decimal to string with controlled precision. bitget requires quantities to match sizestep/sizeplace precision. a | STRING |
| HIGH | backend_api_python/app/services/live_trading/bitget.py | 0 | convert decimal to string with controlled precision. bitget requires quantities to match sizestep/sizeplace precision. a | STRING |
| HIGH | backend_api_python/tests/test_agent_current_contract.py | 0 | def initialize(context): context.set_universe(["usstock:aapl"]) context.subscribe(frequency="1d") def handle_data(contex | STRING |
| HIGH | backend_api_python/tests/test_strategy_v2_service.py | 0 | def initialize(context): context.set_universe(["usstock:aapl"]) context.subscribe(frequency="1d") def handle_data(contex | STRING |
| HIGH | backend_api_python/tests/test_strategy_v2_runtime.py | 0 | def initialize(context): context.set_universe(["usstock:aapl"]) context.subscribe(frequency="1d") def handle_data(contex | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | backend_api_python/app/services/ai_calibration.py | 148 | # Approx correctness rules (as requested) | COMMENT |
| HIGH | backend_api_python/app/services/ai_report_pdf.py | 111 | "disclaimer": "This report is generated by AI for research only and is not investment advice.", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mcp_server/src/quantdinger_mcp/server.py | 382 | CODE | |
| LOW | mcp_server/src/quantdinger_mcp/server.py | 626 | CODE | |
| LOW | backend_api_python/app/routes/user.py | 873 | CODE | |
| LOW | backend_api_python/app/routes/global_market.py | 174 | CODE | |
| LOW | backend_api_python/app/services/pending_order_worker.py | 2728 | CODE | |
| LOW | backend_api_python/app/services/community_service.py | 125 | CODE | |
| LOW | backend_api_python/app/services/community_service.py | 417 | CODE | |
| LOW | …d_api_python/app/services/live_trading/binance_spot.py | 643 | CODE | |
| LOW | backend_api_python/app/services/live_trading/htx_v5.py | 370 | CODE | |
| LOW | backend_api_python/app/services/live_trading/records.py | 460 | CODE | |
| LOW | backend_api_python/app/services/live_trading/binance.py | 471 | CODE | |
| LOW | backend_api_python/app/services/strategy_v2/service.py | 123 | CODE | |
| LOW | …api_python/app/services/pending_orders/fill_records.py | 69 | CODE | |
| LOW | …pi_python/app/services/execution_streams/repository.py | 14 | CODE | |
| LOW | …_python/app/services/strategy_runtime/order_intents.py | 71 | CODE | |
| LOW | …d_api_python/app/services/strategy_runtime/identity.py | 75 | CODE | |
| LOW | backend_api_python/app/services/grid/fill_handler.py | 130 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.ghcr.yml | 1 | # QuantDinger Docker Compose - GHCR prebuilt images (zero-repo deploy) | COMMENT |
| LOW | docker-compose.ghcr.yml | 21 | # Database schema is bootstrapped automatically: the backend re-applies | COMMENT |
| LOW | install.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker-compose.build.yml | 1 | # Override file for local frontend builds. | COMMENT |
| LOW | docker-compose.yml | 1 | # QuantDinger Docker Compose - One-Click Deployment | COMMENT |
| LOW | docker-compose.yml | 421 | # ======================== | COMMENT |
| LOW | .github/workflows/docker-publish.yml | 1 | name: Publish backend image to GHCR | COMMENT |
| LOW | backend_api_python/app/routes/settings.py | 21 | settings_blp = Blueprint('settings', __name__) | COMMENT |
| LOW | backend_api_python/app/services/builtin_indicators.py | 41 | # * output['signals'] is chart-only and never drives orders by itself | COMMENT |
| LOW | backend_api_python/app/services/oauth_service.py | 161 | # FRONTEND_URL accepts a comma-separated list of origins (the same | COMMENT |
| LOW | …d_api_python/app/services/usdt_payment/watchers/evm.py | 81 | "https://bsc-dataseed4.binance.org", | COMMENT |
| LOW | …d_api_python/app/services/usdt_payment/watchers/evm.py | 101 | # eth_getLogs; we cap at 4800 to stay safely under that. At 0.75s/block | COMMENT |
| LOW | …pi_python/app/services/usdt_payment/watchers/solana.py | 181 | # Step 1: resolve the watched account. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend_api_python/app/services/strategy_v2/runtime.py | 350 | or not cached.index.equals(frame.index[:cached_length]) | CODE |
| HIGH | backend_api_python/tests/test_llm_litellm_provider.py | 267 | b'data: {"choices":[{"delta":{"content":"partial"},"finish_reason":null}]}', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | backend_api_python/app/routes/auth.py | 175 | # Step 1: Verify Turnstile (if enabled) | COMMENT |
| LOW⚡ | backend_api_python/app/routes/auth.py | 184 | # Step 2: Check rate limiting | COMMENT |
| LOW⚡ | backend_api_python/app/routes/auth.py | 191 | # Step 3: Authenticate | COMMENT |
| LOW | backend_api_python/app/routes/auth.py | 272 | # Step 4: Record successful login | COMMENT |
| LOW | …pi_python/app/services/usdt_payment/watchers/solana.py | 181 | # Step 1: resolve the watched account. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend_api_python/app/routes/settings.py | 302 | 'default': 'admin@example.com', | CODE |
| LOW | backend_api_python/app/routes/settings.py | 1859 | if requested_admin_email and requested_admin_email != 'admin@example.com': | CODE |
| LOW | backend_api_python/app/services/security_service.py | 28 | 'placeholder', | CODE |
| LOW | backend_api_python/app/services/user_service.py | 384 | if email == 'admin@example.com': | CODE |
| LOW | backend_api_python/app/services/user_service.py | 385 | return {'synced': False, 'reason': 'placeholder'} | CODE |
| LOW | backend_api_python/app/services/user_service.py | 415 | if current_email and current_email != 'admin@example.com' and not overwrite_existing: | CODE |
| LOW | backend_api_python/app/services/user_service.py | 1125 | admin_email = os.getenv('ADMIN_EMAIL', 'admin@example.com') | CODE |
| LOW | backend_api_python/tests/test_db_log_noise_fixes.py | 78 | result = service.start_setup(9383, "user@example.com") | CODE |
| LOW | …ckend_api_python/tests/test_initial_password_policy.py | 88 | "email": "admin@example.com", | CODE |
| LOW | …ckend_api_python/tests/test_initial_password_policy.py | 162 | "email": "admin@example.com", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend_api_python/app/data_sources/factory.py | 135 | CODE | |
| MEDIUM | backend_api_python/app/data_sources/factory.py | 140 | CODE | |
| MEDIUM | …kend_api_python/tests/test_ai_chat_snapshot_quality.py | 189 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker-compose.ghcr.yml | 18 | # - .env (optional) - docker compose orchestration knobs (IMAGE_TAG, ports, mirrors); | COMMENT |
| MEDIUM | docs/architecture/ARCHITECTURE.md | 52 | ai/ # skills, prompts, provider orchestration | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 5 | # Usage: | COMMENT |
| LOW | docker-compose.build.yml | 2 | # Usage: | COMMENT |
| LOW | docker-compose.yml | 2 | # Usage: | COMMENT |