Repository Analysis

AI4Finance-Foundation/FinRobot

FinRobot: An Open-Source AI Agent Platform for Financial Applications using LLMs 🚀 🚀 🚀

39.4 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of AI4Finance-Foundation/FinRobot, a Jupyter Notebook project with 7,712 GitHub stars. SynthScan v2.0 examined 30,563 lines of code across 114 source files, recording 771 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 39.4 places this repository in the Strong 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).

39.4
Adjusted Score
39.4
Raw Score
100%
Time Factor
2026-07-27
Last Push
7.7K
Stars
Jupyter Notebook
Language
30.6K
Lines of Code
114
Files
771
Pattern Hits
2026-08-02
Scan Date
0.01
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 0HIGH 1MEDIUM 244LOW 526

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 771 distinct pattern matches across 17 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.

Decorative Section Separators155 hits · 502 pts
SeverityFileLineSnippetContext
MEDIUMdeploy.gcloud.sh15# ── Configuration ────────────────────────────────────────────────────────────COMMENT
MEDIUMdeploy.gcloud.sh39# ── Step 1: Create GCS Bucket ───────────────────────────────────────────────COMMENT
MEDIUMdeploy.gcloud.sh48# ── Step 2: Cloud SQL PostgreSQL ─────────────────────────────────────────────COMMENT
MEDIUMdeploy.gcloud.sh82# ── Step 3: Secret Manager — config.ini ──────────────────────────────────────COMMENT
MEDIUMdeploy.gcloud.sh110# ── Step 4: Build & Push Docker Image ────────────────────────────────────────COMMENT
MEDIUMdeploy.gcloud.sh127# ── Step 5: Deploy Cloud Run ─────────────────────────────────────────────────COMMENT
MEDIUMdeploy.gcloud.sh149# ── Done ─────────────────────────────────────────────────────────────────────COMMENT
MEDIUMdeploy.sh78# ============================================================================COMMENT
MEDIUMdeploy.sh80# ============================================================================COMMENT
MEDIUMdeploy.sh203# ============================================================================COMMENT
MEDIUMdeploy.sh205# ============================================================================COMMENT
MEDIUMdeploy.sh24# ============================================================================COMMENT
MEDIUMdeploy.sh26# ============================================================================COMMENT
MEDIUMdeploy.sh50# ============================================================================COMMENT
MEDIUMdeploy.sh52# ============================================================================COMMENT
MEDIUMdeploy.sh114# ============================================================================COMMENT
MEDIUMdeploy.sh116# ============================================================================COMMENT
MEDIUMdeploy.sh167# ============================================================================COMMENT
MEDIUMdeploy.sh169# ============================================================================COMMENT
MEDIUMdeploy.sh366# ============================================================================COMMENT
MEDIUMdeploy.sh368# ============================================================================COMMENT
MEDIUMdeploy.sh474# ============================================================================COMMENT
MEDIUMdeploy.sh476# ============================================================================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
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py277# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py279# =============================================================================COMMENT
MEDIUMfinrobot_equity/core/src/modules/pdf_generator.py873# =============================================================================COMMENT
MEDIUMfinrobot_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
95 more matches not shown…
Excessive Try-Catch Wrapping166 hits · 211 pts
SeverityFileLineSnippetContext
LOWrun_web_app.py55 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py391 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py405 except Exception as e:CODE
LOWfinrobot_equity/web_app/main.py455 except Exception as e:CODE
LOWfinrobot_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
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py396 print(f"Error performing catalyst analysis: {e}")CODE
MEDIUMfinrobot_equity/core/src/generate_financial_analysis.py404 print("Error: OpenAI API key not loaded. Skipping text generation.")CODE
MEDIUMfinrobot_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
LOWfinrobot_equity/core/src/generate_financial_analysis.py395 except Exception as e:CODE
LOWfinrobot_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
106 more matches not shown…
Unused Imports159 hits · 140 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
99 more matches not shown…
Hyper-Verbose Identifiers133 hits · 118 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/web_app/auth.py130def get_or_create_github_user(CODE
LOWfinrobot_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
LOWfinrobot_equity/core/src/create_equity_report.py41def load_credit_cashflow_metrics_from_csv(file_path: str) -> pd.DataFrame:CODE
LOWfinrobot_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
LOWfinrobot_equity/core/src/modules/market_data_api.py28def fetch_fmp_enterprise_value(ticker: str, api_key: str, limit: int = 2000) -> pd.DataFrame | None:CODE
LOWfinrobot_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
LOWfinrobot_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
LOWfinrobot_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
LOWfinrobot_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
LOWfinrobot_equity/core/src/modules/pdf_generator.py280def create_key_data_table_style() -> TableStyle:CODE
LOWfinrobot_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
73 more matches not shown…
AI Slop Vocabulary32 hits · 79 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
MEDIUMfinrobot_equity/core/src/create_equity_report.py176 # Detect CSV-like patterns (more robust detection)COMMENT
MEDIUMfinrobot_equity/core/src/modules/market_data_api.py387 """Fetches comprehensive company profile data from FMP API."""STRING
MEDIUMexperiments/portfolio_optimization.py129# As the Chief Investment Officer, your task is to evaluate the potential investment in Company ABC based on the proCOMMENT
MEDIUMexperiments/portfolio_optimization.py164# Integrate Findings: Compile the insights from all three groups to get a holistic view of Company ABC's potential.COMMENT
Deep Nesting55 hits · 44 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/data_source/fmp_utils.py65CODE
LOWfinrobot/data_source/sec_utils.py92CODE
LOW…robot/data_source/marker_sec_src/sec_filings_to_pdf.py55CODE
LOWfinrobot/data_source/filings_src/sec_filings.py159CODE
LOWfinrobot/data_source/filings_src/secData.py14CODE
LOW…ource/filings_src/prepline_sec_filings/sec_document.py64CODE
LOW…ource/filings_src/prepline_sec_filings/sec_document.py134CODE
LOW…source/filings_src/prepline_sec_filings/api/section.py132CODE
LOW…source/filings_src/prepline_sec_filings/api/section.py195CODE
LOW…source/filings_src/prepline_sec_filings/api/section.py308CODE
LOW…source/filings_src/prepline_sec_filings/api/section.py347CODE
LOWfinrobot/functional/ragquery.py105CODE
Redundant / Tautological Comments16 hits · 24 pts
SeverityFileLineSnippetContext
LOWtest_module.py27 # Check if an order has been completedCOMMENT
LOWtest_module.py61 # Check if an order is pending ... if yes, we cannot send a 2nd oneCOMMENT
LOWtest_module.py65 # Check if we are in the marketCOMMENT
LOWdeploy.sh86 # Check if it's Python 3.9 or higherCOMMENT
LOWdeploy.sh210 # Check if already runningCOMMENT
LOWdeploy.sh270 # Check if the process is still runningCOMMENT
LOWdeploy.sh403 # Check if application is runningCOMMENT
LOWfinrobot_equity/web_app/auth.py113 # Check if user existsCOMMENT
LOWfinrobot_equity/core/src/create_equity_report.py60 # Check if necessary columns existCOMMENT
LOWfinrobot_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/agents/utils.py6 # Check if the last message contains the path to the instruction text fileCOMMENT
LOWfinrobot/functional/analyzer.py386 # Print the resultSTRING
LOWfinrobot/functional/rag.py46 # Check if we need to update the context.STRING
Self-Referential Comments6 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMtest_module.py4# Create a StrateyCOMMENT
MEDIUMfinrobot_equity/core/src/create_equity_report.py50 # Define the mapping from CSV columns to the desired metric namesCOMMENT
MEDIUMfinrobot_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/functional/quantitative.py99 # Create a data feedCOMMENT
MEDIUMfinrobot/functional/reportlab.py136 # Create a PageTemplate with a single columnCOMMENT
Structural Annotation Overuse10 hits · 16 pts
SeverityFileLineSnippetContext
LOWREADME.md165# Step 1: Financial analysisCOMMENT
LOWREADME.md173# Step 2: Generate reportCOMMENT
LOWfinrobot_equity/README.md14│ │ ├── generate_financial_analysis.py # Step 1: Data fetching & analysisCODE
LOWfinrobot_equity/README.md15│ │ ├── create_equity_report.py # Step 2: HTML report generationCODE
LOWfinrobot_equity/README.md16│ │ ├── generate_pdf_report.py # Step 3: PDF report generation (optional)CODE
LOWfinrobot_equity/README.md115# Step 1: Financial analysisCOMMENT
LOWfinrobot_equity/README.md123# Step 2: Generate reportCOMMENT
LOWfinrobot_equity/web_app/main.py459 # Step 2: Create Equity ReportCOMMENT
LOWfinrobot_equity/web_app/main.py519 # Step 3: Generate PDF ReportCOMMENT
LOWfinrobot_equity/web_app/main.py418 # Step 1: Generate Financial AnalysisCOMMENT
Over-Commented Block13 hits · 12 pts
SeverityFileLineSnippetContext
LOWdeploy.gcloud.sh1#!/usr/bin/env bashCOMMENT
LOWdeploy.sh1#!/bin/bashCOMMENT
LOWfinrobot/utils.py61# def create_inner_assistant(COMMENT
LOWfinrobot/utils.py81# trigger=ConversableAgentCOMMENT
LOWfinrobot/data_source/finnlp_utils.py181 # 'body', 'created_at', 'user', 'source', 'symbols', 'prices',COMMENT
LOWfinrobot/data_source/finnlp_utils.py201 # def sec_announcement_download(COMMENT
LOWfinrobot/data_source/finnlp_utils.py221COMMENT
LOWfinrobot/functional/reportlab.py301 # df = df.applymap(lambda x: "{:.2f}".format(x) if isinstance(x, float) else x)COMMENT
LOWfinrobot/functional/reportlab.py321 # Revenue10Q = pd.read_csv(COMMENT
LOWfinrobot/functional/reportlab.py341COMMENT
LOWfinrobot/functional/reportlab.py361 # currency = ra.info['currency']COMMENT
LOWexperiments/portfolio_optimization.py141COMMENT
LOWexperiments/portfolio_optimization.py161# Expected Outputs: Profit Margin (percentage) and ROA (percentage)COMMENT
Modern Structural Boilerplate12 hits · 12 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/data_source/__init__.py10__all__ = ["FinnHubUtils", "YFinanceUtils", "FMPUtils", "SECUtils"]CODE
Example Usage Blocks5 hits · 8 pts
SeverityFileLineSnippetContext
LOWdeploy.gcloud.sh9# Usage:COMMENT
LOWdeploy.sh12# Usage:COMMENT
LOWfinrobot/data_source/reddit_utils.py106# Example usageCOMMENT
LOWfinrobot/functional/quantitative.py171 # Example usage:COMMENT
LOWfinrobot/functional/charting.py231 # Example usage:COMMENT
Verbosity Indicators3 hits · 6 pts
SeverityFileLineSnippetContext
LOWfinrobot_equity/web_app/main.py459 # Step 2: Create Equity ReportCOMMENT
LOWfinrobot_equity/web_app/main.py519 # Step 3: Generate PDF ReportCOMMENT
LOWfinrobot_equity/web_app/main.py418 # Step 1: Generate Financial AnalysisCOMMENT
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHfinrobot/data_source/filings_src/sec_filings.py160Unsturcured API to get the text Args: text (str): Text from the filing document URL m_sSTRING
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWfinrobot/data_source/finance_data.py10CODE
LOW…robot/data_source/marker_sec_src/pdf_to_md_parallel.py69CODE
LOWfinrobot/functional/analyzer.py407CODE
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMfinrobot_equity/README.md38│ │ ├── agent_manager.py # Agent orchestrationCODE
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