agentsclimarketplace

Earnings drilldown

Skill rgourley/quant-garage/skills/earnings-drilldown

Produce a sell-side-grade earnings preview for a single ticker: implied vs realized move, beat/miss history, post-earnings drift, peer reaction, and a one-line take. Use when an analyst, PM, or trader is preparing for a specific company's earnings print. Lite mode runs on Stocks Starter; full mode adds IV crush analysis and needs Options Developer.From its SKILL.md

Install
npx -y skills add rgourley/quant-garage --skill earnings-drilldown

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.8 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

earnings-drilldown

You hand over a ticker and the upcoming print date. The skill returns a sell-side-quality preview: a bold take, implied vs realized move comparison, eight-quarter beat/miss history, post-earnings drift pattern, peer reaction analysis, and the catalysts to watch in the print.

This is the "what does a senior analyst already know walking into the print" workflow. The take at the top is the trade: is the straddle mispriced, is consensus too low, is the drift pattern favorable to holders through T+5.

When to invoke

  • An analyst is writing a morning note for tomorrow's print
  • A PM is sizing a position into an earnings catalyst
  • A trader is deciding whether to fade the straddle
  • The user says "preview $TICKER earnings", "what's priced in for X", or "should I hold X through earnings"

What you need

  • A ticker symbol
  • Optional: the print date (the skill looks it up if omitted)
  • MASSIVE_API_KEY exported in the environment

The skill runs at three fidelity tiers depending on what your key unlocks. See references/data-source-tiers.md for the full matrix. Short version:

  • Tier A (full fidelity): Stocks Starter + Benzinga Earnings. True press release dates, consensus EPS, surprise %, classical beat/miss bucketing. ~$130/m combined.
  • Tier B (degraded but usable): Stocks Starter only. 8-K acceptance date as print date proxy (24-48hr lag from press release). No consensus, so beat/miss replaced by reaction-sign bucketing. Implied vs realized still fully works. $29/m.
  • Tier C (free basic): 5 calls/min throttle makes a single run take ~10 minutes. Documented but not actively supported. The skill warns and runs at Tier B.

The skill detects available data and picks the highest tier it can serve, then flags the choice in the output JSON as tier with any caveats.

What you get back

The skill ships two output layers.

Layer 1: canonical JSON matching output-schema.json. Every analysis ships its underlying datapoints, sample sizes, statistical tests, and the source endpoint for each Massive call. UIs, dashboards, and downstream agents consume this.

Layer 2: rendered note in sell-side morning-note format. See references/rendering.md for full rules. Claude Code users read this.

How it works

The skill runs three analyses by default plus an optional fourth, each documented in its own reference:

  1. Implied vs realized move (references/implied-vs-realized.md): front-week straddle pricing vs realized 8-print average, with IV30 percentile vs trailing year and the closest historical analog.
  2. Print history (references/print-history.md): beat rate, average surprise on EPS and revenue, best and worst reactions over the last 8 quarters.
  3. Post-earnings drift (references/post-earnings-drift.md): abnormal returns T+1 to T+5 conditional on beat vs miss, with t-stats so the user knows whether the pattern is significant or noise.
  4. Peer reaction (references/peer-reaction.md): how sector peers traded same-day on this name's past prints, with per-peer betas to the print-day return. Tier A run-aapl.py emits peer_reaction: null with a peer_reaction_note explaining the skip; SIC-based selection misclassifies mega-cap tech and a curated override list lands separately. Tier B run-aapl-tier-b.py runs the analysis against an explicit PEER_OVERRIDES map.

The take at the top of the rendered output is generated from whichever analyses produced data: it surfaces the most actionable insight, usually the implied-vs-realized mispricing or a sharp PEAD pattern.

Foundations used

  • massive-api-patterns for REST patterns, the best-price fallback chain, and rate limit handling
  • Optional: massive-flat-files if a user wants historical IV across more than ~2 years of prints (the options aggregates endpoint covers recent prints; deeper history needs flat files)

Mode: lite vs full

Mode is independent of tier. Mode controls whether the implied-vs-realized analysis runs. Tier controls how the print history and PEAD analyses are bucketed (see data-source-tiers.md).

  • Lite mode (no options data): skips implied vs realized. Other three analyses still run, at whichever tier the key supports.
  • Full mode (Options Developer or higher): runs all four analyses.

The skill detects available data and adjusts. Lite mode + Tier B is the cheapest workable combination ($29/m Stocks Starter alone): three analyses, all reaction-based bucketing, no implied move. Lite mode + Tier A adds beat/miss bucketing. Full mode + Tier A is the maximum fidelity output.

Endpoints used

Tier A (with Benzinga):

  • GET /benzinga/v1/earnings?ticker={ticker}&limit=20&order=desc&sort=date: press release date + time + consensus + actuals + surprise % in one call. Canonical when available.

Tier B (Stocks-only fallback):

  • GET /v1/reference/sec/filings?ticker={ticker}&form_type=8-K&limit=20: 8-K filings (filter client-side for items containing "2.02" to isolate earnings filings). Acceptance date used as print date proxy.
  • GET /vX/reference/financials?ticker={ticker}&limit=8: EPS and revenue actuals only (no consensus). Do NOT use the filing_date from this endpoint as the print date: it's the 10-Q filing date, weeks after the press release.

Both tiers:

  • GET /v2/aggs/ticker/{ticker}/range/...: historical price aggregates
  • GET /v3/snapshot/options/{ticker}: current options snapshot (full mode)
  • GET /v3/reference/tickers/{ticker}: sector classification
  • GET /v2/aggs/ticker/SPY/range/...: SPY closes for PEAD beta-adjustment
  • Optional: GET /v2/aggs/ticker/O:{occ_ticker}/range/... for historical IV (full mode only)

Verify endpoint paths against current docs at massive.com/docs before shipping; field names and versions shift.

Doesn't handle (yet)

  • Whisper numbers (no analyst whisper data via Massive)
  • Pre-announce or guidance revisions (would need a news endpoint integration; queued for news-scanner interop)
  • Multi-ticker comparison (one ticker per call; for cross-sectional reaction across many names, use event-study instead)
  • Index-level previews (skill is single-name)

These are clean PR extensions and welcome contributions.

What ships with it: 10 files

58.5 KB alongside SKILL.md

examples/

Gives 0 of the 12 instructions most research analysis skills give in ~1.6k tokens

Counted across 1,063 of the 1,754 authors here whose files we hold, read 2026-08-07

  • Generate a markdown reportin 32 of 1063, across 23 files
  • Cite each claim's sourcein 30 of 1063, across 15 files
  • Define the ideal customer profilein 20 of 1063, across 2 files
  • Search for companies matching the criteriain 20 of 1063, across 2 files
  • Assign a fit score from one to tenin 20 of 1063, across 2 files
  • Analyze the codebase to understand the productin 19 of 1063, across 1 file
  • Ask clarifying questions about the value propositionin 19 of 1063, across 1 file
  • Look for signals of immediate needin 19 of 1063, across 1 file
  • Identify the target decision maker rolein 19 of 1063, across 1 file
  • Suggest a personalized contact strategyin 19 of 1063, across 1 file
  • Provide conversation starters for outreachin 19 of 1063, across 1 file
  • Format results in a scannable markdown templatein 19 of 1063, across 1 file

Said here and by no other author read

  • pick highest available data tier automatically
  • flag chosen data tier in output JSON
  • match canonical JSON to output schema
  • render note in morning-note format
  • run implied versus realized move analysis
  • run eight quarter print history analysis

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,835. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.