/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.
Come funziona
Sezione intitolata “Come funziona”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).
Prompt completa
Sezione intitolata “Prompt completa”È 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.