Options flow was never magic.

See the size the moment it prints. Whale Options watches every options trade, flags the sweeps, blocks, and split orders that matter, and scores each one with the math shown in full. Free, open source, on your own machine.

Local MCP server
Star on GitHub
live flow · event drawer
09:30:20PRINTBUYAAPL C $205 09-0435 @ 27.36$96K42*
09:30:23BLOCKSELLSPY C $650 09-042210 @ 2.52$557K47*
09:30:23SWEEPBUYAMD C $162.5 09-18983 @ 9.38$922K67*
09:30:27PRINTMIDNVDA P $217.5 09-0414 @ 27.55$39K11*
09:30:30BLOCKSELLAMD P $200 09-25105 @ 35.07$368K38*
09:30:33BLOCKBUYAMD P $155 09-04279 @ 0.96$27K51*
09:30:34PRINTBUYSPY P $700 09-0424 @ 54.81$132K45*
09:30:51SWEEPBUYNVDA P $187.5 09-251067 @ 7.89$842K72*
09:30:53PRINTBUYTSLA C $315 09-1818 @ 33.46$60K45*
SWEEPAMD C $162.5 09-18$922K · score 67*

· sweep: 6 legs across 6 exchanges in 312ms

· ISO-flagged legs corroborate an intermarket sweep

· aggressor buy: 9.38 at ask 9.38 (nbbo 9.22×9.38, 327ms old)

· cold start: 0/5 baseline sessions; score uncertainty is wider

volumeVsBaselinen/a · no volume baseline for this contract yet
premiumVsBaselinen/a · premium distribution too thin (12/50 samples)
volOi20.3 pts
aggression33.3 pts
urgency0.9 pts
repetition12.5 pts

* cold start: missing components report themselves and the remaining weights renormalize. The score never silently pretends it knew something it didn’t.

Real events · whale run --feed synthetic · the demo tape ships with the repo; no real market data appears anywhere in it

Three shapes of size.

A sweep is urgency, a block is conviction, a split is patience, and the engine never confuses them. Every print is judged against the live quote at the exact moment it happened, and when that quote can’t be trusted it says unknown instead of guessing.

Sweeps

2+ exchanges · 500 ms

Someone in a hurry: the same order racing across two or more exchanges inside half a second, stitched back together as one event.

Blocks

99.5th percentile

Size that is huge for this contract, judged against its own recent volume, with floors so quiet names can’t fake it.

Splits

4+ clips

The same order worked quietly over minutes, in four or more clips. Patience reads differently than urgency, and the engine keeps them apart.

shapes illustrative; thresholds are the engine’s own

A score you can audit.

One number, zero to one hundred, built from six ingredients you can see. If an ingredient can’t be measured it says so and drops out; nothing gets hidden in the weighting, and new contracts are flagged as new instead of quietly fudged.

volumeVsBaseline

0.20

premiumVsBaseline

0.20

volOi

0.15

aggression

0.20

urgency

0.10

repetition

0.15

Deterministic replay

Same tape plus same config produces a byte-identical event stream, ids included. A tested property, not a slogan.

The flight recorder

Every tick is self-contained: NBBO, spot, and OI ride along, so any session can be replayed and audited. Replay never re-fires alerts.

Calibration, with caveats

whale audit measures recorded scores against forward moves of the underlying, never option P&L, and prints its caveats with every report.

Around the tape.

The context around the prints, computed from your own recorded data, with every assumption stated in the output.

gex_ladderWhere dealer hedging pressure sits, strike by strike, plus the flip level.
oi_deltasWhat actually changed in a chain overnight, contract by contract.
max_painThe classic pin level per expiry, labeled as a snapshot, not a prediction.
iv_rankIs volatility rich or cheap right now, against your own recorded history.
net_flowWhich names the big money leaned into today, netted per underlying.
short_volumeDaily short-sale volume from the public FINRA files, cached locally.

Alerts as plain JSON.

Tell it what matters (ticker, kind, side, score, premium) and it pings you on Discord, Telegram, your desktop, or any webhook. Cooldowns are on by default so it never spams, and every webhook is signed so you can trust what arrives.

stdoutwebhookdiscordtelegramdesktop
rules/nvda-big-sweeps.json
{  "id": "nvda-big-sweeps",  "match": { "tickers": ["NVDA"], "kind": ["sweep"],             "minScore": 75, "minPremium": 250000 },  "sink": { "type": "discord" },  "cooldownSec": 300}

Thirteen tools. One tape.

The MCP server runs against your own engine, live or recorded, so an agent can pull the top-scored events with their full breakdowns, open one event’s complete story, or replay a window under a new config and diff what changes.

whale_status

Live engine or recording? Tape depth, baseline warmth: the right first call.

whale_recent

The latest flow, filterable by ticker, kind, side, premium.

whale_top

Highest-scored events in a window, full component breakdowns attached.

whale_event

One event’s complete story: every leg, its sale conditions, the NBBO it was judged against.

whale_gex

The GEX ladder plus zero-gamma, sign convention stated in the payload.

whale_rules

List, add, and remove alert rules.

whale_replay

Re-run a stored window under the current config and diff against what was recorded.

whale_oi_deltas

Session-to-session open-interest change per contract, strike, and expiry.

whale_max_pain

Per-expiry max-pain strike, the static-not-prediction note carried in the payload.

whale_iv_rank

IV rank and percentile over recorded ATM-IV history, real window stated.

whale_net_flow

Net premium flow leaderboard per underlying; emitted events only.

whale_audit

Calibrate recorded scores against forward underlying moves, caveats always attached.

whale_short_volume

Cached FINRA daily short-sale volume; end-of-day context, local cache only.

Local MCP server

Keys later. Tape now.

The synthetic feed is a seeded, plausible tape with injected sweeps, blocks, and ladders, so the whole engine runs before you hold any vendor key. Plug in a real feed when you’re ready; servers bind loopback by default.

terminal
Synthetic tapeseeded and deterministic, runs with zero keysbuilt in
Tradierlive options printsyour key
ThetaDatalive and historical options tapeyour key
Alpacalive options printsyour key
Massiveflat files from diskyour files

Open the detection. It's just tape.

Just tape. All math.

MIT-licensed and self-host only: the engine phones home to no one, ever. No hosted mode, no order execution, no win-rate claims. Prints, classifications, and arithmetic, with the work shown.

MIT © LuxAlgo Global, LLC · self-host only · no telemetry, ever · contribute

Whale Options is an independent project by LuxAlgo, not affiliated with, endorsed by, or derived from any commercial flow platform. Classifications and scores describe prints, not intent; audit returns measure moves of the underlying, never option P&L, and a calibration table is a measurement of one recorded window, not a forecast and not trading advice.