View as markdown
Concepts › Signals Signal catalog

Price action catalog

How price is moving: behaviors recognized directly from the price record — changes, gaps, momentum episodes, range structures — with no indicator in between.

Performance & change

Price change over standard horizons — today through 1 year — plus streaks and day-mover flags.

ColumnTypeDescription
change_1mnumericPercent change vs. close ~21 trading days ago. Daily; see `change_1w` for note.
universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d
change_1wnumericPercent change in close vs. the close 5 trading days ago. Computed post-close; does NOT update intraday — use `from_open_pc` + `day_change_pct` for intraday-aware change.
universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d
change_1ynumericPercent change vs. close ~252 trading days ago.
universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d
change_3mnumericPercent change vs. close ~63 trading days ago.
universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d
change_6mnumericPercent change vs. close ~126 trading days ago.
universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d
change_ytdnumericPercent change since the first trading day of the calendar year.
universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d
day_changenumericAbsolute change vs `previous_close`.
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d
day_change_pctnumericPercent change vs `previous_close`. Expressed as a decimal fraction (0.05 = 5%), not a whole percent.
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d
days_downintegerConsecutive trading days closing lower than the prior close. Resets to 0 on an up day.
universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d
days_upintegerConsecutive trading days closing higher than the prior close. Resets to 0 on a down day.
universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d
from_open_pcnumericIntraday: percent change from today’s session open to the latest snapshot price. Resets at session boundary.
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d
price_down_3pcteventIntraday move of -3% or worse vs prior close.
day_change_pct <= -3
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
price_up_3pcteventIntraday move of 3%+ vs prior close.
day_change_pct >= 3
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
top_gainerstateAmong the session's top 20 gainers.
Ranks in the top 20 by day_change_pct among active tickers with price above $1 and session volume above 100k shares.
universe all tickers · cadence 1 min · mkt hrs · firing continuous
top_loserstateAmong the session's top 20 losers.
Ranks in the bottom 20 by day_change_pct among active tickers with price above $1 and session volume above 100k shares.
universe all tickers · cadence 1 min · mkt hrs · firing continuous

Gaps

Opening gaps: size, direction, extremes, and intraday fill.

ColumnTypeDescription
gapnumericOvernight gap as percent: `(today_open − prev_close) / prev_close`. Signed — positive = gap up, negative = gap down. Use this for custom gap thresholds; the boolean shortcuts `gap_up` (≥3%) and `gap_up_extreme` (≥10%) cover the canonical levels.
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d
gap_pctnumericPercent change of `session_open` vs `previous_close`. One value per session.
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d
gap_downeventToday opened 3%+ below prior close.
(close_prev - open) / close_prev >= 0.03 AND price still below close_prev (gap has not been reclaimed)
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
gap_down_extremeeventToday opened 10%+ below prior close.
(close_prev - open) / close_prev >= 0.10
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
gap_filled_todayeventToday’s opening gap was closed by an intraday move.
Opened with gap >= 0.5% AND intraday range straddled close_prev.
universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
gap_upeventToday opened 3%+ above prior close.
(open - close_prev) / close_prev >= 0.03 AND price still above close_prev (gap has not been filled negative)
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
gap_up_extremeeventToday opened 10%+ above prior close.
(open - close_prev) / close_prev >= 0.10
universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky

Intraday momentum

Directional strength read straight off the session's bars: drives, drifts, spikes, rallies, exhaustion.

ColumnTypeDescription
afternoon_drift_upstateAfternoon session net up.
close_1600 > close_1200
universe all tickers · cadence 1 min · mkt hrs · firing sticky
last_hour_rallyeventFinal hour of session net up.
close_1600 > close_1500 * 1.005
universe all tickers · cadence 1 min · mkt hrs · firing sticky
last_hour_selloffeventFinal hour of session net down.
close_1600 < close_1500 * 0.995
universe all tickers · cadence 1 min · mkt hrs · firing sticky
microspike_downeventSingle 1-minute candle return ≤ −1%.
(close - open) / open <= -0.01
universe all tickers · cadence 1 min · mkt hrs · firing continuous
microspike_upeventSingle 1-minute candle return ≥ +1%.
(close - open) / open >= 0.01
universe all tickers · cadence 1 min · mkt hrs · firing continuous
momentumstatemomentum present
universe all tickers · cadence 1 min · mkt hrs · firing continuous
momentum_downstateSustained downward momentum on the daily bars.
Three or more consecutive down days whose average daily move exceeds about 1%.
universe all tickers · cadence 1 min · mkt hrs · firing continuous
momentum_exhaustion_downeventDownward momentum showing signs of exhaustion.
rsi_14 < 30 AND days_down >= 5
universe all tickers · history never fired yet · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
momentum_exhaustion_upeventUpward momentum showing signs of exhaustion.
rsi_14 > 70 AND days_up >= 5
universe all tickers · history never fired yet · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
momentum_strong_downeventStrong downward momentum across multiple measures.
days_down >= 3 AND volume_trend_5d = 'increasing'
universe all tickers · history partial · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
momentum_strong_upeventStrong upward momentum across multiple measures.
days_up >= 3 AND volume_trend_5d = 'increasing'
universe all tickers · history partial · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
momentum_upstateSustained upward momentum on the daily bars.
Three or more consecutive up days whose average daily move exceeds about 1%.
universe all tickers · cadence 1 min · mkt hrs · firing continuous
morning_strengthstateFirst two hours of session net positive.
close_1130 > open_0930
universe all tickers · cadence 1 min · mkt hrs · firing sticky
opening_drive_downeventFirst 5 minutes of session down < −0.5%.
close_0935 < open_0930 * 0.995
universe all tickers · cadence 1 min · mkt hrs · firing sticky
opening_drive_upeventFirst 5 minutes of session up > +0.5%.
close_0935 > open_0930 * 1.005
universe all tickers · cadence 1 min · mkt hrs · firing sticky
pre_close_drift_downeventLast 10 minutes before close net down.
close_1600 < close_1550
universe all tickers · cadence 1 min · mkt hrs · firing sticky
pre_close_drift_upeventLast 10 minutes before close net up.
close_1600 > close_1550
universe all tickers · cadence 1 min · mkt hrs · firing sticky
pre_earnings_driftstateStock has moved ≥5% (absolute) over the trailing week with earnings within 7 days — a setup the literature shows often continues through the report.
days_to_earnings BETWEEN 1 AND 7 AND ABS(change_1w) >= 0.05
universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous
rapid_move_down_5mstatePrice down more than −0.5% in the last 5 minutes.
(close - close_5m_ago) / close_5m_ago <= -0.005
universe all tickers · cadence 1 min · mkt hrs · firing continuous
rapid_move_up_5mstatePrice up more than +0.5% in the last 5 minutes.
(close - close_5m_ago) / close_5m_ago >= 0.005
universe all tickers · cadence 1 min · mkt hrs · firing continuous
three_down_hoursstateThree consecutive lower hourly closes.
close < close_1h_ago < close_2h_ago < close_3h_ago
universe all tickers · cadence 1 min · mkt hrs · firing continuous
three_up_hoursstateThree consecutive higher hourly closes.
close > close_1h_ago > close_2h_ago > close_3h_ago
universe all tickers · cadence 1 min · mkt hrs · firing continuous

Ranges & reversals

Range structures and their resolution: opening range, breaks, consolidation, pullbacks, reversals, unusual range width.

ColumnTypeDescription
above_opening_rangestatePrice is trading above the first 15-minute opening-range high.
close > or_high (OR = first 15 min after 09:30 ET)
universe all tickers · cadence 1 min · mkt hrs · firing continuous
below_opening_rangestatePrice is trading below the first 15-minute opening-range low.
close < or_low (OR = first 15 min after 09:30 ET)
universe all tickers · cadence 1 min · mkt hrs · firing continuous
consolidating_15mstateLast 15 minutes traded in a tight range.
high_15m - low_15m < 0.5 * ((max(close, 30m) - min(close, 30m)) / 15) (ATR-30m proxy, not true ATR)
universe all tickers · cadence 1 min · mkt hrs · firing continuous
consolidationstatePrice is range-bound — the last 5 sessions span less than 5%.
(max(high) − min(low)) / midpoint < 0.05 over 5 bars
universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing continuous
expanded_hourly_rangestateThis hour’s range is unusually wide.
(high - low) > 1.5 * atr_hourly_20
universe all tickers · cadence 1 min · mkt hrs · firing continuous
hourly_reversal_bearisheventHigher high, lower close than the prior hour.
high > high_1h_ago AND close < close_1h_ago
universe all tickers · cadence 1 min · mkt hrs · firing continuous
hourly_reversal_bullisheventLower low, higher close than the prior hour.
low < low_1h_ago AND close > close_1h_ago
universe all tickers · cadence 1 min · mkt hrs · firing continuous
in_opening_rangestatePrice is inside the first-hour high/low range.
or_low <= price <= or_high (OR = first 15 min after 09:30 ET)
universe all tickers · cadence 1 min · mkt hrs · firing continuous
narrow_hourly_rangestateThis hour’s range is unusually narrow.
(high - low) < 0.5 * atr_hourly_20
universe all tickers · cadence 1 min · mkt hrs · firing continuous
pullbackstatePullback to the 20-day moving average within an uptrend.
in_uptrend (sma_50 > sma_200 AND price > sma_200) AND price below the 20-day or 50-day SMA by < 2% AND price down >= 2% from the 5-day high. Live evaluation at minute resolution.
universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing continuous
range_break_15m_downeventBroke below the prior 15-minute low.
close < min(low, prior 15 min)
universe all tickers · cadence 1 min · mkt hrs · firing continuous
range_break_15m_upeventBroke above the prior 15-minute high.
close > max(high, prior 15 min)
universe all tickers · cadence 1 min · mkt hrs · firing continuous
range_expansioneventToday's true range > 2 × ATR(14) with volume — direction-agnostic regime-change tag.
true_range > 2 * atr_14 AND volume > 1.5 * avg_volume_10d AND volume > 100,000
universe all tickers · history never fired yet · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky
repeated_test_of_highstateTested today’s session high three or more times — failed-breakout setup.
Close within 0.1% of the session high (close >= session_high * 0.999) on at least 3 minutes this session.
universe all tickers · cadence 1 min · mkt hrs · firing continuous
repeated_test_of_lowstateTested today’s session low three or more times — failed-breakdown setup.
Close within 0.1% of the session low (close <= session_low * 1.001) on at least 3 minutes this session.
universe all tickers · cadence 1 min · mkt hrs · firing continuous
sticky_breakoutstateLatches on when price makes a 52-week high and stays on until the nightly reset — a persistent breakout tag.
set on a 52-week-high breakout; reset each night
universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing continuous