Skip to content

Monk.trade

How to find sector leaders with Claude or ChatGPT

Reviewed

What counts

A sector groups companies with similar businesses, such as energy or health care. Its leader here is the stock with the largest price gain over 20 trading sessions.

The rule Monk.trade uses: the highest 20-session return in each sector, among common stocks averaging at least $20M of trading value a day over the preceding 20 sessions.

Ask it

Using Monk.trade, find the strongest stock in each sector over the last 20 trading sessions. Keep common stocks averaging at least $20M traded a day over the preceding 20 sessions, and show each return.

Opens with the question filled in; nothing is sent until you press send. Not connected? Help

The query, line by line

Your app writes this MonkQL from the prompt. Each line does one thing.

  1. from stocks

    Scan active US stocks.

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

    Set the comparison group: common stocks with at least $20M in average daily trading value over the preceding 20 sessions.

  3. where rank(roc(close, 20) by sector) == 1

    Keep the highest 20-session return in each sector.

  4. show sector, close, roc(close, 20) as ret_20d

    Show the business group, closing price and percentage change.

  5. sort ret_20d desc

    Put the largest gain first.

Variations

  • Weakest in each sector

    “Using Monk.trade, find the weakest stock in each sector over 20 sessions. Keep the same common-stock and $20M average daily trading value rules.”
    from stocks
    include type == "common" and sma(close * volume, 20)[1] >= 20000000
    where rank(-roc(close, 20) by sector) == 1
    show sector, close, roc(close, 20) as ret_20d
    sort ret_20d asc
    
  • Leaders above their 50-day average

    “Using Monk.trade, keep the strongest stock in each sector only when its close is above its 50-day average. Use the same 20-session return and $20M trading value floor.”
    from stocks
    include type == "common" and sma(close * volume, 20)[1] >= 20000000
    where rank(roc(close, 20) by sector) == 1 and close > sma(close, 50)
    show sector, close, roc(close, 20) as ret_20d, sma(close, 50) as avg_50d
    sort ret_20d desc
    

Example result

Example · run · data to

Highest 20-session returns by group, Oct 27, 2026 close
SymbolGroupCloseReturn
VEEAInformation Technology$6.12+144.8%
TCRTHealth Care$2.05+113.4%
RRCEnergy$56.37+52.8%
OLBIndustrials$0.29+49.6%
FIGSConsumer Discretionary$20.48+45.7%
CCIReal Estate$87.89+31.0%
CLFMaterials$13.89+26.2%
SLDEFinancials$28.39+26.2%
LWConsumer Staples$53.76+24.2%
TRICommunication Services$116.42+21.0%
BKHUtilities$81.83+16.5%

The run returned one stock for each of 11 sectors. It left 25 stocks undecided and warned that 96 symbols had no sector; those names cannot be compared within a group. Run 01a17f13-4be5-7bb1-9794-a537c8744f56

Research on sectors

  1. How did oil and airline stocks move as crude passed $100?

    Jul 27 to Oct 23, 2026: WTI crude futures +26.1%; 14 of 15 stocks filed as airlines fell, while 13 of 15 integrated oil and refining stocks and 50 of 61 producers rose.

Limits

  • A leader is strongest only within the stocks that pass the size-of-trading rule.
  • Missing sectors or short price histories leave stocks out of the comparison.
  • Prices are adjusted for recorded share splits; company changes can still distort a return.
  • A past gain does not predict the next move.

Research only. Not investment advice. Read the risk notice

Not connected? Help