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

Page: https://tosindicators.com/scans/scan-for-upcoming-earnings-with-high-short-interest  
Video: https://www.youtube.com/watch?v=FXym5fSbOtg  
Section: Scans  
Skill: Intermediate  
Access: free  
Updated: 2026-10-17

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](https://tosindicators.com/scans/high-short-interest-near-52-week-highs-thinkscript) tutorial covers a related scan. To add it:

- Click **Add filter** and create a custom study filter.

- Open the **thinkScript Editor** tab and delete the ADXCrossover code that's already there.

- 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

## thinkScript code

```
# 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&","
```

## Questions

### How do I scan for upcoming earnings with high short interest in ThinkorSwim?

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.

### How do I scan for stocks near their highs in ThinkorSwim?

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.

### Where does the short interest data come from in this scan?

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.

### How do I turn ThinkorSwim scan results into a comma-separated list?

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.

### What short interest level does the video focus on?

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.

### How do I make the scan return fewer stocks?

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.

### Why does the near-high code use 365 bars?

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.

### How do I pick a price target for a stock from this scan?

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.

## Related

- [Smarter Earnings Indicator for ThinkorSwim](https://tosindicators.com/indicators/smarter-earnings)
- [How to Scan for False Breakouts in ThinkOrSwim](https://tosindicators.com/scans/false-breakout-scanner)
- [Average True Range Scans for ThinkorSwim](https://tosindicators.com/scans/average-true-range)
- [How to Build a Monthly Watchlist Scan in ThinkorSwim](https://tosindicators.com/scans/monthly-watchlist)
- [How to Build a TTM Squeeze Scan in ThinkorSwim (5 Dots in a Row)](https://tosindicators.com/scans/ttm-squeeze-dots)
- [Stacked Moving Average Scans for ThinkorSwim](https://tosindicators.com/scans/stacked-ma)

