Posts  / #POST-232159
REDDIT

Trying to generate alpha using Nasdaq retail activity data

N
Jul 6, 2026 · 05:15

Hey everyone

I’ve been experimenting with the Nasdaq Retail Trading Activity Tracker / RTAT dataset to see if retail activity can be turned into a usable signal.

The basic idea was to use **retail activity** — i.e., when retail volume is unusually elevated relative to a stock’s own history. My first pass was to use this as a filter on top of price/technical features.

# What I tried

I built a model that scores stocks using:

* Nasdaq retail activity features
* retail activity z-score
* recent activity change
* rolling activity levels
* price/technical features
* RSI
* MACD
* momentum
* price vs SMA20/SMA50
* realized volatility
* volume z-score

The target was an “oracle-style” forward score: basically whether the next \~10 days had more upside than downside. Then each day I ranked stocks cross-sectionally.

The equity version was:

1. Scan a broad ITOT universe.
2. Pick the top-ranked names.
3. Require elevated retail activity.
4. Use a VIX regime gate:
* lower VIX → looser retail activity threshold
* higher VIX → stricter threshold
5. If there are not enough qualifying names, park the rest in SPY/GLD/cash.

# Equity backtest results

Using the deployed max-return config:

* VIX < 18 → activity z-score > 0.5
* VIX ≥ 18 → activity z-score > 1.25
* top 10 names
* idle capital parked in GLD/SPY

The rough 2019–2026 backtest looked like this:

|Strategy|Total Return|CAGR|Max DD|Sortino|
|:-|:-|:-|:-|:-|
|Retail activity strategy|\~+3700%|\~67%|\~−35%|\~2.7|
|QQQ|\~+360%|\~23%|\~−36%|\~1.3|
|TQQQ|\~+1500%|\~46%|\~−82%|\~1.2|

There was also a more conservative Calmar-optimized version:

* VIX < 16 → activity z-score > 0.5
* VIX ≥ 16 → activity z-score > 2.0

That had lower total return but much better drawdown:

|Strategy|Total Return|CAGR|Max DD|Calmar|
|:-|:-|:-|:-|:-|
|Calmar version|\~+2600%|\~60%|\~−24%|\~2.4|

Obviously this is still a backtest and ignores some real-world frictions, but the interesting thing was that the signal did especially well in periods where retail was actually concentrating into names, and the activity gate helped avoid a lot of bad trades.

# What I learned from equities

A few takeaways:

* Retail **activity** seems more useful than retail sentiment.
* Activity alone is not directional.
* It works better as a **confirmation / regime trigger**.
* Price features determine direction.
* The signal is much better cross-sectionally than single-name timing.
* Parking idle capital matters a lot, because the strategy is often not fully invested.

# Trying to extend this to options

The natural next idea was: if the signal finds retail-driven names, maybe buying calls would amplify returns.

I tested buying calls on signal days with different:

* expiries: weekly, 30 DTE, 60 DTE, 90 DTE
* strikes: ATM, 5% OTM, 10% OTM
* holding periods: 5 days, 10 days, to expiry
* $100 per trade

The first call-buying tests were interesting but unstable. Some years looked great, but the strategy was very lottery-like:

* most trades lost
* a few trades drove all the P&L
* best expiry/strike varied a lot by year
* 2026 was especially bad for long calls

That made me think the real options edge may not be buying convexity, but **selling overpriced premium** on names the equity model already likes.

So I tested cash-secured short puts:

* \~30 DTE
* \~5% OTM
* tight spreads only
* sell at bid
* hold to expiry

Preliminary results were much more stable:

|Year|Trades|Avg Return on Collateral|Win Rate|Median|
|:-|:-|:-|:-|:-|
|2023|\~165|\+9%|\~70%|\+5%|
|2025|\~386|\+2%|\~66%|\+5%|
|2026|\~73|\+4%|\~82%|\+8%|

The return distribution looked more like classic premium selling:

* positive median trade
* high win rate
* occasional −30% to −45% losers
* much less dependent on rare moonshots than long call

Curious if anyone has worked with RTAT or similar retail-flow datasets. Does this sound like a reasonable direction? Any obvious pitfalls I’m missing, especially on the options side?