Skip to content

Monk.trade

How to compare earnings reactions with Claude or ChatGPT

Reviewed

What counts

An earnings reaction is a stock’s price move after a company reports its results. This scan anchors the move to the company’s SEC 8-K item 2.02, Results of Operations and Financial Condition, and separates the opening gap from the moves that followed.

The rule Monk.trade uses: the latest 8-K item 2.02 in the last 10 sessions. A filing counts on the first daily bar ending at or after Monk.trade has it. Before-open filings count on the coming session; after-close filings count on the next trading day. Measure from the close before that session to today’s close.

Ask it

Using Monk.trade, which stocks moved most after their latest earnings release in the last 10 sessions, up or down? Use the company’s SEC 8-K item 2.02, keep common stock averaging at least $20M traded a day, and show the gap, the move since the open and the total move.

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 every active US stock.

  2. let age = since(filings(form = "8-k", item = "2.02"), 10)

    Find the latest 8-K item 2.02 in the last 10 sessions, counting from when Monk.trade has the filing.

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

    Keep common stock averaging at least $20M traded a day over the prior 20 sessions.

  4. where age >= 0

    Keep stocks with a results filing in that period.

  5. show age as sessions, 100 * (open[age] / close[age + 1] - 1) as gap_pct unit percent, 100 * (close / open[age] - 1) as since_pct unit percent, 100 * (close / close[age + 1] - 1) as total_pct unit percent

    Show sessions since the filing’s daily bar, the opening gap, the move since that open and the total move from the prior close.

  6. sort abs(total_pct) desc

    Largest total move first, whether up or down.

  7. take 5

    The five largest.

Variations

  • Gapped up, then faded

    “Using Monk.trade, which stocks opened higher on the day their latest 8-K item 2.02 counted in the last 10 sessions, then fell from that open? Keep common stock averaging at least $20M traded a day, largest falls first.”
    from stocks
    let age = since(filings(form = "8-k", item = "2.02"), 10)
    include type == "common" and sma(close * volume, 20)[1] >= 2e7
    where age >= 0 and open[age] > close[age + 1] and close < open[age]
    show age as sessions, 100 * (open[age] / close[age + 1] - 1) as gap_pct unit percent, 100 * (close / open[age] - 1) as since_pct unit percent, 100 * (close / close[age + 1] - 1) as total_pct unit percent
    sort since_pct asc
    take 5
    
  • Gapped down, then recovered

    “Using Monk.trade, which stocks opened lower on the day their latest 8-K item 2.02 counted in the last 10 sessions, then rose from that open? Keep common stock averaging at least $20M traded a day, largest recoveries first.”
    from stocks
    let age = since(filings(form = "8-k", item = "2.02"), 10)
    include type == "common" and sma(close * volume, 20)[1] >= 2e7
    where age >= 0 and open[age] < close[age + 1] and close > open[age]
    show age as sessions, 100 * (open[age] / close[age + 1] - 1) as gap_pct unit percent, 100 * (close / open[age] - 1) as since_pct unit percent, 100 * (close / close[age + 1] - 1) as total_pct unit percent
    sort since_pct desc
    take 5
    

Example result

Example · run · data to

Largest total moves, 10 sessions to Oct 27, 2026
SymbolSessionsGapSince openTotal
FMC8-36.7%-8.0%-41.8%
VSTM9+7.4%+26.3%+35.6%
RRC9-0.3%+33.1%+32.7%
KALU3-12.4%-14.0%-24.6%
LKQ2-19.2%-5.9%-23.9%

334 stocks matched; 23 had too little price history to check. Each row’s evidence confirms an 8-K with item 2.02; the anchor is when the filing counts, which can be later than the results release. Run 01a17f1e-0951-7901-89ba-c47fa4f92ccc

Research on earnings reactions

  1. How did Comfort Systems stock react to its Q3 earnings?

    Q3 revenue of $3.77B and $13.91 a diluted share in its Oct 22, 2026 8-K; the stock fell 9.3% to $1,160.86 on Oct 23.

Limits

  • Some companies release results without an 8-K item 2.02, or file it after the release.
  • A filing during regular hours counts on that day’s bar, so its opening gap predates the filing.
  • Other news can also move prices over the measured period.
  • Past reactions do not predict future prices.

Research only. Not investment advice. Read the risk notice

Not connected? Help