Skip to content
Automation
Skill

/whale-hunting

Detect institutional whale activity in options for a given underlying. Use when the user asks about unusual options activity, large block trades, whale trades, or institutional options flow for a specific symbol.

From plugin
staskh-trading-skills
36429 skills
Install
$ npx -y skills add staskh/trading_skills --skill whale-hunting --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/whale-hunting

Context preview

The summary Claude sees to decide when to auto-load this skill.

Detect institutional whale activity in options for a given underlying. Use when the user asks about unusual options activity, large block trades, whale trades, or institutional options flow for a specific symbol.

SKILL.md

whale-hunting.SKILL.md
name: whale-hunting
description: Detect institutional whale activity in options for a given underlying. Use when the user asks about unusual options activity, large block trades, whale trades, or institutional options flow for a specific symbol.
dependencies: ["trading-skills"]

Whale Hunting

Scans option chains for a given underlying to identify institutional-sized trades using a two-step approach: 1. **Crude scan** (Yahoo Finance) — finds contracts with anomalous daily investment vs the rest of the chain. 2. **Precise drill-down** (Massive API) — fetches per-second bars for each candidate and flags seconds with outlier dollar invested.

Instructions

> **Note:** If `uv` is not installed or `pyproject.toml` is not found, replace `uv run python` with `python` in all commands below.

uv run python .claude/skills/whale-hunting/scripts/whale_hunting.py SYMBOL [--months N] [--date YYYY-MM-DD] [--sigma F] [--sigma-z F] [--summary]

Arguments

  • `SYMBOL` — Underlying ticker (e.g. `AAPL`, `NVDA`, `SPY`)
  • `--months` — Max months until option expiration to consider (default: 2)
  • `--date` — Trading date to analyze in `YYYY-MM-DD` format (default: latest trading day)
  • `--sigma` — Std-deviation multiplier for crude outlier threshold (default: 3.0)
  • `--sigma-z` — Modified Z-Score threshold for per-second small-sample detection (default: 3.5)
  • `--summary` — Also compute per-ticker summary and include it in the JSON output

Output

Returns JSON with:

  • `underlying` — The scanned symbol
  • `trading_date` — Date analyzed
  • `source` — `"massive"` (per-second data) or `"yahoo only"` (daily chain data)
  • `total_whales` — Total whale events found
  • `total_call_invested` — Sum of invested dollars in call whale events
  • `total_put_invested` — Sum of invested dollars in put whale events
  • `call_put_ratio` — Call invested / put invested (null if no puts)
  • `whales` — List of whale events:
  • `timestamp`, `ticker`, `type`, `strike`, `expiry`
  • `close`, `volume`, `transactions`, `invested`, `break_even`
  • `summary` *(present only when `--summary` is passed)* — List of per-ticker aggregates:
  • `ticker`, `type`, `strike`, `expiry`, `whale_count`, `total_invested`, `break_even`

Examples

# Hunt whales for AAPL (latest trading day)
uv run python .claude/skills/whale-hunting/scripts/whale_hunting.py AAPL

# Hunt whales for NVDA on a specific date
uv run python .claude/skills/whale-hunting/scripts/whale_hunting.py NVDA --date 2026-03-13

# With per-ticker summary
uv run python .claude/skills/whale-hunting/scripts/whale_hunting.py HOOD --months 3 --summary

# Looser detection threshold
uv run python .claude/skills/whale-hunting/scripts/whale_hunting.py SPY --sigma 2.0

Reporting

After running the script, present the results as follows.

**Header line:** > Whale activity for **{underlying}** on {trading_date} — source: {source} > Call flow: ${total_call_invested:,.0f} | Put flow: ${total_put_invested:,.0f} | C/P ratio: {call_put_ratio:.2f}

**When `--summary` was requested**, render the `summary` array as a table:

| Time (ET) | Ticker | Type | Strike | Expiry | # Events | Total Invested | Break Even | |-----------|--------|------|--------|--------|----------|----------------|------------| | {timestamp} | {ticker} | {type} | {strike} | {expiry} | {whale_count} | ${total_invested:,.0f} | {break_even} |

Sort by `total_invested` descending. For multi-event rows use the time range of first–last event (e.g. `11:46–12:33`).

**Interpretation guidance:**

  • `source: "massive"` — High-confidence; per-second block trade data from Massive API
  • `source: "yahoo only"` — Fallback; daily-level data (Massive API key missing or no intraday data)
  • Low C/P ratio (< 0.5) — Bearish institutional positioning
  • High C/P ratio (> 2.0) — Bullish institutional positioning
  • `transactions: 1` — Single block trade; strongest whale signal

Requirements

  • `MASSIVE_API_KEY` environment variable for per-second data. Without it, falls back to Yahoo Finance daily data.

Timezone

All timestamps and time-based calculations must use the `America/New_York` timezone. All JSON output must include `generated_at` (NY time string) and `data_delay` fields.

Read more
Ships withstaskh-trading-skills

Most retail traders juggle 5+ tabs — broker, charting platform, screener, news feed, spreadsheet — just to decide whether to enter a trade. This project collapses all of that into a single conversational interface powered by Claude.

Get the whole plugin
Stats
364
Stars
82
Forks
Active
Maintenance
Python
Language
MIT
License
1d ago
Last commit
6mo ago
Created

Repo: staskh/trading_skills

Other skills on staskh-trading-skills.