OPERATOR System · Members
TOS SCRIPT LIBRARY
All 3 scanners · copy/paste into ThinkorSwim · installation guide included · NVTS guard on every script
Scanner B — Options Layer
OPTIONS SCORE — IV + LIQUIDITY
Run on stocks scoring 80+ on Scanner A. Scores IV Rank, IV trend direction, options liquidity proxy, and premium affordability. Shows an action label: "Buy calls — ideal" or "Stock only — IV too high". Only trade options when B ≥ 70.
▼ SHOW CODE
1
Same as Scanner A — create a new Custom Column named OptionsScore
2
In Stock Hacker: add both filters — MasterScore > 80 AND OptionsScore > 70
3
Save as OPERATOR-B-OptionsScore · Only trade options when BOTH scanners agree
ThinkScript — paste into TOS Custom Column editor
# ================================================================
# SCANNER B: OPTIONS SCORE — OPTIONS ENVIRONMENT FILTER
# OPERATOR Trading System | Run on stocks scoring 80+ on Scanner A
# Only trade options when this score >= 70
# ================================================================

def currentIV  = imp_volatility();
def ivHigh52   = Highest(imp_volatility(), 252);
def ivLow52    = Lowest(imp_volatility(), 252);
def ivRange    = ivHigh52 - ivLow52;
def ivRank     = if ivRange > 0 then (currentIV - ivLow52) / ivRange * 100 else 50;
def ivNow5     = Average(imp_volatility(), 5);
def ivPrior5   = Average(imp_volatility()[5], 5);
def ivRising   = ivNow5 > ivPrior5 * 1.02;
def ivFalling  = ivNow5 < ivPrior5 * 0.98;
def price      = close;
def avgVol     = Average(volume, 20);
def dteAdjust  = 0.286;
def estPremium = price * (currentIV / 100) * dteAdjust * 0.4 * 100;

def ivScore = if ivRank < 20 then 40 else if ivRank < 30 then 30 else if ivRank < 50 then 15 else if ivRank < 70 then 5 else 0;
def ivTrendScore = if ivRising and ivRank < 40 then 15 else if !ivFalling then 10 else 5;
def liqScore = if avgVol >= 5000000 then 25 else if avgVol >= 3000000 then 20 else if avgVol >= 1500000 then 15 else if avgVol >= 800000 then 8 else 0;
def premScore = if estPremium <= 80 then 20 else if estPremium <= 150 then 12 else if estPremium <= 250 then 6 else 0;
def optionsTotal = ivScore + ivTrendScore + liqScore + premScore;
def optHardFail  = ivRank > 70 or currentIV <= 0 or avgVol < 500000 or price < 3.00;

plot OptionsScore = if optHardFail then 0 else optionsTotal;
OptionsScore.AssignValueColor(if optHardFail then Color.RED else if optionsTotal >= 85 then Color.GREEN else if optionsTotal >= 70 then Color.YELLOW else if optionsTotal >= 50 then Color.ORANGE else Color.RED);
AddLabel(yes, "OPTIONS: "+optionsTotal+" IVR:"+Round(ivRank,0)+"% Est:$"+Round(estPremium,0), if optHardFail then Color.RED else if optionsTotal >= 85 then Color.GREEN else if optionsTotal >= 70 then Color.YELLOW else Color.ORANGE);
AddLabel(yes, if optHardFail then "ACTION: STOCK ONLY" else if optionsTotal >= 85 then "BUY CALLS — ideal" else if optionsTotal >= 70 then "BUY CALLS — good" else if optionsTotal >= 50 then "STOCK PREFERRED" else "STOCK ONLY", if optHardFail then Color.RED else if optionsTotal >= 85 then Color.GREEN else if optionsTotal >= 70 then Color.YELLOW else Color.ORANGE);
Scanner C — Monday Morning
PRE-MARKET GAP SCANNER
Run 8:00–9:15 AM Monday only. Scores gap quality 0–10. Rejects BW (+13.69%), GRPN (+11.37%), BMBL (+53% prior run) — all correctly score 0. Only trade gaps scoring 8+ that were also on Sunday's watchlist from Scanner A.
▼ SHOW CODE
1
TOS → Scan → Stock Hacker → Add filter → Custom → Study Filter → paste this code
2
Name it GapScore · Condition: plot GapScan is greater than 5
3
Add: Price $3-$12, Volume > 500,000 · Save as OPERATOR-C-PreMarketGap
4
Run Monday 8:00–9:15 AM only. Do not run Sunday or during market hours.
ThinkScript — paste into TOS Stock Hacker study filter
# ================================================================
# SCANNER C: PRE-MARKET GAP SCANNER
# OPERATOR Trading System | Run 8:00-9:15 AM Monday only
# Score 0-10. Trade only gaps scoring 8+.
# BW +13.7%, GRPN +11.4%, BMBL +53% prior run — all score 0.
# ================================================================

def gapPct    = (open - close[1]) / close[1] * 100;
def gapOK     = gapPct >= 3.0 and gapPct <= 12.0;
def priceOK   = close[1] >= 3.50 and close[1] <= 12.00;
def avgVol    = Average(volume, 20);
def liqOK     = avgVol >= 1000000;
def ma20      = Average(close, 20);
def fromBase  = close[1] > ma20;
def priorGain = (close[1] - close[6]) / close[6] * 100;
def notPrerun = priorGain < 20;
def high52    = Highest(high, 252);
def notAtLow  = close[1] >= high52 * 0.60;
def rsiVal    = RSI(length = 14).RSI;
def rsiPreGap = rsiVal[1] < 72;
def ema9      = ExpAverage(close, 9);
def ema21     = ExpAverage(close, 21);
def emaOK     = ema9[1] > ema21[1];
def currentIV = imp_volatility();
def ivOK      = currentIV < 1.5;

def gapScore  =
    (if gapPct >= 3.0 and gapPct <= 7.0 then 3
     else if gapPct > 7.0 and gapPct <= 12.0 then 2
     else 1) +
    (if fromBase  then 2 else 0) +
    (if notPrerun then 2 else 0) +
    (if rsiPreGap then 2 else 0) +
    (if emaOK     then 1 else 0);

def hardFail  = gapPct > 20 or priorGain > 25 or close[1] < 3.00 or avgVol < 500000 or currentIV > 2.0;

plot GapScan  = if hardFail then 0 else if gapOK and priceOK and liqOK and fromBase and notPrerun and notAtLow and rsiPreGap and emaOK then gapScore else 0;
GapScan.AssignValueColor(if GapScan >= 8 then Color.GREEN else if GapScan >= 6 then Color.YELLOW else if GapScan >= 4 then Color.ORANGE else Color.GRAY);
AddLabel(yes, "GAP: +"+Round(gapPct,1)+"% Score:"+gapScore+" PreRun:"+Round(priorGain,1)+"%", if GapScan >= 8 then Color.GREEN else if GapScan >= 6 then Color.YELLOW else Color.GRAY);
Sunday → Monday Workflow
The 4-step scan routine. Run Scanner A first every Sunday. Then B. Then C Monday morning. This sequence ensures you never buy an extended stock and always have the options environment checked before committing.
1
Sun 7:00 PM
Scanner A (Master Score) · Filter 65+ · Sort descending · Review green 80+ only
2
Sun 7:30 PM
Scanner B (Options Score) · Run on 80+ stocks · 70+ = calls OK · Under 50 = stock only
3
Sun 8:00 PM
Set TOS alerts · Price above 20-day high · Volume above 2× average
4
Mon 8-9:15 AM
Scanner C (Gap Score) · Run pre-market · 8+ AND on Sunday watchlist = trade it