15-Minute Momentum Filter - SPY/QQQ only

NISSAVINIS

New member
Can this be translated into an indicator with watchlist+scanner?

Code:
#15-Minute Momentum Filter – Manual Execution Checklist  with 3-Zone Confidence System (+/-10% Tolerance)


Time zone: All times EST (New York market time) 
Primary instruments: SPY & QQQ short-dated options (0DTE preferred) 
Default action: WAIT / CASH unless confidence meets zone threshold


## Confidence Zones (with +/-10% buffer)


| Confidence Range | Zone Name              | Allowed Actions                              | Size / Aggressiveness          | Example Confidence |
|------------------|------------------------|----------------------------------------------|--------------------------------|--------------------|
| ≥90%             | Strong / Aggressive    | Buy Calls / Buy Puts (full size)<br>Sell Premium (full size) | Full size (1–2 contracts)      | 90–94%             |
| 80–89%           | Medium / Cautious      | Buy Calls / Buy Puts (half size)<br>Sell Calls / Sell Puts (full size)<br>Sell Premium (full size) | Half size directional<br>Full credit | 80–89%             |
| 70–79%           | Borderline / Very Cautious | Sell Premium only (half size)<br>Buy Calls/Puts only if ORB strongly confirms | Half size or less              | 70–79%             |
| <70%             | Low / No Trade         | **Wait / Cash only**                         | No position                    | <70%               |


## A. Pre-Market Preparation (8:00 AM – 9:15 AM EST)


1. Open thinkorswim (or broker with real-time Level 2 & option chains) 
2. Load SPY & QQQ charts (5-min or 15-min) side-by-side 
3. Open MarketWatch → Quotes → add: /ES, /NQ, VIX, NVDA, AAPL, META, MSFT, AMZN, GOOGL, TSLA 
4. Open Trade → All Products → SPY & QQQ chains (today expiry + next 1–2 weeklys) 
5. Set alerts: VIX 18/21/26, NVDA ±1.5–2%, VIX futures shift 
6. At 9:15 AM EST – record baseline: 


   - SPY pre-market price ______ 
   - QQQ pre-market price ______ 
   - /ES % change ______ 
   - /NQ % change ______ 
   - VIX spot & front-month ______ 
   - NVDA pre-market % change ______ 
   - Mag7 quick %: AAPL ___ META ___ MSFT ___ AMZN ___ GOOGL ___ TSLA ___ NVDA ___ 
   - IV ATM today + next weekly (SPY/QQQ) ______ 
   - Early unusual options volume/blocks ______ 


## B. Market Open – First 15 Minutes (9:30 AM – 9:45 AM EST)


7. 9:30 AM – Record open prices 
8. 9:35 AM – 5-min ORB: High/Low, break direction → lean 
9. 9:45 AM – 15-min ORB: High/Low, confirmed break → stronger lean


## C. Every 15 Minutes Checklist (9:45 AM – 4:00 PM EST)


Update label every 15 minutes (9:45, 10:00, 10:15, …, 3:45 PM)


| Item # | Check                                      | Value / Observation                          | Green / Red / Yellow |
|--------|--------------------------------------------|----------------------------------------------|----------------------|

| 1–11   | SPY spot, QQQ spot, /ES % , /NQ %, VIX, NVDA %, IV proxy, volume/blocks, gamma hint, Mag7 % | —                                            | —                    |
| 12     | Confidence score (calculate from grid)     | Apply +/- 10% tolerance to final number      | %                    |


**Confidence Scoring Grid** – add/subtract points:


- +25 VIX <18 
- +15 VIX 18–19 
- +10 futures both green 
- +15 NVDA steady/up 
- +10 NVDA weak/down 
- +20 IV SPY <20% AND QQQ <26% 
- +15 IV moderate low (20–25%) 
- +20 heavy directional volume + blocks 
- +10 gamma positive 
- –15 gamma negative 
- –20 VIX >22 
- –10 mixed futures 


## D. Decision Tree – Apply in Order


1. Strong zone (≥90%) + VIX <19 + green drivers → **Buy Calls** (full size) 
2. Medium zone (80–89%) + red drivers → **Buy Puts** (half size) 
3. Medium zone (≥85%) + high IV + chop/range → **Sell Premium** (iron condor full size) 
4. Medium zone (≥80%) + upside capped → **Sell Calls** (bear call spread full size) 
5. Medium zone (≥80%) + downside limited → **Sell Puts** (bull put spread full size) 
6. Otherwise → **Wait / Cash**


## E. Entry Timing & Strike Rules


**Buy Calls/Puts**:
- ATM or 1-strike OTM (OTM for minimized entry price) 
- Prefer 0DTE if IV <30% and momentum clear 
- Weekly (Mar 6/13) if IV >30–40% or theta concern 
- Enter only 10:00 AM – 2:30 PM EST (best momentum window)


**Sell Calls/Puts/Premium**:
- Defined-risk spreads only (iron condor, credit spreads) 
- 0–7 DTE (shorter = faster theta) 
- Enter 12:00 PM – 3:00 PM EST (max theta decay) 
- Wide wings for iron condor (30–40 point range) in high VIX


## F. Exit Rules (all actions)


- Directional: <80% conf OR flip OR near max run-up (80–95% of peak) 
- Premium Sell: Near breakeven OR VIX >28–30 OR theta goal 
- Hard stop: –$50–$80 per contract/spread 
- EOD close: 3:55–3:58 PM EST


## G. Logging & P&L Tracking (every 15 min & EOD if possible)


**End of Day Routine (4:00–4:15 PM EST)**
- Close any open positions
 
Solution
Per Chat GPT, here it is:

Code:
declare lower;

# =========================
# INPUTS
# =========================
input useSPY = yes;
input showLabels = yes;

# =========================
# DATA (proxies used where needed)
# =========================
def spy = close("SPY");
def qqq = close("QQQ");
def vix = close("VIX");
def ndx = close("NDX");
def nvda = close("NVDA");

# Futures proxies (since /ES /NQ not always accessible in studies)
def esTrend = spy > Average(spy, 20);
def nqTrend = qqq > Average(qqq, 20);

# NVDA momentum
def nvdaUp = nvda > nvda[1];
def nvdaDown = nvda < nvda[1];

# IV proxy (using VIX as approximation)
def lowIV = vix < 20;
def midIV = vix >= 20 and vix <= 25;

# Gamma proxy (trend strength via EMA slope)
def...
sorry, you have so many rules, i can't determine what to do with it all.

don't know what this is?
Open Trade → All Products → SPY & QQQ chains (today expiry + next 1–2 weeklys)
do you want to want to read many options? almost impossible to create many variable names for many options.

why is there a rules based point system, but outputs are dependent on a % number? how to convert points to %


too many vague rules...
  • +15 NVDA steady/up what defines steady?
  • +10 NVDA weak/down what defines weak?
  • +15 IV moderate low (20–25%) what defines moderate ?
  • +20 heavy directional volume + blocks what defines heavy directional?
  • +10 gamma positive what gamma?
  • –10 mixed futures what is this?
 
Thinkorswim does not possess a means of doing such intensive data analysis... Such analysis would require exporting data to a spreadsheet or other data analysis software for aggregation and extrapolation...
 
Per Chat GPT, here it is:

Code:
declare lower;

# =========================
# INPUTS
# =========================
input useSPY = yes;
input showLabels = yes;

# =========================
# DATA (proxies used where needed)
# =========================
def spy = close("SPY");
def qqq = close("QQQ");
def vix = close("VIX");
def ndx = close("NDX");
def nvda = close("NVDA");

# Futures proxies (since /ES /NQ not always accessible in studies)
def esTrend = spy > Average(spy, 20);
def nqTrend = qqq > Average(qqq, 20);

# NVDA momentum
def nvdaUp = nvda > nvda[1];
def nvdaDown = nvda < nvda[1];

# IV proxy (using VIX as approximation)
def lowIV = vix < 20;
def midIV = vix >= 20 and vix <= 25;

# Gamma proxy (trend strength via EMA slope)
def gammaPos = ExpAverage(spy, 8) > ExpAverage(spy, 21);
def gammaNeg = ExpAverage(spy, 8) < ExpAverage(spy, 21);

# Volume proxy
def vol = volume;
def avgVol = Average(volume, 20);
def highVolume = vol > avgVol * 1.5;

# =========================
# SCORING SYSTEM
# =========================
def score =
(if vix < 18 then 25 else 0) +
(if vix >= 18 and vix <= 19 then 15 else 0) +
(if esTrend and nqTrend then 10 else 0) +
(if nvdaUp then 15 else 0) +
(if nvdaDown then 10 else 0) +
(if lowIV then 20 else 0) +
(if midIV then 15 else 0) +
(if highVolume then 20 else 0) +
(if gammaPos then 10 else 0) +
(if gammaNeg then -15 else 0) +
(if vix > 22 then -20 else 0) +
(if !(esTrend and nqTrend) then -10 else 0);

# Clamp score to 0–100
def conf = Max(0, Min(100, score));

# =========================
# ZONES
# =========================
def strong = conf >= 90;
def medium = conf >= 80 and conf < 90;
def borderline = conf >= 70 and conf < 80;
def low = conf < 70;

# =========================
# LABELS
# =========================
AddLabel(showLabels, "Confidence: " + conf + "%",
if strong then Color.GREEN
else if medium then Color.YELLOW
else if borderline then Color.ORANGE
else Color.RED);

AddLabel(showLabels,
if strong then "STRONG → Buy Calls/Puts (Full)"
else if medium then "MEDIUM → Half Size / Credit Spreads"
else if borderline then "BORDERLINE → Sell Premium Only"
else "NO TRADE",
if strong then Color.GREEN
else if medium then Color.YELLOW
else if borderline then Color.ORANGE
else Color.RED);

# =========================
# SIGNAL HINTS
# =========================
plot SignalLine = conf;
SignalLine.SetLineWeight(2);

plot Over90 = 90;
Over90.SetDefaultColor(Color.GREEN);

plot Over80 = 80;
Over80.SetDefaultColor(Color.YELLOW);

plot Over70 = 70;
Over70.SetDefaultColor(Color.ORANGE);
 
Last edited by a moderator:
Solution

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
1743 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top