Unusual options activity alerts in Slack
Scan your options watchlist every market close and get a written Slack alert when unusual volume points to a real conviction trade.
Build me an agent workflow that scans my options watchlist every US trading day right after the close and posts a written unusual-activity alert to Slack.
Trigger: cron, every weekday (Mon-Fri) at 4:30pm America/New_York. Skip US market holidays. The 4:30 ET timing is on purpose so end-of-day volume and open interest are settled.
Step 1. Read my watchlist from Google Sheets. Use the Get Values operation against a configurable spreadsheet ID and range (default range: a tab called 'Watchlist', column A, e.g. 'Watchlist!A2:A'). Treat each non-empty cell as one underlying US equity ticker (e.g. AAPL, NVDA, SPY).
Step 2. For each ticker, call Massive's Get Option Chain Snapshot to pull every live contract for that underlying. Capture, per contract: contract type (call/put), strike price, expiration date, day volume, open interest, implied volatility, delta, the underlying spot price, and the contract's day close or mid price so we can compute traded premium.
Step 3. Filter to 'unusual' contracts. Defaults (both configurable):
- volume / open_interest > 3 (require open_interest >= 100 so brand-new contracts with OI of 0 or 1 don't trivially pass)
- traded premium for the day > $25,000, where traded premium = volume * contract price * 100
- exclude contracts expiring the same day to cut 0DTE noise (optional toggle)
Step 4. Rank surviving contracts by total traded premium, descending, across the whole watchlist. Take the top 3 to 5 (configurable; default 5).
Step 5. Classify each standout as bullish, bearish, or mixed. Heuristic: calls with strike >= spot lean bullish, puts with strike <= spot lean bearish. Far-OTM short-dated contracts with very high IV should be flagged as 'speculative'. Be honest when the read is ambiguous.
Step 6. Compose one narrative Slack message and post it via Slack's Send a Message to a configurable channel (default #options-flow). Format:
- Header line with today's date and 'Unusual options activity'
- One short opening sentence summarizing the tape (e.g. 'Two names lit up today, both on the call side')
- One block per standout contract with: ticker, call or put, strike, expiration, day volume, open interest, V/OI ratio, implied volatility, total premium traded in dollars, and a one-line read on what the flow likely means for the underlying
- Use Slack mrkdwn (bold tickers, code blocks for the numbers) so it reads well on mobile
Step 7. If zero contracts clear the filter across the whole watchlist, do not post anything. The channel should stay signal-heavy. Log a short 'no unusual activity' line for the run record, but do not message Slack.
Configurable inputs to expose at the top of the workflow:
- watchlist_spreadsheet_id and watchlist_range
- slack_channel
- volume_to_oi_threshold (default 3)
- min_premium_usd (default 25000)
- top_n (default 5)
- exclude_0dte (default true)
Notes for the agent. Be defensive about rate limits on Massive's free tier (5 requests/minute); add small backoff between tickers if needed. Skip tickers that return no chain (e.g. non-optionable). Never invent contracts or numbers, if a field is missing from the snapshot, omit it from the Slack message rather than guess.
Additional information
What does this prompt do?
- Reads your watchlist of tickers from a Google Sheet so the universe stays under your control.
- Pulls every option contract on each ticker after the close and looks for volume that towers over open interest.
- Ranks the standout contracts by total premium, classifies each as bullish or bearish, and writes a short read on what the flow likely means.
- Posts a clean, signal-only summary to Slack and stays quiet on days when nothing crosses your thresholds.
What do I need to use this?
- A Massive account with an API key for options market data.
- A Google account with a watchlist sheet that lists the underlying tickers you care about.
- A Slack workspace and a channel where the alerts should be posted.
How can I customize it?
- Change the cutoffs. The defaults flag contracts where volume is more than three times open interest and total premium clears $25,000. Move either number up or down to fit how aggressive you want the feed to be.
- Edit the watchlist in your Google Sheet. Add or remove tickers any time without touching the workflow.
- Swap the destination channel, tweak the post time, or change how many top contracts get called out in each alert.
Frequently asked questions
When does the alert run?
What counts as unusual options activity?
Will I get a message every day?
How does it decide if flow is bullish or bearish?
Can I use this for a single ticker or do I need a watchlist?
Stop scrolling options scanners after the bell.
Connect Massive, Google Sheets, and Slack once, and Geni delivers a written read on the day's unusual flow before you close your laptop.