Skip to main contentSkip to content
Squeeze Setups A live squeeze scanner built around the Slingshot Squeeze, with 22 years of backtest results behind it. See it, $99/month →
TOS Indicators
  • Tools

    Categories

    • Indicators
    • Backtesters
    • Scans
    • Dashboards
    • thinkScript
    • Member Resources
    Browse Full Library

    Featured Tutorials

    Fair Value Gap Indicator
    Fair Value Gap Indicator
    Indicators

    Download our free Fair Value Gap indicator for ThinkorSwim. It shades every...

    Learn more →
    False Breakout Scanner for ThinkorSwim (Free Scan Pair)
    False Breakout Scanner for ThinkorSwim (Free Scan Pair)
    Scans

    A two-scan pair that flags failed breakouts and failed breakdowns with volume...

    Learn more →
    Heiken Ashi Trend Indicator
    Heiken Ashi Trend Indicator
    Indicators

    Download our Custom Heiken Ashi indicator for ThinkOrSwim. Full ThinkScript code, formula...

    Learn more →

    Popular Posts

    Unusual Volume Pro Scans
    Unusual Volume Pro Scans
    Scans

    4 additional scans to find unusual volume overlapping with key...

    Learn more →
    High Short Interest Near 52 Week Highs (thinkScript)
    High Short Interest Near 52 Week Highs (thinkScript)
    Scans

    Build a simple scan in which to find stocks that...

    Learn more →
    Upcoming Earnings with High Short Interest
    Upcoming Earnings with High Short Interest
    Scans

    Build a scan to find stocks that are likely to...

    Learn more →
  • Courses
    Squeeze Course
    Squeeze Course
    19 Modules

    Scan, backtest, and trade the TTM Squeeze setup with precision.

    View Course →
    Earnings Course
    Earnings Course
    3 Modules

    Master earnings plays with free indicators and proven strategies for ThinkOrSwim.

    View Course →
    V-Shaped Reversals
    V-Shaped Reversals
    7 Modules

    Identify and trade powerful V-shaped reversal patterns with confidence and precision.

    View Course →
    Fibonacci Trading
    Fibonacci Trading
    4 Modules

    Learn to trade Fibonacci retracements and extensions in ThinkOrSwim effectively.

    View Course →
  • Products
    Futures Volatility Box Premium
    Futures Volatility Box

    Volatility models for 10 major futures markets, including the micros.

    Explore Futures VB →
    Stock Volatility Box Premium
    Stock Volatility Box

    Volatility levels for 600+ stocks and ETFs, with a live scanner.

    Explore Stock VB →
    Opening Range Breakouts Premium
    Opening Range Breakouts

    Scans 600+ stocks every 2 seconds for opening range breaks, with a backtester.

    Explore ORB Setups →
My Account
All Scans
Intermediate 15 minutes ThinkOrSwim

How to Scan for Upcoming Earnings with High Short Interest in ThinkorSwim

Scan for upcoming earnings with high short interest: stocks within 15% of their 365-bar high, reporting in 10 bars, then filtered by short interest.

How to install in ThinkOrSwim →
Table of Contents
  • Key Takeaways
  • What the Scan Looks For
  • Step 1: Start with Liquidity Filters
  • Step 2: The Near-High Filter in thinkScript
  • Step 3: Add the Built-In Earnings Filter
  • Step 4: Add Short Interest with Excel
  • Narrowing the List from 200 to 160
  • Reading the Results: iRobot, BGS and Carvana
  • Three Ways to Trade a Move to the Target in PENN
  • How I Use This Scan

In this tutorial I build a scan for upcoming earnings with high short interest: stocks that report in the next 10 bars, trade within 15% of their 365-bar high, and carry double-digit short interest. A member asked for it, and it takes 3 lines of thinkScript, the Earnings filter that comes with ThinkorSwim, and one pass through Excel to add the short interest.

After the scan, I go through the top results the way I would before earnings: a Fibonacci target on the chart, open interest near that strike, the stock’s earnings history in our Smarter Earnings indicator, and 3 ways to structure an options trade in PENN. It’s for swing and options traders who want a short research list before a report.

Key Takeaways

  • The upcoming earnings with high short interest scan stacks 4 filters in ThinkorSwim: volume of at least 500,000 shares, a minimum bid of $20, a custom filter for stocks within 15% of their 365-bar high, and the built-in Earnings filter set to anytime in the next 10 bars.
  • The near-high filter is 3 lines of thinkScript. It divides the distance from the 365-bar high by the close and compares the result with a 15% threshold.
  • In the video the scan returned 200 stocks at 15%, and tightening the threshold to 10% cut the list to 160.
  • Short interest is added after the scan: paste the results into Excel, build a comma-separated list with =A1&",", and paste it into our Short Interest Scanner, a Stock Volatility Box tool. I focus on the double-digit readings.
  • For the top names I drew a 1.272 Fibonacci target and checked open interest near it. In PENN the target was 80.53, and the 80 strike on the October 30 series stood out with much higher open interest than most of the chain.

What the Scan Looks For

The upcoming earnings with high short interest scan finds stocks with 3 things in common: an earnings report in about the next 2 weeks, a price near the high of the last 365 bars, and a large short interest reading. A member requested this combination.

The idea in the video: if a heavily shorted stock near its highs keeps moving up into or after earnings, short sellers’ stops can get run, which can carry price toward the next target. I use short interest as one way to anticipate that, alongside the chart, the options chain and the stock’s earnings history.

Filter Setting in the video Where it lives
Volume At least 500,000 shares Stock filter
Bid At least $20 Stock filter
Near the 365-bar high Within 15%, or 10% to narrow the list Custom study filter (thinkScript)
Upcoming earnings Has earnings, anytime, within the next 10 bars Study, then Corporate Actions, then Earnings
Short interest Double digits Our Short Interest Scanner (Stock Volatility Box), after the scan runs

Step 1: Start with Liquidity Filters

The liquidity filters keep thin and low-priced stocks out of the results. In the Scan tab I start with 2 stock filters: volume of at least 500,000 shares and a minimum bid of $20. Lower the bid filter if you want to find cheaper stocks.

I find these two a good starting point for stocks that are liquid and that you’d want to be caught trading. A stock has to pass every filter in the scan to show up, so these 2 set the floor for the whole list.

Step 2: The Near-High Filter in thinkScript

The near-high filter is a custom study filter that keeps stocks within a set percentage of their highest high of the last 365 bars. I’ve coded something similar in a previous video, and our high short interest near 52-week highs tutorial covers a related scan. To add it:

  1. Click Add filter and create a custom study filter.
  2. Open the thinkScript Editor tab and delete the ADXCrossover code that’s already there.
  3. Type the 3 lines below and click OK.

This post has no download, so the code here and in the Code tab is written out from the video.

def percentageThreshold = 0.15;
def allTimeHigh = Highest(high, 365);

plot signal = (allTimeHigh - close) / close <= percentageThreshold;

How the Code Works

percentageThreshold sets how close to the high a stock has to be. In the video I set it to 15%, and in the code that is 0.15, because the plot line compares a ratio.

Typing 15 instead would pass any stock whose high is up to 16 times its close, which is almost every stock.

allTimeHigh uses Highest(high, 365), the highest high of the last 365 bars. On daily bars that goes beyond one full trading year. It covers more bars than the past year needs, and that makes certain the scan catches the highest high of the past 365 days.

The plot line takes the distance from that high down to the current close and divides it by the close, which gives a percentage. When that percentage is at or below the threshold, the condition plots true and the stock shows up in the results. When the stock is too far below the high, it drops out.

Because the code divides by the close, the cutoff sits a little closer than 15% below the high. With a $100 high, the close has to be $86.96 or higher, which is 100 divided by 1.15.

The variable is called allTimeHigh, and it measures the 365-bar high. A stock with a longer history can have a true all-time high further back. For a scan built around 52-week highs instead, see our tutorial on which stocks made a new 52-week high this week.

Step 3: Add the Built-In Earnings Filter

The ThinkorSwim Earnings filter adds the upcoming earnings condition without more code. Click Add filter, choose Study, open Corporate Actions, and select Earnings. I set it to has an earnings announcement anytime, before or after the market, within the next 10 bars.

On daily bars, 10 bars covers about the next 2 weeks. I considered 15 bars and stayed with 10 as a good list to start with. Our upcoming earnings scan tutorial explains the settings in this filter and shows how to target one exact earnings date with the HasEarnings() function.

Step 4: Add Short Interest with Excel

Short interest comes in after the scan, through a comma-separated list of tickers. In the video the scan returned 200 stocks, and I moved them into our Short Interest Scanner, which comes with the Stock Volatility Box membership. Any tool that takes a list of tickers and returns short interest fits the same step:

  1. Copy the scan results and paste them into an Excel sheet, with the tickers in column A.
  2. In the next column, enter =A1&",". The ampersand joins the ticker in A1 with a comma.
  3. Apply the formula to all 200 rows.
  4. Copy the first 100 tickers (in the video, down to STM) and paste the list into the short interest scanner.
  5. Filter by short interest and start with the double-digit names.

I only pasted the first 100 tickers in the video. The second 100 from the list of 200 are still there to work through on your own time.

Narrowing the List from 200 to 160

The threshold in the near-high filter is the quickest way to shrink the scan. Changing it from 15% to 10% cut the results from 200 to 160 in the video. I repeated the same Excel formula on the new list, pasted it into the short interest scanner, and filtered by short interest again.

Reading the Results: iRobot, BGS and Carvana

Each stock the scan finds still needs a chart, a target and a look at the options chain. These are the names I checked in the video, with the prices and dates as they were when I recorded it.

iRobot (IRBT)

iRobot met all the criteria, with earnings after market hours the upcoming Tuesday. There was no Squeeze forming, so the case rested on price action and high short interest. The 1.272 Fibonacci extension pointed to a target of 95.17. The options chain wasn’t very liquid: the 95 strike had about 74 contracts of open interest, a little higher than the rest, and nothing that stood out.

Our Smarter Earnings indicator added the earnings history. On a daily chart of about 2 years with 8 earnings cycles, iRobot had 1 gap fill, which came on a beat, and 7 gap and go moves, where price kept going in the direction it gapped.

That gave me a plan for each outcome. A gap up on a beat makes the 95 zone interesting. A gap down on a beat points to a gap fill. A gap down on a miss had no history behind it in the data and takes the 95 zone off the table.

BGS

BGS had a Squeeze forming. With a Fibonacci drawn from the swing high to the swing low, price sat right around the 50% level, and the 1.272 extension looked a little far away.

Carvana (CVNA)

I picked Carvana from the 10% list. In the video it traded at 221.34, with earnings on October 29 after market hours, inside the 2-week window. The 1.272 extension from the most recent swing high, measured from before the gap, came out at 255.72.

My read: if the gap stays unfilled and price keeps moving up, stops keep getting run. A move through 242.15 put 255.72 next. On the October 30 series, open interest at the 255 strike didn’t stand out, and a $5-wide 255/260 vertical cost about 95 cents. The chain wasn’t as liquid as I’d hoped, so Carvana stayed on the watchlist.

Three Ways to Trade a Move to the Target in PENN

Penn National Gaming (PENN) had a more interesting options chain than iRobot or Carvana. The 1.272 extension pointed to 80.53, earnings were on October 29, and a Squeeze on the chart looked like it was losing momentum and maybe turning positive. On the October 30 series, the 80 strike had much higher open interest than most of the chain.

Trade (October 30 series) Cost in the video What the Analyze tab showed
First look: 75/80 vertical 1.38 Not modeled in the video
Way 1: 75/80/85 butterfly, $5 wide 0.47, with 0.50 to 0.60 more realistic as a fill Profit range from about 75.46 to 84.49. Max profit $112.35 on October 29, or $98.95 with implied volatility up 10 points
Way 2: 75/80/83 broken-wing butterfly About 0.82 No upside risk: if price overshoots the 80 zone, the trade still showed about $118 of profit
Way 3: 80/81 vertical 0.24 Risk 24 cents to make 76. About $60 of profit before expiration with implied volatility up 10 points, and the full profit only at the October 30 expiration

Implied volatility on the chain was right around 102%. I modeled a rise of 10 percentage points, an arbitrary number, for traders who expect volatility to climb into earnings. That lowered the butterfly’s profit at 80 to $98.95, still a nice return on a $47 investment if price pins near 80.

The broken-wing version costs more, and it suits a trader who is especially bullish on PENN. In the video I called the 80/81 vertical the easiest, cleanest way to play a move into earnings outside of a long call, and the easiest of the 3 to manage.

Smarter Earnings gave no strong lean for PENN. Across 8 earnings periods, it showed a greater-than-expected move 0% of the time, 3 gap fills (1 gap up that didn’t come on a miss and 2 gap downs that didn’t come on a beat), and 0 gap and go moves.

The PENN trade rested on the target, the open interest and the bullish momentum in casino and betting stocks such as PENN and DraftKings at the time.

How I Use This Scan

The upcoming earnings with high short interest scan builds a research list. It finds stocks where a move up could pressure short sellers, and it can’t tell you that the move will happen. Each name still needs a chart target, a look at the options chain, and a plan for each earnings outcome.

With a debit spread or a butterfly, the debit is the most you can lose, so size the trade so that losing all of it costs a small, fixed share of your account. With stock, decide where your stop goes before the report. For more on Fibonacci levels, see our Fibonacci Trading Course.

For another short interest example, see our 30-minute, daily and weekly Squeezes with high short interest. More earnings tools are on our earnings page, and more free scans are on the scans page.

How to Scan for Upcoming Earnings with High Short Interest in ThinkorSwim.ts
# Upcoming Earnings with High Short Interest Scan for ThinkOrSwim
# TOS Indicators
# Full tutorial: tosindicators.com/scans/scan-for-upcoming-earnings-with-high-short-interest
# Written out from the video (this post has no download file).
#
# Custom study filter: stocks within 15% of their highest high of the last 365 bars.
# The video says 15%. The plot compares a ratio, so enter it as 0.15.
# Change it to 0.10 to keep only stocks within 10% of that high.

def percentageThreshold = 0.15;
def allTimeHigh = Highest(high, 365);

plot signal = (allTimeHigh - close) / close <= percentageThreshold;

# The other filters from the video go in the Scan tab, not in this code:
#   Stock filter: Volume, minimum 500,000
#   Stock filter: Bid, minimum 20
#   Study filter: Corporate Actions > Earnings
#                 has an earnings announcement, anytime, within the next 10 bars
#
# Excel formula for a comma-separated ticker list (tickers in column A):
#   =A1&","

Want the .ts file and the one-click import? Both come with a free account.

Create Free Account Login
Start with a volume filter of 500,000 shares and a $20 minimum bid. Add a custom study filter for stocks within 15% of their 365-bar high, then add the Earnings filter from Study, Corporate Actions, set to anytime in the next 10 bars. Paste the results into a short interest scanner and start with double-digit readings.
Use a custom study filter with three lines: def percentageThreshold = 0.15, def allTimeHigh = Highest(high, 365), and a plot that divides allTimeHigh minus close by the close. The plot is true when that result is at or below the threshold, which keeps stocks within 15% of the highest high of the last 365 bars.
The short interest comes from a separate step after the ThinkorSwim scan. In the video, I paste the tickers into our Short Interest Scanner, a Stock Volatility Box member tool, which returns the short interest for each one, and then I filter the list by short interest. The scan itself handles price, volume, the 365-bar high and the earnings date.
Paste the scan results into Excel so the tickers sit in column A. In the next column enter =A1&"," to join each ticker with a comma, and apply the formula down the whole list. Copy the new column and paste it into any tool that takes a list of tickers. In the video I pasted the first 100 tickers.
I focus on stocks with double-digit short interest readings in the short interest scanner. Those are the names I open on a chart first. From there, each stock still needs a price target, a check of open interest near that target, and a look at its earnings history before it becomes a trade idea.
Tighten the threshold in the near-high filter. In the video, changing 0.15 (15%) to 0.10 (10%) cut the results from 200 stocks to 160. You can also raise the bid or volume filters, or shorten the Earnings filter from 10 bars, so fewer stocks pass before the short interest step.
The code looks for the highest high of the last 365 bars. On daily bars that goes beyond one full trading year, more than you strictly need, and it makes certain the scan catches the highest high of the past year. The variable is named allTimeHigh, and it measures the 365-bar high.
In the video I draw a Fibonacci from the swing high to the swing low and use the 1.272 extension: 95.17 for iRobot, 255.72 for Carvana and 80.53 for PENN. Then I check the options series that covers the earnings date for open interest near that strike.

Here are some resources that you may find useful:

  • Upcoming Earnings Scan for ThinkOrSwim
  • Smarter Earnings indicator for ThinkOrSwim
  • High short interest near 52-week highs (thinkScript)
  • Earnings tools from TOS Indicators
  • More free ThinkOrSwim scans
Featured Tools:
Stock Volatility Box

Stock Volatility Box

Spot reversal zones across 600 stocks & ETFs.

  • Hourly & daily models
  • Powerful Live Scanner
  • Built for day traders
Futures Volatility Box

Futures Volatility Box

Pinpoint reversal zones in 10 major futures markets.

  • 5 models (incl. Scalper)
  • ThinkOrSwim & TradingView
  • SPX traders
ORB Setups

ORB Setups

Find the best Opening Range Breakout setups.

  • Powerful real-time scanner
  • Instant backtests
  • 2+ years data

Get Free Access

Create a free account for downloads and new tutorial alerts.

Create Free Account

Related tutorials and research

Smarter Earnings Indicator for ThinkorSwim

Smarter Earnings Indicator for ThinkorSwim

Indicators · Intermediate
How to Scan for False Breakouts in ThinkOrSwim

How to Scan for False Breakouts in ThinkOrSwim

Scans · Beginner-Friendly
Average True Range Scans for ThinkorSwim

Average True Range Scans for ThinkorSwim

Scans · Beginner
How to Build a Monthly Watchlist Scan in ThinkorSwim

How to Build a Monthly Watchlist Scan in ThinkorSwim

Scans · Beginner
How to Build a TTM Squeeze Scan in ThinkorSwim (5 Dots in a Row)

How to Build a TTM Squeeze Scan in ThinkorSwim (5 Dots in a Row)

Scans · Beginner
Stacked Moving Average Scans for ThinkorSwim

Stacked Moving Average Scans for ThinkorSwim

Scans · Beginner

Ready to Trade With an Edge?

Join 40,000+ traders using institutional-grade tools for ThinkOrSwim.

Get the Bundle
TOS Indicators

Premium thinkorswim indicators, scans, and trading tools to help you trade smarter.

ThinkOrSwim Tools

  • Indicators
  • Scans
  • Backtesters
  • Dashboards
  • thinkScript
  • Browse All

Courses

  • Squeeze Course
  • Earnings Course
  • V-Shaped Reversals
  • Fibonacci Trading

Products

  • Futures Volatility Box
  • Stock Volatility Box
  • ORB Setups
  • Shop All

Guides

  • TTM Squeeze
  • Automated Trading
  • Volatility Trading
  • Opening Range Breakouts
  • Trade Reports
  • Contact Us

© 2026 TOS Indicators. All rights reserved.

Privacy Policy Terms of Service Disclaimer Accessibility

The information contained on this website is solely for educational purposes, and does not constitute investment advice. The risk of trading in securities markets can be substantial. You must review and agree to our Terms of Service prior to using this site.

U.S. Government Required Disclaimer - Commodity Futures Trading Commission. Futures and options trading has large potential rewards, but also large potential risk. You must be aware of the risks and be willing to accept them in order to invest in the futures and options markets. Don't trade with money you can't afford to lose. This website is neither a solicitation nor an offer to Buy/Sell futures or options. No representation is being made that any account will or is likely to achieve profits or losses similar to those discussed on this website. The past performance of any trading system or methodology is not necessarily indicative of future results.

Individual results may vary, and testimonials are not claimed to represent typical results. All testimonials are by real people, and may not reflect the typical purchaser's experience, and are not intended to represent or guarantee that anyone will achieve the same or similar results.

TOS Indicator's Traders and employees will NEVER manage or offer to manage a customer or individual's options, stocks, currencies, futures, or any financial markets or securities account. If someone claiming to represent or be associated with TOS Indicator solicits you for money or offers to manage your trading account, do not provide any personal information and contact us immediately.

CFTC RULE 4.41 - HYPOTHETICAL OR SIMULATED PERFORMANCE RESULTS HAVE CERTAIN LIMITATIONS. UNLIKE AN ACTUAL PERFORMANCE RECORD, SIMULATED RESULTS DO NOT REPRESENT ACTUAL TRADING. ALSO, SINCE THE TRADES HAVE NOT BEEN EXECUTED, THE RESULTS MAY HAVE UNDER-OR-OVER COMPENSATED FOR THE IMPACT, IF ANY, OF CERTAIN MARKET FACTORS, SUCH AS LACK OF LIQUIDITY, SIMULATED TRADING PROGRAMS IN GENERAL ARE ALSO SUBJECT TO THE FACT THAT THEY ARE DESIGNED WITH THE BENEFIT OF HINDSIGHT. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFIT OR LOSSES SIMILAR TO THOSE SHOWN.