Every Friday afternoon, before the weekend, I run my watchlist system. It takes about 90 minutes. The output: 5 names that I'll consider trading in the coming week, ranked by conviction. These are the names where I do deep work — everything else is noise.
Here's the exact system, start to finish.
The Starting Universe: S&P 500 + Nasdaq 100
I limit myself to approximately 600 names — the combined S&P 500 and Nasdaq 100 (with overlapping names counted once). This is a deliberate constraint.
Why not look at small caps or international stocks? Liquidity. Options on small caps have wide bid-ask spreads, thin open interest, and poor fill quality. I need to be able to execute credit spreads efficiently. The S&P 500 / Nasdaq 100 universe gives me sufficient breadth while ensuring every name I select has options worth trading.
Filter 1: Relative Strength Above 1.2× SPX (3-Month Window)
My first cut is momentum. I compare each stock's 3-month total return against SPX over the same period. I want the ratio to be 1.2 or higher — the stock has outperformed the index by at least 20% over the past 3 months.
Why momentum? The research is clear: stocks that outperform tend to continue outperforming over the next 3-12 months. I'm not trying to buy beaten-down names and wait for a recovery. I'm aligning with the names the market is currently rewarding.
This filter alone eliminates roughly 70% of the universe. Of 600 names, approximately 180 survive at any given time, though the number fluctuates with market conditions.
How I run this in thinkorswim: I use the "Percentage Change" scan with a "Performance" comparison window set to 3 months. I filter for stocks whose 3-month performance exceeds SPX by the percentage equivalent of 1.2× outperformance. The exact scan logic uses a custom formula comparing each stock's rate of return to the SPX rate of return over 65 trading days.
Filter 2: Earnings Not Within 21 Days
I eliminate any name with earnings in the next 21 days. This is identical to my options entry rule. I don't want to build a watchlist around names I can't trade yet because of near-term earnings risk.
After this filter, I'm typically down to 110–140 names.
Filter 3: Average Daily Volume Above 2 Million Shares
Options liquidity is closely correlated with equity liquidity. Stocks with average daily volume (ADV) below 2 million shares tend to have:
- Wide bid-ask spreads in the options market
- Thin open interest at strikes I want to trade
- Poor price discovery in the options chain
The 2M ADV filter is a rough proxy for "tradable options." It's not perfect — some lower-volume stocks have good options markets — but as a quick filter it works. This typically eliminates another 20–30 names from the filtered universe.
Filter 4: Price Range $50–$500
My "sweet spot" for options-driven trading is $50–$500. Here's the reasoning:
Below $50: option strikes are often in $1 or $2.50 increments, which limits my ability to place strikes at precise risk levels. A $2 stock can only have a put spread with 2-3 strikes available below current price.
Above $500: the notional value per contract is very high. On a $700 stock, a 5-wide put spread controls $70,000 of stock exposure per unit — too much for my typical position sizing.
$50–$500 covers the vast majority of large-cap stocks and gives me the granularity I need in strike selection.
After filter 4, I'm typically at 80–110 names.
Filter 5: Fundamental Trigger (P/E Below Sector Median OR Recent Guidance Raise)
This is the fundamental cut. I require at least one of two conditions:
Condition A — Relative value: The stock's trailing P/E (or forward P/E for high-growth names) is below the sector median. This signals the market hasn't fully priced in the company's recent momentum. Relative value plus momentum is a powerful combination.
Condition B — Guidance raise: In the most recent earnings call, the company raised full-year or next-quarter guidance. This is a forward-looking signal. Management is more confident than the market expected. The stock is likely to see upward estimate revisions, which tend to drive sustained outperformance.
I get the sector median P/E data from thinkorswim's fundamental comparison tool. For guidance, I note it during earnings season and flag stocks whose management used positive forward language.
After filter 5, I'm at 40–70 names. Now comes the subjective part.
The Subjective Cut: Reading Earnings Call Transcripts
From the 40–70 qualified names, I cut to 5 through a more qualitative process. I read the most recent earnings call transcript for each remaining candidate. This takes 5–8 minutes per company if I'm focused.
I'm looking for three specific language patterns that signal management confidence and near-term earnings quality:
"Accelerating" — management describing revenue acceleration, customer acquisition acceleration, or margin improvement acceleration. This word is a green flag. It means the business is improving at an increasing rate, not just improving.
"Margin expansion" — management specifically calling out margin improvement, not just revenue. Revenue growth without margin expansion is a treadmill. Margin expansion is compounding.
"Buyback" — discussion of share repurchase programs, specifically ones that are active (not just authorized) and material (above 2% of market cap). Buybacks signal management confidence in the intrinsic value of the business.
Negative flags that eliminate a name regardless of the quantitative filters:
- Management guidance language that's "cautious," "uncertain," or "difficult environment"
- Mention of layoffs not framed as cost efficiency (framing matters)
- Discussion of covenant violations, refinancing risk, or material debt concerns
- Any mention of SEC investigations or accounting irregularities
An Example Week: MSFT, META, UNH, COST, LLY
Let me walk through the actual output from a representative Friday screening session in April 2025.
Starting universe: 590 names (S&P 500 + Nasdaq 100, deduplicated)
After Filter 1 (relative strength >1.2×): 173 names After Filter 2 (no earnings within 21 days): 138 names After Filter 3 (ADV >2M): 114 names After Filter 4 ($50–$500 price): 97 names After Filter 5 (P/E below sector OR guidance raise): 62 names
Then I read transcripts. An hour of focused reading reduced the 62 to my 5.
MSFT: Revenue acceleration called out in Azure commentary, margin expansion confirmed in gross profit line, $60B buyback program actively deploying. Strong all three signals.
META: "Accelerating advertiser adoption" mentioned 4 times, AI infrastructure ROI coming through in margin numbers. Guidance raised from 12% to 16% revenue growth. Strong.
UNH: Defensive name, P/E below managed care sector median by 12%. Management language around medical loss ratio was confident. Not a high-growth name, but the combination of relative strength and below-median valuation is my Condition A.
COST: Membership fee revenue guidance raised. Gross margin held despite inflation headwinds — positive sign for pricing power. ADV 4.2M shares. Clean story.
LLY: GLP-1 demand commentary was emphatic — no language hedging on supply constraints for the first time in 4 quarters. This was a change in tone I specifically tracked. Margin expansion from manufacturing scale-up visible in the numbers.
All 5 names had clear long theses. My next step was deciding which would be options plays versus equity positions — but that's a separate decision driven by IV rank and available capital.
The watchlist is the foundation. Without a disciplined process for finding the 5, everything downstream is guesswork.
— Ruslan Averin, averin.com
