Concepts › Signals › Signal catalog
Analyst ratings catalog
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 |