Skip to content
Hero Background Light

What Do Analyst Ratings Mean? Buy, Hold, Sell Explained

What Do Analyst Ratings Mean? Buy, Hold, Sell Explained

Wall Street analysts spend their careers researching companies and issuing ratings. But what do terms like “Strong Buy,” “Hold,” or “Underweight” actually mean? And should you follow their recommendations?

What Are Analyst Ratings?

Analyst ratings are recommendations issued by research analysts at investment banks, brokerage firms, and independent research companies. These analysts study companies in depth—reviewing financials, interviewing management, analyzing competitors—and publish their conclusions.

A typical analyst report includes:

  • A rating (Buy, Hold, Sell, or variations)
  • A price target (expected stock price in 12 months)
  • Investment thesis (reasoning behind the rating)
  • Financial projections (revenue, earnings estimates)

Understanding Rating Scales

Different firms use different terminology, but they generally map to three categories:

Bullish Neutral Bearish
Strong Buy Hold Sell
Buy Neutral Strong Sell
Outperform Market Perform Underperform
Overweight Equal Weight Underweight
Accumulate Reduce

What Each Rating Means

Buy / Outperform / Overweight The analyst expects the stock to outperform the market or its sector. They recommend increasing your position.

Hold / Neutral / Market Perform The analyst expects the stock to perform in line with the market. Not recommending new purchases, but not selling either.

Sell / Underperform / Underweight The analyst expects the stock to underperform. They recommend reducing or eliminating your position.

What Are Price Targets?

A price target is the analyst’s prediction of where a stock’s price will be in 12 months. It’s calculated using valuation models like:

  • Discounted Cash Flow (DCF) – Future cash flows discounted to present value
  • Comparable Analysis – Multiples compared to similar companies
  • Sum of the Parts – Valuing divisions separately

How to Interpret Price Targets

Current Price vs Target Implication
Target 20%+ above current Strong upside expected
Target 5-20% above Moderate upside
Target near current price Fairly valued
Target below current Downside risk

Example: If a stock trades at $100 and an analyst sets a $130 target, they expect 30% upside.

The Analyst Upgrade/Downgrade Cycle

Rating changes often move stocks more than initial ratings:

Action Meaning Typical Impact
Upgrade Rating improved (e.g., Hold → Buy) Positive price reaction
Downgrade Rating lowered (e.g., Buy → Hold) Negative price reaction
Initiation Analyst starts coverage Depends on rating
Price Target Raise Increased expected value Moderately positive
Price Target Cut Decreased expected value Moderately negative

Upgrades and downgrades are particularly impactful because they signal a change in the analyst’s view.

Tracking Analyst Ratings Data

You can access analyst ratings and price targets through the FinBrain API:

import pandas as pd
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
# Get analyst ratings as DataFrame
df = fb.analyst_ratings.ticker("AAPL", as_dataframe=True)
print(df.head())
# institution action rating targetPrice
# date
# 2024-01-15 Goldman Sachs Upgrade Buy $210
# 2024-01-10 Morgan Stanley Reiterated Overweight $225
# Filter for upgrades only
upgrades = df[df["action"] == "Upgrade"]
print(f"\nRecent upgrades: {len(upgrades)}")
# targetPrice comes back as a formatted string ("$275") or None,
# so strip it before doing arithmetic.
targets = pd.to_numeric(
df["targetPrice"].str.replace(r"[$,]", "", regex=True),
errors="coerce",
)
print(f"Average analyst target: ${targets.mean():.2f}")
# Count by rating
rating_counts = df["rating"].value_counts()
print(f"\nRating distribution:\n{rating_counts}")

Building Signals from Analyst Data

Consensus Tracking

Track how many analysts are bullish vs bearish:

def analyst_consensus(df):
"""Calculate analyst consensus from ratings"""
bullish_ratings = ["Buy", "Strong Buy", "Outperform", "Overweight"]
bearish_ratings = ["Sell", "Strong Sell", "Underperform", "Underweight"]
bullish = df[df["rating"].isin(bullish_ratings)]
bearish = df[df["rating"].isin(bearish_ratings)]
total = len(df)
if total == 0:
return "no_coverage"
bull_pct = len(bullish) / total
bear_pct = len(bearish) / total
if bull_pct > 0.7:
return "strong_consensus_buy"
elif bull_pct > 0.5:
return "moderate_buy"
elif bear_pct > 0.5:
return "moderate_sell"
elif bear_pct > 0.7:
return "strong_consensus_sell"
else:
return "mixed"
consensus = analyst_consensus(df)
print(f"Analyst consensus: {consensus}")

Upgrade Momentum

Track recent upgrades vs downgrades:

from datetime import datetime, timedelta
def upgrade_momentum(df, days=30):
"""Calculate upgrade/downgrade momentum"""
cutoff = datetime.now() - timedelta(days=days)
recent = df[df.index >= cutoff]
upgrades = len(recent[recent["action"] == "Upgrade"])
downgrades = len(recent[recent["action"] == "Downgrade"])
if upgrades > downgrades:
return f"positive ({upgrades} upgrades, {downgrades} downgrades)"
elif downgrades > upgrades:
return f"negative ({upgrades} upgrades, {downgrades} downgrades)"
else:
return "neutral"

Limitations of Analyst Ratings

Keep these factors in mind:

Factor Consideration
Conflicts of interest Investment banks may rate clients favorably
Herding behavior Analysts often move together
Lagging indicators Ratings often follow price moves
Sell ratings are rare Most ratings are Buy or Hold
Consensus can be wrong Popular stocks get over-covered

The Sell Rating Problem

Studies show that fewer than 10% of analyst ratings are Sells. This “ratings inflation” means:

  • A Hold often means “we’d sell but can’t say it”
  • A downgrade to Hold from Buy is often bearish
  • True Sell ratings are significant events

Key Takeaways

  1. Analyst ratings range from Strong Buy to Strong Sell (with various terminologies)
  2. Price targets represent 12-month expected values
  3. Rating changes (upgrades/downgrades) often move stocks more than initial ratings
  4. Analyst consensus provides sentiment but isn’t always predictive
  5. Consider conflicts of interest and herding behavior

Track analyst ratings and price targets with the Analyst Ratings Dataset and API Reference.