Financial Analyst
Professional-grade financial analysis using historical market data and comprehensive financial metrics from the defeatbeta dataset.
Defaults
Unless the user specifies otherwise:
- Always call
get_latest_data_update_date first — this is "today" for all relative time queries
- Default analysis: When given only a ticker (e.g.,
/defeatbeta-analyst AAPL), run Template 1: Quick Investment Screening
- ROIC and Equity Multiplier: Not applicable to banks/financial institutions — check
sector in profile first
- Date format: "YYYY-MM-DD"
- Data limits: Price/valuation APIs return max 1000 rows — use date ranges for large datasets
Template Selection
Choose the template that best matches the user's request. Read analysis-templates.md for the full workflow of any template.
| User request |
Template |
| Quick check / "should I look at this stock?" |
T1: Quick Investment Screening |
| Full company deep-dive |
T2: Full Fundamental Analysis |
| Overvalued / undervalued / P/E / P/B / DCF |
T3: Valuation-Focused or T10: DCF Valuation |
| Revenue growth / earnings quality / ROIC |
T4: Growth Quality Assessment |
| ROE decomposition / DuPont |
T5: DuPont Analysis |
| Margin trends / vs peers |
T6: Margin Analysis & Peer Comparison |
| Accruals / FCF quality / working capital |
T7: Earnings Quality Assessment |
| Industry positioning |
T8: Industry Positioning Analysis |
| Latest earnings release numbers |
T9: Quarterly Earnings Analysis |
| "What did management report this quarter?" |
T11: Extract Key Financial Data from Earnings Call |
| "What changed vs last quarter/year?" |
T12: Financial Metric Changes from Earnings Call |
| "What is management's guidance/outlook?" |
T13: Financial Metric Forecasts from Earnings Call |
| "What does this company do?" / business model |
T14: Business Understanding |
| Revenue segments / geography breakdown |
T15: Revenue Breakdown |
| Industry trends / tailwinds / headwinds |
T16: Industry Context |
| Competitors / moat / pricing power |
T17: Competitive Landscape |
| Balance sheet strength / debt / FCF quality |
T18: Financial Quality |
| Risks / downside / what could go wrong |
T19: Risks and Downside |
| Management track record / capital allocation |
T20: Management and Execution |
| Bull case / bear case / scenarios |
T21: Bull and Bear Scenarios |
| How to value / valuation assumptions |
T22: Valuation Framework |
| Long-term thesis / why invest / must go right |
T23: Long-Term Investment Thesis |
API Gotchas
REQUIRED: Before calling any API, read the relevant section in defeatbeta-api-reference.md to confirm the correct parameters and response schema.
- Fiscal periods: Earnings transcripts use fiscal periods (may differ from calendar) — specify both
fiscal_year and fiscal_quarter
- SEC filing access: Must use
sec_user_agent field value as User-Agent header when accessing SEC URLs (SEC blocks without it)
Rendering Financial Statements
When displaying results from get_stock_*_income_statement, get_stock_*_balance_sheet, or get_stock_*_cash_flow, you MUST follow these rules. The response contains a statement array where each row has label, indent, is_section, and values fields.
Rules:
- Preserve row order — never reorder, skip, or merge rows
- Indent — prefix each label with
indent × 2 spaces (indent=0 → no prefix, indent=1 → 2 spaces, indent=2 → 4 spaces, etc.)
- is_section=true — render the label in bold; this row is a section header and the rows immediately below it (with
indent = this.indent + 1) are its children
- is_section=false — render the label in normal weight
- values[i] corresponds to
periods[i]; null means data not available
- Do NOT add calculated rows (e.g. margin %) that are not present in the data
Example — given these rows:
| label |
indent |
is_section |
| Total Revenue |
0 |
true |
| Operating Revenue |
1 |
false |
| Cost of Revenue |
0 |
false |
| Operating Expense |
0 |
true |
| SG&A |
1 |
false |
| R&D |
1 |
false |
Correct rendered output:
| Item |
2025Q4 |
2025Q3 |
| Total Revenue |
10,270 |
9,246 |
| Operating Revenue |
10,270 |
9,246 |
| Cost of Revenue |
4,693 |
4,466 |
| Operating Expense |
3,825 |
3,510 |
| SG&A |
1,198 |
1,069 |
| R&D |
2,330 |
2,139 |
Reference Documentation
Detailed step-by-step workflows (T1–T23) → analysis-templates.md
API parameters, response schemas, examples (60+ APIs) → defeatbeta-api-reference.md
1---2name: defeatbeta-analyst3description: Professional financial analysis using 60+ market data APIs. Use for: company fundamentals (revenue, margins, EPS, balance sheet), valuation (P/E, P/B, P/S, PEG, DCF, intrinsic value), profitability (ROE, ROA, ROIC), growth trends (YoY revenue/earnings/FCF), earnings transcripts (key data, changes, guidance), industry benchmarking, segment/geography revenue breakdown, business model analysis, competitive landscape, risk analysis, investment thesis, bull/bear scenarios. Trigger on: stock tickers, company names, financial metrics, or any investment research request. DO NOT trigger for: general economics, non-public companies, crypto/commodities with no equity ticker.4---56# Financial Analyst78Professional-grade financial analysis using historical market data and comprehensive financial metrics from the [defeatbeta dataset](https://huggingface.co/datasets/defeatbeta/yahoo-finance-data).910## Defaults1112Unless the user specifies otherwise:1314- **Always call `get_latest_data_update_date` first** — this is "today" for all relative time queries15- **Default analysis**: When given only a ticker (e.g., `/defeatbeta-analyst AAPL`), run **Template 1: Quick Investment Screening**16- **ROIC and Equity Multiplier**: Not applicable to banks/financial institutions — check `sector` in profile first17- **Date format**: "YYYY-MM-DD"18- **Data limits**: Price/valuation APIs return max 1000 rows — use date ranges for large datasets1920## Template Selection2122Choose the template that best matches the user's request. Read [analysis-templates.md](./references/analysis-templates.md) for the full workflow of any template.2324| User request | Template |25|-----------------------------------------------|----------------------------------------------------|26| Quick check / "should I look at this stock?" | T1: Quick Investment Screening |27| Full company deep-dive | T2: Full Fundamental Analysis |28| Overvalued / undervalued / P/E / P/B / DCF | T3: Valuation-Focused or T10: DCF Valuation |29| Revenue growth / earnings quality / ROIC | T4: Growth Quality Assessment |30| ROE decomposition / DuPont | T5: DuPont Analysis |31| Margin trends / vs peers | T6: Margin Analysis & Peer Comparison |32| Accruals / FCF quality / working capital | T7: Earnings Quality Assessment |33| Industry positioning | T8: Industry Positioning Analysis |34| Latest earnings release numbers | T9: Quarterly Earnings Analysis |35| "What did management report this quarter?" | T11: Extract Key Financial Data from Earnings Call |36| "What changed vs last quarter/year?" | T12: Financial Metric Changes from Earnings Call |37| "What is management's guidance/outlook?" | T13: Financial Metric Forecasts from Earnings Call |38| "What does this company do?" / business model | T14: Business Understanding |39| Revenue segments / geography breakdown | T15: Revenue Breakdown |40| Industry trends / tailwinds / headwinds | T16: Industry Context |41| Competitors / moat / pricing power | T17: Competitive Landscape |42| Balance sheet strength / debt / FCF quality | T18: Financial Quality |43| Risks / downside / what could go wrong | T19: Risks and Downside |44| Management track record / capital allocation | T20: Management and Execution |45| Bull case / bear case / scenarios | T21: Bull and Bear Scenarios |46| How to value / valuation assumptions | T22: Valuation Framework |47| Long-term thesis / why invest / must go right | T23: Long-Term Investment Thesis |4849## API Gotchas5051**REQUIRED**: Before calling any API, read the relevant section in [defeatbeta-api-reference.md](./references/defeatbeta-api-reference.md) to confirm the correct parameters and response schema.52531. **Fiscal periods**: Earnings transcripts use fiscal periods (may differ from calendar) — specify both `fiscal_year` and `fiscal_quarter`542. **SEC filing access**: Must use `sec_user_agent` field value as User-Agent header when accessing SEC URLs (SEC blocks without it)5556## Rendering Financial Statements5758When displaying results from `get_stock_*_income_statement`, `get_stock_*_balance_sheet`, or `get_stock_*_cash_flow`, you MUST follow these rules. The response contains a `statement` array where each row has `label`, `indent`, `is_section`, and `values` fields.5960**Rules:**61621. **Preserve row order** — never reorder, skip, or merge rows632. **Indent** — prefix each label with `indent × 2` spaces (`indent=0` → no prefix, `indent=1` → 2 spaces, `indent=2` → 4 spaces, etc.)643. **is_section=true** — render the label in **bold**; this row is a section header and the rows immediately below it (with `indent = this.indent + 1`) are its children654. **is_section=false** — render the label in normal weight665. **values[i]** corresponds to `periods[i]`; `null` means data not available676. **Do NOT add calculated rows** (e.g. margin %) that are not present in the data6869**Example — given these rows:**7071| label | indent | is_section |72|-------------------|--------|------------|73| Total Revenue | 0 | true |74| Operating Revenue | 1 | false |75| Cost of Revenue | 0 | false |76| Operating Expense | 0 | true |77| SG&A | 1 | false |78| R&D | 1 | false |7980**Correct rendered output:**8182| Item | 2025Q4 | 2025Q3 |83|-------------------------------|--------|--------|84| **Total Revenue** | 10,270 | 9,246 |85| Operating Revenue | 10,270 | 9,246 |86| Cost of Revenue | 4,693 | 4,466 |87| **Operating Expense** | 3,825 | 3,510 |88| SG&A | 1,198 | 1,069 |89| R&D | 2,330 | 2,139 |9091## Reference Documentation9293**Detailed step-by-step workflows (T1–T23)** → [analysis-templates.md](./references/analysis-templates.md)9495**API parameters, response schemas, examples (60+ APIs)** → [defeatbeta-api-reference.md](./references/defeatbeta-api-reference.md)