earnings-blackout
You have a watchlist of 20 names. Which print this week? Which printed
yesterday and might gap on follow-up news? Which are clear to trade
without earnings-event risk? Run the scanner. One pass per ticker over
Benzinga (or SEC EDGAR as fallback), one classification per ticker, one
grouped exception report at the end.
This is the pre-trade hygiene check, not a full preview. For a single
name's full sell-side preview (implied move, beat/miss history, peer
reaction, drift), use earnings-drilldown.
For the per-event windowing study, use event-study.
When to invoke
- Morning watchlist scan before the market opens
- Position-sizing check: which names in the book have earnings risk
in the next N days
- Post-mortem: which name in the watchlist already printed and might
have residual gap risk
What you need
- A watchlist (
--watchlist NVDA,TSLA,AMZN,GOOGL,META,AAPL,MSFT)
MASSIVE_API_KEY exported in the environment
- Optional: Benzinga earnings add-on for forward dates + consensus EPS
(Tier A). Without it, the skill falls back to SEC EDGAR 8-K filings
(Tier B, past-only).
Quick start
python3 examples/run-earnings-blackout.py \
--watchlist NVDA,TSLA,AMZN,GOOGL,META,AAPL,MSFT \
--window-days 7
Status buckets
Seven, returned in results[].status:
blackout_imminent — earnings 0-3 days forward. Position-sizing
decisions need to be locked in NOW.
blackout_soon — earnings 4-7 days forward. Watching for IV ramp,
positioning unwind.
blackout_extended — earnings 8+ days forward. Only surfaces when
--window-days > 7.
just_printed — earnings 0-3 days past. Watch for analyst-day
follow-on, guidance digestion, gap fill.
recent_print — earnings 4-7 days past. Less relevant, ranked low
in render.
clear — no earnings in either the forward or past window.
unresolved — the resolver returned nothing from Benzinga AND the
SEC EDGAR fallback. Could mean the ticker has no 8-K with items
2.02 / 7.01 / 8.01 in the window, or that the CIK lookup failed.
Surfaced explicitly rather than silently dropped.
Tiers
- Tier A (Benzinga): True forward calendar dates, consensus EPS,
consensus revenue, expected release time (BMO/AMC/DMH).
- Tier B (SEC EDGAR only): Past prints only. No forward calendar
(EDGAR is filing-based). No consensus EPS. Surfaces
item_code and
signal_strength (strong=2.02, soft=7.01/8.01) so consumers can
weight conservatively.
The skill returns tier: "A" if any ticker resolved via Benzinga.
tier_caveats[] lists what the user is missing.
Output
Always emits canonical JSON matching
output-schema.json and a rendered exception
report grouped by status (imminent first). See
references/rendering.md for the rules
and references/methodology.md for the
two-tier resolver chain.
Reading
1---2name: earnings-blackout3description: Lightweight watchlist scanner. Takes a comma-separated list of tickers plus a forward window and returns each ticker's earnings status (blackout_imminent, blackout_soon, blackout_extended, just_printed, recent_print, clear, unresolved) with the next/most-recent print date and consensus EPS where available. Use before a trading day to spot which positions are about to print. Earnings-drilldown is the deep dive; this is the batch scan.4---56# earnings-blackout78You have a watchlist of 20 names. Which print this week? Which printed9yesterday and might gap on follow-up news? Which are clear to trade10without earnings-event risk? Run the scanner. One pass per ticker over11Benzinga (or SEC EDGAR as fallback), one classification per ticker, one12grouped exception report at the end.1314This is the pre-trade hygiene check, not a full preview. For a single15name's full sell-side preview (implied move, beat/miss history, peer16reaction, drift), use [`earnings-drilldown`](../earnings-drilldown/).17For the per-event windowing study, use [`event-study`](../event-study/).1819## When to invoke2021- Morning watchlist scan before the market opens22- Position-sizing check: which names in the book have earnings risk23 in the next N days24- Post-mortem: which name in the watchlist already printed and might25 have residual gap risk2627## What you need2829- A watchlist (`--watchlist NVDA,TSLA,AMZN,GOOGL,META,AAPL,MSFT`)30- `MASSIVE_API_KEY` exported in the environment31- Optional: Benzinga earnings add-on for forward dates + consensus EPS32 (Tier A). Without it, the skill falls back to SEC EDGAR 8-K filings33 (Tier B, past-only).3435## Quick start3637```bash38python3 examples/run-earnings-blackout.py \39 --watchlist NVDA,TSLA,AMZN,GOOGL,META,AAPL,MSFT \40 --window-days 741```4243## Status buckets4445Seven, returned in `results[].status`:4647- `blackout_imminent` — earnings 0-3 days forward. Position-sizing48 decisions need to be locked in NOW.49- `blackout_soon` — earnings 4-7 days forward. Watching for IV ramp,50 positioning unwind.51- `blackout_extended` — earnings 8+ days forward. Only surfaces when52 `--window-days > 7`.53- `just_printed` — earnings 0-3 days past. Watch for analyst-day54 follow-on, guidance digestion, gap fill.55- `recent_print` — earnings 4-7 days past. Less relevant, ranked low56 in render.57- `clear` — no earnings in either the forward or past window.58- `unresolved` — the resolver returned nothing from Benzinga AND the59 SEC EDGAR fallback. Could mean the ticker has no 8-K with items60 2.02 / 7.01 / 8.01 in the window, or that the CIK lookup failed.61 Surfaced explicitly rather than silently dropped.6263## Tiers6465- **Tier A (Benzinga):** True forward calendar dates, consensus EPS,66 consensus revenue, expected release time (BMO/AMC/DMH).67- **Tier B (SEC EDGAR only):** Past prints only. No forward calendar68 (EDGAR is filing-based). No consensus EPS. Surfaces `item_code` and69 `signal_strength` (strong=2.02, soft=7.01/8.01) so consumers can70 weight conservatively.7172The skill returns `tier: "A"` if any ticker resolved via Benzinga.73`tier_caveats[]` lists what the user is missing.7475## Output7677Always emits canonical JSON matching78[`output-schema.json`](./output-schema.json) and a rendered exception79report grouped by status (imminent first). See80[`references/rendering.md`](./references/rendering.md) for the rules81and [`references/methodology.md`](./references/methodology.md) for the82two-tier resolver chain.8384## Reading8586- [`references/methodology.md`](./references/methodology.md) — Benzinga87 primary, SEC EDGAR 8-K fallback, item-code interpretation, CIK chain88- [`references/rendering.md`](./references/rendering.md) — exception-89 report grouping rules