AI Slop Code RIsk Monitor

AI4Finance-Foundation/FinRobot

FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models

36.5 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for AI4Finance-Foundation/FinRobot, a Python project with 8,202 GitHub stars. SynthScan examined 261,681 lines of code across 915 source files, recording 6414 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 36.5 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

36.5
Adjusted Signal
36.5
Raw Pattern Score
100%
Time Factor
2026-09-28
Last Push
8.2K
Stars
Python
Language
261.7K
Lines of Code
915
Files
6.4K
Pattern Hits
2026-10-12
Scan Date
0.08
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 58.3/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 4334 finding(s).

Hallucinated Dependency & Supply Chain Risk 11.1/100 · LOW

Are imports declared and package/API names verified? 598 finding(s).

Agent Over-Engineering Ratio 77.6/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 5033 finding(s).

PR Review Velocity Impact 83.1/100 · CRITICAL

Which changes need focused human review? 6414 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 71MEDIUM 1262LOW 5081

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 6414 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Decorative Section Separators1120 hits · 3810 pts
SeverityFileLineSnippetContext
MEDIUMfinrobot_equity/deploy.gcloud.sh22# ── Configuration ────────────────────────────────────────────────────────────COMMENT
MEDIUMfinrobot_equity/deploy.gcloud.sh46# ── Step 1: Create GCS Bucket ───────────────────────────────────────────────COMMENT
MEDIUMfinrobot_equity/deploy.gcloud.sh55# ── Step 2: Cloud SQL PostgreSQL ─────────────────────────────────────────────COMMENT
MEDIUMfinrobot_equity/deploy.gcloud.sh89# ── Step 3: Secret Manager — config.ini ──────────────────────────────────────COMMENT
MEDIUMfinrobot_equity/deploy.gcloud.sh117# ── Step 4: Build & Push Docker Image ────────────────────────────────────────COMMENT
MEDIUMfinrobot_equity/deploy.gcloud.sh134# ── Step 5: Deploy Cloud Run ─────────────────────────────────────────────────COMMENT
MEDIUMfinrobot_equity/deploy.gcloud.sh156# ── Done ─────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡finrobot_equity/deploy.sh83# ============================================================================COMMENT
MEDIUM⚡finrobot_equity/deploy.sh85# ============================================================================COMMENT
MEDIUM⚡finrobot_equity/deploy.sh208# ============================================================================COMMENT
MEDIUM⚡finrobot_equity/deploy.sh210# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh27# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh29# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh55# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh57# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh119# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh121# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh172# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh174# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh371# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh373# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh480# ============================================================================COMMENT
MEDIUMfinrobot_equity/deploy.sh482# ============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py13# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py15# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py27# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py29# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py86# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py88# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py140# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py142# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py189# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py191# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py267# =============================================================================COMMENT
MEDIUMfinrobot_equity/web_app/database/crud.py269# =============================================================================COMMENT
MEDIUM⚡finrobot_equity/core/src/modules/pdf_generator.py277# =============================================================================COMMENT
MEDIUM⚡finrobot_equity/core/src/modules/pdf_generator.py279# =============================================================================COMMENT
MEDIUM⚡finrobot_equity/core/src/modules/pdf_generator.py873# =============================================================================COMMENT
MEDIUM⚡finrobot_equity/core/src/modules/pdf_generator.py875# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py32# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py34# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py62# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py64# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py85# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py87# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py106# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py108# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py368# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py370# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py435# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py437# =============================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py139 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py141 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py194 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py196 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py246 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py248 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py285 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py287 # =========================================================================COMMENT
MEDIUM⚡…ot_equity/core/src/modules/enhanced_chart_generator.py324 # =========================================================================COMMENT
1060 more matches not shown…
Hyper-Verbose Identifiers3542 hits · 3458 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/web_app/auth.py130def get_or_create_github_user(CODE
LOW⚡finrobot_equity/web_app/main.py396def execute_analysis_pipeline(task_id: str, req: AnalysisRequest):CODE
LOWfinrobot_equity/core/tests/test_generate_report.py59def create_mock_peer_ev_ebitda_df():CODE
LOWfinrobot_equity/core/tests/test_generate_report.py72def create_financial_summary_df():CODE
LOW…obot_equity/core/tests/test_retail_sentiment_client.py28def test_get_snapshot_aggregates_available_sources(monkeypatch):CODE
LOW…obot_equity/core/tests/test_retail_sentiment_client.py88def test_get_snapshot_skips_failed_source(monkeypatch):CODE
LOW…obot_equity/core/tests/test_retail_sentiment_client.py120def test_prompt_formatter_renders_retail_sentiment_snapshot():CODE
LOW…obot_equity/core/tests/test_retail_sentiment_client.py158def test_html_formatter_renders_retail_sentiment_block():CODE
LOW…obot_equity/core/tests/test_retail_sentiment_client.py185def test_professional_report_renders_retail_sentiment_section():CODE
LOWfinrobot_equity/core/tests/test_modules.py47def test_enhanced_chart_generator():CODE
LOWfinrobot_equity/core/tests/test_modules.py103def test_sensitivity_analyzer():CODE
LOWfinrobot_equity/core/tests/test_modules.py384def test_advanced_chart_functions():CODE
LOW⚡finrobot_equity/core/src/create_equity_report.py41def load_credit_cashflow_metrics_from_csv(file_path: str) -> pd.DataFrame:CODE
LOW⚡finrobot_equity/core/src/create_equity_report.py167def validate_and_fix_text_content(text_content: str, text_type: str, company_name: str, company_ticker: str) -> str:CODE
LOWfinrobot_equity/core/src/create_equity_report.py193def regenerate_text_if_needed(text_content: str, text_type: str, company_name: str, company_ticker: str,CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py181def prepare_financial_summary_df(analysis_df: pd.DataFrame) -> pd.DataFrame:CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py213def prepare_credit_metrics_df(ratios_df: pd.DataFrame) -> pd.DataFrame:CODE
LOW…bot_equity/core/src/modules/retail_sentiment_client.py136 def _compute_source_alignment(bullish_values: List[float]) -> str:CODE
LOW…bot_equity/core/src/modules/retail_sentiment_client.py174def format_retail_sentiment_for_prompt(snapshot: Dict[str, Any]) -> str:CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py61 def analyze_revenue_sensitivity(self, growth_range: Tuple[float, float] = (-0.05, 0.05),CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py108 def analyze_margin_sensitivity(self, margin_range: Tuple[float, float] = (-0.02, 0.02),CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py160 def generate_sensitivity_table(self, revenue_range: Tuple[float, float] = (-0.05, 0.05),CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py215 def calculate_confidence_interval(self, metric: str, confidence: float = 0.95) -> Tuple[float, float]:CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py280 def generate_sensitivity_summary(self) -> str:CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py318def create_sensitivity_analyzer(forecast_df: pd.DataFrame) -> SensitivityAnalyzer:CODE
LOW⚡finrobot_equity/core/src/modules/market_data_api.py28def fetch_fmp_enterprise_value(ticker: str, api_key: str, limit: int = 2000) -> pd.DataFrame | None:CODE
LOW⚡finrobot_equity/core/src/modules/market_data_api.py54def get_fmp_ratios_and_key_metrics(ticker: str, api_key: str, period: str = "annual", limit: int = 5) -> tuple[pd.DataFrCODE
LOW⚡finrobot_equity/core/src/modules/market_data_api.py127def get_fmp_cash_flow_statement(ticker: str, api_key: str, period: str = "annual", limit: int = 5) -> pd.DataFrame | NonCODE
LOW⚡finrobot_equity/core/src/modules/market_data_api.py148def get_comprehensive_financial_data(ticker: str, api_key: str, period: str = "annual", limit: int = 5) -> dict:CODE
LOW⚡finrobot_equity/core/src/modules/market_data_api.py425def get_comprehensive_company_metrics(ticker: str, api_key: str) -> dict:CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py167def combine_peer_financial_data(tickers: list[str], api_key: str, years_limit: int = 5) -> tuple[pd.DataFrame, pd.DataFrCODE
LOWfinrobot_equity/core/src/modules/html_renderer.py479def format_dataframe_to_html_table(df, table_id="financial-table", header_class="bg-gray-200 font-semibold", row_class_cCODE
LOWfinrobot_equity/core/src/modules/html_renderer.py629def format_valuation_breakdown_html(valuation_data: dict) -> str:CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py688def format_sensitivity_analysis_html(sensitivity_data):CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py715def format_catalyst_analysis_html(catalyst_data):CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py737def format_enhanced_news_html(news_data):CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py781def format_enhanced_charts_html(charts_data, report_data=None):CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py889def format_retail_sentiment_html(sentiment_data: dict) -> str:STRING
LOWfinrobot_equity/core/src/modules/html_renderer.py1260def render_combined_html_report(data: dict) -> str:STRING
LOW⚡finrobot_equity/core/src/modules/pdf_generator.py280def create_key_data_table_style() -> TableStyle:CODE
LOW⚡finrobot_equity/core/src/modules/pdf_generator.py876def generate_equity_report_pdf(CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py305def create_financial_table_style() -> TableStyle:CODE
LOW…ot_equity/core/src/modules/financial_data_processor.py20def extract_historical_metrics_from_api_data(financial_data: dict) -> pd.DataFrame | None:CODE
LOW…ot_equity/core/src/modules/financial_data_processor.py191def extract_historical_metrics_from_pdf_data(dataframes, table_config):CODE
LOW…ot_equity/core/src/modules/financial_data_processor.py298def calculate_growth_and_forecasts(df_historical: pd.DataFrame, forecast_config: dict) -> pd.DataFrame:CODE
LOWfinrobot_equity/core/src/modules/catalyst_analyzer.py249 def _add_default_calendar_events(self):CODE
LOWfinrobot_equity/core/src/modules/catalyst_analyzer.py329 def generate_catalyst_summary(self) -> str:CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py142 def generate_revenue_yoy_chart(self, income_df: pd.DataFrame, ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py197 def generate_ebitda_margin_chart(self, income_df: pd.DataFrame, ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py249 def generate_gross_margin_chart(self, income_df: pd.DataFrame, ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py327 def generate_ltm_ebitda_margin_chart(self, income_df: pd.DataFrame, ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py364 def generate_relative_performance_chart(self, prices_df: pd.DataFrame,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py418 def generate_ev_ebitda_band_chart(self, key_metrics_df: pd.DataFrame, ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py464 def generate_p_fcf_band_chart(self, key_metrics_df: pd.DataFrame, ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py510 def generate_peer_comparison_chart(self, peer_data: Dict[str, Dict], ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py579 def generate_football_field_chart(self, valuation_data: Dict[str, Dict], ticker: str,CODE
LOW⚡…ot_equity/core/src/modules/enhanced_chart_generator.py770def create_enhanced_chart_generator(config: ChartConfig = None) -> EnhancedChartGenerator:CODE
LOW…_equity/core/src/modules/html_template_professional.py579def format_sensitivity_analysis_html_professional(sensitivity_data: dict) -> str:CODE
LOW…_equity/core/src/modules/html_template_professional.py608def format_catalyst_analysis_html_professional(catalyst_data: dict) -> str:CODE
LOW…_equity/core/src/modules/html_template_professional.py667def format_retail_sentiment_html_professional(sentiment_data: dict) -> str:CODE
3482 more matches not shown…
Unused Imports576 hits · 532 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/__init__.py23CODE
LOWfinrobot_equity/__init__.py24CODE
LOWfinrobot_equity/web_app/auth.py5CODE
LOWfinrobot_equity/web_app/main.py4CODE
LOWfinrobot_equity/web_app/main.py8CODE
LOWfinrobot_equity/web_app/main.py9CODE
LOWfinrobot_equity/web_app/main.py11CODE
LOWfinrobot_equity/web_app/main.py12CODE
LOWfinrobot_equity/web_app/main.py13CODE
LOWfinrobot_equity/web_app/main.py53CODE
LOWfinrobot_equity/web_app/middleware/request_logger.py5CODE
LOWfinrobot_equity/web_app/middleware/__init__.py2CODE
LOWfinrobot_equity/web_app/database/__init__.py2CODE
LOWfinrobot_equity/web_app/database/__init__.py2CODE
LOWfinrobot_equity/web_app/database/__init__.py2CODE
LOWfinrobot_equity/web_app/database/__init__.py3CODE
LOWfinrobot_equity/web_app/database/__init__.py3CODE
LOWfinrobot_equity/web_app/database/__init__.py3CODE
LOWfinrobot_equity/web_app/database/__init__.py3CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/web_app/database/__init__.py4CODE
LOWfinrobot_equity/core/tests/test_generate_report.py11CODE
LOWfinrobot_equity/core/tests/test_modules.py57CODE
LOWfinrobot_equity/core/tests/test_modules.py57CODE
LOWfinrobot_equity/core/tests/test_modules.py159CODE
LOWfinrobot_equity/core/src/create_equity_report.py14CODE
LOWfinrobot_equity/core/src/create_equity_report.py16CODE
LOWfinrobot_equity/core/src/create_equity_report.py16CODE
LOWfinrobot_equity/core/src/create_equity_report.py38CODE
LOWfinrobot_equity/core/src/create_equity_report.py39CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py22CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py28CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py28CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py28CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py28CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py44CODE
LOW…bot_equity/core/src/modules/retail_sentiment_client.py6CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py4CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py11CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py11CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py19CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py21CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py21CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py21CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py21CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py25CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py26CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py27CODE
LOWfinrobot_equity/core/src/modules/catalyst_analyzer.py8CODE
LOWfinrobot_equity/core/src/modules/catalyst_analyzer.py9CODE
516 more matches not shown…
Structural Annotation Overuse207 hits · 335 pts
SeverityFileLineSnippetContext
LOW⚡finrobot_equity/web_app/main.py459 # Step 2: Create Equity ReportCOMMENT
LOW⚡finrobot_equity/web_app/main.py519 # Step 3: Generate PDF ReportCOMMENT
LOWfinrobot_equity/web_app/main.py418 # Step 1: Generate Financial AnalysisCOMMENT
LOW…sktop/finrobot/engine/compute/operators/monte_carlo.py309 # Step 1: keep only positive prices. The threshold matches the 2-decimalCOMMENT
LOW…sktop/finrobot/engine/compute/operators/monte_carlo.py321 # Step 2: IQR-based outlier fence (Tukey's far fence, 3×IQR).COMMENT
LOW⚡…ot_desktop/tests/artifact/test_artifact_integration.py180 # Step 1: historical_data — produces FinancialDataCOMMENT
LOW⚡…ot_desktop/tests/artifact/test_artifact_integration.py184 # Step 2: dcf_calc — produces DCFResultCOMMENT
LOW⚡…ot_desktop/tests/artifact/test_artifact_integration.py188 # Step 3: output_gen — produces textCOMMENT
LOW…ot_desktop/skills/private-equity/ai-readiness/SKILL.md30### Step 1: Connect to Portfolio DataCOMMENT
LOW…ot_desktop/skills/private-equity/ai-readiness/SKILL.md46### Step 2: Per-Company ScanCOMMENT
LOW…ot_desktop/skills/private-equity/ai-readiness/SKILL.md74### Step 3: Rank Across the PortfolioCOMMENT
LOW…ot_desktop/skills/private-equity/ai-readiness/SKILL.md92### Step 4: Find the ReplaysCOMMENT
LOW…ot_desktop/skills/private-equity/ai-readiness/SKILL.md102### Step 5: OutputCOMMENT
LOW…op/skills/private-equity/portfolio-monitoring/SKILL.md29### Step 1: Ingest Financial PackageCOMMENT
LOW…op/skills/private-equity/portfolio-monitoring/SKILL.md35### Step 2: KPI Extraction & Variance AnalysisCOMMENT
LOW…op/skills/private-equity/portfolio-monitoring/SKILL.md54### Step 3: Flag & SummarizeCOMMENT
LOW…op/skills/private-equity/portfolio-monitoring/SKILL.md67### Step 4: Trend AnalysisCOMMENT
LOW…desktop/skills/private-equity/dd-meeting-prep/SKILL.md29### Step 1: Meeting ContextCOMMENT
LOW…desktop/skills/private-equity/dd-meeting-prep/SKILL.md38### Step 2: Generate Question ListCOMMENT
LOW⚡…desktop/skills/private-equity/dd-meeting-prep/SKILL.md89### Step 3: Benchmarks & ContextCOMMENT
LOW⚡…desktop/skills/private-equity/dd-meeting-prep/SKILL.md97### Step 4: Red Flags to ProbeCOMMENT
LOW⚡…desktop/skills/private-equity/dd-meeting-prep/SKILL.md106### Step 5: OutputCOMMENT
LOW…ot_desktop/skills/private-equity/dd-checklist/SKILL.md29### Step 1: Scope the DiligenceCOMMENT
LOW…ot_desktop/skills/private-equity/dd-checklist/SKILL.md38### Step 2: Generate Workstream ChecklistsCOMMENT
LOW…ot_desktop/skills/private-equity/dd-checklist/SKILL.md96### Step 3: Status TrackingCOMMENT
LOW…ot_desktop/skills/private-equity/dd-checklist/SKILL.md107### Step 4: Red Flag SummaryCOMMENT
LOW…ot_desktop/skills/private-equity/dd-checklist/SKILL.md116### Step 5: OutputCOMMENT
LOW…_desktop/skills/private-equity/deal-screening/SKILL.md29### Step 1: Extract Deal FactsCOMMENT
LOW…_desktop/skills/private-equity/deal-screening/SKILL.md43### Step 2: Screen Against CriteriaCOMMENT
LOW…_desktop/skills/private-equity/deal-screening/SKILL.md60### Step 3: Quick AssessmentCOMMENT
LOW…_desktop/skills/private-equity/deal-screening/SKILL.md69### Step 4: OutputCOMMENT
LOW…_desktop/skills/private-equity/unit-economics/SKILL.md31### Step 1: Identify Business ModelCOMMENT
LOW…_desktop/skills/private-equity/unit-economics/SKILL.md39### Step 2: Core MetricsCOMMENT
LOW…_desktop/skills/private-equity/unit-economics/SKILL.md79### Step 3: BenchmarkingCOMMENT
LOW…_desktop/skills/private-equity/unit-economics/SKILL.md89### Step 4: Revenue Quality ScoreCOMMENT
LOW…_desktop/skills/private-equity/unit-economics/SKILL.md103### Step 5: OutputCOMMENT
LOWfinrobot_desktop/skills/private-equity/ic-memo/SKILL.md29### Step 1: Gather InputsCOMMENT
LOWfinrobot_desktop/skills/private-equity/ic-memo/SKILL.md42### Step 2: Draft Memo StructureCOMMENT
LOWfinrobot_desktop/skills/private-equity/ic-memo/SKILL.md95### Step 3: Output FormatCOMMENT
LOW⚡…t_desktop/skills/private-equity/deal-sourcing/SKILL.md31### Step 1: Discover CompaniesCOMMENT
LOW⚡…t_desktop/skills/private-equity/deal-sourcing/SKILL.md40### Step 2: CRM CheckCOMMENT
LOW⚡…t_desktop/skills/private-equity/deal-sourcing/SKILL.md50### Step 3: Draft Founder OutreachCOMMENT
LOW…top/skills/private-equity/value-creation-plan/SKILL.md30### Step 1: Baseline AssessmentCOMMENT
LOW…top/skills/private-equity/value-creation-plan/SKILL.md39### Step 2: Value Creation LeversCOMMENT
LOW…top/skills/private-equity/value-creation-plan/SKILL.md71### Step 3: EBITDA BridgeCOMMENT
LOW…top/skills/private-equity/value-creation-plan/SKILL.md87### Step 4: 100-Day PlanCOMMENT
LOW…top/skills/private-equity/value-creation-plan/SKILL.md111### Step 5: KPI DashboardCOMMENT
LOW…top/skills/private-equity/value-creation-plan/SKILL.md125### Step 6: OutputCOMMENT
LOW…esktop/skills/private-equity/returns-analysis/SKILL.md30### Step 1: Gather Deal InputsCOMMENT
LOW…esktop/skills/private-equity/returns-analysis/SKILL.md60### Step 2: Base Case ReturnsCOMMENT
LOW…esktop/skills/private-equity/returns-analysis/SKILL.md82### Step 3: Sensitivity TablesCOMMENT
LOW…esktop/skills/private-equity/returns-analysis/SKILL.md102### Step 4: Scenario AnalysisCOMMENT
LOW…esktop/skills/private-equity/returns-analysis/SKILL.md115### Step 5: OutputCOMMENT
LOW…p/skills/financial-analysis/3-statement-model/SKILL.md191### Step 1: Analyze the Template StructureCOMMENT
LOW…p/skills/financial-analysis/3-statement-model/SKILL.md206### Step 2: Filling in Data Without Breaking FormulasCOMMENT
LOW…p/skills/financial-analysis/3-statement-model/SKILL.md230### Step 3: Validating FormulasCOMMENT
LOW…p/skills/financial-analysis/3-statement-model/SKILL.md257### Step 4: Quality Checks by SheetCOMMENT
LOW…p/skills/financial-analysis/3-statement-model/SKILL.md292### Step 5: Cross-Statement Integrity ChecksCOMMENT
LOW…p/skills/financial-analysis/3-statement-model/SKILL.md303### Step 6: Final ReviewCOMMENT
LOW…ktop/skills/financial-analysis/clean-data-xls/SKILL.md36### Step 1: ScopeCOMMENT
147 more matches not shown…
Over-Commented Block320 hits · 294 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/deploy.gcloud.sh1#!/usr/bin/env bashCOMMENT
LOWfinrobot_equity/requirements.txt41# Note: configparser, argparse, datetime, json, os, subprocess, COMMENT
LOWfinrobot_equity/deploy.sh1#!/bin/bashCOMMENT
LOWfinrobot_desktop/dev.sh1#!/usr/bin/env bashCOMMENT
LOWfinrobot_desktop/finrobot/server.py181 settings = get_settings(**non_secret_overrides)COMMENT
LOWfinrobot_desktop/finrobot/server.py221COMMENT
LOWfinrobot_desktop/finrobot/server.py241COMMENT
LOWfinrobot_desktop/finrobot/server.py261 # the provider / LLM rate limits. Single runs share the same pool.COMMENT
LOWfinrobot_desktop/finrobot/server.py301 app.state.settings_path = settings_pathCOMMENT
LOWfinrobot_desktop/finrobot/server.py321 # full (BUG-043). 429 only fires under abnormal volume — buckets are sizedCOMMENT
LOWfinrobot_desktop/finrobot/server.py601# talks to this server with that domain in the Host header.COMMENT
LOWfinrobot_desktop/finrobot/server.py1241 # Non-streaming fallback (matches Claude Code): if the stream above failsCOMMENT
LOWfinrobot_desktop/finrobot/server.py1361 # sessions dir (path traversal, BUG-089). Close the identifier off at theCOMMENT
LOWfinrobot_desktop/finrobot/config.py21logger = logging.getLogger(__name__)COMMENT
LOWfinrobot_desktop/finrobot/config.py41# Clash proxy the OpenAI handshake costs ~3.3s and is otherwise paid on EVERYCOMMENT
LOWfinrobot_desktop/finrobot/config.py201 # state, NOT an error: the deterministic data layer (prices/financials/DCF)COMMENT
LOWfinrobot_desktop/finrobot/config.py261 # returns ``change / prev_close * 100`` — e.g. 3.0 == ±3 %). 3 % is a ~2σCOMMENT
LOWfinrobot_desktop/finrobot/ratelimit.py41# fires under abnormal volume (a runaway loop / retry storm), never normal use:COMMENT
LOWfinrobot_desktop/finrobot/run_store.py21COMMENT
LOWfinrobot_desktop/finrobot/artifact/builders.py201 # FileNotFoundError; a wedged/slow repo (large tree, index.lock) raisesCOMMENT
LOWfinrobot_desktop/finrobot/artifact/builders.py481 # ACTUALLY nulled (``valuation_withheld`` set by _attach_numeric_audit or theCOMMENT
LOWfinrobot_desktop/finrobot/artifact/builders.py1041 # Collect all meaningful structured outputs for the combined report.COMMENT
LOWfinrobot_desktop/finrobot/artifact/builders.py1061 # 2026-07-09): display-only, populated for tickers the SOTP gate aboveCOMMENT
LOWfinrobot_desktop/finrobot/artifact/builders.py1101 # DCF implied price, sniper levels, price target, market_cap)COMMENT
LOWfinrobot_desktop/finrobot/artifact/semantic_diff.py41# it is NOT a driver of the change — naming a $0.00 contributor as the "主因"COMMENT
LOWfinrobot_desktop/finrobot/artifact/sqlite_store.py101_SUMMARY_COLUMNS = (COMMENT
LOWfinrobot_desktop/finrobot/artifact/sqlite_store.py121# re-project their mirror columns under the new extractor rules instead ofCOMMENT
LOWfinrobot_desktop/finrobot/engine/orchestrator.py501COMMENT
LOWfinrobot_desktop/finrobot/engine/agents/factory.py41COMMENT
LOWfinrobot_desktop/finrobot/engine/agents/factory.py61 return f"Invalid ticker symbol: {ticker}"COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/ic_memo.py221 required_data=[],COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py41COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py161# model must ALWAYS see legal JSON, so over-budget payloads are re-compactedCOMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py581 # in structured_results — Monte Carlo seeding, valuationCOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py581 # rows for a financial-sector issuer — so without DDM a bank leads on peer P/B + P/ECOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py601 # Residual income (justified P/B) from the SAME seed inputs — the bank'sCOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py641 # FX-normalize a foreign issuer's financials to canonical USD before seedingCOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py661 _orig_quote_currency, fmp_api_key=getattr(deps.settings, "fmp_api_key", None)COMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py681 # FCFF-DCF at the SOURCE, not just its football-field row. Free cash flow, EBITDACOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py861 )COMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py901 AttributeError,COMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1041 # only number available would be fabricated — methods agree far off-market /COMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1141#COMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1321 canonical_target = canonical.targetCOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1361 updates["recommendation"] = canonical_verdictCOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1481 # Both halves are PURE + independently tested: the canonical headline byCOMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1521 result = await synthesis_agent.run(thesis_prompt, deps=deps) # type: ignore[call-overload]COMMENT
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py1541 # verdict strongly disagrees with the stock's own trailing-1y price action —COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/ddm.py81 if not isinstance(financial_data, FinancialData):COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/ddm.py181 # Declared dividend history for the DDM growth seed. Used only forCOMMENT
LOW…ot_desktop/finrobot/engine/pipelines/_thesis_prompt.py101 # margin) has already exceeded the implied steady-state, so "above peak =COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/dcf.py121 financial_data = await normalize_financials_to_usd(COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py461 return companyCOMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py501 # The deterministic screen intentionally over-selects (PEER_SCREEN_TOP_N=7)COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py521 # (validate_peer_comps / validate_has_peers, min_peers=3) already gates a thinCOMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py681 # further merging needed here.COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py701COMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py901 # (``income.ebitda`` = OI + D&A) — the SAME caliber as the trailing band itCOMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py941 # Recent stock-funded acquisition / large secondary → the TTM snapshot mixes aCOMMENT
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py1001 cyclical=cyclical,COMMENT
260 more matches not shown…
Excessive Try-Catch Wrapping228 hits · 268 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/run_web_app.py56 except Exception as e:CODE
LOW⚡finrobot_equity/web_app/main.py391 except Exception as e:CODE
LOW⚡finrobot_equity/web_app/main.py405 except Exception as e:CODE
LOW⚡finrobot_equity/web_app/main.py455 except Exception as e:CODE
LOW⚡finrobot_equity/web_app/main.py515 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py95 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py106 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py543 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py602 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py743 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py778 except Exception as e:CODE
LOWfinrobot_equity/web_app/middleware/request_logger.py61 except Exception:CODE
LOWfinrobot_equity/web_app/middleware/request_logger.py71 except Exception:CODE
LOWfinrobot_equity/web_app/middleware/request_logger.py101 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_generate_report.py296 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py40 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py97 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py146 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py204 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py264 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py327 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py378 except Exception as e:CODE
LOWfinrobot_equity/core/tests/test_modules.py423 except Exception as e:CODE
MEDIUMfinrobot_equity/core/src/create_equity_report.py90 print(f"An error occurred while loading credit metrics from CSV: {e}")CODE
MEDIUMfinrobot_equity/core/src/create_equity_report.py461 print("Error: Could not load analysis CSV file")CODE
LOWfinrobot_equity/core/src/create_equity_report.py89 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py154 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py226 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py390 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py393 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py414 except Exception:CODE
LOWfinrobot_equity/core/src/create_equity_report.py416 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py501 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py741 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py746 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py801 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py817 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py863 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py874 except Exception as e:CODE
LOWfinrobot_equity/core/src/create_equity_report.py890 except Exception as e:CODE
MEDIUM⚡finrobot_equity/core/src/generate_financial_analysis.py396 print(f"Error performing catalyst analysis: {e}")CODE
MEDIUM⚡finrobot_equity/core/src/generate_financial_analysis.py404 print("Error: OpenAI API key not loaded. Skipping text generation.")CODE
MEDIUM⚡finrobot_equity/core/src/generate_financial_analysis.py469 print(f"Error generating text for '{text_type}': {e}")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py107 print(f"Error loading configuration: {e}")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py128 print("Error: Could not fetch income statement data from FMP API. Exiting.")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py148 print("Error: Failed to process historical metrics from API data. Exiting.")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py222 print(f"Error fetching peer data: {e}")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py271 print(f"Error fetching company news: {e}")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py295 print(f"Error fetching retail sentiment insights: {e}")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py341 print(f"Error performing sensitivity analysis: {e}")CODE
LOW⚡finrobot_equity/core/src/generate_financial_analysis.py395 except Exception as e:CODE
LOW⚡finrobot_equity/core/src/generate_financial_analysis.py468 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py106 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py221 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py270 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py294 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py340 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py378 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py398 except Exception as e:CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py482 except Exception as e:CODE
168 more matches not shown…
Empty Error Handlers35 hits · 175 pts
SeverityFileLineSnippetContext
HIGHfinrobot_equity/web_app/middleware/request_logger.py61except Exception:CODE
HIGHfinrobot_equity/web_app/middleware/request_logger.py71except Exception:CODE
HIGHfinrobot_equity/core/src/create_equity_report.py414except Exception:CODE
HIGHfinrobot_equity/core/src/create_equity_report.py668except:CODE
HIGHfinrobot_equity/core/src/create_equity_report.py673except:CODE
HIGHfinrobot_equity/core/src/create_equity_report.py661except:CODE
HIGHfinrobot_equity/core/src/generate_financial_analysis.py98except:CODE
HIGH…bot_equity/core/src/modules/professional_pdf_report.py1403except:CODE
HIGHfinrobot_desktop/finrobot/server.py899except (ValueError, TypeError, AttributeError):CODE
HIGHfinrobot_desktop/finrobot/secret_store.py228except OSError:CODE
HIGHfinrobot_desktop/finrobot/secret_store.py262except FileExistsError:CODE
HIGHfinrobot_desktop/finrobot/sdk.py165except RuntimeError:CODE
HIGHfinrobot_desktop/finrobot/cli.py675except PermissionError:CODE
HIGHfinrobot_desktop/finrobot/artifact/summary_extractor.py192except ValueError:CODE
HIGHfinrobot_desktop/finrobot/engine/pipelines/runner.py948except (ProviderError, ValueError, KeyError):CODE
HIGH…desktop/finrobot/engine/backtest/backtrader_adapter.py47except ImportError:CODE
HIGH…desktop/finrobot/engine/backtest/backtrader_adapter.py414except ImportError:CODE
HIGH…bot_desktop/finrobot/engine/data/historical_loaders.py392except ValueError:CODE
HIGHfinrobot_desktop/finrobot/engine/data/symbol_index.py135except ValueError:CODE
HIGH…op/finrobot/engine/data/providers/yfinance_provider.py29except (AttributeError, OSError, TypeError):CODE
HIGH…desktop/finrobot/engine/data/providers/fmp_provider.py1480except (TypeError, ValueError):CODE
HIGH…desktop/finrobot/engine/data/providers/fmp_provider.py1509except (TypeError, ValueError):CODE
HIGH…sktop/finrobot/engine/data/providers/edgar_provider.py2080except _ADAPTER_CATCH:CODE
HIGH…sktop/finrobot/engine/data/providers/edgar_provider.py2184except (TypeError, ValueError):CODE
HIGH…sktop/finrobot/engine/data/providers/edgar_provider.py839except ValueError:CODE
HIGH…sktop/finrobot/engine/data/providers/edgar_provider.py1830except _ADAPTER_CATCH:CODE
HIGHfinrobot_desktop/finrobot/routes/settings.py841except OSError:CODE
HIGHfinrobot_desktop/finrobot/routes/data.py402except (ValueError, TypeError):CODE
HIGHfinrobot_desktop/tests/conftest.py82except Exception:CODE
HIGHfinrobot_desktop/tests/unit/test_obs_context.py20except ValueError:CODE
HIGHfinrobot_desktop/tests/audit/test_chat_integration.py64except Exception:CODE
HIGH…utogen/finrobot/data_source/filings_src/sec_filings.py57except ValueError:CODE
HIGH…utogen/finrobot/data_source/filings_src/sec_filings.py63except ValueError:CODE
HIGH…source/filings_src/prepline_sec_filings/api/section.py83except ValueError:CODE
HIGH…source/filings_src/prepline_sec_filings/api/section.py89except ValueError:CODE
AI Slop Vocabulary59 hits · 154 pts
SeverityFileLineSnippetContext
MEDIUM…ot_equity/core/output/TSLA_Equity_Research_Report.html255<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Financially, Tesla experienced robuCODE
MEDIUM…ot_equity/core/output/TSLA_Equity_Research_Report.html263<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Tesla delivered robust revenue growCODE
MEDIUM…ot_equity/core/output/TSLA_Equity_Research_Report.html523<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Tesla's EBITDA margins, though declCODE
MEDIUM⚡…ot_equity/core/output/NVDA_Equity_Research_Report.html251<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Nvidia’s product portfolio is anchoCODE
MEDIUM⚡…ot_equity/core/output/NVDA_Equity_Research_Report.html255<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">The company’s profitability has scaCODE
MEDIUM⚡…ot_equity/core/output/NVDA_Equity_Research_Report.html264<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">The primary driver of this performaCODE
MEDIUM⚡…ot_equity/core/output/NVDA_Equity_Research_Report.html266<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Compared to peers, Nvidia’s EBITDA CODE
MEDIUM…ot_equity/core/output/NVDA_Equity_Research_Report.html314<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Nvidia continues to command a premiCODE
MEDIUM…ot_equity/core/output/NVDA_Equity_Research_Report.html535<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">In terms of profitability, Nvidia'sCODE
MEDIUM…ot_equity/core/output/NVDA_Equity_Research_Report.html569<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Nvidia's revenue growth is projecteCODE
MEDIUM…ot_equity/core/output/NVDA_Equity_Research_Report.html578<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Nvidia's EBITDA margin is projectedCODE
MEDIUM⚡…ot_equity/core/output/MSFT_Equity_Research_Report.html253<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Financially, Microsoft has demonstrCODE
MEDIUM⚡…ot_equity/core/output/MSFT_Equity_Research_Report.html253<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Financially, Microsoft has demonstrCODE
MEDIUM⚡…ot_equity/core/output/MSFT_Equity_Research_Report.html262<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Microsoft continues to demonstrate CODE
MEDIUM⚡…ot_equity/core/output/MSFT_Equity_Research_Report.html266<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Profitability has improved meaningfCODE
MEDIUM⚡…ot_equity/core/output/MSFT_Equity_Research_Report.html270<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Outlook: Microsoft is well-positionCODE
MEDIUM…ot_equity/core/output/MSFT_Equity_Research_Report.html314 <div class="body-text"><p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">CODE
MEDIUM…ot_equity/core/output/MSFT_Equity_Research_Report.html314 <div class="body-text"><p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">CODE
MEDIUM…ot_equity/core/output/MSFT_Equity_Research_Report.html530 <div class="body-text"><p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">CODE
MEDIUM⚡…ot_equity/core/output/META_Equity_Research_Report.html251<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Meta’s primary revenue driver remaiCODE
MEDIUM⚡…ot_equity/core/output/META_Equity_Research_Report.html253<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Operationally, Meta has demonstrateCODE
MEDIUM⚡…ot_equity/core/output/META_Equity_Research_Report.html260 <div class="body-text"><p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">CODE
MEDIUM…ot_equity/core/output/META_Equity_Research_Report.html319<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Given Meta’s robust growth outlook,CODE
MEDIUM…ot_equity/core/output/META_Equity_Research_Report.html513<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">In terms of revenue, Meta's growth CODE
MEDIUM…ot_equity/core/output/META_Equity_Research_Report.html547<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Meta experienced a notable revenue CODE
MEDIUM…bot_equity/core/output/COP_Equity_Research_Report.html254<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">ConocoPhillips delivered robust finCODE
MEDIUM…bot_equity/core/output/COP_Equity_Research_Report.html306 <div class="body-text"><p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">CODE
MEDIUM…bot_equity/core/output/COP_Equity_Research_Report.html310<p style="margin-bottom:0.4rem; font-size:0.875rem; color:#334155; line-height:1.7;">Looking at growth, COP’s revenue isCODE
MEDIUM⚡finrobot_equity/core/src/create_equity_report.py176 # Detect CSV-like patterns (more robust detection)COMMENT
MEDIUM⚡finrobot_equity/core/src/modules/market_data_api.py387 """Fetches comprehensive company profile data from FMP API."""STRING
MEDIUMfinrobot_desktop/finrobot/server.py610# harness green without weakening the real-world guarantee (arbitrary attackerCOMMENT
MEDIUMfinrobot_desktop/finrobot/config.py414 return # built-in test harness provider — no key requiredCODE
MEDIUMfinrobot_desktop/finrobot/llm_probe.py104 # built-in harness provider with NO registry entry, and any registeredCOMMENT
MEDIUM…t_desktop/finrobot/engine/pipelines/equity_research.py765 # (terminal growth >= WACC — very low-WACC profiles: low-beta, high-leverageCOMMENT
MEDIUMfinrobot_desktop/finrobot/engine/pipelines/dcf.py154 # which arises for very low-WACC profiles (low-beta, high-leverage utilities /COMMENT
MEDIUM…_desktop/finrobot/engine/compute/operators/dcf_seed.py1049 # Cap market-leverage at 0.80 for WACC weighting. Above ~80% debt theCOMMENT
MEDIUM…_desktop/finrobot/engine/compute/operators/ddm_seed.py116 # Span the actual calendar years, not the point count — robust to a missingCOMMENT
MEDIUM…robot_desktop/finrobot/engine/compute/operators/lbo.py82 # fail at 5× leverage; XOM/AAPL/KO/VZ deleverage cleanly and pass). Undefined (None)COMMENT
MEDIUM…robot_desktop/finrobot/engine/compute/operators/lbo.py201 # understate leverage and inflate exit equity / IRR.COMMENT
MEDIUM…robot_desktop/finrobot/engine/compute/operators/dcf.py451# robust optionality. 2pp ≈ the routine estimation error in beta / ERP, so it'sCOMMENT
MEDIUM…robot_desktop/finrobot/engine/compute/operators/dcf.py487 # WACC-sensitive, not robust optionality.COMMENT
MEDIUM…_desktop/finrobot/engine/compute/operators/lbo_seed.py336 # (MU: leverage 5× peak EBITDA = 10.6× normalized). Mirrors the DamodaranCOMMENT
MEDIUM…_desktop/finrobot/engine/compute/operators/lbo_seed.py386 # constructed below are unchanged. nwc_change/interest/leverage are omitted:COMMENT
MEDIUM…desktop/finrobot/engine/compute/operators/multiples.py86# robust mid-gap choice. A multiple above it is still a real, computable number (itCOMMENT
MEDIUM…/finrobot/engine/compute/operators/audit/ttm_period.py65 # Newest-first as carried by the provider; sort descending to be order-robust.COMMENT
MEDIUMfinrobot_desktop/finrobot/engine/data/cache.py205# is the robust choice.STRING
MEDIUM⚡finrobot_desktop/tests/unit/test_lbo.py116 # leverage 10× > entry 8× EBITDA → entry_equity = 800 − 1000 = −200 < 0.COMMENT
MEDIUM⚡finrobot_desktop/tests/unit/test_lbo.py129 # Default leverage 5 keeps entry_equity > 0 (300); a 1.0x exit + highCOMMENT
MEDIUMfinrobot_desktop/tests/unit/test_dcf_seed.py357 """Market leverage is capped at 80% for WACC weighting. Above that the thinSTRING
MEDIUMfinrobot_desktop/tests/unit/test_thesis_prompt.py570 # grades confidence — the test only needs a robust BUY, not a specific tier.COMMENT
MEDIUM⚡finrobot_desktop/tests/audit/test_financial_sanity.py177 """ValueCo: LTM EBITDA $200M, 8x entry, 4x leverage, 5yr hold."""STRING
MEDIUM…/pages/artifact-detail/chapters/ChapterAuditBanner.tsx108 // is robust to legacy / unknown statuses: a pre-2026-06-15 `review_only` artifactCOMMENT
MEDIUMfinrobot_desktop/scripts/verify_report_field_basket.py77# harness shares the system's own thresholds (no parallel tolerance definition).COMMENT
MEDIUMfinrobot_desktop/scripts/build_truth_anchor.py51# (ticker, archetype) — the basket the harness covers. Kept modest to stayCOMMENT
MEDIUMfinrobot_desktop/scripts/build_truth_anchor.py70# it and let the harness FAIL our correct live value against a stale anchor.COMMENT
MEDIUMfinrobot_desktop/scripts/build_truth_anchor.py216 # a 15-year-old count as a baseline the harness would FAIL our live value on.COMMENT
MEDIUMfinrobot_desktop/scripts/probe_foreign_fx_end_to_end.py4market quantities are in. BUG-006 / cross-currency (T1#6) regression harness.STRING
MEDIUMfinrobot_autogen/experiments/portfolio_optimization.py129# As the Chief Investment Officer, your task is to evaluate the potential investment in Company ABC based on the proCOMMENT
MEDIUMfinrobot_autogen/experiments/portfolio_optimization.py164# Integrate Findings: Compile the insights from all three groups to get a holistic view of Company ABC's potential.COMMENT
Modern Structural Boilerplate96 hits · 97 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/web_app/main.py26logger = logging.getLogger(__name__)CODE
LOWfinrobot_equity/web_app/middleware/__init__.py4__all__ = ["RequestLoggerMiddleware"]CODE
LOWfinrobot_equity/web_app/database/__init__.py19__all__ = [CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py15logger = logging.getLogger(__name__)CODE
LOWfinrobot_equity/core/src/modules/catalyst_analyzer.py17logger = logging.getLogger(__name__)CODE
LOW…ot_equity/core/src/modules/enhanced_chart_generator.py26logger = logging.getLogger(__name__)CODE
LOWfinrobot_equity/core/src/modules/valuation_engine.py15logger = logging.getLogger(__name__)CODE
LOW…bot_equity/core/src/modules/enhanced_text_generator.py15logger = logging.getLogger(__name__)CODE
LOWfinrobot_equity/core/src/modules/report_structure.py14logger = logging.getLogger(__name__)CODE
LOWfinrobot_equity/core/src/modules/news_integrator.py15logger = logging.getLogger(__name__)CODE
LOW…obot_equity/core/src/modules/equity_agents/__init__.py12__all__ = [CODE
LOWfinrobot_desktop/finrobot/auth.py34__all__ = ["CAPABILITY_TOKEN_ENV", "CapabilityAuthMiddleware"]CODE
LOWfinrobot_desktop/finrobot/server.py55logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/secret_store.py14logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/config.py21logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/paths.py24logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/__init__.py12__all__ = ["FinRobot", "PipelineResult"]CODE
LOWfinrobot_desktop/finrobot/run_store.py18logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/obs/__init__.py13__all__ = [CODE
LOWfinrobot_desktop/finrobot/audit/persistence.py16logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/audit/transcript.py29logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/artifact/builders.py49logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/artifact/__init__.py34__all__ = [CODE
LOWfinrobot_desktop/finrobot/artifact/sqlite_store.py58logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/artifact/migrate.py25logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/orchestrator.py34logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/analysis/prompts.py36logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/analysis/qa.py25logger = logging.getLogger(__name__)CODE
LOW…ot_desktop/finrobot/engine/analysis/news_classifier.py31logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/ic_memo.py57logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py207logger = logging.getLogger(__name__)CODE
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py115logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/ddm.py56logger = logging.getLogger(__name__)CODE
LOW…nrobot_desktop/finrobot/engine/pipelines/validators.py28logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/lbo.py48logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/dcf.py64logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/comps.py26logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/base.py38__all__ = [CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py64logger = logging.getLogger(__name__)CODE
LOW…desktop/finrobot/engine/pipelines/earnings_analysis.py39logger = logging.getLogger(__name__)CODE
LOW…top/finrobot/engine/primitives/historical_valuation.py282__all__ = [CODE
LOW…desktop/finrobot/engine/backtest/backtrader_adapter.py36logger = logging.getLogger(__name__)CODE
LOW…bot_desktop/finrobot/engine/backtest/strategy_agent.py32logger = logging.getLogger(__name__)CODE
LOW…robot/engine/compute/coordinators/technical_payload.py48logger = logging.getLogger(__name__)CODE
LOW…sktop/finrobot/engine/compute/coordinators/dcf_seed.py28logger = logging.getLogger(__name__)CODE
LOW…desktop/finrobot/engine/compute/coordinators/market.py31logger = logging.getLogger(__name__)CODE
LOW…t_desktop/finrobot/engine/compute/coordinators/news.py29logger = logging.getLogger(__name__)CODE
LOW…desktop/finrobot/engine/compute/operators/ownership.py24logger = logging.getLogger(__name__)CODE
LOW…nrobot/engine/compute/operators/valuation_synthesis.py23logger = logging.getLogger(__name__)CODE
LOW⚡…_desktop/finrobot/engine/compute/operators/dcf_seed.py146logger = logging.getLogger(__name__)CODE
LOW…robot_desktop/finrobot/engine/compute/operators/lbo.py21logger = logging.getLogger(__name__)CODE
LOW…_desktop/finrobot/engine/compute/operators/lbo_seed.py416__all__ = ["seed_lbo_inputs"]CODE
LOW…op/finrobot/engine/compute/operators/audit/__init__.py30__all__ = [CODE
LOWfinrobot_desktop/finrobot/engine/skills/registry.py7logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/data/validator.py60logger = logging.getLogger(__name__)CODE
LOW…bot_desktop/finrobot/engine/data/historical_loaders.py30logger = logging.getLogger(__name__)CODE
LOW…bot_desktop/finrobot/engine/data/sec_holdings_cache.py46logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/data/cache.py17logger = logging.getLogger(__name__)CODE
LOWfinrobot_desktop/finrobot/engine/data/cache.py331 async def _set_slot(self, slot_key: str, ticker: str, payload_json: str) -> None:CODE
LOWfinrobot_desktop/finrobot/engine/data/factory.py17logger = logging.getLogger(__name__)CODE
36 more matches not shown…
Deep Nesting116 hits · 96 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/web_app/middleware/request_logger.py27CODE
LOWfinrobot_equity/core/src/create_equity_report.py234CODE
LOWfinrobot_equity/core/src/create_equity_report.py309CODE
LOWfinrobot_equity/core/src/generate_financial_analysis.py25CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py213CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py266CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py404CODE
LOWfinrobot_equity/core/src/generate_pdf_report.py566CODE
LOW…nrobot_equity/core/src/modules/sensitivity_analyzer.py108CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py167CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py240CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py307CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py345CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py425CODE
LOWfinrobot_equity/core/src/modules/market_data_api.py549CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py439CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py607CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py688CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py737CODE
LOWfinrobot_equity/core/src/modules/html_renderer.py781CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py371CODE
LOWfinrobot_equity/core/src/modules/pdf_generator.py600CODE
LOW…ot_equity/core/src/modules/financial_data_processor.py191CODE
LOW…ot_equity/core/src/modules/financial_data_processor.py298CODE
LOW…_equity/core/src/modules/html_template_professional.py533CODE
LOW…_equity/core/src/modules/html_template_professional.py579CODE
LOW…_equity/core/src/modules/html_template_professional.py608CODE
LOW…_equity/core/src/modules/html_template_professional.py720CODE
LOW…_equity/core/src/modules/html_template_professional.py832CODE
LOW…_equity/core/src/modules/html_template_professional.py965CODE
LOWfinrobot_equity/core/src/modules/valuation_engine.py47CODE
LOW…bot_equity/core/src/modules/professional_pdf_report.py326CODE
LOW…bot_equity/core/src/modules/professional_pdf_report.py775CODE
LOW…bot_equity/core/src/modules/professional_pdf_report.py958CODE
LOW…bot_equity/core/src/modules/professional_pdf_report.py1316CODE
LOW…bot_equity/core/src/modules/professional_pdf_report.py1358CODE
LOW…bot_equity/core/src/modules/professional_pdf_report.py1390CODE
LOW…bot_equity/core/src/modules/enhanced_text_generator.py393CODE
LOW…bot_equity/core/src/modules/enhanced_text_generator.py435CODE
LOW…bot_equity/core/src/modules/enhanced_text_generator.py490CODE
LOWfinrobot_equity/core/src/modules/chart_generator.py364CODE
LOWfinrobot_equity/core/src/modules/chart_generator.py735CODE
LOWfinrobot_equity/core/src/modules/chart_generator.py908CODE
LOWfinrobot_desktop/finrobot/server.py660CODE
LOWfinrobot_desktop/finrobot/server.py754CODE
LOWfinrobot_desktop/finrobot/server.py834CODE
LOWfinrobot_desktop/finrobot/audit/persistence.py172CODE
LOWfinrobot_desktop/finrobot/artifact/builders.py299CODE
LOWfinrobot_desktop/finrobot/artifact/semantic_diff.py229CODE
LOWfinrobot_desktop/finrobot/artifact/semantic_diff.py268CODE
LOWfinrobot_desktop/finrobot/artifact/sqlite_store.py321CODE
LOWfinrobot_desktop/finrobot/artifact/contract.py210CODE
LOWfinrobot_desktop/finrobot/artifact/contract.py286CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py210CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py887CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/runner.py967CODE
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py512CODE
LOW…t_desktop/finrobot/engine/pipelines/equity_research.py966CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/result.py14CODE
LOWfinrobot_desktop/finrobot/engine/pipelines/_helpers.py376CODE
56 more matches not shown…
Cross-Language Confusion18 hits · 80 pts
SeverityFileLineSnippetContext
HIGH…t_desktop/finrobot/engine/pipelines/equity_research.py1017 "perpetual-growth model undefined). The valuation conclusion relies on "CODE
HIGH…ot_desktop/finrobot/engine/pipelines/_thesis_prompt.py172 # verdict, leaves price_target null, and explains via the target range +COMMENT
HIGH…nrobot_desktop/finrobot/engine/pipelines/validators.py571 # structure is impossible and the operator emits moic/irr = None (undefined,COMMENT
HIGH⚡finrobot_desktop/finrobot/engine/models/financial.py1364 eps_direction: str # "beat" | "miss" | "inline" | "n/a" (n/a = undefined, est == 0)CODE
HIGH…robot_desktop/finrobot/engine/compute/operators/ddm.py50 Model perpetuity is undefined).STRING
HIGH…robot_desktop/finrobot/engine/compute/operators/ddm.py147 (Gordon Growth Model undefined).STRING
HIGH…sktop/finrobot/engine/compute/operators/peer_screen.py443 "payload — size band undefined, comps step must degrade"CODE
HIGH…robot_desktop/finrobot/engine/compute/operators/dcf.py187 (Gordon Growth Model undefined).STRING
HIGH…robot_desktop/finrobot/engine/compute/operators/dcf.py378 ValueError: when terminal_growth >= wacc (Gordon Growth Model undefined).STRING
HIGH…robot_desktop/finrobot/engine/compute/operators/dcf.py650 ValueError: terminal_growth >= wacc (Gordon Growth Model undefined).STRING
HIGH…ot_desktop/finrobot/engine/data/normalize/contracts.py186 slips every ``is None`` gate, serializes to close:null, and crashes chartSTRING
HIGH…nrobot_desktop/finrobot/engine/data/normalize/price.py33 a NaN close slips every ``is None`` gate, serializes to null, and crashesSTRING
HIGHfinrobot_desktop/finrobot/routes/data.py532 a non-1y / cache-miss response left it undefined). Set them for every path.STRING
HIGH⚡…ot_desktop/tests/unit/test_equity_research_pipeline.py1246 so calculate_dcf raises (Gordon undefined) and financial_modeling degrades.STRING
HIGHfinrobot_desktop/tests/unit/test_fmp_provider.py2335 # No COGS for a bank → gross margin undefined, not the ~60% phantom.COMMENT
HIGH…esktop/tests/audit/test_valuation_synthesis_methods.py186 negative-earnings P/E is undefined, not merely missing data). A substantiveSTRING
HIGH…sktop/tests/artifact/test_historical_metrics_freeze.py15maps a missing key to null, no crash).STRING
HIGH⚡finrobot_desktop/tests/routes/test_dashboard_landing.py458 # Empty group → empty set → null, distinct from global.COMMENT
Modern AI Meta-Vocabulary27 hits · 78 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md22Unlike the single-model paradigm of [**FinGPT**](https://github.com/AI4Finance-Foundation/FinGPT), FinRobot supports endCODE
MEDIUMfinrobot_equity/README.md172│ │ ├── text_generator_agents.py # LLM orchestrationCODE
MEDIUMfinrobot_desktop/finrobot/server.py272 # orchestration above it reuses artifact_store + data_layer (ADR-0012).COMMENT
MEDIUMfinrobot_desktop/finrobot/artifact/sqlite_store.py129# ## Data Collection …" markdown scaffolding into the exported-HTML timelineSTRING
MEDIUMfinrobot_desktop/finrobot/artifact/sqlite_store.py131# rule / blank scaffolding and previews the first prose line; bump so existingSTRING
MEDIUMfinrobot_desktop/finrobot/engine/pipelines/runner.py831 # numbers the model could only hallucinate from its own priorCOMMENT
MEDIUM…t_desktop/finrobot/engine/compute/coordinators/news.py45# Markdown/XML scaffolding an attacker uses to fake structure: leading headingCOMMENT
MEDIUM…sktop/finrobot/engine/data/providers/edgar_provider.py1750 # RAG see something coherent.COMMENT
MEDIUMfinrobot_desktop/finrobot/routes/sentiment.py157 # wearing cached scaffolding. Rendering it available=True both contradicts theCOMMENT
MEDIUM⚡finrobot_desktop/tests/unit/test_peer_screen.py803# scaffolding (the liveness gate acts before the P/E gate), never copied from code.COMMENT
MEDIUM…ot_desktop/tests/unit/test_equity_research_pipeline.py241 # Stub executor to avoid real compute in unit test of orchestrationCOMMENT
MEDIUM…ot_desktop/tests/unit/test_equity_research_pipeline.py267 # Stub executor to avoid real compute in unit test of orchestrationCOMMENT
MEDIUMfinrobot_desktop/tests/unit/test_dcf_pipeline.py175 # Stub executor to avoid real LLM/compute calls in orchestration testCOMMENT
MEDIUM⚡finrobot_desktop/tests/unit/test_orchestrator.py492# ask_filings — 10-K RAG Q&A as a chat tool.COMMENT
MEDIUM⚡finrobot_desktop/tests/unit/test_orchestrator.py548 # run_qa raises ValueError("No 10-K RAG data ...") when EDGAR has noCOMMENT
MEDIUM⚡finrobot_desktop/tests/unit/test_pipeline_base.py1225# payload (e.g. a full 10-K) can never flood the prompt past the context window.COMMENT
MEDIUMfinrobot_desktop/tests/unit/test_pipeline_base.py391 # Document H1 is the scaffold's — the step's H1 is demoted below it.COMMENT
MEDIUM…_desktop/tests/unit/test_artifact_summary_extractor.py158 "# FinRobot Analysis Report / --- / ## Data Collection" markdown scaffoldingSTRING
MEDIUM⚡finrobot_desktop/tests/unit/test_config.py12 # developer's shell or repo-root .env — no monkeypatch.delenv scaffoldingCOMMENT
MEDIUMfinrobot_desktop/tests/unit/test_news.py136 # injection scaffolding neutralized: no heading marker, no fake tag,COMMENT
MEDIUM…t_desktop/tests/audit/test_thesis_prompt_discipline.py465 # "$3.5 trillion" — classic AAPL training-data hallucination, not in our fixture.COMMENT
MEDIUM⚡finrobot_desktop/tests/artifact/test_sqlite_store.py757# which opens with the generic markdown scaffolding a blind [:120] slice used toCOMMENT
MEDIUM⚡finrobot_desktop/tests/artifact/test_sqlite_store.py769 --- / ## Data Collection" scaffolding. The cleaned headline is the firstSTRING
MEDIUM⚡finrobot_desktop/tests/artifact/test_sqlite_store.py814 leaked "# FinRobot Analysis Report / --- / ## Data Collection" scaffoldingSTRING
MEDIUM⚡finrobot_desktop/tests/artifact/test_summary_text.py50 # The generic report scaffolding and the financials dump must NOT leak in.COMMENT
MEDIUMfinrobot_desktop/scripts/probe_derived_fields_truth.py891# ── orchestration ─────────────────────────────────────────────────────────────COMMENT
MEDIUMfinrobot_desktop/scripts/verify_report_field_basket.py533# ── orchestration ─────────────────────────────────────────────────────────────COMMENT
Docstring Block Structure13 hits · 65 pts
SeverityFileLineSnippetContext
HIGH…ot_desktop/finrobot/engine/analysis/news_classifier.py73Classify raw news items using LLM with structured output. What this does that raw LLM text cannot: forces each newsSTRING
HIGH…nrobot/engine/compute/operators/valuation_synthesis.py472Synthesize multiple valuation methods into a single confidence-weighted estimate. Formula: weighted_price = Σ(mid_iSTRING
HIGH…robot_desktop/finrobot/engine/compute/operators/ddm.py33Run a multi-stage DDM valuation from structured inputs. What this code does that raw LLM cannot: deterministic aritSTRING
HIGH…robot_desktop/finrobot/engine/compute/operators/dcf.py627Thin entry point: run a full DCF with one or more assumption overrides and return only the implied equity price per STRING
HIGH…sktop/finrobot/engine/compute/operators/monte_carlo.py135Run N DCF simulations with randomized assumptions — fully vectorized. All N simulations execute as NumPy array operSTRING
HIGH…ktop/finrobot/engine/compute/operators/fx_normalize.py38Return a copy of ``company`` with all monetary fields converted to USD. Args: company: A peer's financials STRING
HIGH…ktop/finrobot/engine/compute/operators/fx_normalize.py163Return a copy of ``financials`` with all monetary fields converted to USD. The ``FinancialData`` sibling of :func:`STRING
HIGH…bot_desktop/finrobot/engine/data/normalize/currency.py31Express a canonical snapshot's reporting-currency line items in its QUOTE currency so the object is single-currency STRING
HIGHfinrobot_desktop/finrobot/routes/artifacts.py140Return the full Artifact including inputs, assumptions, outputs, and meta. Args: artifact_id: The artifact STRING
HIGHfinrobot_desktop/finrobot/routes/artifacts.py159Permanently delete an artifact and remove it from the index. Args: artifact_id: The artifact id to delete. STRING
HIGHfinrobot_desktop/finrobot/routes/artifacts.py193Return an analyst-grade semantic delta between two artifact versions. ``a_id`` is the older/base version, ``b_id`` STRING
HIGHfinrobot_desktop/finrobot/routes/artifacts.py223Record that this artifact was viewed now. Updating the last_viewed_at timestamp prevents the artifact from being STRING
HIGH…utogen/finrobot/data_source/filings_src/sec_filings.py160Unsturcured API to get the text Args: text (str): Text from the filing document URL m_sSTRING
Redundant / Tautological Comments18 hits · 28 pts
SeverityFileLineSnippetContext
LOW⚡finrobot_equity/deploy.sh91 # Check if it's Python 3.9 or higherCOMMENT
LOW⚡finrobot_equity/deploy.sh215 # Check if already runningCOMMENT
LOWfinrobot_equity/deploy.sh275 # Check if the process is still runningCOMMENT
LOWfinrobot_equity/deploy.sh408 # Check if application is runningCOMMENT
LOWfinrobot_equity/web_app/auth.py113 # Check if user existsCOMMENT
LOW⚡finrobot_equity/core/src/create_equity_report.py60 # Check if necessary columns existCOMMENT
LOW⚡finrobot_equity/core/src/create_equity_report.py173 # Check if content looks like CSV data (especially for competitor_analysis and major_takeaways)COMMENT
LOWfinrobot_equity/core/src/create_equity_report.py256 # Check if content looks like CSV data (for competitor_analysis and major_takeaways)COMMENT
LOWfinrobot_equity/core/src/generate_financial_analysis.py126 # Check if we got the required dataCOMMENT
LOW…equity/core/src/modules/equity_agents/agent_manager.py77 # Check if a custom model is specified via environment variableCOMMENT
LOWfinrobot_desktop/finrobot/routes/data.py369 # Check if any provider supports earnings transcriptsCOMMENT
LOW⚡finrobot_desktop/tests/artifact/test_store.py307 # Set last_viewed_at to just now (within 1h)COMMENT
LOWfinrobot_autogen/test_module.py27 # Check if an order has been completedCOMMENT
LOWfinrobot_autogen/test_module.py61 # Check if an order is pending ... if yes, we cannot send a 2nd oneCOMMENT
LOWfinrobot_autogen/test_module.py65 # Check if we are in the marketCOMMENT
LOWfinrobot_autogen/finrobot/agents/utils.py6 # Check if the last message contains the path to the instruction text fileCOMMENT
LOWfinrobot_autogen/finrobot/functional/analyzer.py386 # Print the resultSTRING
LOWfinrobot_autogen/finrobot/functional/rag.py46 # Check if we need to update the context.STRING
Self-Referential Comments6 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUM⚡finrobot_equity/core/src/create_equity_report.py50 # Define the mapping from CSV columns to the desired metric namesCOMMENT
MEDIUM⚡finrobot_equity/core/src/generate_financial_analysis.py470 # Create a fallback file if generation failsCOMMENT
MEDIUMfinrobot_equity/core/src/modules/common_utils.py35 # Create a dummy config.ini for testing if it doesn't existCOMMENT
MEDIUMfinrobot_autogen/test_module.py4# Create a StrateyCOMMENT
MEDIUMfinrobot_autogen/finrobot/functional/quantitative.py99 # Create a data feedCOMMENT
MEDIUMfinrobot_autogen/finrobot/functional/reportlab.py136 # Create a PageTemplate with a single columnCOMMENT
Synthetic Comment Markers2 hits · 19 pts
SeverityFileLineSnippetContext
HIGH⚡…bot_desktop/desktop/src/layout/RightChatPanel.test.tsx735// Tests: AI-generated artifact → query invalidation (BUG-20260602-037)COMMENT
HIGH…esktop/src/layout/RightChatPanel/chat/useChatStream.ts161 // ── AI-generated artifact → invalidate the same read models the REST runCOMMENT
Verbosity Indicators8 hits · 16 pts
SeverityFileLineSnippetContext
LOW⚡finrobot_equity/web_app/main.py459 # Step 2: Create Equity ReportCOMMENT
LOW⚡finrobot_equity/web_app/main.py519 # Step 3: Generate PDF ReportCOMMENT
LOWfinrobot_equity/web_app/main.py418 # Step 1: Generate Financial AnalysisCOMMENT
LOW…sktop/finrobot/engine/compute/operators/monte_carlo.py309 # Step 1: keep only positive prices. The threshold matches the 2-decimalCOMMENT
LOW…sktop/finrobot/engine/compute/operators/monte_carlo.py321 # Step 2: IQR-based outlier fence (Tukey's far fence, 3×IQR).COMMENT
LOW⚡…ot_desktop/tests/artifact/test_artifact_integration.py180 # Step 1: historical_data — produces FinancialDataCOMMENT
LOW⚡…ot_desktop/tests/artifact/test_artifact_integration.py184 # Step 2: dcf_calc — produces DCFResultCOMMENT
LOW⚡…ot_desktop/tests/artifact/test_artifact_integration.py188 # Step 3: output_gen — produces textCOMMENT
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGH…top/finrobot/engine/data/providers/finnhub_provider.py0release the shared httpx client. called from datalayer.close().STRING
HIGH…desktop/finrobot/engine/data/providers/fmp_provider.py0release the shared httpx client. called from datalayer.close().STRING
HIGH…ktop/finrobot/engine/data/providers/adanos_provider.py0release the shared httpx client. called from datalayer.close().STRING
Example Usage Blocks6 hits · 9 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/deploy.gcloud.sh9# Usage:COMMENT
LOWfinrobot_equity/deploy.sh12# Usage:COMMENT
LOWfinrobot_desktop/desktop/scripts/release.sh23# Usage:COMMENT
LOWfinrobot_autogen/finrobot/data_source/reddit_utils.py106# Example usageCOMMENT
LOWfinrobot_autogen/finrobot/functional/quantitative.py171 # Example usage:COMMENT
LOWfinrobot_autogen/finrobot/functional/charting.py231 # Example usage:COMMENT
AI Structural Patterns9 hits · 8 pts
SeverityFileLineSnippetContext
LOW…sktop/finrobot/engine/compute/operators/monte_carlo.py123CODE
LOW…robot/engine/compute/operators/valuation_aggregator.py229CODE
LOW…obot_desktop/tests/unit/test_audit_currency_caliber.py33CODE
LOWfinrobot_desktop/tests/unit/test_rerating_disclosure.py41CODE
LOWfinrobot_desktop/tests/unit/test_fx_normalize.py25CODE
LOWfinrobot_desktop/tests/unit/test_fx_normalize.py235CODE
LOWfinrobot_autogen/finrobot/data_source/finance_data.py10CODE
LOW…robot/data_source/marker_sec_src/pdf_to_md_parallel.py69CODE
LOWfinrobot_autogen/finrobot/functional/analyzer.py407CODE
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOW…desktop/finrobot/engine/compute/operators/ownership.py513# Ratio" and "Acme Corp" both sailed past that all-token gate via the weakCOMMENT
LOWfinrobot_desktop/tests/unit/test_ownership_compute.py384 "insider_name": "Jane Doe",CODE
LOWfinrobot_desktop/tests/unit/test_data_layer.py514 provider="placeholder",CODE
LOWfinrobot_desktop/tests/audit/test_sec_provenance.py31 insider_name="Jane Doe",CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMfinrobot_equity/core/tests/test_generate_report.py277 'disclaimer_text': 'This is a test report generated with mock data for demonstration purposes only. Not for inveCODE