View as markdown
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.

ColumnTypeDescription
analyst_consensus_ratingtextConsensus 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_valuenumericConsensus 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_buyintegerNumber of contributing firms rating the ticker as buy.
universe all tickers · cadence hourly
analyst_count_holdintegerNumber of contributing firms rating the ticker as hold (neutral).
universe all tickers · cadence hourly
analyst_count_sellintegerNumber of contributing firms rating the ticker as sell.
universe all tickers · cadence hourly
analyst_count_strong_buyintegerNumber of contributing firms rating the ticker as strong buy.
universe all tickers · cadence hourly
analyst_count_strong_sellintegerNumber of contributing firms rating the ticker as strong sell.
universe all tickers · cadence hourly
analyst_count_totalintegerTotal 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_targetintegerNumber of contributing firms whose rating includes a published 12-month price target. Always ≤ `analyst_count_total`.
universe all tickers · cadence hourly
bearish_consensusstateConsensus analyst rating is `sell` or `strong sell`.
analyst_consensus_rating IN ('sell', 'strong sell')
universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous
bullish_consensusstateConsensus analyst rating is `strong buy` or `buy`.
analyst_consensus_rating IN ('strong buy', 'buy')
universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous
well_coveredclassificationTen or more analyst firms cover the ticker.
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.

ColumnTypeDescription
last_rating_actiontextAction 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_datedateDate of the most recent rating action across all firms covering the ticker.
universe all tickers · cadence hourly
last_rating_firmtextName of the firm that issued the most recent rating action.
universe all tickers · cadence hourly
recent_downgradestateAt 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')
universe all tickers · history recent only · cadence 15 min · intervals 1d · firing continuous
recent_initiationstateAt 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')
universe all tickers · history never fired yet · cadence 15 min · intervals 1d · firing continuous
recent_target_lowerstateAt 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')
universe all tickers · cadence 15 min · firing continuous
recent_target_raisestateAt 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')
universe all tickers · cadence 15 min · firing continuous
recent_upgradestateAt 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')
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.

ColumnTypeDescription
analyst_consensus_target_pricenumericMean of contributing analysts' 12-month price targets.
universe all tickers · cadence hourly
analyst_target_price_highnumericHighest single-analyst 12-month price target across contributing firms.
universe all tickers · cadence hourly
analyst_target_price_lownumericLowest single-analyst 12-month price target across contributing firms.
universe all tickers · cadence hourly
analyst_target_upside_pctnumericImplied 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_targetstateCurrent price is above the consensus analyst target.
price > analyst_consensus_target_price
universe all tickers · history recent only · cadence 1 min · mkt hrs · intervals 1m/1h/1d · firing continuous
below_price_targetstateCurrent price is below the consensus analyst target.
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_10pctstateCurrent price is more than 10% above the consensus target — significant implied downside.
analyst_target_upside_pct < -10
universe all tickers · cadence 1 min · mkt hrs · firing continuous
target_upside_above_10pctstateConsensus price target implies more than 10% upside from the current price.
analyst_target_upside_pct > 10
universe all tickers · cadence 1 min · mkt hrs · firing continuous
target_upside_above_25pctstateConsensus price target implies more than 25% upside from the current price.
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.

ColumnTypeDescription
eps_estimate_revision_down_30dintegerCount 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_30dintegerCount 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_estimatenumericConsensus EPS estimate going into the most recent earnings announcement.
universe all tickers · cadence post-close daily
next_eps_estimatenumericWall Street consensus EPS estimate for the next reported quarter — weighted average across analyst contributors.
universe all tickers · cadence post-close daily
next_eps_estimate_highnumericHighest single-analyst EPS estimate for the next reported quarter.
universe all tickers · cadence post-close daily
next_eps_estimate_lownumericLowest single-analyst EPS estimate for the next reported quarter.
universe all tickers · cadence post-close daily
next_revenue_estimatebigintWall Street consensus revenue estimate (USD, full dollars) for the next reported quarter.
universe all tickers · cadence post-close daily
estimate_revised_downstateAt 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
universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous
estimate_revised_upstateAt 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
universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous
high_earnings_estimateclassificationConsensus next-quarter EPS estimate exceeds an absolute $1.00 per share threshold.
next_eps_estimate > 1.00
universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous
loss_estimateclassificationAnalyst consensus expects negative EPS for the upcoming report.
next_eps_estimate < 0
universe all tickers · history never fired yet · cadence post-close daily · intervals 1d · firing continuous
profitable_estimateclassificationAnalyst consensus expects positive EPS for the upcoming report.
next_eps_estimate > 0
universe all tickers · history recent only · cadence post-close daily · intervals 1d · firing continuous