STRASMORE/EXPLORE 2,595 QUERIES

hammer_by_ticker

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-25, from bullish-candlestick-patterns.

as of ranking 10×4read in context →
hammer_by_ticker — 10 rows by 4 columns, computed from US exchange, SIP and OPRA data.
tickerhammer_counthammer_next_up_pctany_day_up_pct
KO22458.952.5
AAPL20158.253.6
WMT1935753.5
MSFT23356.753.7
PG18856.452.7
HD21053.852.5
JNJ21653.251.8
NVDA21451.454.6
JPM21050.552.1
XOM21349.350.9
Rows × columns
10 × 4
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for hammer_by_ticker, derived from the stored result.
ColumnTypeRangeNotes
ticker text 10 distinct values (AAPL, HD, JNJ…)
hammer_count number 188 to 233 count
hammer_next_up_pct number 49.3 to 58.9 percent
any_day_up_pct number 50.9 to 54.6 percent

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

SELECT
    ticker,
    countIf(is_hammer)                        AS hammer_count,
    round(100 * avgIf(next_up, is_hammer), 1) AS hammer_next_up_pct,
    round(100 * avg(next_up), 1)              AS any_day_up_pct
FROM
(
    SELECT
        ticker,
        if(least(o, c) - l >= 2 * abs(c - o)
           AND h - greatest(o, c) <= 0.25 * (h - l), 1, 0) AS is_hammer,
        if(next_c > c, 1, 0)                              AS next_up
    FROM
    (
        SELECT
            ticker,
            toFloat64(open)               AS o,
            toFloat64(high)               AS h,
            toFloat64(low)                AS l,
            toFloat64(close)              AS c,
            leadInFrame(toFloat64(close)) OVER fwd AS next_c
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN ('AAPL','MSFT','NVDA','JPM','JNJ','KO','PG','WMT','XOM','HD')
          AND date >= '2016-01-01'
          AND date <= '2025-12-31'
        WINDOW
            fwd AS (PARTITION BY ticker ORDER BY date
                    ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
    )
    WHERE h > l AND next_c > 0
)
GROUP BY ticker
HAVING countIf(is_hammer) >= 20
ORDER BY hammer_next_up_pct DESC
⌘/Ctrl + Enter

Use dis data for your AI assistant

E go open ready to query, with dis page data. Free, no account.