gammagrid Open app →
← Learn

Unusual options activity doesn't predict direction. On 519 flagged days, it was a coin flip.

The theory says a volume spike is someone trading on what they know, and the size shows up before the reason does. I ran our own detector — the same one behind the Unusual Activity tab, same thresholds — against every day we've collected, and checked what the underlying did next. It moved the flagged direction 51.1% of the time. Not looking at all does about the same.

Written by the person building GammaGrid · September 2026

"Unusual activity" is a contract whose volume today is statistically far outside its own history — not a flat multiplier applied to every strike, an actual z-score against that specific contract's own trading. The idea attached to it, everywhere from Twitter to research-desk newsletters, is that this is what informed money looks like before it becomes news: someone knows something, they size into it, and the volume shows up first.

It's a testable claim and I had the data sitting there — the same detector already runs in the app, every day, on every ticker we collect. So instead of writing another paragraph about what "smart money" supposedly does, I replayed the detector day by day and checked whether the flag actually pointed the right way.

The method, in full, so you can disagree with it

For every trading day in the collected window, I ran the exact function behind the Unusual Activity tab (unusual_activity — z-score > 2.5 against the contract's own volume history, minimum 50 contracts of volume, minimum 5 days of history or a fallback of volume > 2× open interest) against that day's chain, using only the days before it as history. That gives one flag per contract per day, exactly what the tab would have shown you live.

Contracts flagged the same day were summed into a single per-day signal by side: more flagged call volume than put volume calls the next day up, more put volume calls it down. Then I looked at the closing price the next trading day, from our own daily close history — a separate series from the options chain, so the outcome isn't measured with the same feed that produced the signal.

That gave 519 signal-days across every ticker we collect through our paid chain source — the whole roster, not a sample of it. Write that number down; I come back to it.

What came out

SignalDaysWent the flagged direction
Call-heavy flag (expected: up)36451.9%
Put-heavy flag (expected: down)15549.0%
All signal-days51951.1%

A coin flip is 50%. Across every signal this detector produced, the next day's direction matched the flag 51.1% of the time — a hair above half, and nowhere near enough to matter. Run it as a two-sided test against a fair coin and 265 hits out of 519 comes out to p ≈ 0.63: not remotely far enough from 50/50 to reject chance. Split by side, same story — call-heavy days went up 51.9% of the time, put-heavy days went down 49.0% of the time, both comfortably inside a coin flip's own noise.

The caveat that matters more than the result

This measures the next trading day only, on the tickers we happen to collect, over about a month. None of those are the whole claim.

The "smart money" story doesn't always claim next-day — some versions of it claim the position is built ahead of an earnings date or a catalyst weeks out, in which case a next-day check is the wrong window entirely and would show nothing even if the underlying claim were true. I haven't tested 3-day, 5-day or expiry-day horizons yet, and I should before calling this settled.

The ticker list is also whatever we collect for the product, not a deliberate sample: mostly liquid ETFs and a handful of single names. A thin, illiquid name is exactly where one large trade is most likely to actually mean something, and it's exactly where this sample has the least data.

What I think is actually going on

The in-app help text for this tab already hedges this, and it turns out to have been the right instinct before anyone measured it: "This is not a sign of insider activity — a large trade can be part of a hedge for an entirely different position." A flagged contract is a fact about volume — this happened, and it happened rarely enough to be worth a human's attention. It was never, on its own terms, a fact about tomorrow's price.

What the flag is good for is the same thing it always was: telling you something out of the ordinary happened on a specific contract, worth a look before you decide whether it means anything. What it doesn't do — and the numbers above say so plainly — is replace that look with a signal.

Check it yourself, and check my window first

Every number above comes from stored option chains — flags recomputed with the same function the product runs, against price history collected separately. If you have a longer window, more tickers, or want to test a slower horizon than next-day, the same query answers all three; I'd like to see the result on a slower horizon myself.

What you can't do is run this against a live options screen — the detector needs the contract's own trading history before today to know what "unusual" means for it, and a screen showing you the chain right now has nothing to compare it to.

Unusual Activity, with the history behind the flag

GammaGrid flags unusual volume per contract and keeps every chain it collects, so you can see exactly what "unusual" is being measured against, not just today's number. The hosted version is open and free while it is in beta.

Open GammaGrid →

Would rather run it yourself? It is open source: github.com/gammagrid/gammagrid