Signals
The column axis of the state table: 421+ computed signal columns on every ticker row, from raw price to RSI to insider activity. Each is referenceable by bare name across the entire API.
What a signal is
A computed column, not a raw feed.
A signal is one column of the computed state table: a value our pipeline derives from market data and keeps current across the 20,798+ tickers in the universe — NULL on rows it doesn't apply to. Some are the record itself (price, volume_today), most are computation on top of it — rsi_14, above_sma_200, relative_volume, insider_cluster_buy. 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. If you know a signal's name, you know how to use it everywhere it's carried.
Three tenses
Signal state is the noun; there are three ways to read it.
Live — the current row, recomputed on each column's own cadence, up to every minute. As-of — the row as it stood at a past moment, via ?asof= on the same reads. Webhook — the future tense: subscribe to a condition and get pushed when it 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.
The catalog
Every live signal, grouped by how far it is derived from the raw tape. Click any name for its full reference page — definition, cadence, history, and runnable queries.
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), and 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.
| Column | Type | Description |
|---|---|---|
ask | numeric | Best ask from the consolidated NBBO at the most recent snapshot tick. |
ask_size | integer | Round lots at the ask. Raw count — NOT multiplied by 100. |
bid | numeric | Best bid from the consolidated NBBO at the most recent snapshot tick. |
bid_size | integer | Round lots at the bid. Raw count — NOT multiplied by 100. Multiply by 100 to get share count. |
price | numeric | Most recent trade price. |
Latest bars
OHLC of the latest minute bar and the prior session's daily bar.
| Column | Type | Description |
|---|---|---|
min_close | numeric | Current minute bar’s most-recent close (last print). |
min_high | numeric | Current minute bar’s running high. |
min_low | numeric | Current minute bar’s running low. |
min_open | numeric | Current minute bar’s open. Updates every snapshot tick during market hours. |
prev_day_high | numeric | Previous trading day’s session high. |
prev_day_low | numeric | Previous trading day’s session low. |
prev_day_open | numeric | Previous trading day’s official open. |
previous_close | numeric | Official prior-session close. |
Session levels & position
Today's session levels (open, high, low) and where price sits relative to them and yesterday's landmarks.
| Column | Type | Description |
|---|---|---|
session_high | numeric | Highest trade so far today. |
session_low | numeric | Lowest trade so far today. |
session_open | numeric | Today’s opening print. |
above_premarket_high | state | Close above the pre-market session high.close > max(price[04:00..09:30]) |
above_session_open | state | Close above today’s session-open price.close > open_0930 |
above_yesterday_close | state | Close above the prior session’s close.close > close_prev |
above_yesterday_high | state | Close above the prior session’s intraday high.close > high_prev |
at_session_high | state | At today’s intraday session high (within tolerance).price >= session_high * 0.999 |
at_session_low | state | At today’s intraday session low (within tolerance).price <= session_low * 1.001 |
below_premarket_low | state | Close below the pre-market session low.close < min(price[04:00..09:30]) |
below_yesterday_low | state | Close below the prior session’s intraday low.close < low_prev |
tested_session_high_recent | state | Price touched today’s session high within the last 5 minutes.max(close, last 5 min) >= session_high * 0.999 |
tested_session_low_recent | state | Price touched today’s session low within the last 5 minutes.min(close, last 5 min) <= session_low * 1.001 |
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.
| Column | Type | Description |
|---|---|---|
days_since_52w_high | integer | Trading days since the most recent 52-week high. |
days_since_52w_low | integer | Trading days since the most recent 52-week low. |
high_20d | numeric | Highest trade in the trailing 20 trading days. |
high_20d_eod | numeric | Highest close over the last 20 trading sessions. Close-basis. For the intraday-wick variant use `at_20d_high`. |
high_52w | numeric | Highest trade in the trailing 52 weeks (live, includes today). |
high_52w_date | date | Date the trailing-52-week high was set. Useful for "fresh 52w highs in the last 30 days" scans. |
high_52w_eod | numeric | Highest close over the trailing 52 weeks. The `_eod` distinguishes from the canonical intraday `52_week_high` (which captures wicks). |
high_5d | numeric | Highest intraday high over the last 5 trading sessions, inclusive of the current session. |
high_5d_eod | numeric | Highest close over the last 5 trading sessions. Close-basis (no intraday wicks) — pair with `high_5d` to distinguish. |
last_20d_high_date | date | Date the trailing-20-day high was set. |
last_20d_low_date | date | Date the trailing-20-day low was set. |
low_20d | numeric | Lowest trade in the trailing 20 trading days. |
low_20d_eod | numeric | Lowest close over the last 20 trading sessions. Close-basis. |
low_52w | numeric | Lowest trade in the trailing 52 weeks (live, includes today). |
low_52w_date | date | Date the trailing-52-week low was set. |
low_52w_eod | numeric | Lowest close over the trailing 52 weeks. |
low_5d | numeric | Lowest intraday low over the last 5 trading sessions, inclusive of the current session. |
low_5d_eod | numeric | Lowest close over the last 5 trading sessions. Close-basis. |
pct_from_52w_high | numeric | Percent below the 52-week high. Always >= 0 (use the `at_52w_high` flag to test highs). |
pct_from_52w_low | numeric | Percent above the 52-week low. Always >= 0. |
position_in_52w_range | numeric | Where the live price sits in the 52-week range, 0–100. 0 = at low, 100 = at high. |
52_week_high | state | Price printed a new 52-week high today.high > max(high) over the prior 252 sessions |
52_week_low | state | Price printed a new 52-week low today.low < min(low) over the prior 252 sessions |
approaching_52w_high | state | Price is within 5% of the 52-week high.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 |
approaching_52w_low | state | Price is within 5% of the 52-week low.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 |
at_20d_high | state | Price is at or above the 20-day high.close >= high_20d |
at_20d_low | state | Price is at or below the 20-day low.close <= low_20d |
at_52w_high | state | Price is within 0.5% of the 52-week high.close >= high_52w |
at_52w_low | state | Price is within 0.5% of the 52-week low.close <= low_52w |
breaking_above_20d_high | event | Breaking above its 20-day high on elevated volume.Price at or above the 20-day high with session volume at least 2x the 10-day average. |
breaking_below_20d_low | event | Breaking below its 20-day low on elevated volume.Price at or below the 20-day low with session volume at least 2x the 10-day average. |
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.
| Column | Type | Description |
|---|---|---|
avg_volume_10d | bigint | 10-day trailing average daily volume. |
avg_volume_30d | bigint | 30-day trailing average daily volume. |
day_dollar_volume | numeric | Today’s cumulative dollar volume traded. |
min_day_accumulated_dollar_volume | numeric | Today’s cumulative dollar volume across the session so far. |
min_day_accumulated_volume | bigint | Today’s cumulative shares traded across the session so far (4 AM ET onward). |
min_dollar_volume | numeric | Current minute bar’s dollar volume (close × volume approximation). |
min_trade_count | integer | Current minute bar’s number of trades. |
min_volume | integer | Current minute bar’s accumulated shares traded. |
prev_day_volume | bigint | Previous trading day’s total volume (raw shares). |
volume_today | bigint | Shares traded so far today. |
Relative & unusual volume
Trading activity relative to baseline: relative volume, bursts, unusual-volume flags, liquidity conditions.
| Column | Type | Description |
|---|---|---|
relative_volume | numeric | Ratio of today’s pace-adjusted volume to the 10-day average. 2.0 means 2× normal. |
volume_change_vs_avg | numeric | Ratio of today’s pace-adjusted volume to its 10-day average. Numeric surface of the same denominator `relative_volume` uses. |
volume_trend_5d | text | Slope of daily volume regressed over the last 5 trading days. Positive = building, negative = drying. |
high_volume_alert | event | Today’s volume is at least 2× the 30-day average.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 |
illiquid | state | Thinly traded — 10-day average volume is under 100k shares.avg_volume_10d < 100000 |
low_volume_regime | state | This name is in a sustained quiet stretch.avg(volume, 10) <= 0.75 * avg_volume_10d |
quiet_minute | state | A sustained quiet stretch — 10-minute volume average well below recent baseline.avg(volume, 10m) < 0.5 * avg(volume, prior 30m) |
volume_burst_3x | event | Current minute volume ≥ 3× recent average.volume >= 3 * avg(volume, 30 min prior) |
volume_burst_5x | event | Current minute volume ≥ 5× recent average.volume >= 5 * avg(volume, 30 min prior) |
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.
| Column | Type | Description |
|---|---|---|
change_1m | numeric | Percent change vs. close ~21 trading days ago. Daily; see `change_1w` for note. |
change_1w | 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. |
change_1y | numeric | Percent change vs. close ~252 trading days ago. |
change_3m | numeric | Percent change vs. close ~63 trading days ago. |
change_6m | numeric | Percent change vs. close ~126 trading days ago. |
change_ytd | numeric | Percent change since the first trading day of the calendar year. |
day_change | numeric | Absolute change vs `previous_close`. |
day_change_pct | numeric | Percent change vs `previous_close`. Expressed as a decimal fraction (0.05 = 5%), not a whole percent. |
days_down | integer | Consecutive trading days closing lower than the prior close. Resets to 0 on an up day. |
days_up | integer | Consecutive trading days closing higher than the prior close. Resets to 0 on a down day. |
from_open_pc | numeric | Intraday: percent change from today’s session open to the latest snapshot price. Resets at session boundary. |
price_down_3pct | event | Intraday move of -3% or worse vs prior close.day_change_pct <= -3 |
price_up_3pct | event | Intraday move of 3%+ vs prior close.day_change_pct >= 3 |
top_gainer | state | Among the session's top 20 gainers.Ranks in the top 20 by day_change_pct among active tickers with price above $1 and session volume above 100k shares. |
top_loser | state | Among the session's top 20 losers.Ranks in the bottom 20 by day_change_pct among active tickers with price above $1 and session volume above 100k shares. |
Gaps
Opening gaps: size, direction, extremes, and intraday fill.
| Column | Type | Description |
|---|---|---|
gap | 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. |
gap_pct | numeric | Percent change of `session_open` vs `previous_close`. One value per session. |
gap_down | event | Today opened 3%+ below prior close.(close_prev - open) / close_prev >= 0.03 AND price still below close_prev (gap has not been reclaimed) |
gap_down_extreme | event | Today opened 10%+ below prior close.(close_prev - open) / close_prev >= 0.10 |
gap_filled_today | event | Today’s opening gap was closed by an intraday move.Opened with gap >= 0.5% AND intraday range straddled close_prev. |
gap_up | event | Today opened 3%+ above prior close.(open - close_prev) / close_prev >= 0.03 AND price still above close_prev (gap has not been filled negative) |
gap_up_extreme | event | Today opened 10%+ above prior close.(open - close_prev) / close_prev >= 0.10 |
Intraday momentum
Directional strength read straight off the session's bars: drives, drifts, spikes, rallies, exhaustion.
| Column | Type | Description |
|---|---|---|
afternoon_drift_up | state | Afternoon session net up.close_1600 > close_1200 |
last_hour_rally | event | Final hour of session net up.close_1600 > close_1500 * 1.005 |
last_hour_selloff | event | Final hour of session net down.close_1600 < close_1500 * 0.995 |
microspike_down | event | Single 1-minute candle return ≤ −1%.(close - open) / open <= -0.01 |
microspike_up | event | Single 1-minute candle return ≥ +1%.(close - open) / open >= 0.01 |
momentum | state | momentum present |
momentum_down | state | Sustained downward momentum on the daily bars.Three or more consecutive down days whose average daily move exceeds about 1%. |
momentum_exhaustion_down | event | Downward momentum showing signs of exhaustion.rsi_14 < 30 AND days_down >= 5 |
momentum_exhaustion_up | event | Upward momentum showing signs of exhaustion.rsi_14 > 70 AND days_up >= 5 |
momentum_strong_down | event | Strong downward momentum across multiple measures.days_down >= 3 AND volume_trend_5d = 'increasing' |
momentum_strong_up | event | Strong upward momentum across multiple measures.days_up >= 3 AND volume_trend_5d = 'increasing' |
momentum_up | state | Sustained upward momentum on the daily bars.Three or more consecutive up days whose average daily move exceeds about 1%. |
morning_strength | state | First two hours of session net positive.close_1130 > open_0930 |
opening_drive_down | event | First 5 minutes of session down < −0.5%.close_0935 < open_0930 * 0.995 |
opening_drive_up | event | First 5 minutes of session up > +0.5%.close_0935 > open_0930 * 1.005 |
pre_close_drift_down | event | Last 10 minutes before close net down.close_1600 < close_1550 |
pre_close_drift_up | event | Last 10 minutes before close net up.close_1600 > close_1550 |
pre_earnings_drift | state | Stock has moved ≥5% (absolute) over the trailing week with earnings within 7 days — a setup the literature shows often continues through the report.days_to_earnings BETWEEN 1 AND 7 AND ABS(change_1w) >= 0.05 |
rapid_move_down_5m | state | Price down more than −0.5% in the last 5 minutes.(close - close_5m_ago) / close_5m_ago <= -0.005 |
rapid_move_up_5m | state | Price up more than +0.5% in the last 5 minutes.(close - close_5m_ago) / close_5m_ago >= 0.005 |
three_down_hours | state | Three consecutive lower hourly closes.close < close_1h_ago < close_2h_ago < close_3h_ago |
three_up_hours | state | Three consecutive higher hourly closes.close > close_1h_ago > close_2h_ago > close_3h_ago |
Ranges & reversals
Range structures and their resolution: opening range, breaks, consolidation, pullbacks, reversals, unusual range width.
| Column | Type | Description |
|---|---|---|
above_opening_range | state | Price is trading above the first 15-minute opening-range high.close > or_high (OR = first 15 min after 09:30 ET) |
below_opening_range | state | Price is trading below the first 15-minute opening-range low.close < or_low (OR = first 15 min after 09:30 ET) |
consolidating_15m | state | Last 15 minutes traded in a tight range.high_15m - low_15m < 0.5 * ((max(close, 30m) - min(close, 30m)) / 15) (ATR-30m proxy, not true ATR) |
consolidation | state | Price is range-bound — the last 5 sessions span less than 5%.(max(high) − min(low)) / midpoint < 0.05 over 5 bars |
expanded_hourly_range | state | This hour’s range is unusually wide.(high - low) > 1.5 * atr_hourly_20 |
hourly_reversal_bearish | event | Higher high, lower close than the prior hour.high > high_1h_ago AND close < close_1h_ago |
hourly_reversal_bullish | event | Lower low, higher close than the prior hour.low < low_1h_ago AND close > close_1h_ago |
in_opening_range | state | Price is inside the first-hour high/low range.or_low <= price <= or_high (OR = first 15 min after 09:30 ET) |
narrow_hourly_range | state | This hour’s range is unusually narrow.(high - low) < 0.5 * atr_hourly_20 |
pullback | state | Pullback to the 20-day moving average within an uptrend.in_uptrend (sma_50 > sma_200 AND price > sma_200) AND price below the 20-day or 50-day SMA by < 2% AND price down >= 2% from the 5-day high. Live evaluation at minute resolution. |
range_break_15m_down | event | Broke below the prior 15-minute low.close < min(low, prior 15 min) |
range_break_15m_up | event | Broke above the prior 15-minute high.close > max(high, prior 15 min) |
range_expansion | event | Today's true range > 2 × ATR(14) with volume — direction-agnostic regime-change tag.true_range > 2 * atr_14 AND volume > 1.5 * avg_volume_10d AND volume > 100,000 |
repeated_test_of_high | state | Tested today’s session high three or more times — failed-breakout setup.Close within 0.1% of the session high (close >= session_high * 0.999) on at least 3 minutes this session. |
repeated_test_of_low | state | Tested today’s session low three or more times — failed-breakdown setup.Close within 0.1% of the session low (close <= session_low * 1.001) on at least 3 minutes this session. |
sticky_breakout | state | Latches on when price makes a 52-week high and stays on until the nightly reset — a persistent breakout tag.set on a 52-week-high breakout; reset each night |
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.
| Column | Type | Description |
|---|---|---|
day_vwap | numeric | Today’s session volume-weighted average price. |
ema_12 | numeric | 12-day EMA. Fast-side input of canonical MACD (`macd = ema_12 − ema_26`). |
ema_21 | numeric | 21-day EMA. Often paired with `ema_9` for short-trend bias; also serves as a dynamic-support reference. |
ema_26 | numeric | 26-day EMA. Slow-side input of canonical MACD (`macd = ema_12 − ema_26`). |
ema_9 | 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. |
min_vwap | numeric | Current minute bar’s volume-weighted average price. |
pct_from_sma_10 | numeric | Percent difference between current close and `sma_10`. Positive = above MA, negative = below. Continuous version of the `above_sma_10` boolean. |
pct_from_sma_100 | numeric | Percent difference between current close and `sma_100`. Daily-cadence because the slow MA changes slowly. |
pct_from_sma_20 | numeric | Percent difference between current close and `sma_20`. Continuous version of the `above_sma_20` boolean. |
pct_from_sma_200 | numeric | Percent distance from the 200-day SMA. Negative when price is below the average. |
pct_from_sma_50 | numeric | Percent distance from the 50-day SMA. Negative when price is below the average. |
pct_from_vwap | numeric | Percent distance from today’s VWAP. |
prev_day_vwap | numeric | Previous trading day’s session VWAP. |
sma_10 | numeric | 10-day simple moving average. |
sma_100 | numeric | 100-day simple moving average of close. Slower than `sma_50`, faster than `sma_200` — useful for intermediate-term trend. |
sma_20 | numeric | 20-day simple moving average. |
sma_200 | numeric | 200-day simple moving average. |
sma_50 | numeric | 50-day simple moving average. |
vwap | numeric | Daily volume-weighted average price from market open through the most recent print. Updates intraday with each new tick. |
above_sma_10 | state | Price is above the 10-day simple moving average.close > sma_10 |
above_sma_20 | state | Price is above the 20-day simple moving average.close > sma_20 |
above_sma_200 | state | Price is above the 200-day simple moving average.close > sma_200 |
above_sma_50 | state | Price is above the 50-day simple moving average.close > sma_50 |
above_vwap | state | Price is above today’s volume-weighted average price.close > vwap |
above_vwap_minute | state | Current price above session VWAP.close > vwap_session |
death_cross | event | 50-day SMA crossed below 200-day SMA today.Yesterday: sma_50 ≥ sma_200. Today: sma_50 < sma_200. |
death_regime | state | Long-term downtrend regime — 50-day SMA below 200-day SMA.sma_50 < sma_200 |
golden_cross | event | 50-day SMA crossed above 200-day SMA today.Yesterday: sma_50 ≤ sma_200. Today: sma_50 > sma_200. |
golden_regime | state | Long-term uptrend regime — 50-day SMA above 200-day SMA.sma_50 > sma_200 |
held_above_vwap_30m | state | Price has stayed above session VWAP without dipping for at least 30 minutes.close > vwap_session for every minute in the last 30 |
held_below_vwap_30m | state | Price has stayed below session VWAP without lifting for at least 30 minutes.close < vwap_session for every minute in the last 30 |
sma_10_crossed_above_50_today | state | The 10-day SMA crossed above the 50-day SMA today — a short-term bullish cross.sma_10 crossed above sma_50 vs. the prior session |
sma_10_crossed_below_50_today | state | The 10-day SMA crossed below the 50-day SMA today — a short-term bearish cross.sma_10 crossed below sma_50 vs. the prior session |
vwap_cross_down | event | Crossed below session VWAP this minute.close_prev_min >= vwap_session AND close < vwap_session |
vwap_cross_up | event | Crossed above session VWAP this minute.close_prev_min <= vwap_session AND close > vwap_session |
Oscillators
Bounded momentum oscillators: RSI and stochastics, with their threshold flags.
| Column | Type | Description |
|---|---|---|
rsi_14 | numeric | Relative Strength Index, 14-period. Range 0–100. |
rsi_7 | numeric | Relative Strength Index over 7 periods - a faster, more sensitive RSI. Range 0-100. |
stochastic_d | numeric | Stochastic oscillator %D: 3-period smoothing of %K. |
stochastic_k | numeric | Stochastic oscillator %K: where price sits within its recent high-low range, 0-100. |
rsi_overbought | state | RSI(14) is in overbought territory.rsi_14 > 70 |
rsi_oversold | state | RSI(14) is in oversold territory.rsi_14 < 30 |
Trend & direction
Trend direction and strength: MACD, ADX/±DI, SMA-based trend reads, and reversal composites.
| Column | Type | Description |
|---|---|---|
adx_14 | numeric | Average Directional Index (14-period): trend strength from 0 to 100. |
macd_histogram | numeric | MACD line minus signal. Positive when bullish, negative when bearish. |
macd_line | numeric | MACD line (12-EMA minus 26-EMA). |
macd_signal | numeric | MACD signal line (9-EMA of MACD line). |
minus_di | numeric | -DI (14-period): the bearish directional-movement component of the ADX system. |
plus_di | numeric | +DI (14-period): the bullish directional-movement component of the ADX system. |
trend_long | text | Long-term trend classification from `sma_200` slope. One of `uptrend`, `downtrend`, `sideways`. |
trend_medium | text | Medium-term trend classification from `sma_50` slope. One of `uptrend`, `downtrend`, `sideways`. |
trend_short | text | Short-term trend classification from short-MA slope. One of `uptrend`, `downtrend`, `sideways`. |
in_downtrend | state | Stacked downtrend across short, medium, and long horizons.close < sma_50 AND sma_50 < sma_200 |
in_uptrend | state | Stacked uptrend across short, medium, and long horizons.close > sma_50 AND sma_50 > sma_200 |
macd_above_signal | state | MACD line is above its signal line.macd > macd_signal |
macd_below_signal | state | MACD line is below its signal line.macd < macd_signal |
trend_reversal_bearish_today | event | Trend flipped from up to down today.Yesterday: sma_50 > sma_200. Today: macd_bearish AND rsi_14 < 50. |
trend_reversal_bullish_today | event | Trend flipped from down to up today.Yesterday: sma_50 < sma_200. Today: macd_bullish AND rsi_14 > 50. |
Volatility & bands
Volatility measures and deviation envelopes: ATR, Bollinger machinery, VWAP σ-bands.
| Column | Type | Description |
|---|---|---|
atr_14 | numeric | 14-day Average True Range. |
atr_percent | numeric | ATR(14) as a percent of price. Useful as a volatility filter. |
bollinger_lower | numeric | Lower Bollinger band (20-period, 2σ). |
bollinger_middle | numeric | 20-day SMA — the centerline of the Bollinger band. `bollinger_upper` and `bollinger_lower` are already documented; this fills in the missing middle. |
bollinger_pct_b | numeric | Position within Bollinger bands. 0 = at lower band, 1 = at upper band, >1 = outside. |
bollinger_upper | numeric | Upper Bollinger band (20-period, 2σ). |
bollinger_width | numeric | `(bollinger_upper − bollinger_lower) / bollinger_middle`. Normalized width — measures volatility regime. Narrow widths often precede expansion (see `bollinger_squeeze` in flags.ts). |
vwap_lower_band | numeric | VWAP − 2 standard deviations. Dynamic support reference. |
vwap_upper_band | numeric | VWAP + 2 standard deviations of intraday price action. Dynamic resistance reference. |
at_bollinger_lower | state | Price has reached the lower Bollinger band.abs(close - bb_lower) / close < 0.02 (within 2% of the lower band, above or below) |
at_bollinger_upper | state | Price has reached the upper Bollinger band.abs(close - bb_upper) / close < 0.02 (within 2% of the upper band, above or below) |
bollinger_squeeze | state | Bollinger band width compressed to a multi-week low — volatility is contracted.bollinger_width < 0.04 |
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.
| Column | Type | Description |
|---|---|---|
basic_earnings_per_share | numeric | Basic EPS for the most-recently reported quarter. Signed. |
benefits_costs_expenses | bigint | Benefits and post-employment costs line item, where reported. Mostly insurance / utility issuers. |
cost_of_revenue | bigint | Cost of goods sold for the quarter. |
costs_and_expenses | bigint | Total costs and expenses reported on the income statement (COGS + opex). |
diluted_eps_ttm | numeric | Trailing-12m diluted EPS. |
earnings_growth_yoy | numeric | Year-over-year EPS growth percent from the most recently reported quarter vs. the same quarter prior year. Signed; positive = growth. |
ebitda | bigint | Earnings before interest, taxes, depreciation, and amortization (TTM). |
eps | numeric | Earnings per share (trailing twelve months). |
gross_profit | bigint | `revenues − cost_of_revenue` for the quarter. |
gross_profit_ttm | bigint | Trailing-12m gross profit. |
income_loss_from_continuing_operations_after_tax | bigint | After-tax income from continuing operations for the quarter. |
income_loss_from_continuing_operations_before_tax | bigint | Pre-tax income from continuing operations for the quarter. |
income_tax_expense_benefit | bigint | Income tax expense (positive) or benefit (negative) for the quarter. |
income_tax_expense_benefit_deferred | bigint | Deferred portion of income tax. Rare line item. |
net_income_loss | bigint | Bottom-line net income/loss for the quarter. Signed. |
net_income_loss_attributable_to_noncontrolling_interest | bigint | Portion of net income attributable to minority owners of consolidated subsidiaries. Usually 0 for non-conglomerates. |
net_income_loss_attributable_to_parent | bigint | Net income attributable to the parent entity (excludes noncontrolling interest). |
net_income_loss_available_to_common_stockholders_basic | bigint | Net income available to common shareholders — numerator for basic EPS. |
nonoperating_income_loss | bigint | Non-operating income/loss (interest income, gains/losses on investments, etc.) for the quarter. Signed. |
operating_expenses | bigint | Sum of operating costs reported on the income statement for the quarter (excludes COGS). |
operating_income_loss | bigint | Operating income or loss for the quarter. Signed. |
research_and_development | bigint | R&D spend for the quarter. NULL for companies that don't report R&D as a line item. |
revenue_growth_yoy | numeric | Year-over-year revenue growth: most-recent quarter vs same quarter prior year. Signed; positive = growth. |
revenue_growth_yoy_quarterly | numeric | YoY quarterly revenue growth. Signed. |
revenue_per_share_ttm | numeric | Trailing-12m revenue divided by diluted shares outstanding. USD per share. |
revenue_ttm | bigint | Trailing-twelve-month revenue. |
revenues | bigint | Total revenue for the most-recently reported quarter, from filed income statements. |
selling_general_and_administrative_expenses | bigint | SG&A for the quarter. |
wages | bigint | Wages and salaries line item, where reported. Rare — most companies fold this into SG&A. |
Balance sheet
Balance-sheet lines as reported.
| Column | Type | Description |
|---|---|---|
accounts_payable | bigint | Trade payables to suppliers as of the quarter end. |
assets | bigint | Total assets on the balance sheet as of the most recently reported quarter. |
book_value | numeric | Trailing-12m book value per share. Computed from `equity_attributable_to_parent / diluted_average_shares`. |
cash_on_hand | bigint | Cash plus cash equivalents — the most-liquid balance-sheet line. |
current_assets | bigint | Assets expected to be converted to cash or used up within 12 months. |
current_liabilities | bigint | Liabilities due within 12 months — accounts payable, short-term debt, accrued expenses. |
equity | bigint | Total shareholders' equity. |
equity_attributable_to_noncontrolling_interest | bigint | Equity attributable to minority shareholders of consolidated subsidiaries. Usually 0 for non-conglomerates. |
equity_attributable_to_parent | bigint | Equity attributable to the parent entity's shareholders (excludes minority interest). |
fixed_assets | bigint | Property, plant, and equipment (PP&E), net of accumulated depreciation. |
inventory | bigint | Inventory on hand. NULL for service and financial companies that don't carry inventory. |
liabilities | bigint | Total liabilities on the balance sheet. |
liabilities_and_equity | bigint | Total liabilities + total equity. Should equal `assets` (balance-sheet identity). Documented for completeness — useful as a sanity check rather than a scan target. |
long_term_debt | bigint | Long-term debt obligations. Often NULL because issuers fold this into `noncurrent_liabilities` instead of breaking it out. |
noncurrent_assets | bigint | Long-lived assets — property, plant, equipment, intangibles, long-term investments. |
noncurrent_liabilities | bigint | Liabilities due beyond 12 months — long-term debt, deferred taxes, pension obligations. |
other_current_assets | bigint | Current assets not separately broken out (prepaid expenses, short-term receivables, etc.). |
other_current_liabilities | bigint | Current liabilities not separately broken out. |
other_noncurrent_assets | bigint | Non-current assets not separately broken out (intangibles, deferred tax assets, etc.). |
Cash flow
Cash-flow-statement lines and free cash flow.
| Column | Type | Description |
|---|---|---|
free_cash_flow | bigint | Operating cash flow minus capital expenditures. Cash the business generates above what it needs to maintain operations. |
net_cash_flow | bigint | Sum of operating + investing + financing cash flow — period change in cash. |
net_cash_flow_continuing | bigint | Total cash flow excluding discontinued operations. Rare line item — populated only for companies in active discontinued-ops winddown. |
net_cash_flow_from_financing_activities | bigint | Net cash from financing (debt, dividends, buybacks). |
net_cash_flow_from_financing_activities_continuing | bigint | Financing cash flow excluding discontinued operations. |
net_cash_flow_from_investing_activities | bigint | Net cash from investing activities (capex, acquisitions). Negative for net spend. |
net_cash_flow_from_investing_activities_continuing | bigint | Investing cash flow excluding discontinued operations. |
net_cash_flow_from_operating_activities | bigint | Net cash from operations for the quarter. |
net_cash_flow_from_operating_activities_continuing | bigint | Same as `net_cash_flow_from_operating_activities` but excludes discontinued operations. |
Margins & ratios
Ratios computed entirely from statement lines — margins, returns, liquidity, leverage. No market price in the formula.
| Column | Type | Description |
|---|---|---|
current_ratio | numeric | Current assets ÷ current liabilities. Short-term liquidity. >1 = able to cover short-term obligations from current assets. |
debt_to_equity | numeric | Total debt divided by total shareholders' equity. Common leverage ratio; lower = less leveraged. |
gross_margin | numeric | `gross_profit / revenues` for the quarter. |
operating_margin | numeric | `operating_income_loss / revenues` for the quarter. |
operating_margin_ttm | numeric | Trailing-12m operating margin. |
profit_margin | numeric | Net income ÷ revenue. Quarterly. |
profit_margin_ttm | numeric | Trailing-12m profit margin. |
quick_ratio | numeric | (Current assets − inventory) ÷ current liabilities. Stricter liquidity — assumes inventory isn't quickly convertible. |
return_on_assets | numeric | Net income ÷ total assets. Quarterly figure. |
return_on_assets_ttm | numeric | Trailing-12m return on assets. |
return_on_equity | numeric | Net income ÷ shareholders' equity. Quarterly figure. |
return_on_equity_ttm | numeric | Trailing-12m return on equity. |
high_margin | state | Trailing-twelve-month profit margin is above 20%.profit_margin_ttm > 0.20 |
profitable | classification | Most-recently-reported quarter had positive net income.net_income_loss > 0 |
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).
| Column | Type | Description |
|---|---|---|
beta | numeric | Trailing beta vs SPY. Null for issuers with insufficient price history. |
cap_class | 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). |
dividend_yield | numeric | Forward dividend yield as a fraction (0.025 = 2.5%). Null for non-payers. |
enterprise_value | bigint | Market cap + total debt − cash. |
ev_to_ebitda | numeric | `enterprise_value` ÷ `ebitda`. Capital-structure-neutral profitability multiple. |
ev_to_sales | numeric | `enterprise_value` ÷ `revenue_ttm`. Capital-structure-neutral revenue multiple. |
forward_pe | numeric | Forward price-to-earnings ratio using next-12m consensus EPS. Lower = cheaper on forward basis. |
market_cap | bigint | Market capitalization. Updated daily; intraday change derived from `price` × `shares_outstanding`. |
pe_ratio | numeric | Price-to-earnings ratio (trailing twelve months). Null for unprofitable issuers. |
peg_ratio | numeric | PE ratio divided by EPS growth rate. Sparsely populated — PEG is only computed for tickers with positive earnings growth and analyst coverage. |
price_to_book | numeric | Current price ÷ `book_value`. Common value-investing metric. |
price_to_cash_flow | numeric | Current price ÷ operating cash flow per share. Less manipulable than P/E. |
price_to_free_cash_flow | numeric | Current price ÷ `free_cash_flow` per share. Strictest cash-based valuation. |
price_to_sales | numeric | Current price ÷ `revenue_per_share_ttm`. Often used when companies have no earnings. |
high_beta | classification | Beta above 1.5: moves more than the market.beta > 2.0. |
high_dividend_yield | classification | Dividend yield above 4%.dividend_yield >= 0.04. |
large_cap | classification | Market cap between $10B and $200B.market_cap >= 10B AND market_cap < 200B. |
low_beta | state | Beta below 0.5 — moves much less than the market.beta < 0.5 |
mega_cap | classification | Market cap above $200B.market_cap >= 200B. |
micro_cap | state | Market cap between $50M and $300M.50e6 ≤ market_cap < 300e6 |
mid_cap | classification | Market cap between $2B and $10B.market_cap >= 2B AND market_cap < 10B. |
nano_cap | state | Market cap below $50M.market_cap < 50e6 |
small_cap | classification | Market cap between $300M and $2B.market_cap >= 300M AND market_cap < 2B. |
value_stock | classification | Trades at a value-style P/E.pe_ratio > 0 AND pe_ratio < 15. |
Short interest
Short positioning: readings, ratios, days-to-cover, and their flags.
| Column | Type | Description |
|---|---|---|
days_to_cover | numeric | Short interest divided by 30-day average daily volume. Trader’s "how many days of normal trading to cover all shorts" measure. |
short_interest | bigint | Raw shares-shorted count as last reported (FINRA bi-monthly). Pair with `short_interest_settlement_date` (profile.ts) for the as-of date. |
short_interest_settlement_date | date | Settlement date of the most recent short-interest report. |
short_percent_of_float | numeric | Short interest as a fraction of the free float. 0.10 = 10% of float is short. |
short_volume_ratio | numeric | Share of the day's volume executed as short sales (0–1). |
high_short_interest | state | More than 20% of the float is sold short.short_percent_of_float > 20 |
short_volume_spike | state | More than 60% of the day's volume was executed as short sales.short_volume_ratio > 0.60 |
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.
| Column | Type | Description |
|---|---|---|
days_to_earnings | integer | Calendar days until next earnings announcement. Negative after report. |
earnings_beat_streak | integer | Consecutive quarters the company has beaten consensus EPS estimates. Resets to 0 on a miss. |
earnings_date | date | Next scheduled earnings announcement date. Null if not scheduled. |
earnings_fiscal_quarter | 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. |
earnings_report_time | 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). |
last_earnings_surprise | numeric | `last_reported_eps − last_eps_estimate`. Signed; positive = beat. |
last_earnings_surprise_pct | numeric | Beat as percent of consensus. |
last_reported_eps | numeric | Actual EPS reported in the most recent earnings announcement. |
earnings_approaching | state | Earnings within 3 days.days_to_earnings = 3 (exactly three days before the scheduled earnings date) |
earnings_next_week | state | Earnings 8–14 days out — useful for the lead-up swing window.days_to_earnings >= 8 AND days_to_earnings <= 14 |
earnings_published | state | Earnings report date has passed (next earnings date is in the past).days_to_earnings <= 0 |
earnings_this_week | state | Earnings announcement scheduled in the next 7 days.0 <= days_to_earnings <= 7. Sourced from the forward earnings calendar plus the historical earnings table. |
earnings_today | event | Earnings reported today.EXISTS(ticker_earnings_history row with reported_date = today). Both pre-market and post-market reports count. |
earnings_tomorrow | state | Earnings reported in 1 calendar day. Pair with `earnings_report_time` to know BMO vs. AMC.days_to_earnings = 1 |
recently_reported_earnings | state | Reported earnings within the last 5 days.EXISTS(ticker_earnings_history row with reported_date in [today - 5d, today - 1d]). Captures the post-earnings reaction window. |
Dividends
Dividend amount, schedule, and approach flags.
| Column | Type | Description |
|---|---|---|
dividend | numeric | Most-recent dividend amount per share. |
dividend_date | date | Date of the most-recent dividend payment. |
dividend_frequency | integer | Payment frequency: `quarterly`, `monthly`, `semiannual`, `annual`. |
dividend_approaching | state | The ex-dividend date falls within the next 7 days.ex_dividend_date between today and today + 7d |
IPOs
IPO dates and status, from pending through recently listed.
| Column | Type | Description |
|---|---|---|
ipo_date | date | Date of the company's IPO, when known. |
ipo_in_7d | state | A firm IPO listing date falls within the next 7 days.IPO calendar listing date within 7 days |
pending_ipo | state | The ticker is in the IPO calendar but has not started trading.in the IPO calendar, pre-first-trade |
recently_ipoed | state | The company listed within the last 90 days.list_date >= today − 90d |
Splits & share changes
Events that alter share count or float: splits, buybacks, dilution.
| Column | Type | Description |
|---|---|---|
float_effective_date | date | As-of date for the current float-shares figure. |
buyback_30d | state | Shares outstanding fell more than 1% over the last 30 days.shares_outstanding < 30d-ago × 0.99 |
dilution_30d | state | Shares outstanding rose more than 3% over the last 30 days.shares_outstanding > 30d-ago × 1.03 |
split_recent | state | A stock split occurred in the last 7 days or is scheduled within 14 days.split execution_date between today − 7d and today + 14d |
Insider activity
Insider (Form 4) transaction flags: C-suite buys and sells, clustered buying.
| Column | Type | Description |
|---|---|---|
insider_c_suite_buy | state | A C-suite insider (CEO/CFO/COO/President/Chair) bought shares in the last 7 days.insider acquisition within 7d by an insider titled CEO, CFO, COO, President, Chairman, or Director |
insider_c_suite_sell | state | A C-suite insider (CEO/CFO/COO/President/Chair) sold shares in the last 7 days.insider disposal by a C-suite title within 7d |
insider_cluster_buy | state | Two or more distinct insiders bought shares in the last 14 days.count(distinct insider buyers) ≥ 2 within 14d |
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.
| Column | Type | Description |
|---|---|---|
asset_class | text | Asset class of the ticker: stocks, rates, crypto, or fx. |
asset_type | text | Asset class. One of `equity`, `etf`, or `crypto`. |
country | text | ISO country code of the issuer. |
currency_name | text | Currency the prices are quoted in (`usd`, `eur`, `gbp`, etc.). Effectively always `usd` for US-listed equities. |
exchange | 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. |
exchange_mic | 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. |
industry | text | GICS industry within the sector. |
sector | text | GICS sector. One of: Technology, Healthcare, Financials, Consumer Discretionary, Consumer Staples, Energy, Industrials, Materials, Utilities, Real Estate, Communication Services. |
sic_code | text | SIC code — the SEC's Standard Industrial Classification for the company's industry. |
sic_description | text | Plain-text label for the company's SIC industry code. |
ticker_category | text | Sub-class within an asset class, e.g. treasury_curve or policy_rate. |
Identifiers & reference
Which company this is: name, IDs (CIK, FIGI), listing status, contact, branding, employees.
| Column | Type | Description |
|---|---|---|
address_address1 | text | Company headquarters street address. |
address_city | text | Company headquarters city. |
address_postal_code | text | Company headquarters postal code. |
address_state | text | Company headquarters state or region. |
branding_icon_url | text | URL of the company's square icon image. |
branding_logo_url | text | URL of the company's logo image. |
cik | text | SEC Central Index Key — the company's identifier in EDGAR filings. |
composite_figi | text | Composite FIGI — Bloomberg's cross-exchange security identifier. |
description | text | Business description of the company. |
homepage_url | text | Company homepage URL. |
inactive_at | timestamp without time zone | When the ticker was marked inactive. |
inactive_reason | text | Why the ticker was marked inactive (e.g. delisted, stale data). |
list_date | text | Date the symbol was first listed on its exchange. |
name | text | Company or asset display name. |
phone_number | text | Company contact phone number. |
round_lot | integer | Standard trading lot size for the symbol. |
share_class_figi | text | Share-class FIGI — Bloomberg identifier for this specific share class. |
ticker_root | text | Root symbol — the base ticker without class or suffix modifiers. |
total_employees | integer | Number of full-time employees as last reported. Useful for size-based filters ("small-cap by employee count"). |
active | state | Ticker is actively traded — not delisted or halted.active = true |
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.
| Column | Type | Description |
|---|---|---|
analyst_consensus_rating | text | Consensus analyst rating across contributing firms. One of `strong buy`, `buy`, `hold`, `sell`, `strong sell`. NULL for tickers without analyst coverage. |
analyst_consensus_rating_value | numeric | Consensus rating as a numeric score on the standard 1–5 scale (1 = strong buy, 5 = strong sell). Lower is more bullish. |
analyst_count_buy | integer | Number of contributing firms rating the ticker as buy. |
analyst_count_hold | integer | Number of contributing firms rating the ticker as hold (neutral). |
analyst_count_sell | integer | Number of contributing firms rating the ticker as sell. |
analyst_count_strong_buy | integer | Number of contributing firms rating the ticker as strong buy. |
analyst_count_strong_sell | integer | Number of contributing firms rating the ticker as strong sell. |
analyst_count_total | 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. |
analyst_count_with_target | integer | Number of contributing firms whose rating includes a published 12-month price target. Always ≤ `analyst_count_total`. |
bearish_consensus | state | Consensus analyst rating is `sell` or `strong sell`.analyst_consensus_rating IN ('sell', 'strong sell') |
bullish_consensus | state | Consensus analyst rating is `strong buy` or `buy`.analyst_consensus_rating IN ('strong buy', 'buy') |
well_covered | classification | Ten or more analyst firms cover the ticker.analyst_count_total >= 10 |
Upgrades & downgrades
Individual firm actions: rating changes, initiations, and price-target changes.
| Column | Type | Description |
|---|---|---|
last_rating_action | text | Action taken in the most recent rating change. Common values: `upgrades`, `downgrades`, `initiates_coverage_on`, `maintains`, `reiterates`, `assumes`, `reinstates`, `suspends`. |
last_rating_date | date | Date of the most recent rating action across all firms covering the ticker. |
last_rating_firm | text | Name of the firm that issued the most recent rating action. |
recent_downgrade | state | At least one analyst downgraded the ticker in the last 7 days.EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND action = 'downgrades' AND timestamp >= NOW() - INTERVAL '7 days') |
recent_initiation | state | At least one analyst initiated coverage in the last 7 days.EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND action = 'initiates_coverage_on' AND timestamp >= NOW() - INTERVAL '7 days') |
recent_target_lower | state | At least one analyst lowered their price target in the last 7 days.EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND price_target_action = 'lowers' AND timestamp >= NOW() - INTERVAL '7 days') |
recent_target_raise | state | At least one analyst raised their price target in the last 7 days.EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND price_target_action = 'raises' AND timestamp >= NOW() - INTERVAL '7 days') |
recent_upgrade | state | At least one analyst upgraded the ticker in the last 7 days.EXISTS (SELECT 1 FROM analyst_events WHERE ticker = t.ticker AND action = 'upgrades' AND timestamp >= NOW() - INTERVAL '7 days') |
Price targets
Where analysts say it's going: consensus/high/low targets and price-versus-target state.
| Column | Type | Description |
|---|---|---|
analyst_consensus_target_price | numeric | Mean of contributing analysts' 12-month price targets. |
analyst_target_price_high | numeric | Highest single-analyst 12-month price target across contributing firms. |
analyst_target_price_low | numeric | Lowest single-analyst 12-month price target across contributing firms. |
analyst_target_upside_pct | 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. |
above_price_target | state | Current price is above the consensus analyst target.price > analyst_consensus_target_price |
below_price_target | state | Current price is below the consensus analyst target.price < analyst_consensus_target_price |
target_downside_above_10pct | state | Current price is more than 10% above the consensus target — significant implied downside.analyst_target_upside_pct < -10 |
target_upside_above_10pct | state | Consensus price target implies more than 10% upside from the current price.analyst_target_upside_pct > 10 |
target_upside_above_25pct | state | Consensus price target implies more than 25% upside from the current price.analyst_target_upside_pct > 25 |
Estimates
What analysts say it will earn: forward EPS/revenue estimates and their revisions.
| Column | Type | Description |
|---|---|---|
eps_estimate_revision_down_30d | integer | Count of analysts who lowered their next-quarter EPS estimate in the last 30 days. |
eps_estimate_revision_up_30d | integer | Count of analysts who raised their next-quarter EPS estimate in the last 30 days. A positive read on forward sentiment momentum. |
last_eps_estimate | numeric | Consensus EPS estimate going into the most recent earnings announcement. |
next_eps_estimate | numeric | Wall Street consensus EPS estimate for the next reported quarter — weighted average across analyst contributors. |
next_eps_estimate_high | numeric | Highest single-analyst EPS estimate for the next reported quarter. |
next_eps_estimate_low | numeric | Lowest single-analyst EPS estimate for the next reported quarter. |
next_revenue_estimate | bigint | Wall Street consensus revenue estimate (USD, full dollars) for the next reported quarter. |
estimate_revised_down | state | At least one analyst lowered their next-quarter EPS estimate in the last 30 days.eps_estimate_revision_down_30d > eps_estimate_revision_up_30d AND total 30d revisions (up + down) >= 3 |
estimate_revised_up | state | At least one analyst raised their next-quarter EPS estimate in the last 30 days.eps_estimate_revision_up_30d > eps_estimate_revision_down_30d AND total 30d revisions (up + down) >= 3 |
high_earnings_estimate | classification | Consensus next-quarter EPS estimate exceeds an absolute $1.00 per share threshold.next_eps_estimate > 1.00 |
loss_estimate | classification | Analyst consensus expects negative EPS for the upcoming report.next_eps_estimate < 0 |
profitable_estimate | classification | Analyst consensus expects positive EPS for the upcoming report.next_eps_estimate > 0 |
News
Signals derived from news coverage: article volume and sentiment.
| Column | Type | Description |
|---|---|---|
news_volume | 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. |
news_volume_weighted_sentiment | 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. |
Author your own
The catalog is the built-in vocabulary, not the ceiling: custom signals let you name a SQL expression over these columns and use it anywhere a built-in works.