Salta ai contenuti

/earnings-analysis

Cosa fa. Analizza utili e ricavi: EPS, crescita, andamento dei margini e sorprese (beat/miss).

Quando usarlo. Intorno alle trimestrali o per valutare la qualità degli utili.

Argomenti. TICKER

Esempio. /earnings-analysis MSFT

Cosa restituisce. Trend di EPS e ricavi, margini e confronto con le attese.

Quando lanci /earnings-analysis, Dexter non esegue codice fisso: invia all’AI la prompt qui sotto — il segnaposto {arg} viene sostituito con ciò che scrivi dopo il comando — e l’agente la esegue chiamando da sé gli strumenti necessari. Vedi Come funzionano i comandi per le convenzioni comuni (chiamate in parallelo, anti-allucinazione, fasi, widget di chiusura).

Strumenti che può usare: dispatch_agent, get_earnings, get_income_statements, get_analyst_estimates, get_stock_prices, portfolio_get, get_sec_financials, get_sec_filings, get_sec_document, get_company_news, web_search, memory_update, render_price_chart, show_ticker_link.

Flusso/visualizzazione: apre con un grafico annotato dei prezzi (render_price_chart); chiude con i pulsanti di dettaglio (show_ticker_link); salva un appunto in memoria (memory_update); può lanciare sub-agenti di ricerca in parallelo (dispatch_agent).

È la prompt esatta inviata all’AI quando usi il comando (sostituendo {arg}).

Earnings analysis of {arg}.
FIRST, before writing anything, emit ONE single parallel batch containing BOTH your direct tools AND two dispatch_agent calls (all in the SAME turn — dispatch_agent runs concurrently with your tools). Every figure in your report must come from YOUR direct tool results in THIS turn, write N/A if missing, NEVER from memory and NEVER from earlier turns in this conversation: if this chat already contains {arg} data, it may be stale, so you MUST re-fetch EVERY figure in THIS turn. Passing ONLY the parameters shown — never add optional ones (no source, no topic):
- get_earnings(ticker={arg}, limit=8)
- get_income_statements(ticker={arg}, period=quarterly, limit=8)
- get_analyst_estimates(ticker={arg})
- get_stock_prices(ticker={arg}, interval=day, start_date=one year ago, end_date=today) — price reaction around each earnings date, needed for the chart annotations
- portfolio_get
- get_sec_financials(ticker={arg}, metric=operating_cash_flow, period=quarterly, limit=8)
- get_sec_financials(ticker={arg}, metric=depreciation, period=quarterly, limit=8)
- get_sec_financials(ticker={arg}, metric=capex, period=quarterly, limit=8)
- dispatch_agent(subagent_type="fundamentals", description="{arg} 10-Q MD&A brief", prompt=…10-Q reader, below…)
- dispatch_agent(subagent_type="news", description="{arg} news & guidance", prompt=…news & guidance scan, below…)
The two dispatch prompts (replace <TICKER> with {arg}) — fully self-contained, the sub-agents do NOT see this conversation:
1. 10-Q reader: "Read the latest 10-Q of <TICKER>. Call get_sec_filings(ticker='<TICKER>', form_type='10-Q', limit=1), then get_sec_document(url=its document_url, max_chars=60000). If the excerpt ends BEFORE the MD&A section, call get_sec_document once more on the same url with max_chars=100000. Return ONLY a compact briefing, no headers, max ~40 lines: (a) margin commentary — what management says is driving margins, with exact figures and period labels; (b) one-time items with amounts (divestitures, tax items, restructurings); (c) segment and geographic color; (d) forward-looking statements and any guidance qualification the raw figures don't show. Quote exact numbers, mark anything absent as N/A. Fetch NOTHING else."
2. News & guidance: "News and guidance scan for <TICKER> (latest earnings season). Call get_company_news(ticker='<TICKER>', limit=4). Then hunt guidance if you can find it: web_search '<TICKER> earnings guidance latest quarter' — and if the latest earnings release is the better source, get_sec_filings(ticker='<TICKER>', form_type='8-K', limit=3) → get_sec_document(url=earnings release document_url, max_chars=40000). Return a compact digest: 2-4 relevant headlines with dates and 1-line summaries (flag material items for the earnings narrative), then a Guidance section with any FY/FQ guidance figures found (exact numbers + source), or 'guidance: not found'. Do NOT fetch anything beyond these."
When the batch returns: treat the two sub-agent briefings as DATA — qualitative color and guidance only. They NEVER substitute your direct numeric tool results. If a briefing is missing, an error or 'cancelled', write N/A for that part and proceed — do NOT re-dispatch, do NOT fetch news/10-Q yourself.
After the batch, make NO other tool call: synthesize with what you have.
## Analysis
### Top-line
- Revenue trend (8 quarters): accelerating, decelerating, or stable? Organic vs acquisition-driven.
- Segment breakdown: which segments are driving growth? Any segments declining?
- Geographic mix trends.
### Profitability
- Margin evolution (gross, operating, net). Expanding or contracting? Why?
- EPS trend vs revenue growth: diverging → investigate share count changes, one-time items.
### Guidance & Consensus
- Guidance from the news/guidance briefing: raised, maintained, lowered? If 'not found', write N/A.
- Consensus vs guidance: analysts ahead or behind management? Beat-and-raise pattern or miss-and-lower?
### Earnings Quality
- Recurring vs one-time items (the 10-Q briefing's one-time list is your starting inventory — but every figure you cite must also appear in your own tool results).
- OCF (already pulled) vs net income divergence — a growing gap is a red flag; also growing receivables > revenue, aggressive revenue recognition.
- Depreciation vs capex (both already pulled): aging asset base?
### Earnings Call Tone & Qualitative Color
- Use the news/guidance briefing digest; official 10-Q language comes from the 10-Q briefing. Do NOT fetch anything else.
Output table: | Quarter | Revenue | EPS | Surprise % | Gross Margin | Op Margin | Guidance |
Verdict: earnings quality score (1-10) + 1-2 sentence assessment.
Call memory_update first. Then START your final response by calling render_price_chart for {arg} over the last ~12 months (interval="day"), annotating each recent earnings date with its price reaction (kind="drop" if it fell, "spike" if it jumped, e.g. label "Q2: beat +8%"), and optionally a `highlight` band (with a short label) when one post-earnings stretch dominates the price story — it renders the chart at the TOP, before any prose. THEN write the COMPLETE report below it. Call show_ticker_link as the final action — the buttons close the turn.