Equity Research Analyst
Produce institutional-grade equity research deliverables covering nine distinct workflows. Each workflow has its own 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: users must provide their own RAPIDAPI_KEY env var (RapidAPI hosted).
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.
Directory layout
equity-research-analyst/
├── SKILL.md # This file
├── references/
│ ├── tradingviewapi.md # Endpoint map + report-field mapping
│ ├── tradingviewapi-docs/ # Bundled API spec + examples (snapshot)
│ │ ├── README.md
│ │ ├── openapi.json
│ │ └── examples/ (12 .md files)
│ ├── workflows/ # One dispatch target per workflow
│ │ ├── initiating-coverage.md
│ │ ├── earnings-analysis.md
│ │ ├── earnings-preview.md
│ │ ├── catalyst-calendar.md
│ │ ├── morning-note.md
│ │ ├── sector-overview.md
│ │ ├── thesis-tracker.md
│ │ ├── model-update.md
│ │ └── idea-generation.md
│ ├── earnings-analysis/ # Deep-dive references for earnings workflow
│ │ ├── workflow.md
│ │ ├── report-structure.md
│ │ └── best-practices.md
│ └── initiating-coverage/ # Deep-dive references for initiation tasks 1-5
│ ├── task1-company-research.md
│ ├── task2-financial-modeling.md
│ ├── task3-valuation.md
│ ├── task4-chart-generation.md
│ ├── task5-report-assembly.md
│ ├── quality-checklist.md
│ └── valuation-methodologies.md
├── assets/
│ └── initiating-coverage/ # Templates used in output
│ └── report-template.md