Equity Research Analyst
Produce institutional-grade equity research deliverables through the selected workflow. Each workflow has a dedicated reference file in references/workflows/; this SKILL.md is the dispatcher and the hub for cross-workflow conventions.
Loading Strategy
Keep context tight and load only the files needed for the active task.
- Match the request to exactly one workflow in
references/workflows/.
- Read only that workflow file first.
- Open deep-dive references only when the active workflow points to them.
- Read
references/tradingviewapi.md before opening anything in references/tradingviewapi-docs/.
- Treat
references/tradingviewapi-docs/ as a lookup bundle: search by endpoint name or JSON field, then open the smallest relevant file instead of loading an entire large example file.
tradingviewapi lookup guide
- Start with
references/tradingviewapi.md for task-to-endpoint mapping.
- Use
references/tradingviewapi-docs/README.md for file selection inside the bundled API docs.
- Use
references/tradingviewapi-docs/openapi.json as the source of truth for exact parameters, defaults, and allowed enum values.
- Use
references/tradingviewapi-docs/examples/ mainly for concrete URL patterns and response shapes, not for deciding which asset-class parameter should be used.
- If an example and the OpenAPI spec disagree, trust
openapi.json for parameters and trust executed examples only for payload shape after the request has been validated against the spec.
- Search patterns that usually find the right example quickly:
GET /api/market-data/{symbol}
GET /api/calendar/earnings
GET /api/search/market/{query}
earnings_release_next_date
analyst-recommendations
When to invoke which workflow
Match the user request to one of the nine workflows below and read the corresponding reference file from references/workflows/. If the request is ambiguous, ask the user to confirm before committing.
| Workflow |
Trigger phrases |
Reference |
| Initiating coverage |
"initiation report", "first-time coverage", "new coverage on X", "write a full report on X" |
references/workflows/initiating-coverage.md |
| Earnings analysis |
"earnings update", "Q1/Q2/Q3/Q4 results for X", "post-earnings report", "beat/miss analysis" |
references/workflows/earnings-analysis.md |
| Earnings preview |
"earnings preview", "what to watch in X's earnings", "pre-earnings note" |
references/workflows/earnings-preview.md |
| Catalyst calendar |
"catalyst calendar", "upcoming events", "earnings calendar", "event tracker" |
references/workflows/catalyst-calendar.md |
| Morning note |
"morning note", "daily brief", "pre-market note", "morning wrap" |
references/workflows/morning-note.md |
| Sector overview |
"sector report", "industry overview", "peer comp", "sector deep-dive" |
references/workflows/sector-overview.md |
| Thesis tracker |
"thesis tracker", "investment thesis review", "revisit thesis on X", "thesis check" |
references/workflows/thesis-tracker.md |
| Model update |
"update the model", "model maintenance", "refresh estimates", "re-forecast" |
references/workflows/model-update.md |
| Idea generation |
"screen for X", "find me stocks that", "idea generation", "investment ideas" |
references/workflows/idea-generation.md |
Single-workflow discipline (especially for initiating-coverage)
The initiation-report workflow has five sequential tasks (Company Research → Financial Modeling → Valuation → Charts → Assembly). Execute one task per user request, verify prerequisites before the next task, and never auto-chain. Details in references/workflows/initiating-coverage.md.
Primary data source: tradingviewapi
Before Web Search, pull structured numeric data (financials, TTM ratios, analyst consensus, calendars, prices, technicals, news) from the bundled tradingviewapi (TradingView proxy). One call to /api/market-data/{symbol} covers ~70% of the numeric content of a typical research report.
- Full endpoint map, curl examples, and JSON-path-to-report-field mapping:
references/tradingviewapi.md
- OpenAPI spec and example responses:
references/tradingviewapi-docs/
Authentication: prefer TRADINGVIEW_API_KEY against https://api.tradingviewapi.com (Authorization: Bearer). RapidAPI keys (RAPIDAPI_KEY) remain supported as an alternate.
Use Web Search ONLY for narrative content: MD&A text, forward guidance wording, earnings call transcripts, segment breakdowns, risk factors, management bios, industry research, FDA/regulatory decisions. Pull raw SEC 10-K/10-Q only when direct quotation or audit is required.
Global conventions
Data freshness
- Training data is outdated. Before writing, verify today's date and confirm that the latest fetched data is current (next earnings date, last reported quarter).
- If
data.current.fiscal_period_current is >90 days old, flag as "last reported" and Web Search for newer disclosures.
- Treat
data.current.fiscal_period_current as a structured provider label, not the final narrative quarter label. If company IR / SEC naming differs (for example provider 2025-Q4 vs company-reported Fiscal 2026 Q4), use the latest primary-source wording in the written report and cite that source explicitly.
Ticker resolution
- Always use
EXCHANGE:TICKER format (e.g., NASDAQ:AAPL, NYSE:JPM).
- If the user supplies only a company name, resolve it via
/api/search/market/{query}?filter=stock before proceeding.
- Use the resolved symbol from
/api/search/market/{query} as the canonical identifier for the workflow. Do not rely on data.company.ticker or data.company.exchange from /api/market-data/{symbol} as the canonical listing identifier, because those fields may be null or may reflect a quote venue rather than the primary exchange.
Citation standard
Every numeric fact in a deliverable must cite its source:
Source: Structured data via tradingviewapi (TradingView); fetched [YYYY-MM-DD]
Endpoint: /api/market-data/NASDAQ:AAPL
Fiscal period: 2026-Q1
SEC filings keep separate EDGAR hyperlinks. When consensus data comes from the API, cite the analyst-recommendations endpoint explicitly instead of a generic terminal label.
Output formatting
- Default font for Word deliverables: Times New Roman.
- Do not add emojis to research reports unless the user explicitly requests them.
- Follow the page/structure templates in
assets/initiating-coverage/report-template.md for initiation reports.
- Use
references/initiating-coverage/quality-checklist.md for final initiation-report QA.
- Other workflows use the template embedded in their own reference file.
No shortcuts
- Deliver exactly the outputs specified in each workflow reference. Do not create extra "completion summaries", "executive summaries", or "quick reference guides".
- Do not fabricate data. Missing field → "N/A". Missing consensus → state "consensus not available".
Fallback strategy
tradingviewapi unavailable → fall back to Web Search + SEC EDGAR per the workflow reference.
- Ticker unresolved → ask the user for
EXCHANGE:TICKER.
- Ambiguous workflow → ask the user which deliverable they want.
1---2name: equity-research-analyst3description: Use when the user asks for institutional-style equity research on a public company, ETF, or TradingView-resolvable ticker, including initiation reports, earnings updates or previews, catalyst calendars, morning notes, sector or peer overviews, thesis reviews, model refreshes, and stock screening or idea generation.4---56# Equity Research Analyst78Produce institutional-grade equity research deliverables through the selected workflow. Each workflow has a dedicated reference file in `references/workflows/`; this SKILL.md is the dispatcher and the hub for cross-workflow conventions.910## Loading Strategy1112Keep context tight and load only the files needed for the active task.13141. Match the request to exactly one workflow in `references/workflows/`.152. Read only that workflow file first.163. Open deep-dive references only when the active workflow points to them.174. Read `references/tradingviewapi.md` before opening anything in `references/tradingviewapi-docs/`.185. Treat `references/tradingviewapi-docs/` as a lookup bundle: search by endpoint name or JSON field, then open the smallest relevant file instead of loading an entire large example file.1920### `tradingviewapi` lookup guide2122- Start with `references/tradingviewapi.md` for task-to-endpoint mapping.23- Use `references/tradingviewapi-docs/README.md` for file selection inside the bundled API docs.24- Use `references/tradingviewapi-docs/openapi.json` as the source of truth for exact parameters, defaults, and allowed enum values.25- Use `references/tradingviewapi-docs/examples/` mainly for concrete URL patterns and response shapes, not for deciding which asset-class parameter should be used.26- If an example and the OpenAPI spec disagree, trust `openapi.json` for parameters and trust executed examples only for payload shape after the request has been validated against the spec.27- Search patterns that usually find the right example quickly:28 - `GET /api/market-data/{symbol}`29 - `GET /api/calendar/earnings`30 - `GET /api/search/market/{query}`31 - `earnings_release_next_date`32 - `analyst-recommendations`3334## When to invoke which workflow3536Match the user request to one of the nine workflows below and read the corresponding reference file from `references/workflows/`. If the request is ambiguous, ask the user to confirm before committing.3738| Workflow | Trigger phrases | Reference |39|---|---|---|40| **Initiating coverage** | "initiation report", "first-time coverage", "new coverage on X", "write a full report on X" | `references/workflows/initiating-coverage.md` |41| **Earnings analysis** | "earnings update", "Q1/Q2/Q3/Q4 results for X", "post-earnings report", "beat/miss analysis" | `references/workflows/earnings-analysis.md` |42| **Earnings preview** | "earnings preview", "what to watch in X's earnings", "pre-earnings note" | `references/workflows/earnings-preview.md` |43| **Catalyst calendar** | "catalyst calendar", "upcoming events", "earnings calendar", "event tracker" | `references/workflows/catalyst-calendar.md` |44| **Morning note** | "morning note", "daily brief", "pre-market note", "morning wrap" | `references/workflows/morning-note.md` |45| **Sector overview** | "sector report", "industry overview", "peer comp", "sector deep-dive" | `references/workflows/sector-overview.md` |46| **Thesis tracker** | "thesis tracker", "investment thesis review", "revisit thesis on X", "thesis check" | `references/workflows/thesis-tracker.md` |47| **Model update** | "update the model", "model maintenance", "refresh estimates", "re-forecast" | `references/workflows/model-update.md` |48| **Idea generation** | "screen for X", "find me stocks that", "idea generation", "investment ideas" | `references/workflows/idea-generation.md` |4950### Single-workflow discipline (especially for `initiating-coverage`)5152The initiation-report workflow has five sequential tasks (Company Research → Financial Modeling → Valuation → Charts → Assembly). Execute **one task per user request**, verify prerequisites before the next task, and never auto-chain. Details in `references/workflows/initiating-coverage.md`.5354## Primary data source: `tradingviewapi`5556Before Web Search, pull structured numeric data (financials, TTM ratios, analyst consensus, calendars, prices, technicals, news) from the bundled `tradingviewapi` (TradingView proxy). **One call to `/api/market-data/{symbol}` covers ~70% of the numeric content of a typical research report.**5758- Full endpoint map, curl examples, and JSON-path-to-report-field mapping: `references/tradingviewapi.md`59- OpenAPI spec and example responses: `references/tradingviewapi-docs/`6061**Authentication**: prefer `TRADINGVIEW_API_KEY` against `https://api.tradingviewapi.com` (`Authorization: Bearer`). RapidAPI keys (`RAPIDAPI_KEY`) remain supported as an alternate.6263**Use Web Search ONLY for narrative content**: MD&A text, forward guidance wording, earnings call transcripts, segment breakdowns, risk factors, management bios, industry research, FDA/regulatory decisions. Pull raw SEC 10-K/10-Q only when direct quotation or audit is required.6465## Global conventions6667### Data freshness68- Training data is outdated. Before writing, verify today's date and confirm that the latest fetched data is current (next earnings date, last reported quarter).69- If `data.current.fiscal_period_current` is >90 days old, flag as "last reported" and Web Search for newer disclosures.70- Treat `data.current.fiscal_period_current` as a structured provider label, not the final narrative quarter label. If company IR / SEC naming differs (for example provider `2025-Q4` vs company-reported `Fiscal 2026 Q4`), use the latest primary-source wording in the written report and cite that source explicitly.7172### Ticker resolution73- Always use `EXCHANGE:TICKER` format (e.g., `NASDAQ:AAPL`, `NYSE:JPM`).74- If the user supplies only a company name, resolve it via `/api/search/market/{query}?filter=stock` before proceeding.75- Use the resolved symbol from `/api/search/market/{query}` as the canonical identifier for the workflow. Do not rely on `data.company.ticker` or `data.company.exchange` from `/api/market-data/{symbol}` as the canonical listing identifier, because those fields may be null or may reflect a quote venue rather than the primary exchange.7677### Citation standard78Every numeric fact in a deliverable must cite its source:7980```81Source: Structured data via tradingviewapi (TradingView); fetched [YYYY-MM-DD]82 Endpoint: /api/market-data/NASDAQ:AAPL83 Fiscal period: 2026-Q184```8586SEC filings keep separate EDGAR hyperlinks. When consensus data comes from the API, cite the `analyst-recommendations` endpoint explicitly instead of a generic terminal label.8788### Output formatting89- Default font for Word deliverables: **Times New Roman**.90- Do **not** add emojis to research reports unless the user explicitly requests them.91- Follow the page/structure templates in `assets/initiating-coverage/report-template.md` for initiation reports.92- Use `references/initiating-coverage/quality-checklist.md` for final initiation-report QA.93- Other workflows use the template embedded in their own reference file.9495### No shortcuts96- Deliver exactly the outputs specified in each workflow reference. Do **not** create extra "completion summaries", "executive summaries", or "quick reference guides".97- Do not fabricate data. Missing field → "N/A". Missing consensus → state "consensus not available".9899## Fallback strategy1001. `tradingviewapi` unavailable → fall back to Web Search + SEC EDGAR per the workflow reference.1012. Ticker unresolved → ask the user for `EXCHANGE:TICKER`.1023. Ambiguous workflow → ask the user which deliverable they want.