# Signals

The column axis of the state table: 421+ computed signal columns on every ticker row. A signal is one column of the computed state table — a value the platform derives from market data and keeps current across the 20,798+ tickers in the universe (NULL on rows it doesn't apply to). You don't compute anything: the indicator math, the windowing, and the refresh already ran by the time you query.

Signals come in two shapes. **Fields** carry a value (numeric, string, date). **Flags** are booleans with a published condition over other columns — shown on the flag's reference page, so what "firing" means is not a black box.

One name works everywhere: the same identifier is the field on a ticker response, the column in a scan WHERE clause, the series on a history pull, and the condition on a webhook. State is readable in three tenses: live (the current row), as-of (`?asof=` on the same reads), and webhook (pushed when a condition becomes true). Every signal speaks the live and webhook tenses; most are historized for as-of too — each reference page states exactly which reads carry it.

Each signal has a full reference page at https://tickerbot.io/docs/signals/<name>.md — definition, cadence, history, and runnable queries. The table-level map is https://tickerbot.io/docs/schema.md; the row axis is https://tickerbot.io/docs/tickers.md. For interactive browsing, see https://tickerbot.io/explore.

Signals are organized by how far they are derived from the raw tape: the record itself (Price, Volume), behaviors recognized directly from it (Price action), signals computed through a named indicator (Technicals) — then the company side: Fundamentals (reported), Events (calendar), Profile (reference), Analyst ratings (opinion), News (text). Every signal row on `/v2/signals` carries its `group` and `category`, and the same tree ships in the response's `taxonomy` block.

## Price

Price levels and records: quotes, bars, session levels, and rolling highs & lows — plus the signals those levels own (at / above / approaching / breaking).

### Trades & quotes

Last trade and the current quote: price, bid/ask, and depth.

**[`ask`](https://tickerbot.io/docs/signals/ask.md)** — numeric

Best ask from the consolidated NBBO at the most recent snapshot tick.

universe all tickers · cadence 1 min · mkt hrs

**[`ask_size`](https://tickerbot.io/docs/signals/ask_size.md)** — integer

Round lots at the ask. Raw count — NOT multiplied by 100.

universe all tickers · cadence 1 min · mkt hrs

**[`bid`](https://tickerbot.io/docs/signals/bid.md)** — numeric

Best bid from the consolidated NBBO at the most recent snapshot tick.

universe all tickers · cadence 1 min · mkt hrs

**[`bid_size`](https://tickerbot.io/docs/signals/bid_size.md)** — integer

Round lots at the bid. Raw count — NOT multiplied by 100. Multiply by 100 to get share count.

universe all tickers · cadence 1 min · mkt hrs

**[`price`](https://tickerbot.io/docs/signals/price.md)** — numeric

Most recent trade price.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

### Latest bars

OHLC of the latest minute bar and the prior session's daily bar.

**[`min_close`](https://tickerbot.io/docs/signals/min_close.md)** — numeric

Current minute bar’s most-recent close (last print).

universe all tickers · cadence 1 min · mkt hrs

**[`min_high`](https://tickerbot.io/docs/signals/min_high.md)** — numeric

Current minute bar’s running high.

universe all tickers · cadence 1 min · mkt hrs

**[`min_low`](https://tickerbot.io/docs/signals/min_low.md)** — numeric

Current minute bar’s running low.

universe all tickers · cadence 1 min · mkt hrs

**[`min_open`](https://tickerbot.io/docs/signals/min_open.md)** — numeric

Current minute bar’s open. Updates every snapshot tick during market hours.

universe all tickers · cadence 1 min · mkt hrs

**[`prev_day_high`](https://tickerbot.io/docs/signals/prev_day_high.md)** — numeric

Previous trading day’s session high.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`prev_day_low`](https://tickerbot.io/docs/signals/prev_day_low.md)** — numeric

Previous trading day’s session low.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`prev_day_open`](https://tickerbot.io/docs/signals/prev_day_open.md)** — numeric

Previous trading day’s official open.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`previous_close`](https://tickerbot.io/docs/signals/previous_close.md)** — numeric

Official prior-session close.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

### Session levels & position

Today's session levels (open, high, low) and where price sits relative to them and yesterday's landmarks.

**[`session_high`](https://tickerbot.io/docs/signals/session_high.md)** — numeric

Highest trade so far today.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`session_low`](https://tickerbot.io/docs/signals/session_low.md)** — numeric

Lowest trade so far today.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`session_open`](https://tickerbot.io/docs/signals/session_open.md)** — numeric

Today’s opening print.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`above_premarket_high`](https://tickerbot.io/docs/signals/above_premarket_high.md)** — state · flag

Close above the pre-market session high.

Definition: `close > max(price[04:00..09:30])`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`above_session_open`](https://tickerbot.io/docs/signals/above_session_open.md)** — state · flag

Close above today’s session-open price.

Definition: `close > open_0930`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_yesterday_close`](https://tickerbot.io/docs/signals/above_yesterday_close.md)** — state · flag

Close above the prior session’s close.

Definition: `close > close_prev`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_yesterday_high`](https://tickerbot.io/docs/signals/above_yesterday_high.md)** — state · flag

Close above the prior session’s intraday high.

Definition: `close > high_prev`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_session_high`](https://tickerbot.io/docs/signals/at_session_high.md)** — state · flag

At today’s intraday session high (within tolerance).

Definition: `price >= session_high * 0.999`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_session_low`](https://tickerbot.io/docs/signals/at_session_low.md)** — state · flag

At today’s intraday session low (within tolerance).

Definition: `price <= session_low * 1.001`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`below_premarket_low`](https://tickerbot.io/docs/signals/below_premarket_low.md)** — state · flag

Close below the pre-market session low.

Definition: `close < min(price[04:00..09:30])`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`below_yesterday_low`](https://tickerbot.io/docs/signals/below_yesterday_low.md)** — state · flag

Close below the prior session’s intraday low.

Definition: `close < low_prev`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`tested_session_high_recent`](https://tickerbot.io/docs/signals/tested_session_high_recent.md)** — state · flag

Price touched today’s session high within the last 5 minutes.

Definition: `max(close, last 5 min) >= session_high * 0.999`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`tested_session_low_recent`](https://tickerbot.io/docs/signals/tested_session_low_recent.md)** — state · flag

Price touched today’s session low within the last 5 minutes.

Definition: `min(close, last 5 min) <= session_low * 1.001`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

### Highs & lows

Rolling-window highs and lows (5-day, 20-day, 52-week), their dates and distances, and the at/approaching/breaking signals those levels own.

**[`days_since_52w_high`](https://tickerbot.io/docs/signals/days_since_52w_high.md)** — integer

Trading days since the most recent 52-week high.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`days_since_52w_low`](https://tickerbot.io/docs/signals/days_since_52w_low.md)** — integer

Trading days since the most recent 52-week low.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`high_20d`](https://tickerbot.io/docs/signals/high_20d.md)** — numeric

Highest trade in the trailing 20 trading days.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`high_20d_eod`](https://tickerbot.io/docs/signals/high_20d_eod.md)** — numeric

Highest close over the last 20 trading sessions. Close-basis. For the intraday-wick variant use `at_20d_high`.

universe all tickers · cadence post-close daily

**[`high_52w`](https://tickerbot.io/docs/signals/high_52w.md)** — numeric

Highest trade in the trailing 52 weeks (live, includes today).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`high_52w_date`](https://tickerbot.io/docs/signals/high_52w_date.md)** — date

Date the trailing-52-week high was set. Useful for "fresh 52w highs in the last 30 days" scans.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`high_52w_eod`](https://tickerbot.io/docs/signals/high_52w_eod.md)** — numeric

Highest close over the trailing 52 weeks. The `_eod` distinguishes from the canonical intraday `52_week_high` (which captures wicks).

universe all tickers · cadence post-close daily

**[`high_5d`](https://tickerbot.io/docs/signals/high_5d.md)** — numeric

Highest intraday high over the last 5 trading sessions, inclusive of the current session.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`high_5d_eod`](https://tickerbot.io/docs/signals/high_5d_eod.md)** — numeric

Highest close over the last 5 trading sessions. Close-basis (no intraday wicks) — pair with `high_5d` to distinguish.

universe all tickers · cadence post-close daily

**[`last_20d_high_date`](https://tickerbot.io/docs/signals/last_20d_high_date.md)** — date

Date the trailing-20-day high was set.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`last_20d_low_date`](https://tickerbot.io/docs/signals/last_20d_low_date.md)** — date

Date the trailing-20-day low was set.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`low_20d`](https://tickerbot.io/docs/signals/low_20d.md)** — numeric

Lowest trade in the trailing 20 trading days.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`low_20d_eod`](https://tickerbot.io/docs/signals/low_20d_eod.md)** — numeric

Lowest close over the last 20 trading sessions. Close-basis.

universe all tickers · cadence post-close daily

**[`low_52w`](https://tickerbot.io/docs/signals/low_52w.md)** — numeric

Lowest trade in the trailing 52 weeks (live, includes today).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`low_52w_date`](https://tickerbot.io/docs/signals/low_52w_date.md)** — date

Date the trailing-52-week low was set.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`low_52w_eod`](https://tickerbot.io/docs/signals/low_52w_eod.md)** — numeric

Lowest close over the trailing 52 weeks.

universe all tickers · cadence post-close daily

**[`low_5d`](https://tickerbot.io/docs/signals/low_5d.md)** — numeric

Lowest intraday low over the last 5 trading sessions, inclusive of the current session.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`low_5d_eod`](https://tickerbot.io/docs/signals/low_5d_eod.md)** — numeric

Lowest close over the last 5 trading sessions. Close-basis.

universe all tickers · cadence post-close daily

**[`pct_from_52w_high`](https://tickerbot.io/docs/signals/pct_from_52w_high.md)** — numeric

Percent below the 52-week high. Always >= 0 (use the `at_52w_high` flag to test highs).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`pct_from_52w_low`](https://tickerbot.io/docs/signals/pct_from_52w_low.md)** — numeric

Percent above the 52-week low. Always >= 0.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`position_in_52w_range`](https://tickerbot.io/docs/signals/position_in_52w_range.md)** — numeric

Where the live price sits in the 52-week range, 0–100. 0 = at low, 100 = at high.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`52_week_high`](https://tickerbot.io/docs/signals/52_week_high.md)** — state · flag

Price printed a new 52-week high today.

Definition: `high > max(high) over the prior 252 sessions`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d · firing sticky

**[`52_week_low`](https://tickerbot.io/docs/signals/52_week_low.md)** — state · flag

Price printed a new 52-week low today.

Definition: `low < min(low) over the prior 252 sessions`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d · firing sticky

**[`approaching_52w_high`](https://tickerbot.io/docs/signals/approaching_52w_high.md)** — state · flag

Price is within 5% of the 52-week high.

Definition: `close >= high_52w * 0.95 AND close < high_52w AND (close > sma_20 AND close > sma_50, OR >= 3 of last 5 days up) AND volume > avg_volume_10d`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`approaching_52w_low`](https://tickerbot.io/docs/signals/approaching_52w_low.md)** — state · flag

Price is within 5% of the 52-week low.

Definition: `close <= low_52w * 1.05 AND close > low_52w AND (close < sma_20 AND close < sma_50, OR >= 3 of last 5 days down) AND volume > avg_volume_10d`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_20d_high`](https://tickerbot.io/docs/signals/at_20d_high.md)** — state · flag

Price is at or above the 20-day high.

Definition: `close >= high_20d`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_20d_low`](https://tickerbot.io/docs/signals/at_20d_low.md)** — state · flag

Price is at or below the 20-day low.

Definition: `close <= low_20d`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_52w_high`](https://tickerbot.io/docs/signals/at_52w_high.md)** — state · flag

Price is within 0.5% of the 52-week high.

Definition: `close >= high_52w`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_52w_low`](https://tickerbot.io/docs/signals/at_52w_low.md)** — state · flag

Price is within 0.5% of the 52-week low.

Definition: `close <= low_52w`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`breaking_above_20d_high`](https://tickerbot.io/docs/signals/breaking_above_20d_high.md)** — event · flag

Breaking above its 20-day high on elevated volume.

Definition: `Price at or above the 20-day high with session volume at least 2x the 10-day average.`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing sticky

**[`breaking_below_20d_low`](https://tickerbot.io/docs/signals/breaking_below_20d_low.md)** — event · flag

Breaking below its 20-day low on elevated volume.

Definition: `Price at or below the 20-day low with session volume at least 2x the 10-day average.`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing sticky

## Volume

How much traded: absolute quantities and averages, and activity relative to baseline.

### Volume & averages

Absolute trading quantities: today's and prior volumes, dollar volume, averages, bar-level counts.

**[`avg_volume_10d`](https://tickerbot.io/docs/signals/avg_volume_10d.md)** — bigint

10-day trailing average daily volume.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`avg_volume_30d`](https://tickerbot.io/docs/signals/avg_volume_30d.md)** — bigint

30-day trailing average daily volume.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`day_dollar_volume`](https://tickerbot.io/docs/signals/day_dollar_volume.md)** — numeric

Today’s cumulative dollar volume traded.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`min_day_accumulated_dollar_volume`](https://tickerbot.io/docs/signals/min_day_accumulated_dollar_volume.md)** — numeric

Today’s cumulative dollar volume across the session so far.

universe all tickers · cadence 1 min · mkt hrs

**[`min_day_accumulated_volume`](https://tickerbot.io/docs/signals/min_day_accumulated_volume.md)** — bigint

Today’s cumulative shares traded across the session so far (4 AM ET onward).

universe all tickers · cadence 1 min · mkt hrs

**[`min_dollar_volume`](https://tickerbot.io/docs/signals/min_dollar_volume.md)** — numeric

Current minute bar’s dollar volume (close × volume approximation).

universe all tickers · cadence 1 min · mkt hrs

**[`min_trade_count`](https://tickerbot.io/docs/signals/min_trade_count.md)** — integer

Current minute bar’s number of trades.

universe all tickers · cadence 1 min · mkt hrs

**[`min_volume`](https://tickerbot.io/docs/signals/min_volume.md)** — integer

Current minute bar’s accumulated shares traded.

universe all tickers · cadence 1 min · mkt hrs

**[`prev_day_volume`](https://tickerbot.io/docs/signals/prev_day_volume.md)** — bigint

Previous trading day’s total volume (raw shares).

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`volume_today`](https://tickerbot.io/docs/signals/volume_today.md)** — bigint

Shares traded so far today.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

### Relative & unusual volume

Trading activity relative to baseline: relative volume, bursts, unusual-volume flags, liquidity conditions.

**[`relative_volume`](https://tickerbot.io/docs/signals/relative_volume.md)** — numeric

Ratio of today’s pace-adjusted volume to the 10-day average. 2.0 means 2× normal.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`volume_change_vs_avg`](https://tickerbot.io/docs/signals/volume_change_vs_avg.md)** — numeric

Ratio of today’s pace-adjusted volume to its 10-day average. Numeric surface of the same denominator `relative_volume` uses.

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`volume_trend_5d`](https://tickerbot.io/docs/signals/volume_trend_5d.md)** — text

Slope of daily volume regressed over the last 5 trading days. Positive = building, negative = drying.

universe all tickers · history partial · cadence post-close daily · intervals 1d

**[`high_volume_alert`](https://tickerbot.io/docs/signals/high_volume_alert.md)** — event · flag

Today’s volume is at least 2× the 30-day average.

Definition: `minute_volume > 5 x (avg_volume_10d / 390), i.e. this minute's volume exceeds 5x the typical per-minute pace from the 10-day average`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky

**[`illiquid`](https://tickerbot.io/docs/signals/illiquid.md)** — state · flag

Thinly traded — 10-day average volume is under 100k shares.

Definition: `avg_volume_10d < 100000`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`low_volume_regime`](https://tickerbot.io/docs/signals/low_volume_regime.md)** — state · flag

This name is in a sustained quiet stretch.

Definition: `avg(volume, 10) <= 0.75 * avg_volume_10d`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`quiet_minute`](https://tickerbot.io/docs/signals/quiet_minute.md)** — state · flag

A sustained quiet stretch — 10-minute volume average well below recent baseline.

Definition: `avg(volume, 10m) < 0.5 * avg(volume, prior 30m)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`volume_burst_3x`](https://tickerbot.io/docs/signals/volume_burst_3x.md)** — event · flag

Current minute volume ≥ 3× recent average.

Definition: `volume >= 3 * avg(volume, 30 min prior)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`volume_burst_5x`](https://tickerbot.io/docs/signals/volume_burst_5x.md)** — event · flag

Current minute volume ≥ 5× recent average.

Definition: `volume >= 5 * avg(volume, 30 min prior)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

## Price action

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.

**[`change_1m`](https://tickerbot.io/docs/signals/change_1m.md)** — numeric

Percent 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_1w`](https://tickerbot.io/docs/signals/change_1w.md)** — numeric

Percent 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_1y`](https://tickerbot.io/docs/signals/change_1y.md)** — numeric

Percent change vs. close ~252 trading days ago.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d

**[`change_3m`](https://tickerbot.io/docs/signals/change_3m.md)** — numeric

Percent change vs. close ~63 trading days ago.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`change_6m`](https://tickerbot.io/docs/signals/change_6m.md)** — numeric

Percent change vs. close ~126 trading days ago.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d

**[`change_ytd`](https://tickerbot.io/docs/signals/change_ytd.md)** — numeric

Percent 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_change`](https://tickerbot.io/docs/signals/day_change.md)** — numeric

Absolute change vs `previous_close`.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`day_change_pct`](https://tickerbot.io/docs/signals/day_change_pct.md)** — numeric

Percent 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_down`](https://tickerbot.io/docs/signals/days_down.md)** — integer

Consecutive 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_up`](https://tickerbot.io/docs/signals/days_up.md)** — integer

Consecutive 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_pc`](https://tickerbot.io/docs/signals/from_open_pc.md)** — numeric

Intraday: 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_3pct`](https://tickerbot.io/docs/signals/price_down_3pct.md)** — event · flag

Intraday move of -3% or worse vs prior close.

Definition: `day_change_pct <= -3`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky

**[`price_up_3pct`](https://tickerbot.io/docs/signals/price_up_3pct.md)** — event · flag

Intraday move of 3%+ vs prior close.

Definition: `day_change_pct >= 3`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing sticky

**[`top_gainer`](https://tickerbot.io/docs/signals/top_gainer.md)** — state · flag

Among the session's top 20 gainers.

Definition: `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_loser`](https://tickerbot.io/docs/signals/top_loser.md)** — state · flag

Among the session's top 20 losers.

Definition: `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.

**[`gap`](https://tickerbot.io/docs/signals/gap.md)** — numeric

Overnight 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_pct`](https://tickerbot.io/docs/signals/gap_pct.md)** — numeric

Percent 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_down`](https://tickerbot.io/docs/signals/gap_down.md)** — event · flag

Today opened 3%+ below prior close.

Definition: `(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_extreme`](https://tickerbot.io/docs/signals/gap_down_extreme.md)** — event · flag

Today opened 10%+ below prior close.

Definition: `(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_today`](https://tickerbot.io/docs/signals/gap_filled_today.md)** — event · flag

Today’s opening gap was closed by an intraday move.

Definition: `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_up`](https://tickerbot.io/docs/signals/gap_up.md)** — event · flag

Today opened 3%+ above prior close.

Definition: `(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_extreme`](https://tickerbot.io/docs/signals/gap_up_extreme.md)** — event · flag

Today opened 10%+ above prior close.

Definition: `(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.

**[`afternoon_drift_up`](https://tickerbot.io/docs/signals/afternoon_drift_up.md)** — state · flag

Afternoon session net up.

Definition: `close_1600 > close_1200`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`last_hour_rally`](https://tickerbot.io/docs/signals/last_hour_rally.md)** — event · flag

Final hour of session net up.

Definition: `close_1600 > close_1500 * 1.005`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`last_hour_selloff`](https://tickerbot.io/docs/signals/last_hour_selloff.md)** — event · flag

Final hour of session net down.

Definition: `close_1600 < close_1500 * 0.995`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`microspike_down`](https://tickerbot.io/docs/signals/microspike_down.md)** — event · flag

Single 1-minute candle return ≤ −1%.

Definition: `(close - open) / open <= -0.01`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`microspike_up`](https://tickerbot.io/docs/signals/microspike_up.md)** — event · flag

Single 1-minute candle return ≥ +1%.

Definition: `(close - open) / open >= 0.01`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`momentum`](https://tickerbot.io/docs/signals/momentum.md)** — state · flag

momentum present

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`momentum_down`](https://tickerbot.io/docs/signals/momentum_down.md)** — state · flag

Sustained downward momentum on the daily bars.

Definition: `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_down`](https://tickerbot.io/docs/signals/momentum_exhaustion_down.md)** — event · flag

Downward momentum showing signs of exhaustion.

Definition: `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_up`](https://tickerbot.io/docs/signals/momentum_exhaustion_up.md)** — event · flag

Upward momentum showing signs of exhaustion.

Definition: `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_down`](https://tickerbot.io/docs/signals/momentum_strong_down.md)** — event · flag

Strong downward momentum across multiple measures.

Definition: `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_up`](https://tickerbot.io/docs/signals/momentum_strong_up.md)** — event · flag

Strong upward momentum across multiple measures.

Definition: `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_up`](https://tickerbot.io/docs/signals/momentum_up.md)** — state · flag

Sustained upward momentum on the daily bars.

Definition: `Three or more consecutive up days whose average daily move exceeds about 1%.`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`morning_strength`](https://tickerbot.io/docs/signals/morning_strength.md)** — state · flag

First two hours of session net positive.

Definition: `close_1130 > open_0930`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`opening_drive_down`](https://tickerbot.io/docs/signals/opening_drive_down.md)** — event · flag

First 5 minutes of session down < −0.5%.

Definition: `close_0935 < open_0930 * 0.995`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`opening_drive_up`](https://tickerbot.io/docs/signals/opening_drive_up.md)** — event · flag

First 5 minutes of session up > +0.5%.

Definition: `close_0935 > open_0930 * 1.005`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`pre_close_drift_down`](https://tickerbot.io/docs/signals/pre_close_drift_down.md)** — event · flag

Last 10 minutes before close net down.

Definition: `close_1600 < close_1550`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`pre_close_drift_up`](https://tickerbot.io/docs/signals/pre_close_drift_up.md)** — event · flag

Last 10 minutes before close net up.

Definition: `close_1600 > close_1550`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`pre_earnings_drift`](https://tickerbot.io/docs/signals/pre_earnings_drift.md)** — state · flag

Stock has moved ≥5% (absolute) over the trailing week with earnings within 7 days — a setup the literature shows often continues through the report.

Definition: `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_5m`](https://tickerbot.io/docs/signals/rapid_move_down_5m.md)** — state · flag

Price down more than −0.5% in the last 5 minutes.

Definition: `(close - close_5m_ago) / close_5m_ago <= -0.005`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`rapid_move_up_5m`](https://tickerbot.io/docs/signals/rapid_move_up_5m.md)** — state · flag

Price up more than +0.5% in the last 5 minutes.

Definition: `(close - close_5m_ago) / close_5m_ago >= 0.005`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`three_down_hours`](https://tickerbot.io/docs/signals/three_down_hours.md)** — state · flag

Three consecutive lower hourly closes.

Definition: `close < close_1h_ago < close_2h_ago < close_3h_ago`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`three_up_hours`](https://tickerbot.io/docs/signals/three_up_hours.md)** — state · flag

Three consecutive higher hourly closes.

Definition: `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.

**[`above_opening_range`](https://tickerbot.io/docs/signals/above_opening_range.md)** — state · flag

Price is trading above the first 15-minute opening-range high.

Definition: `close > or_high (OR = first 15 min after 09:30 ET)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`below_opening_range`](https://tickerbot.io/docs/signals/below_opening_range.md)** — state · flag

Price is trading below the first 15-minute opening-range low.

Definition: `close < or_low (OR = first 15 min after 09:30 ET)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`consolidating_15m`](https://tickerbot.io/docs/signals/consolidating_15m.md)** — state · flag

Last 15 minutes traded in a tight range.

Definition: `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

**[`consolidation`](https://tickerbot.io/docs/signals/consolidation.md)** — state · flag

Price is range-bound — the last 5 sessions span less than 5%.

Definition: `(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_range`](https://tickerbot.io/docs/signals/expanded_hourly_range.md)** — state · flag

This hour’s range is unusually wide.

Definition: `(high - low) > 1.5 * atr_hourly_20`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`hourly_reversal_bearish`](https://tickerbot.io/docs/signals/hourly_reversal_bearish.md)** — event · flag

Higher high, lower close than the prior hour.

Definition: `high > high_1h_ago AND close < close_1h_ago`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`hourly_reversal_bullish`](https://tickerbot.io/docs/signals/hourly_reversal_bullish.md)** — event · flag

Lower low, higher close than the prior hour.

Definition: `low < low_1h_ago AND close > close_1h_ago`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`in_opening_range`](https://tickerbot.io/docs/signals/in_opening_range.md)** — state · flag

Price is inside the first-hour high/low range.

Definition: `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_range`](https://tickerbot.io/docs/signals/narrow_hourly_range.md)** — state · flag

This hour’s range is unusually narrow.

Definition: `(high - low) < 0.5 * atr_hourly_20`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`pullback`](https://tickerbot.io/docs/signals/pullback.md)** — state · flag

Pullback to the 20-day moving average within an uptrend.

Definition: `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_down`](https://tickerbot.io/docs/signals/range_break_15m_down.md)** — event · flag

Broke below the prior 15-minute low.

Definition: `close < min(low, prior 15 min)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`range_break_15m_up`](https://tickerbot.io/docs/signals/range_break_15m_up.md)** — event · flag

Broke above the prior 15-minute high.

Definition: `close > max(high, prior 15 min)`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`range_expansion`](https://tickerbot.io/docs/signals/range_expansion.md)** — event · flag

Today's true range > 2 × ATR(14) with volume — direction-agnostic regime-change tag.

Definition: `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_high`](https://tickerbot.io/docs/signals/repeated_test_of_high.md)** — state · flag

Tested today’s session high three or more times — failed-breakout setup.

Definition: `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_low`](https://tickerbot.io/docs/signals/repeated_test_of_low.md)** — state · flag

Tested today’s session low three or more times — failed-breakdown setup.

Definition: `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_breakout`](https://tickerbot.io/docs/signals/sticky_breakout.md)** — state · flag

Latches on when price makes a 52-week high and stays on until the nightly reset — a persistent breakout tag.

Definition: `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

## Technicals

Named technical indicators (SMA, EMA, VWAP, RSI, stochastics, MACD, ADX, Bollinger, ATR) and every signal computed through one. The test: a named mathematical object sits between the bars and the signal.

### Moving averages & VWAP

SMAs, EMAs, and VWAPs, with the distances, above/below states, and crosses they own.

**[`day_vwap`](https://tickerbot.io/docs/signals/day_vwap.md)** — numeric

Today’s session volume-weighted average price.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`ema_12`](https://tickerbot.io/docs/signals/ema_12.md)** — numeric

12-day EMA. Fast-side input of canonical MACD (`macd = ema_12 − ema_26`).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`ema_21`](https://tickerbot.io/docs/signals/ema_21.md)** — numeric

21-day EMA. Often paired with `ema_9` for short-trend bias; also serves as a dynamic-support reference.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`ema_26`](https://tickerbot.io/docs/signals/ema_26.md)** — numeric

26-day EMA. Slow-side input of canonical MACD (`macd = ema_12 − ema_26`).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`ema_9`](https://tickerbot.io/docs/signals/ema_9.md)** — numeric

9-day exponential moving average of close. Most-recent-weighted; reacts faster than the same-period SMA. Commonly paired with `ema_21` for short-trend bias.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`min_vwap`](https://tickerbot.io/docs/signals/min_vwap.md)** — numeric

Current minute bar’s volume-weighted average price.

universe all tickers · cadence 1 min · mkt hrs

**[`pct_from_sma_10`](https://tickerbot.io/docs/signals/pct_from_sma_10.md)** — numeric

Percent difference between current close and `sma_10`. Positive = above MA, negative = below. Continuous version of the `above_sma_10` boolean.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`pct_from_sma_100`](https://tickerbot.io/docs/signals/pct_from_sma_100.md)** — numeric

Percent difference between current close and `sma_100`. Daily-cadence because the slow MA changes slowly.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d

**[`pct_from_sma_20`](https://tickerbot.io/docs/signals/pct_from_sma_20.md)** — numeric

Percent difference between current close and `sma_20`. Continuous version of the `above_sma_20` boolean.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`pct_from_sma_200`](https://tickerbot.io/docs/signals/pct_from_sma_200.md)** — numeric

Percent distance from the 200-day SMA. Negative when price is below the average.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d

**[`pct_from_sma_50`](https://tickerbot.io/docs/signals/pct_from_sma_50.md)** — numeric

Percent distance from the 50-day SMA. Negative when price is below the average.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`pct_from_vwap`](https://tickerbot.io/docs/signals/pct_from_vwap.md)** — numeric

Percent distance from today’s VWAP.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`prev_day_vwap`](https://tickerbot.io/docs/signals/prev_day_vwap.md)** — numeric

Previous trading day’s session VWAP.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d

**[`sma_10`](https://tickerbot.io/docs/signals/sma_10.md)** — numeric

10-day simple moving average.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`sma_100`](https://tickerbot.io/docs/signals/sma_100.md)** — numeric

100-day simple moving average of close. Slower than `sma_50`, faster than `sma_200` — useful for intermediate-term trend.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`sma_20`](https://tickerbot.io/docs/signals/sma_20.md)** — numeric

20-day simple moving average.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`sma_200`](https://tickerbot.io/docs/signals/sma_200.md)** — numeric

200-day simple moving average.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`sma_50`](https://tickerbot.io/docs/signals/sma_50.md)** — numeric

50-day simple moving average.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`vwap`](https://tickerbot.io/docs/signals/vwap.md)** — numeric

Daily volume-weighted average price from market open through the most recent print. Updates intraday with each new tick.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`above_sma_10`](https://tickerbot.io/docs/signals/above_sma_10.md)** — state · flag

Price is above the 10-day simple moving average.

Definition: `close > sma_10`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_sma_20`](https://tickerbot.io/docs/signals/above_sma_20.md)** — state · flag

Price is above the 20-day simple moving average.

Definition: `close > sma_20`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_sma_200`](https://tickerbot.io/docs/signals/above_sma_200.md)** — state · flag

Price is above the 200-day simple moving average.

Definition: `close > sma_200`

universe all tickers · history full · since 2004 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_sma_50`](https://tickerbot.io/docs/signals/above_sma_50.md)** — state · flag

Price is above the 50-day simple moving average.

Definition: `close > sma_50`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_vwap`](https://tickerbot.io/docs/signals/above_vwap.md)** — state · flag

Price is above today’s volume-weighted average price.

Definition: `close > vwap`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`above_vwap_minute`](https://tickerbot.io/docs/signals/above_vwap_minute.md)** — state · flag

Current price above session VWAP.

Definition: `close > vwap_session`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`death_cross`](https://tickerbot.io/docs/signals/death_cross.md)** — event · flag

50-day SMA crossed below 200-day SMA today.

Definition: `Yesterday: sma_50 ≥ sma_200. Today: sma_50 < sma_200.`

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d · firing sticky

**[`death_regime`](https://tickerbot.io/docs/signals/death_regime.md)** — state · flag

Long-term downtrend regime — 50-day SMA below 200-day SMA.

Definition: `sma_50 < sma_200`

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d · firing continuous

**[`golden_cross`](https://tickerbot.io/docs/signals/golden_cross.md)** — event · flag

50-day SMA crossed above 200-day SMA today.

Definition: `Yesterday: sma_50 ≤ sma_200. Today: sma_50 > sma_200.`

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d · firing sticky

**[`golden_regime`](https://tickerbot.io/docs/signals/golden_regime.md)** — state · flag

Long-term uptrend regime — 50-day SMA above 200-day SMA.

Definition: `sma_50 > sma_200`

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d · firing continuous

**[`held_above_vwap_30m`](https://tickerbot.io/docs/signals/held_above_vwap_30m.md)** — state · flag

Price has stayed above session VWAP without dipping for at least 30 minutes.

Definition: `close > vwap_session for every minute in the last 30`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`held_below_vwap_30m`](https://tickerbot.io/docs/signals/held_below_vwap_30m.md)** — state · flag

Price has stayed below session VWAP without lifting for at least 30 minutes.

Definition: `close < vwap_session for every minute in the last 30`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`sma_10_crossed_above_50_today`](https://tickerbot.io/docs/signals/sma_10_crossed_above_50_today.md)** — state · flag

The 10-day SMA crossed above the 50-day SMA today — a short-term bullish cross.

Definition: `sma_10 crossed above sma_50 vs. the prior session`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d · firing sticky

**[`sma_10_crossed_below_50_today`](https://tickerbot.io/docs/signals/sma_10_crossed_below_50_today.md)** — state · flag

The 10-day SMA crossed below the 50-day SMA today — a short-term bearish cross.

Definition: `sma_10 crossed below sma_50 vs. the prior session`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d · firing sticky

**[`vwap_cross_down`](https://tickerbot.io/docs/signals/vwap_cross_down.md)** — event · flag

Crossed below session VWAP this minute.

Definition: `close_prev_min >= vwap_session AND close < vwap_session`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

**[`vwap_cross_up`](https://tickerbot.io/docs/signals/vwap_cross_up.md)** — event · flag

Crossed above session VWAP this minute.

Definition: `close_prev_min <= vwap_session AND close > vwap_session`

universe all tickers · cadence 1 min · mkt hrs · firing sticky

### Oscillators

Bounded momentum oscillators: RSI and stochastics, with their threshold flags.

**[`rsi_14`](https://tickerbot.io/docs/signals/rsi_14.md)** — numeric

Relative Strength Index, 14-period. Range 0–100.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`rsi_7`](https://tickerbot.io/docs/signals/rsi_7.md)** — numeric

Relative Strength Index over 7 periods - a faster, more sensitive RSI. Range 0-100.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`stochastic_d`](https://tickerbot.io/docs/signals/stochastic_d.md)** — numeric

Stochastic oscillator %D: 3-period smoothing of %K.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`stochastic_k`](https://tickerbot.io/docs/signals/stochastic_k.md)** — numeric

Stochastic oscillator %K: where price sits within its recent high-low range, 0-100.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`rsi_overbought`](https://tickerbot.io/docs/signals/rsi_overbought.md)** — state · flag

RSI(14) is in overbought territory.

Definition: `rsi_14 > 70`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`rsi_oversold`](https://tickerbot.io/docs/signals/rsi_oversold.md)** — state · flag

RSI(14) is in oversold territory.

Definition: `rsi_14 < 30`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

### Trend & direction

Trend direction and strength: MACD, ADX/±DI, SMA-based trend reads, and reversal composites.

**[`adx_14`](https://tickerbot.io/docs/signals/adx_14.md)** — numeric

Average Directional Index (14-period): trend strength from 0 to 100.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`macd_histogram`](https://tickerbot.io/docs/signals/macd_histogram.md)** — numeric

MACD line minus signal. Positive when bullish, negative when bearish.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`macd_line`](https://tickerbot.io/docs/signals/macd_line.md)** — numeric

MACD line (12-EMA minus 26-EMA).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`macd_signal`](https://tickerbot.io/docs/signals/macd_signal.md)** — numeric

MACD signal line (9-EMA of MACD line).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`minus_di`](https://tickerbot.io/docs/signals/minus_di.md)** — numeric

-DI (14-period): the bearish directional-movement component of the ADX system.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`plus_di`](https://tickerbot.io/docs/signals/plus_di.md)** — numeric

+DI (14-period): the bullish directional-movement component of the ADX system.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`trend_long`](https://tickerbot.io/docs/signals/trend_long.md)** — text

Long-term trend classification from `sma_200` slope. One of `uptrend`, `downtrend`, `sideways`.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1m/1h/1d

**[`trend_medium`](https://tickerbot.io/docs/signals/trend_medium.md)** — text

Medium-term trend classification from `sma_50` slope. One of `uptrend`, `downtrend`, `sideways`.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`trend_short`](https://tickerbot.io/docs/signals/trend_short.md)** — text

Short-term trend classification from short-MA slope. One of `uptrend`, `downtrend`, `sideways`.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1m/1h/1d

**[`in_downtrend`](https://tickerbot.io/docs/signals/in_downtrend.md)** — state · flag

Stacked downtrend across short, medium, and long horizons.

Definition: `close < sma_50 AND sma_50 < sma_200`

universe all tickers · history full · since 2004 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`in_uptrend`](https://tickerbot.io/docs/signals/in_uptrend.md)** — state · flag

Stacked uptrend across short, medium, and long horizons.

Definition: `close > sma_50 AND sma_50 > sma_200`

universe all tickers · history full · since 2004 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`macd_above_signal`](https://tickerbot.io/docs/signals/macd_above_signal.md)** — state · flag

MACD line is above its signal line.

Definition: `macd > macd_signal`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`macd_below_signal`](https://tickerbot.io/docs/signals/macd_below_signal.md)** — state · flag

MACD line is below its signal line.

Definition: `macd < macd_signal`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1d · firing continuous

**[`trend_reversal_bearish_today`](https://tickerbot.io/docs/signals/trend_reversal_bearish_today.md)** — event · flag

Trend flipped from up to down today.

Definition: `Yesterday: sma_50 > sma_200. Today: macd_bearish AND rsi_14 < 50.`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing sticky

**[`trend_reversal_bullish_today`](https://tickerbot.io/docs/signals/trend_reversal_bullish_today.md)** — event · flag

Trend flipped from down to up today.

Definition: `Yesterday: sma_50 < sma_200. Today: macd_bullish AND rsi_14 > 50.`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing sticky

### Volatility & bands

Volatility measures and deviation envelopes: ATR, Bollinger machinery, VWAP σ-bands.

**[`atr_14`](https://tickerbot.io/docs/signals/atr_14.md)** — numeric

14-day Average True Range.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`atr_percent`](https://tickerbot.io/docs/signals/atr_percent.md)** — numeric

ATR(14) as a percent of price. Useful as a volatility filter.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`bollinger_lower`](https://tickerbot.io/docs/signals/bollinger_lower.md)** — numeric

Lower Bollinger band (20-period, 2σ).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`bollinger_middle`](https://tickerbot.io/docs/signals/bollinger_middle.md)** — numeric

20-day SMA — the centerline of the Bollinger band. `bollinger_upper` and `bollinger_lower` are already documented; this fills in the missing middle.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`bollinger_pct_b`](https://tickerbot.io/docs/signals/bollinger_pct_b.md)** — numeric

Position within Bollinger bands. 0 = at lower band, 1 = at upper band, >1 = outside.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`bollinger_upper`](https://tickerbot.io/docs/signals/bollinger_upper.md)** — numeric

Upper Bollinger band (20-period, 2σ).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`bollinger_width`](https://tickerbot.io/docs/signals/bollinger_width.md)** — numeric

`(bollinger_upper − bollinger_lower) / bollinger_middle`. Normalized width — measures volatility regime. Narrow widths often precede expansion (see `bollinger_squeeze` in flags.ts).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`vwap_lower_band`](https://tickerbot.io/docs/signals/vwap_lower_band.md)** — numeric

VWAP − 2 standard deviations. Dynamic support reference.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`vwap_upper_band`](https://tickerbot.io/docs/signals/vwap_upper_band.md)** — numeric

VWAP + 2 standard deviations of intraday price action. Dynamic resistance reference.

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d

**[`at_bollinger_lower`](https://tickerbot.io/docs/signals/at_bollinger_lower.md)** — state · flag

Price has reached the lower Bollinger band.

Definition: `abs(close - bb_lower) / close < 0.02 (within 2% of the lower band, above or below)`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`at_bollinger_upper`](https://tickerbot.io/docs/signals/at_bollinger_upper.md)** — state · flag

Price has reached the upper Bollinger band.

Definition: `abs(close - bb_upper) / close < 0.02 (within 2% of the upper band, above or below)`

universe all tickers · history full · since 2003 · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`bollinger_squeeze`](https://tickerbot.io/docs/signals/bollinger_squeeze.md)** — state · flag

Bollinger band width compressed to a multi-week low — volatility is contracted.

Definition: `bollinger_width < 0.04`

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d · firing continuous

## Fundamentals

Company financials: statement lines as reported, ratios derived from them, market-price multiples on top of them, share structure, and short positioning.

### Income statement

Income-statement lines as reported, EPS, and their growth rates.

**[`basic_earnings_per_share`](https://tickerbot.io/docs/signals/basic_earnings_per_share.md)** — numeric

Basic EPS for the most-recently reported quarter. Signed.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`benefits_costs_expenses`](https://tickerbot.io/docs/signals/benefits_costs_expenses.md)** — bigint

Benefits and post-employment costs line item, where reported. Mostly insurance / utility issuers.

universe all tickers · cadence post-close daily

**[`cost_of_revenue`](https://tickerbot.io/docs/signals/cost_of_revenue.md)** — bigint

Cost of goods sold for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`costs_and_expenses`](https://tickerbot.io/docs/signals/costs_and_expenses.md)** — bigint

Total costs and expenses reported on the income statement (COGS + opex).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`diluted_eps_ttm`](https://tickerbot.io/docs/signals/diluted_eps_ttm.md)** — numeric

Trailing-12m diluted EPS.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`earnings_growth_yoy`](https://tickerbot.io/docs/signals/earnings_growth_yoy.md)** — numeric

Year-over-year EPS growth percent from the most recently reported quarter vs. the same quarter prior year. Signed; positive = growth.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`ebitda`](https://tickerbot.io/docs/signals/ebitda.md)** — bigint

Earnings before interest, taxes, depreciation, and amortization (TTM).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`eps`](https://tickerbot.io/docs/signals/eps.md)** — numeric

Earnings per share (trailing twelve months).

universe all tickers · history partial · cadence post-close daily · intervals 1d

**[`gross_profit`](https://tickerbot.io/docs/signals/gross_profit.md)** — bigint

`revenues − cost_of_revenue` for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`gross_profit_ttm`](https://tickerbot.io/docs/signals/gross_profit_ttm.md)** — bigint

Trailing-12m gross profit.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`income_loss_from_continuing_operations_after_tax`](https://tickerbot.io/docs/signals/income_loss_from_continuing_operations_after_tax.md)** — bigint

After-tax income from continuing operations for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`income_loss_from_continuing_operations_before_tax`](https://tickerbot.io/docs/signals/income_loss_from_continuing_operations_before_tax.md)** — bigint

Pre-tax income from continuing operations for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`income_tax_expense_benefit`](https://tickerbot.io/docs/signals/income_tax_expense_benefit.md)** — bigint

Income tax expense (positive) or benefit (negative) for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`income_tax_expense_benefit_deferred`](https://tickerbot.io/docs/signals/income_tax_expense_benefit_deferred.md)** — bigint

Deferred portion of income tax. Rare line item.

universe all tickers · cadence post-close daily

**[`net_income_loss`](https://tickerbot.io/docs/signals/net_income_loss.md)** — bigint

Bottom-line net income/loss for the quarter. Signed.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_income_loss_attributable_to_noncontrolling_interest`](https://tickerbot.io/docs/signals/net_income_loss_attributable_to_noncontrolling_interest.md)** — bigint

Portion of net income attributable to minority owners of consolidated subsidiaries. Usually 0 for non-conglomerates.

universe all tickers · history partial · cadence post-close daily · intervals 1d

**[`net_income_loss_attributable_to_parent`](https://tickerbot.io/docs/signals/net_income_loss_attributable_to_parent.md)** — bigint

Net income attributable to the parent entity (excludes noncontrolling interest).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_income_loss_available_to_common_stockholders_basic`](https://tickerbot.io/docs/signals/net_income_loss_available_to_common_stockholders_basic.md)** — bigint

Net income available to common shareholders — numerator for basic EPS.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`nonoperating_income_loss`](https://tickerbot.io/docs/signals/nonoperating_income_loss.md)** — bigint

Non-operating income/loss (interest income, gains/losses on investments, etc.) for the quarter. Signed.

universe all tickers · history partial · cadence post-close daily · intervals 1d

**[`operating_expenses`](https://tickerbot.io/docs/signals/operating_expenses.md)** — bigint

Sum of operating costs reported on the income statement for the quarter (excludes COGS).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`operating_income_loss`](https://tickerbot.io/docs/signals/operating_income_loss.md)** — bigint

Operating income or loss for the quarter. Signed.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`research_and_development`](https://tickerbot.io/docs/signals/research_and_development.md)** — bigint

R&D spend for the quarter. NULL for companies that don't report R&D as a line item.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`revenue_growth_yoy`](https://tickerbot.io/docs/signals/revenue_growth_yoy.md)** — numeric

Year-over-year revenue growth: most-recent quarter vs same quarter prior year. Signed; positive = growth.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`revenue_growth_yoy_quarterly`](https://tickerbot.io/docs/signals/revenue_growth_yoy_quarterly.md)** — numeric

YoY quarterly revenue growth. Signed.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`revenue_per_share_ttm`](https://tickerbot.io/docs/signals/revenue_per_share_ttm.md)** — numeric

Trailing-12m revenue divided by diluted shares outstanding. USD per share.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`revenue_ttm`](https://tickerbot.io/docs/signals/revenue_ttm.md)** — bigint

Trailing-twelve-month revenue.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`revenues`](https://tickerbot.io/docs/signals/revenues.md)** — bigint

Total revenue for the most-recently reported quarter, from filed income statements.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`selling_general_and_administrative_expenses`](https://tickerbot.io/docs/signals/selling_general_and_administrative_expenses.md)** — bigint

SG&A for the quarter.

universe all tickers · history has gaps · cadence post-close daily · intervals 1d

**[`wages`](https://tickerbot.io/docs/signals/wages.md)** — bigint

Wages and salaries line item, where reported. Rare — most companies fold this into SG&A.

universe all tickers · cadence post-close daily

### Balance sheet

Balance-sheet lines as reported.

**[`accounts_payable`](https://tickerbot.io/docs/signals/accounts_payable.md)** — bigint

Trade payables to suppliers as of the quarter end.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`assets`](https://tickerbot.io/docs/signals/assets.md)** — bigint

Total assets on the balance sheet as of the most recently reported quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`book_value`](https://tickerbot.io/docs/signals/book_value.md)** — numeric

Trailing-12m book value per share. Computed from `equity_attributable_to_parent / diluted_average_shares`.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`cash_on_hand`](https://tickerbot.io/docs/signals/cash_on_hand.md)** — bigint

Cash plus cash equivalents — the most-liquid balance-sheet line.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`current_assets`](https://tickerbot.io/docs/signals/current_assets.md)** — bigint

Assets expected to be converted to cash or used up within 12 months.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`current_liabilities`](https://tickerbot.io/docs/signals/current_liabilities.md)** — bigint

Liabilities due within 12 months — accounts payable, short-term debt, accrued expenses.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`equity`](https://tickerbot.io/docs/signals/equity.md)** — bigint

Total shareholders' equity.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`equity_attributable_to_noncontrolling_interest`](https://tickerbot.io/docs/signals/equity_attributable_to_noncontrolling_interest.md)** — bigint

Equity attributable to minority shareholders of consolidated subsidiaries. Usually 0 for non-conglomerates.

universe all tickers · history partial · cadence post-close daily · intervals 1d

**[`equity_attributable_to_parent`](https://tickerbot.io/docs/signals/equity_attributable_to_parent.md)** — bigint

Equity attributable to the parent entity's shareholders (excludes minority interest).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`fixed_assets`](https://tickerbot.io/docs/signals/fixed_assets.md)** — bigint

Property, plant, and equipment (PP&E), net of accumulated depreciation.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`inventory`](https://tickerbot.io/docs/signals/inventory.md)** — bigint

Inventory on hand. NULL for service and financial companies that don't carry inventory.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`liabilities`](https://tickerbot.io/docs/signals/liabilities.md)** — bigint

Total liabilities on the balance sheet.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`liabilities_and_equity`](https://tickerbot.io/docs/signals/liabilities_and_equity.md)** — bigint

Total liabilities + total equity. Should equal `assets` (balance-sheet identity). Documented for completeness — useful as a sanity check rather than a scan target.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`long_term_debt`](https://tickerbot.io/docs/signals/long_term_debt.md)** — bigint

Long-term debt obligations. Often NULL because issuers fold this into `noncurrent_liabilities` instead of breaking it out.

universe all tickers · cadence post-close daily

**[`noncurrent_assets`](https://tickerbot.io/docs/signals/noncurrent_assets.md)** — bigint

Long-lived assets — property, plant, equipment, intangibles, long-term investments.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`noncurrent_liabilities`](https://tickerbot.io/docs/signals/noncurrent_liabilities.md)** — bigint

Liabilities due beyond 12 months — long-term debt, deferred taxes, pension obligations.

universe all tickers · history has gaps · cadence post-close daily · intervals 1d

**[`other_current_assets`](https://tickerbot.io/docs/signals/other_current_assets.md)** — bigint

Current assets not separately broken out (prepaid expenses, short-term receivables, etc.).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`other_current_liabilities`](https://tickerbot.io/docs/signals/other_current_liabilities.md)** — bigint

Current liabilities not separately broken out.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`other_noncurrent_assets`](https://tickerbot.io/docs/signals/other_noncurrent_assets.md)** — bigint

Non-current assets not separately broken out (intangibles, deferred tax assets, etc.).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

### Cash flow

Cash-flow-statement lines and free cash flow.

**[`free_cash_flow`](https://tickerbot.io/docs/signals/free_cash_flow.md)** — bigint

Operating cash flow minus capital expenditures. Cash the business generates above what it needs to maintain operations.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow`](https://tickerbot.io/docs/signals/net_cash_flow.md)** — bigint

Sum of operating + investing + financing cash flow — period change in cash.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow_continuing`](https://tickerbot.io/docs/signals/net_cash_flow_continuing.md)** — bigint

Total cash flow excluding discontinued operations. Rare line item — populated only for companies in active discontinued-ops winddown.

universe all tickers · cadence post-close daily

**[`net_cash_flow_from_financing_activities`](https://tickerbot.io/docs/signals/net_cash_flow_from_financing_activities.md)** — bigint

Net cash from financing (debt, dividends, buybacks).

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow_from_financing_activities_continuing`](https://tickerbot.io/docs/signals/net_cash_flow_from_financing_activities_continuing.md)** — bigint

Financing cash flow excluding discontinued operations.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow_from_investing_activities`](https://tickerbot.io/docs/signals/net_cash_flow_from_investing_activities.md)** — bigint

Net cash from investing activities (capex, acquisitions). Negative for net spend.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow_from_investing_activities_continuing`](https://tickerbot.io/docs/signals/net_cash_flow_from_investing_activities_continuing.md)** — bigint

Investing cash flow excluding discontinued operations.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow_from_operating_activities`](https://tickerbot.io/docs/signals/net_cash_flow_from_operating_activities.md)** — bigint

Net cash from operations for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`net_cash_flow_from_operating_activities_continuing`](https://tickerbot.io/docs/signals/net_cash_flow_from_operating_activities_continuing.md)** — bigint

Same as `net_cash_flow_from_operating_activities` but excludes discontinued operations.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

### Margins & ratios

Ratios computed entirely from statement lines — margins, returns, liquidity, leverage. No market price in the formula.

**[`current_ratio`](https://tickerbot.io/docs/signals/current_ratio.md)** — numeric

Current assets ÷ current liabilities. Short-term liquidity. >1 = able to cover short-term obligations from current assets.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`debt_to_equity`](https://tickerbot.io/docs/signals/debt_to_equity.md)** — numeric

Total debt divided by total shareholders' equity. Common leverage ratio; lower = less leveraged.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`gross_margin`](https://tickerbot.io/docs/signals/gross_margin.md)** — numeric

`gross_profit / revenues` for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`operating_margin`](https://tickerbot.io/docs/signals/operating_margin.md)** — numeric

`operating_income_loss / revenues` for the quarter.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`operating_margin_ttm`](https://tickerbot.io/docs/signals/operating_margin_ttm.md)** — numeric

Trailing-12m operating margin.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`profit_margin`](https://tickerbot.io/docs/signals/profit_margin.md)** — numeric

Net income ÷ revenue. Quarterly.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`profit_margin_ttm`](https://tickerbot.io/docs/signals/profit_margin_ttm.md)** — numeric

Trailing-12m profit margin.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`quick_ratio`](https://tickerbot.io/docs/signals/quick_ratio.md)** — numeric

(Current assets − inventory) ÷ current liabilities. Stricter liquidity — assumes inventory isn't quickly convertible.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`return_on_assets`](https://tickerbot.io/docs/signals/return_on_assets.md)** — numeric

Net income ÷ total assets. Quarterly figure.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`return_on_assets_ttm`](https://tickerbot.io/docs/signals/return_on_assets_ttm.md)** — numeric

Trailing-12m return on assets.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`return_on_equity`](https://tickerbot.io/docs/signals/return_on_equity.md)** — numeric

Net income ÷ shareholders' equity. Quarterly figure.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`return_on_equity_ttm`](https://tickerbot.io/docs/signals/return_on_equity_ttm.md)** — numeric

Trailing-12m return on equity.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`high_margin`](https://tickerbot.io/docs/signals/high_margin.md)** — state · flag

Trailing-twelve-month profit margin is above 20%.

Definition: `profit_margin_ttm > 0.20`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

**[`profitable`](https://tickerbot.io/docs/signals/profitable.md)** — classification · flag

Most-recently-reported quarter had positive net income.

Definition: `net_income_loss > 0`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

### Valuation

Metrics crossing market price with financials — cap, EV, multiples, yield, beta — plus the size/style tags they own (cap tiers, beta tags, value_stock).

**[`beta`](https://tickerbot.io/docs/signals/beta.md)** — numeric

Trailing beta vs SPY. Null for issuers with insufficient price history.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`cap_class`](https://tickerbot.io/docs/signals/cap_class.md)** — text

Market-capitalization tier. One of `nano` (<$50M), `micro` ($50M–$300M), `small` ($300M–$2B), `mid` ($2B–$10B), `large` ($10B–$200B), `mega` (≥$200B), or `unknown` when `market_cap` is null. Updates daily post-close as `market_cap` moves. Preferred over the legacy `nano_cap/micro_cap/small_cap/mid_cap/large_cap/mega_cap` boolean columns (which remain in sync as backward-compat shortcuts).

universe all tickers · cadence post-close daily

**[`dividend_yield`](https://tickerbot.io/docs/signals/dividend_yield.md)** — numeric

Forward dividend yield as a fraction (0.025 = 2.5%). Null for non-payers.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`enterprise_value`](https://tickerbot.io/docs/signals/enterprise_value.md)** — bigint

Market cap + total debt − cash.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`ev_to_ebitda`](https://tickerbot.io/docs/signals/ev_to_ebitda.md)** — numeric

`enterprise_value` ÷ `ebitda`. Capital-structure-neutral profitability multiple.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`ev_to_sales`](https://tickerbot.io/docs/signals/ev_to_sales.md)** — numeric

`enterprise_value` ÷ `revenue_ttm`. Capital-structure-neutral revenue multiple.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`forward_pe`](https://tickerbot.io/docs/signals/forward_pe.md)** — numeric

Forward price-to-earnings ratio using next-12m consensus EPS. Lower = cheaper on forward basis.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`market_cap`](https://tickerbot.io/docs/signals/market_cap.md)** — bigint

Market capitalization. Updated daily; intraday change derived from `price` × `shares_outstanding`.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`pe_ratio`](https://tickerbot.io/docs/signals/pe_ratio.md)** — numeric

Price-to-earnings ratio (trailing twelve months). Null for unprofitable issuers.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`peg_ratio`](https://tickerbot.io/docs/signals/peg_ratio.md)** — numeric

PE ratio divided by EPS growth rate. Sparsely populated — PEG is only computed for tickers with positive earnings growth and analyst coverage.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`price_to_book`](https://tickerbot.io/docs/signals/price_to_book.md)** — numeric

Current price ÷ `book_value`. Common value-investing metric.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`price_to_cash_flow`](https://tickerbot.io/docs/signals/price_to_cash_flow.md)** — numeric

Current price ÷ operating cash flow per share. Less manipulable than P/E.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`price_to_free_cash_flow`](https://tickerbot.io/docs/signals/price_to_free_cash_flow.md)** — numeric

Current price ÷ `free_cash_flow` per share. Strictest cash-based valuation.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`price_to_sales`](https://tickerbot.io/docs/signals/price_to_sales.md)** — numeric

Current price ÷ `revenue_per_share_ttm`. Often used when companies have no earnings.

universe all tickers · history full · since 2010 · cadence post-close daily · intervals 1d

**[`high_beta`](https://tickerbot.io/docs/signals/high_beta.md)** — classification · flag

Beta above 1.5: moves more than the market.

Definition: `beta > 2.0.`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`high_dividend_yield`](https://tickerbot.io/docs/signals/high_dividend_yield.md)** — classification · flag

Dividend yield above 4%.

Definition: `dividend_yield >= 0.04.`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

**[`large_cap`](https://tickerbot.io/docs/signals/large_cap.md)** — classification · flag

Market cap between $10B and $200B.

Definition: `market_cap >= 10B AND market_cap < 200B.`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

**[`low_beta`](https://tickerbot.io/docs/signals/low_beta.md)** — state · flag

Beta below 0.5 — moves much less than the market.

Definition: `beta < 0.5`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`mega_cap`](https://tickerbot.io/docs/signals/mega_cap.md)** — classification · flag

Market cap above $200B.

Definition: `market_cap >= 200B.`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

**[`micro_cap`](https://tickerbot.io/docs/signals/micro_cap.md)** — state · flag

Market cap between $50M and $300M.

Definition: `50e6 ≤ market_cap < 300e6`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`mid_cap`](https://tickerbot.io/docs/signals/mid_cap.md)** — classification · flag

Market cap between $2B and $10B.

Definition: `market_cap >= 2B AND market_cap < 10B.`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`nano_cap`](https://tickerbot.io/docs/signals/nano_cap.md)** — state · flag

Market cap below $50M.

Definition: `market_cap < 50e6`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

**[`small_cap`](https://tickerbot.io/docs/signals/small_cap.md)** — classification · flag

Market cap between $300M and $2B.

Definition: `market_cap >= 300M AND market_cap < 2B.`

universe all tickers · history partial · cadence post-close daily · intervals 1d · firing continuous

**[`value_stock`](https://tickerbot.io/docs/signals/value_stock.md)** — classification · flag

Trades at a value-style P/E.

Definition: `pe_ratio > 0 AND pe_ratio < 15.`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

### Share structure & ownership

How the equity is divided and held: share counts, float and its tags, insider/institutional ownership, ETF holders.

**[`basic_average_shares`](https://tickerbot.io/docs/signals/basic_average_shares.md)** — bigint

Weighted-average basic shares outstanding for the quarter. Denominator for basic EPS.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`diluted_average_shares`](https://tickerbot.io/docs/signals/diluted_average_shares.md)** — bigint

Weighted-average diluted shares outstanding for the quarter. Denominator for diluted EPS.

universe all tickers · history full · since 2009 · cadence post-close daily · intervals 1d

**[`etf_holders`](https://tickerbot.io/docs/signals/etf_holders.md)** — text[]

ETFs that hold this ticker, ordered by the ticker's weight within each (the reverse of ETF holdings). Filter with array operators in /v2/scan, e.g. `'SPY' = ANY(etf_holders)` to find SPY constituents. Refreshed nightly post-close.

universe all tickers · cadence post-close daily

**[`float_shares`](https://tickerbot.io/docs/signals/float_shares.md)** — bigint

Public float (shares available to trade).

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`free_float_percent`](https://tickerbot.io/docs/signals/free_float_percent.md)** — numeric

Percent of shares outstanding actually available for trading (excludes insider / restricted holdings).

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`percent_insiders`](https://tickerbot.io/docs/signals/percent_insiders.md)** — numeric

Percent of shares held by company insiders (executives, directors, founders).

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`percent_institutions`](https://tickerbot.io/docs/signals/percent_institutions.md)** — numeric

Percent of shares held by institutional investors (mutual funds, ETFs, pensions).

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`shares_outstanding`](https://tickerbot.io/docs/signals/shares_outstanding.md)** — bigint

Total shares outstanding.

universe all tickers · cadence post-close daily

**[`weighted_shares_outstanding`](https://tickerbot.io/docs/signals/weighted_shares_outstanding.md)** — bigint

Weighted shares outstanding from the latest 10-Q / 10-K. Used by `market_cap = price × weighted_shares_outstanding`.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`low_float`](https://tickerbot.io/docs/signals/low_float.md)** — classification · flag

Public float under 50 million shares.

Definition: `float_shares < 10,000,000.`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`ultra_low_float`](https://tickerbot.io/docs/signals/ultra_low_float.md)** — state · flag

Float below 5M shares — extremely thin supply.

Definition: `float_shares < 5e6`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

### Short interest

Short positioning: readings, ratios, days-to-cover, and their flags.

**[`days_to_cover`](https://tickerbot.io/docs/signals/days_to_cover.md)** — numeric

Short interest divided by 30-day average daily volume. Trader’s "how many days of normal trading to cover all shorts" measure.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`short_interest`](https://tickerbot.io/docs/signals/short_interest.md)** — bigint

Raw shares-shorted count as last reported (FINRA bi-monthly). Pair with `short_interest_settlement_date` (profile.ts) for the as-of date.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`short_interest_settlement_date`](https://tickerbot.io/docs/signals/short_interest_settlement_date.md)** — date

Settlement date of the most recent short-interest report.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`short_percent_of_float`](https://tickerbot.io/docs/signals/short_percent_of_float.md)** — numeric

Short interest as a fraction of the free float. 0.10 = 10% of float is short.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`short_volume_ratio`](https://tickerbot.io/docs/signals/short_volume_ratio.md)** — numeric

Share of the day's volume executed as short sales (0–1).

universe all tickers · cadence post-close daily

**[`high_short_interest`](https://tickerbot.io/docs/signals/high_short_interest.md)** — state · flag

More than 20% of the float is sold short.

Definition: `short_percent_of_float > 20`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`short_volume_spike`](https://tickerbot.io/docs/signals/short_volume_spike.md)** — state · flag

More than 60% of the day's volume was executed as short sales.

Definition: `short_volume_ratio > 0.60`

universe all tickers · cadence post-close daily · firing continuous

## Events

What happened or is scheduled to happen to the company: earnings, dividends, IPOs, share-capital changes, insider transactions.

### Earnings

The earnings calendar and its outcomes: dates, windows, surprises, streaks.

**[`days_to_earnings`](https://tickerbot.io/docs/signals/days_to_earnings.md)** — integer

Calendar days until next earnings announcement. Negative after report.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`earnings_beat_streak`](https://tickerbot.io/docs/signals/earnings_beat_streak.md)** — integer

Consecutive quarters the company has beaten consensus EPS estimates. Resets to 0 on a miss.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`earnings_date`](https://tickerbot.io/docs/signals/earnings_date.md)** — date

Next scheduled earnings announcement date. Null if not scheduled.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`earnings_fiscal_quarter`](https://tickerbot.io/docs/signals/earnings_fiscal_quarter.md)** — text

Fiscal quarter the next earnings report covers (e.g. "2026Q1"). Distinct from calendar quarter — covers companies whose fiscal year doesn't match the calendar.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`earnings_report_time`](https://tickerbot.io/docs/signals/earnings_report_time.md)** — text

When in the trading day the next earnings will be reported. One of `BMO` (before market open), `AMC` (after market close), `DMH` (during market hours).

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`last_earnings_surprise`](https://tickerbot.io/docs/signals/last_earnings_surprise.md)** — numeric

`last_reported_eps − last_eps_estimate`. Signed; positive = beat.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`last_earnings_surprise_pct`](https://tickerbot.io/docs/signals/last_earnings_surprise_pct.md)** — numeric

Beat as percent of consensus.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`last_reported_eps`](https://tickerbot.io/docs/signals/last_reported_eps.md)** — numeric

Actual EPS reported in the most recent earnings announcement.

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d

**[`earnings_approaching`](https://tickerbot.io/docs/signals/earnings_approaching.md)** — state · flag

Earnings within 3 days.

Definition: `days_to_earnings = 3 (exactly three days before the scheduled earnings date)`

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d · firing continuous

**[`earnings_next_week`](https://tickerbot.io/docs/signals/earnings_next_week.md)** — state · flag

Earnings 8–14 days out — useful for the lead-up swing window.

Definition: `days_to_earnings >= 8 AND days_to_earnings <= 14`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`earnings_published`](https://tickerbot.io/docs/signals/earnings_published.md)** — state · flag

Earnings report date has passed (next earnings date is in the past).

Definition: `days_to_earnings <= 0`

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d · firing continuous

**[`earnings_this_week`](https://tickerbot.io/docs/signals/earnings_this_week.md)** — state · flag

Earnings announcement scheduled in the next 7 days.

Definition: `0 <= days_to_earnings <= 7. Sourced from the forward earnings calendar plus the historical earnings table.`

universe all tickers · history has gaps · cadence post-close daily · intervals 1d · firing continuous

**[`earnings_today`](https://tickerbot.io/docs/signals/earnings_today.md)** — event · flag

Earnings reported today.

Definition: `EXISTS(ticker_earnings_history row with reported_date = today). Both pre-market and post-market reports count.`

universe all tickers · history has gaps · cadence post-close daily · intervals 1m/1h/1d · firing sticky

**[`earnings_tomorrow`](https://tickerbot.io/docs/signals/earnings_tomorrow.md)** — state · flag

Earnings reported in 1 calendar day. Pair with `earnings_report_time` to know BMO vs. AMC.

Definition: `days_to_earnings = 1`

universe all tickers · history full · since 2003 · cadence post-close daily · intervals 1d · firing continuous

**[`recently_reported_earnings`](https://tickerbot.io/docs/signals/recently_reported_earnings.md)** — state · flag

Reported earnings within the last 5 days.

Definition: `EXISTS(ticker_earnings_history row with reported_date in [today - 5d, today - 1d]). Captures the post-earnings reaction window.`

universe all tickers · history has gaps · cadence post-close daily · intervals 1d · firing continuous

### Dividends

Dividend amount, schedule, and approach flags.

**[`dividend`](https://tickerbot.io/docs/signals/dividend.md)** — numeric

Most-recent dividend amount per share.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`dividend_date`](https://tickerbot.io/docs/signals/dividend_date.md)** — date

Date of the most-recent dividend payment.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`dividend_frequency`](https://tickerbot.io/docs/signals/dividend_frequency.md)** — integer

Payment frequency: `quarterly`, `monthly`, `semiannual`, `annual`.

universe all tickers · history full · since 2004 · cadence post-close daily · intervals 1d

**[`dividend_approaching`](https://tickerbot.io/docs/signals/dividend_approaching.md)** — state · flag

The ex-dividend date falls within the next 7 days.

Definition: `ex_dividend_date between today and today + 7d`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

### IPOs

IPO dates and status, from pending through recently listed.

**[`ipo_date`](https://tickerbot.io/docs/signals/ipo_date.md)** — date

Date of the company's IPO, when known.

universe all tickers · cadence end of day

**[`ipo_in_7d`](https://tickerbot.io/docs/signals/ipo_in_7d.md)** — state · flag

A firm IPO listing date falls within the next 7 days.

Definition: `IPO calendar listing date within 7 days`

universe all tickers · cadence end of day · firing continuous

**[`pending_ipo`](https://tickerbot.io/docs/signals/pending_ipo.md)** — state · flag

The ticker is in the IPO calendar but has not started trading.

Definition: `in the IPO calendar, pre-first-trade`

universe all tickers · cadence end of day · firing continuous

**[`recently_ipoed`](https://tickerbot.io/docs/signals/recently_ipoed.md)** — state · flag

The company listed within the last 90 days.

Definition: `list_date >= today − 90d`

universe all tickers · cadence post-close daily · firing continuous

### Splits & share changes

Events that alter share count or float: splits, buybacks, dilution.

**[`float_effective_date`](https://tickerbot.io/docs/signals/float_effective_date.md)** — date

As-of date for the current float-shares figure.

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`buyback_30d`](https://tickerbot.io/docs/signals/buyback_30d.md)** — state · flag

Shares outstanding fell more than 1% over the last 30 days.

Definition: `shares_outstanding < 30d-ago × 0.99`

universe all tickers · cadence post-close daily · firing continuous

**[`dilution_30d`](https://tickerbot.io/docs/signals/dilution_30d.md)** — state · flag

Shares outstanding rose more than 3% over the last 30 days.

Definition: `shares_outstanding > 30d-ago × 1.03`

universe all tickers · cadence post-close daily · firing continuous

**[`split_recent`](https://tickerbot.io/docs/signals/split_recent.md)** — state · flag

A stock split occurred in the last 7 days or is scheduled within 14 days.

Definition: `split execution_date between today − 7d and today + 14d`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

### Insider activity

Insider (Form 4) transaction flags: C-suite buys and sells, clustered buying.

**[`insider_c_suite_buy`](https://tickerbot.io/docs/signals/insider_c_suite_buy.md)** — state · flag

A C-suite insider (CEO/CFO/COO/President/Chair) bought shares in the last 7 days.

Definition: `insider acquisition within 7d by an insider titled CEO, CFO, COO, President, Chairman, or Director`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing sticky

**[`insider_c_suite_sell`](https://tickerbot.io/docs/signals/insider_c_suite_sell.md)** — state · flag

A C-suite insider (CEO/CFO/COO/President/Chair) sold shares in the last 7 days.

Definition: `insider disposal by a C-suite title within 7d`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing sticky

**[`insider_cluster_buy`](https://tickerbot.io/docs/signals/insider_cluster_buy.md)** — state · flag

Two or more distinct insiders bought shares in the last 14 days.

Definition: `count(distinct insider buyers) ≥ 2 within 14d`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing sticky

## Profile

Who and what the security is: categorical classification and identity data. Lookup information, not signals.

### Classification

Categorical facts: sector, industry, SIC, exchange, country, currency, asset class and sub-class.

**[`asset_class`](https://tickerbot.io/docs/signals/asset_class.md)** — text

Asset class of the ticker: stocks, rates, crypto, or fx.

universe all tickers · cadence post-close daily

**[`asset_type`](https://tickerbot.io/docs/signals/asset_type.md)** — text

Asset class. One of `equity`, `etf`, or `crypto`.

universe all tickers · cadence post-close daily

**[`country`](https://tickerbot.io/docs/signals/country.md)** — text

ISO country code of the issuer.

universe all tickers · cadence post-close daily

**[`currency_name`](https://tickerbot.io/docs/signals/currency_name.md)** — text

Currency the prices are quoted in (`usd`, `eur`, `gbp`, etc.). Effectively always `usd` for US-listed equities.

universe all tickers · cadence post-close daily

**[`exchange`](https://tickerbot.io/docs/signals/exchange.md)** — text

Primary listing exchange, human-readable name — e.g. `NASDAQ`, `NYSE`, `NYSE Arca`, `Cboe BZX`, `NYSE American`. See `exchange_mic` for the raw ISO 10383 code. Null for a small number of delisted/edge names.

universe all tickers · cadence post-close daily

**[`exchange_mic`](https://tickerbot.io/docs/signals/exchange_mic.md)** — text

Primary listing exchange as an ISO 10383 **MIC code**: `XNAS` = NASDAQ, `XNYS` = NYSE, `ARCX` = NYSE Arca, `BATS` = Cboe BZX, `XASE` = NYSE American. The `?exchange=` filter accepts either this code or the human name.

universe all tickers · cadence post-close daily

**[`industry`](https://tickerbot.io/docs/signals/industry.md)** — text

GICS industry within the sector.

universe all tickers · cadence post-close daily

**[`sector`](https://tickerbot.io/docs/signals/sector.md)** — text

GICS sector. One of: Technology, Healthcare, Financials, Consumer Discretionary, Consumer Staples, Energy, Industrials, Materials, Utilities, Real Estate, Communication Services.

universe all tickers · cadence post-close daily

**[`sic_code`](https://tickerbot.io/docs/signals/sic_code.md)** — text

SIC code — the SEC's Standard Industrial Classification for the company's industry.

universe all tickers · cadence post-close daily

**[`sic_description`](https://tickerbot.io/docs/signals/sic_description.md)** — text

Plain-text label for the company's SIC industry code.

universe all tickers · cadence post-close daily

**[`ticker_category`](https://tickerbot.io/docs/signals/ticker_category.md)** — text

Sub-class within an asset class, e.g. treasury_curve or policy_rate.

universe all tickers · cadence post-close daily

### Identifiers & reference

Which company this is: name, IDs (CIK, FIGI), listing status, contact, branding, employees.

**[`address_address1`](https://tickerbot.io/docs/signals/address_address1.md)** — text

Company headquarters street address.

universe all tickers · cadence post-close daily

**[`address_city`](https://tickerbot.io/docs/signals/address_city.md)** — text

Company headquarters city.

universe all tickers · cadence post-close daily

**[`address_postal_code`](https://tickerbot.io/docs/signals/address_postal_code.md)** — text

Company headquarters postal code.

universe all tickers · cadence post-close daily

**[`address_state`](https://tickerbot.io/docs/signals/address_state.md)** — text

Company headquarters state or region.

universe all tickers · cadence post-close daily

**[`branding_icon_url`](https://tickerbot.io/docs/signals/branding_icon_url.md)** — text

URL of the company's square icon image.

universe all tickers · cadence post-close daily

**[`branding_logo_url`](https://tickerbot.io/docs/signals/branding_logo_url.md)** — text

URL of the company's logo image.

universe all tickers · cadence post-close daily

**[`cik`](https://tickerbot.io/docs/signals/cik.md)** — text

SEC Central Index Key — the company's identifier in EDGAR filings.

universe all tickers · cadence post-close daily

**[`composite_figi`](https://tickerbot.io/docs/signals/composite_figi.md)** — text

Composite FIGI — Bloomberg's cross-exchange security identifier.

universe all tickers · cadence post-close daily

**[`description`](https://tickerbot.io/docs/signals/description.md)** — text

Business description of the company.

universe all tickers · cadence post-close daily

**[`homepage_url`](https://tickerbot.io/docs/signals/homepage_url.md)** — text

Company homepage URL.

universe all tickers · cadence post-close daily

**[`inactive_at`](https://tickerbot.io/docs/signals/inactive_at.md)** — timestamp without time zone

When the ticker was marked inactive.

universe all tickers · cadence 1 min · mkt hrs

**[`inactive_reason`](https://tickerbot.io/docs/signals/inactive_reason.md)** — text

Why the ticker was marked inactive (e.g. delisted, stale data).

universe all tickers · cadence 1 min · mkt hrs

**[`list_date`](https://tickerbot.io/docs/signals/list_date.md)** — text

Date the symbol was first listed on its exchange.

universe all tickers · cadence post-close daily

**[`name`](https://tickerbot.io/docs/signals/name.md)** — text

Company or asset display name.

universe all tickers · cadence post-close daily

**[`phone_number`](https://tickerbot.io/docs/signals/phone_number.md)** — text

Company contact phone number.

universe all tickers · cadence post-close daily

**[`round_lot`](https://tickerbot.io/docs/signals/round_lot.md)** — integer

Standard trading lot size for the symbol.

universe all tickers · cadence post-close daily

**[`share_class_figi`](https://tickerbot.io/docs/signals/share_class_figi.md)** — text

Share-class FIGI — Bloomberg identifier for this specific share class.

universe all tickers · cadence post-close daily

**[`ticker_root`](https://tickerbot.io/docs/signals/ticker_root.md)** — text

Root symbol — the base ticker without class or suffix modifiers.

universe all tickers · cadence post-close daily

**[`total_employees`](https://tickerbot.io/docs/signals/total_employees.md)** — integer

Number of full-time employees as last reported. Useful for size-based filters ("small-cap by employee count").

universe all tickers · history recent only · cadence post-close daily · intervals 1d

**[`active`](https://tickerbot.io/docs/signals/active.md)** — state · flag

Ticker is actively traded — not delisted or halted.

Definition: `active = true`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1d · firing continuous

## Analyst ratings

Third-party analyst judgment: the consensus, individual firm actions, price targets, and forward estimates.

### Consensus ratings

The aggregate analyst opinion: consensus rating, the buy/hold/sell distribution, coverage depth.

**[`analyst_consensus_rating`](https://tickerbot.io/docs/signals/analyst_consensus_rating.md)** — text

Consensus analyst rating across contributing firms. One of `strong buy`, `buy`, `hold`, `sell`, `strong sell`. NULL for tickers without analyst coverage.

universe all tickers · cadence hourly

**[`analyst_consensus_rating_value`](https://tickerbot.io/docs/signals/analyst_consensus_rating_value.md)** — numeric

Consensus rating as a numeric score on the standard 1–5 scale (1 = strong buy, 5 = strong sell). Lower is more bullish.

universe all tickers · cadence hourly

**[`analyst_count_buy`](https://tickerbot.io/docs/signals/analyst_count_buy.md)** — integer

Number of contributing firms rating the ticker as buy.

universe all tickers · cadence hourly

**[`analyst_count_hold`](https://tickerbot.io/docs/signals/analyst_count_hold.md)** — integer

Number of contributing firms rating the ticker as hold (neutral).

universe all tickers · cadence hourly

**[`analyst_count_sell`](https://tickerbot.io/docs/signals/analyst_count_sell.md)** — integer

Number of contributing firms rating the ticker as sell.

universe all tickers · cadence hourly

**[`analyst_count_strong_buy`](https://tickerbot.io/docs/signals/analyst_count_strong_buy.md)** — integer

Number of contributing firms rating the ticker as strong buy.

universe all tickers · cadence hourly

**[`analyst_count_strong_sell`](https://tickerbot.io/docs/signals/analyst_count_strong_sell.md)** — integer

Number of contributing firms rating the ticker as strong sell.

universe all tickers · cadence hourly

**[`analyst_count_total`](https://tickerbot.io/docs/signals/analyst_count_total.md)** — integer

Total number of contributing firms covering the ticker with any rating. Sum of the five `analyst_count_*` buckets. `well_covered` fires when this is at least 10.

universe all tickers · cadence hourly

**[`analyst_count_with_target`](https://tickerbot.io/docs/signals/analyst_count_with_target.md)** — integer

Number of contributing firms whose rating includes a published 12-month price target. Always ≤ `analyst_count_total`.

universe all tickers · cadence hourly

**[`bearish_consensus`](https://tickerbot.io/docs/signals/bearish_consensus.md)** — state · flag

Consensus analyst rating is `sell` or `strong sell`.

Definition: `analyst_consensus_rating IN ('sell', 'strong sell')`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`bullish_consensus`](https://tickerbot.io/docs/signals/bullish_consensus.md)** — state · flag

Consensus analyst rating is `strong buy` or `buy`.

Definition: `analyst_consensus_rating IN ('strong buy', 'buy')`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`well_covered`](https://tickerbot.io/docs/signals/well_covered.md)** — classification · flag

Ten or more analyst firms cover the ticker.

Definition: `analyst_count_total >= 10`

universe all tickers · cadence post-close daily · firing continuous

### Upgrades & downgrades

Individual firm actions: rating changes, initiations, and price-target changes.

**[`last_rating_action`](https://tickerbot.io/docs/signals/last_rating_action.md)** — text

Action taken in the most recent rating change. Common values: `upgrades`, `downgrades`, `initiates_coverage_on`, `maintains`, `reiterates`, `assumes`, `reinstates`, `suspends`.

universe all tickers · cadence hourly

**[`last_rating_date`](https://tickerbot.io/docs/signals/last_rating_date.md)** — date

Date of the most recent rating action across all firms covering the ticker.

universe all tickers · cadence hourly

**[`last_rating_firm`](https://tickerbot.io/docs/signals/last_rating_firm.md)** — text

Name of the firm that issued the most recent rating action.

universe all tickers · cadence hourly

**[`recent_downgrade`](https://tickerbot.io/docs/signals/recent_downgrade.md)** — state · flag

At least one analyst downgraded the ticker in the last 7 days.

Definition: `EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND action = 'downgrades' AND timestamp >= NOW() - INTERVAL '7 days')`

universe all tickers · history recent only · cadence 15 min · intervals 1d · firing continuous

**[`recent_initiation`](https://tickerbot.io/docs/signals/recent_initiation.md)** — state · flag

At least one analyst initiated coverage in the last 7 days.

Definition: `EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND action = 'initiates_coverage_on' AND timestamp >= NOW() - INTERVAL '7 days')`

universe all tickers · history never fired yet · cadence 15 min · intervals 1d · firing continuous

**[`recent_target_lower`](https://tickerbot.io/docs/signals/recent_target_lower.md)** — state · flag

At least one analyst lowered their price target in the last 7 days.

Definition: `EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND price_target_action = 'lowers' AND timestamp >= NOW() - INTERVAL '7 days')`

universe all tickers · cadence 15 min · firing continuous

**[`recent_target_raise`](https://tickerbot.io/docs/signals/recent_target_raise.md)** — state · flag

At least one analyst raised their price target in the last 7 days.

Definition: `EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND price_target_action = 'raises' AND timestamp >= NOW() - INTERVAL '7 days')`

universe all tickers · cadence 15 min · firing continuous

**[`recent_upgrade`](https://tickerbot.io/docs/signals/recent_upgrade.md)** — state · flag

At least one analyst upgraded the ticker in the last 7 days.

Definition: `EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND action = 'upgrades' AND timestamp >= NOW() - INTERVAL '7 days')`

universe all tickers · history recent only · cadence 15 min · intervals 1d · firing continuous

### Price targets

Where analysts say it's going: consensus/high/low targets and price-versus-target state.

**[`analyst_consensus_target_price`](https://tickerbot.io/docs/signals/analyst_consensus_target_price.md)** — numeric

Mean of contributing analysts' 12-month price targets.

universe all tickers · cadence hourly

**[`analyst_target_price_high`](https://tickerbot.io/docs/signals/analyst_target_price_high.md)** — numeric

Highest single-analyst 12-month price target across contributing firms.

universe all tickers · cadence hourly

**[`analyst_target_price_low`](https://tickerbot.io/docs/signals/analyst_target_price_low.md)** — numeric

Lowest single-analyst 12-month price target across contributing firms.

universe all tickers · cadence hourly

**[`analyst_target_upside_pct`](https://tickerbot.io/docs/signals/analyst_target_upside_pct.md)** — numeric

Implied upside from the current price to the consensus target, in percent. `(analyst_consensus_target_price - price) / price * 100`. Negative when price is above target. Recomputed every minute during market hours.

universe all tickers · cadence hourly

**[`above_price_target`](https://tickerbot.io/docs/signals/above_price_target.md)** — state · flag

Current price is above the consensus analyst target.

Definition: `price > analyst_consensus_target_price`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`below_price_target`](https://tickerbot.io/docs/signals/below_price_target.md)** — state · flag

Current price is below the consensus analyst target.

Definition: `price < analyst_consensus_target_price`

universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous

**[`target_downside_above_10pct`](https://tickerbot.io/docs/signals/target_downside_above_10pct.md)** — state · flag

Current price is more than 10% above the consensus target — significant implied downside.

Definition: `analyst_target_upside_pct < -10`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`target_upside_above_10pct`](https://tickerbot.io/docs/signals/target_upside_above_10pct.md)** — state · flag

Consensus price target implies more than 10% upside from the current price.

Definition: `analyst_target_upside_pct > 10`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

**[`target_upside_above_25pct`](https://tickerbot.io/docs/signals/target_upside_above_25pct.md)** — state · flag

Consensus price target implies more than 25% upside from the current price.

Definition: `analyst_target_upside_pct > 25`

universe all tickers · cadence 1 min · mkt hrs · firing continuous

### Estimates

What analysts say it will earn: forward EPS/revenue estimates and their revisions.

**[`eps_estimate_revision_down_30d`](https://tickerbot.io/docs/signals/eps_estimate_revision_down_30d.md)** — integer

Count of analysts who lowered their next-quarter EPS estimate in the last 30 days.

universe all tickers · cadence post-close daily

**[`eps_estimate_revision_up_30d`](https://tickerbot.io/docs/signals/eps_estimate_revision_up_30d.md)** — integer

Count of analysts who raised their next-quarter EPS estimate in the last 30 days. A positive read on forward sentiment momentum.

universe all tickers · cadence post-close daily

**[`last_eps_estimate`](https://tickerbot.io/docs/signals/last_eps_estimate.md)** — numeric

Consensus EPS estimate going into the most recent earnings announcement.

universe all tickers · cadence post-close daily

**[`next_eps_estimate`](https://tickerbot.io/docs/signals/next_eps_estimate.md)** — numeric

Wall Street consensus EPS estimate for the next reported quarter — weighted average across analyst contributors.

universe all tickers · cadence post-close daily

**[`next_eps_estimate_high`](https://tickerbot.io/docs/signals/next_eps_estimate_high.md)** — numeric

Highest single-analyst EPS estimate for the next reported quarter.

universe all tickers · cadence post-close daily

**[`next_eps_estimate_low`](https://tickerbot.io/docs/signals/next_eps_estimate_low.md)** — numeric

Lowest single-analyst EPS estimate for the next reported quarter.

universe all tickers · cadence post-close daily

**[`next_revenue_estimate`](https://tickerbot.io/docs/signals/next_revenue_estimate.md)** — bigint

Wall Street consensus revenue estimate (USD, full dollars) for the next reported quarter.

universe all tickers · cadence post-close daily

**[`estimate_revised_down`](https://tickerbot.io/docs/signals/estimate_revised_down.md)** — state · flag

At least one analyst lowered their next-quarter EPS estimate in the last 30 days.

Definition: `eps_estimate_revision_down_30d > eps_estimate_revision_up_30d AND total 30d revisions (up + down) >= 3`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`estimate_revised_up`](https://tickerbot.io/docs/signals/estimate_revised_up.md)** — state · flag

At least one analyst raised their next-quarter EPS estimate in the last 30 days.

Definition: `eps_estimate_revision_up_30d > eps_estimate_revision_down_30d AND total 30d revisions (up + down) >= 3`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`high_earnings_estimate`](https://tickerbot.io/docs/signals/high_earnings_estimate.md)** — classification · flag

Consensus next-quarter EPS estimate exceeds an absolute $1.00 per share threshold.

Definition: `next_eps_estimate > 1.00`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

**[`loss_estimate`](https://tickerbot.io/docs/signals/loss_estimate.md)** — classification · flag

Analyst consensus expects negative EPS for the upcoming report.

Definition: `next_eps_estimate < 0`

universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous

**[`profitable_estimate`](https://tickerbot.io/docs/signals/profitable_estimate.md)** — classification · flag

Analyst consensus expects positive EPS for the upcoming report.

Definition: `next_eps_estimate > 0`

universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous

## News

Signals derived from news coverage: article volume and sentiment.

**[`news_volume`](https://tickerbot.io/docs/signals/news_volume.md)** — numeric

Count of news articles published in the last 24 hours mentioning this ticker with a relevance score ≥ 0.6. Refreshed every 15 minutes. Null when no qualifying articles in the window.

universe all tickers · cadence 15 min

**[`news_volume_weighted_sentiment`](https://tickerbot.io/docs/signals/news_volume_weighted_sentiment.md)** — numeric

Range -1.0 to +1.0. The relevance-weighted average sentiment of articles in the last 24 hours, attenuated by `tanh(news_volume / 15)` so quiet tickers (1-2 articles) read near zero regardless of sentiment sign. Strong negative = loud bad news; strong positive = loud good news; values near 0 = quiet or mixed. Null when no qualifying articles.

universe all tickers · cadence 15 min

---

The catalog is the built-in vocabulary, not the ceiling: custom signals (https://tickerbot.io/docs/endpoints/signals/custom.md) let you name a SQL expression over these columns and use it anywhere a built-in works.
