Skip to content

How to find tight price ranges with ChatGPT or Claude

Reviewed

Ask it

Using Monk.trade, find stocks near their 52-week highs that are trading in their narrowest range in three months.

Opens with the question filled in; nothing is sent until you press send. In ChatGPT, you can also type @ and choose Monk.trade. Not connected? Help

Precise version: the same rule every time
Using Monk.trade, check the last completed daily session for common stocks averaging at least $20M traded a day. Find stocks whose 10-session high-to-low range, at least 3.5% wide, is the narrowest in 60 sessions, with a close within 5% of the 52-week high.

What you get back

A starting list for research. It does not recommend any trade.

Example · run · data to

Narrowest 10-session ranges near the 52-week high, Nov 5, 2026 close
SymbolClose10-day rangeFrom 52w high
NIQ$19.937.3%-3.7%

Only NIQ matched at the Nov 5 close, and 90 stocks had less than a year of history to check. This strict test often finds just a few stocks; the variations below loosen it and returned 15 and 3 matches.

US stocks, ETFs and futures. The free plan runs 20 queries a day on daily bars; Pro adds intraday.

Then ask

Paste these into the same chat, after the first answer, so your AI knows which results you mean.

  • Chart these over the past six months with the 10-day high and low marked.

  • Any news or 8-K filings on these in the past month?

  • Any insider buying or selling in these over the past three months?

  • How did revenue change in their latest quarterly filings?

What counts

A tight range forms when a stock's highs and lows stay close together for two weeks or more. This scan compares each stock's 10-session range with its own ranges over 60 sessions, so a normally jumpy stock and a normally calm one are judged fairly.

The rule Monk.trade uses: common stocks averaging at least $20M traded a day, checked on the last completed session. The 10-session range, from highest high to lowest low, must be at least 3.5% wide and the narrowest in 60 sessions, and the close must be within 5% of the 252-session high.

New to these terms?
Range
How far apart the highest and lowest prices were over a stretch of days, shown as a percentage of the low.
Volatility
How much a price usually swings. A narrow range means the stock has been unusually calm.
52-week high
The highest price a stock reached in the last year, about 252 trading days.
Moving average
The average closing price over the last so many days. When it is rising, the stock is in an uptrend.
Completed session
A trading day that has closed, so its prices and volume are final.

Variations

  • 10-session range of 3.5% to 6% above a rising 50-day average

    “Using Monk.trade, check the last completed session for common stocks averaging at least $20M traded a day with a 10-session high-to-low range between 3.5% and 6%. Require the close to be above a 50-day SMA that is higher than 10 sessions earlier.”
    MonkQL
    from stocks
    let rng = 100 * (highest(high, 10) / lowest(low, 10) - 1)
    include type == "common" and sma(close * volume, 20)[2] >= 20000000
    where rng[1] >= 3.5 and rng[1] <= 6 and close[1] > sma(close, 50)[1] and sma(close, 50)[1] > sma(close, 50)[11]
    show close[1] as prior_close, rng[1] as range_10d, sma(close, 50)[1] as sma_50
    sort rng[1] asc
    take 5
    
  • 20-session range under 8% in $50M+ liquid stocks

    “Using Monk.trade, check the last completed session for common stocks averaging at least $50M traded a day with a 20-session range between 3.5% and 8%. Require the close to be within 5% of the 52-week high.”
    MonkQL
    from stocks
    let rng = 100 * (highest(high, 20) / lowest(low, 20) - 1)
    include type == "common" and sma(close * volume, 20)[2] >= 50000000
    where rng[1] >= 3.5 and rng[1] <= 8 and close[1] >= 0.95 * highest(high, 252)[1]
    show close[1] as prior_close, rng[1] as range_20d, 100 * (close[1] / highest(high, 252)[1] - 1) as from_high
    sort rng[1] asc
    take 5
    

Check before you act

  • Nothing on this page is a signal to buy or sell. Prices can keep moving against you, and you can lose money.
  • The query reads the bar before the newest, which is the last completed session while the market is open. Before the open or after the close the newest bar is already complete, so the query reads the session before it. This example ran during the Nov 6 session and read Nov 5. Ask your AI to check the newest session instead.
  • A cash buyout or tender offer can hold a stock just below the deal price near its 52-week high. Deals still awaiting approval can leave ranges above 3.5%. Check recent Form 8-K Item 1.01 and Schedule TO-T filings.
  • A narrow range only says the stock has been calm. The price can break out in either direction.
  • Stocks with fewer than 252 trading sessions lack a full 52-week comparison and are reported as undecided.
  • Ranges can narrow before earnings or regulatory decisions, then jump past nearby prices when the news arrives.

The query

The MonkQL your AI writes
  1. from stocks

    Scan active US stocks on regular daily bars.

  2. let rng = 100 * (highest(high, 10) / lowest(low, 10) - 1)

    Measure the 10-session high-to-low span as a percentage of the 10-session low.

  3. include type == "common" and sma(close * volume, 20)[2] >= 20000000

    Keep common stocks averaging at least $20M traded a day over the 20 sessions before the completed bar.

  4. where rng[1] >= 3.5 and rng[1] <= lowest(rng, 60)[1] and close[1] >= 0.95 * highest(high, 252)[1]

    Use the last completed bar, [1]. Keep ranges at least 3.5% wide that are the narrowest in 60 sessions, with the close within 5% of the 252-session high.

  5. show close[1] as prior_close, rng[1] as range_10d, 100 * (close[1] / highest(high, 252)[1] - 1) as from_high

    Show the completed close, the 10-session range and the distance from the 52-week high.

  6. sort rng[1] asc

    Put the narrowest ranges first.

  7. take 5

    Return up to five stocks.

Ask your AI to show the query it ran. The example came from run 01a1b169-5cd3-7810-8731-5331d6bc9ad0.

Research only. Not investment advice. Read the risk notice