Analyst Price Target Data: 5 Institutional Use Cases (with SQL)

AnaChart holds 660K+ price targets and 750K+ ratings from 7K+ named analysts on 9K+ US companies, past and present, since 2008, and every target is scored: reached or not, on what date, after how many days.

The dataset behind every query on this page is the one that feeds anachart.com, the $29 ticker files and the monthly Price Target Index. Analysts and brokers are resolved to one identity each, so a career that moves between firms stays one row. Below are five questions buyers open the data with and the SQL that answers each. Send us the question and we run it, or take a warehouse share and run it yourself.

Bar chart of 1,083 analysts with at least 200 scored targets, grouped by the share of their targets reached within a year: 59 under 40%, 104 at 40 to 50%, 224 at 50 to 60%, 387 at 60 to 70%, 274 at 70 to 80%, 35 at 80% and up
Analysts by share of targets reached within a year, September 2026 index. Median 64.5%. Source: AnaChart.

At a glance

Record660K+ price targets, 750K+ ratings, since 2008
Identities7K+ analysts, 400+ brokers, one identity each across firms
Tickers9K+ US, listed and delisted
Outcome columnsDirection, met, date met, days to hit, on every target
ProvenanceSource URL on 59% of rows and on every new row
Ways inQuestion answered as a report (first free, then from $149); $29 single-ticker files; Snowflake or BigQuery share
FreeApple file, 3,794 events, full file for an email address
Public pagesdata.anachart.store, one page per ticker and analyst

Score any analyst’s hit rate, by name

The same person covering Apple in 2007 and in 2026 is one analyst in this record, whatever firm the byline carried at the time. Each of that analyst’s targets is marked reached or not, with the date the stock first traded through it and the calendar days that took. A per-analyst record that runs back to 2008, is enough to compute a hit rate at any window you choose: 90 days, a year, or no limit.

The met, date met and days to hit columns are computed against end-of-day highs and lows with no time limit; the index page publishes both the 365-day and the no-limit share by year. The query below ranks analysts on their own targets; joining a price feed of your own lets you re-score at any horizon.

Show the SQL
WITH calls AS (
  SELECT
    a.canonical_analyst_name,
    a.date              AS call_date,
    a.price_target_after AS pt_target,
    -- close on the action that lands ~1 year after this call
    (SELECT close_price
       FROM PUBLIC.NASDAQPTRATINGS b
      WHERE b.ticker = a.ticker
        AND b.date BETWEEN DATEADD('day', 252, a.date) AND DATEADD('day', 365, a.date)
        AND b.close_price IS NOT NULL
      ORDER BY ABS(DATEDIFF('day', a.date, b.date) - 252)
      LIMIT 1)          AS close_1y
  FROM PUBLIC.NASDAQPTRATINGS a
  WHERE a.ticker = 'AAPL'
    AND a.price_target_after IS NOT NULL
)
SELECT
  canonical_analyst_name,
  COUNT(*)                                                                        AS calls_with_1y_followup,
  ROUND(AVG(ABS(pt_target - close_1y) / close_1y * 100), 2)                       AS avg_1y_error_pct,
  ROUND(SUM(IFF(ABS(pt_target - close_1y) <= 0.10 * close_1y, 1, 0))::FLOAT
        / COUNT(*) * 100, 2)                                                      AS within_10pct_rate
FROM calls
WHERE close_1y IS NOT NULL
GROUP BY canonical_analyst_name
HAVING COUNT(*) >= 5
ORDER BY within_10pct_rate DESC
LIMIT 25;

Email me this query and a sample cutGet the free AAPL sample

What a hit rate looks like on a real name

Five analysts covering Apple, with their full AAPL record from the live site. The query above returns rows like these for every analyst and ticker.

AnalystFirmAAPL targets metMet ratio
Wamsi MohanBofA Securities159 / 16496.95%
Amit DaryananiEvercore ISI154 / 15996.86%
Erik WoodringMorgan Stanley46 / 4895.83%
Laura MartinNeedham55 / 55100%
Krish SankarTD Cowen38 / 4290.48%
Source: AnaChart AAPL page, 14 Jul 2026.

Build factor signals from analyst behavior

Price targets are numbers, ratings are categories, and each row carries both before and after the event. A Buy that stays a Buy while the target comes down is visible as a row where rating_before equals rating_after and price_target_after is below price_target_before. With target values before and after on every event, and the broker on each row, target momentum, dispersion across brokers and revision frequency can all be built and tested back to 2008.

The query below lists stock-day pairs on which more than one analyst lowered a price target without changing the rating.

Show the SQL
SELECT
  date,
  ticker,
  COUNT(*) AS total_actions,
  SUM(IFF(rating_after = rating_before
          AND price_target_after < price_target_before, 1, 0)) AS quiet_pt_cuts,
  SUM(IFF(rating_after = rating_before
          AND price_target_after > price_target_before, 1, 0)) AS quiet_pt_raises,
  SUM(IFF(rating_after_simplified = 'SELL'
          AND rating_before_simplified <> 'SELL', 1, 0))       AS new_downgrades_to_sell
FROM PUBLIC.NASDAQPTRATINGS
WHERE date >= DATEADD('year', -2, CURRENT_DATE())
  AND price_target_after  IS NOT NULL
  AND price_target_before IS NOT NULL
GROUP BY date, ticker
HAVING quiet_pt_cuts >= 2
ORDER BY date DESC, quiet_pt_cuts DESC
LIMIT 100;

Email me this query and a sample cut

Audit IR coverage from the inside

Every listed company has sell-side coverage, and the record holds it at the analyst level: who covered the ticker, when each target was set, whether it was reached, and who is still active. Pull the full history on one ticker and use it for IR Day preparation, sell-side prioritisation and earnings Q&A.

Show the SQL
WITH ranked AS (
  SELECT
    canonical_analyst_name,
    broker_number,
    rating_after,
    price_target_after,
    date,
    ROW_NUMBER() OVER (PARTITION BY canonical_analyst_name
                       ORDER BY date DESC) AS rn,
    COUNT(*)     OVER (PARTITION BY canonical_analyst_name) AS total_actions,
    MAX(date)    OVER (PARTITION BY canonical_analyst_name) AS last_action_date
  FROM PUBLIC.NASDAQPTRATINGS
  WHERE ticker = 'NVDA'
    AND date >= DATEADD('year', -5, CURRENT_DATE())
)
SELECT
  canonical_analyst_name,
  broker_number,
  rating_after          AS current_rating,
  price_target_after    AS current_target,
  last_action_date,
  total_actions,
  IFF(last_action_date >= DATEADD('day', -90, CURRENT_DATE()),
      'ACTIVE', 'STALE') AS coverage_status
FROM ranked
WHERE rn = 1
ORDER BY total_actions DESC;

Email me this query and a sample cut

Rebuild consensus on your own weighting

Consensus on a terminal is one number. With event-level history and the source on each row, consensus can be rebuilt on any weighting: equal, recency, or accuracy, using each analyst’s own reached share on that ticker. Where the weighted number and the simple average diverge, the rows that cause the gap are visible.

The query below builds an accuracy-weighted consensus target for AAPL: each analyst’s most recent target is weighted by the share of that analyst’s past AAPL targets that were reached, and the result is compared with the equally weighted average.

Show the SQL
WITH at_call_accuracy AS (
  SELECT
    canonical_analyst_name,
    SUM(IFF(ABS(price_target_after - close_price) <= 0.10 * close_price, 1, 0))::FLOAT
      / NULLIF(COUNT(*), 0) AS accuracy
  FROM PUBLIC.NASDAQPTRATINGS
  WHERE ticker = 'AAPL'
    AND close_price > 0
    AND price_target_after IS NOT NULL
  GROUP BY canonical_analyst_name
  HAVING COUNT(*) >= 5
),
latest_target AS (
  SELECT
    canonical_analyst_name,
    price_target_after AS current_target,
    ROW_NUMBER() OVER (PARTITION BY canonical_analyst_name
                       ORDER BY date DESC) AS rn
  FROM PUBLIC.NASDAQPTRATINGS
  WHERE ticker = 'AAPL'
    AND price_target_after IS NOT NULL
)
SELECT
  COUNT(*)                                                                AS contributing_analysts,
  ROUND(AVG(current_target), 2)                                           AS simple_consensus,
  ROUND(SUM(current_target * accuracy) / NULLIF(SUM(accuracy), 0), 2)     AS accuracy_weighted_consensus
FROM latest_target l
JOIN at_call_accuracy a USING (canonical_analyst_name)
WHERE l.rn = 1;

Email me this query and a sample cutGet the free AAPL sample

Defend research with source-level provenance

59% of rows carry the source URL of the article the event was parsed from, and every row added since link capture began carries one. Duplicates across feeds are removed and analyst firm moves are resolved to one identity. For work that has to defend its provenance, a publication, testimony, a compliance review, a client note, each linked event traces back to a public disclosure.

Show the SQL
SELECT
  date,
  ticker,
  rating_before_simplified || ' -> ' || rating_after_simplified AS rating_change,
  price_target_before,
  price_target_after,
  (price_target_after - price_target_before) AS pt_change,
  source_url
FROM PUBLIC.NASDAQPTRATINGS
WHERE canonical_analyst_name = 'TONI SACCONAGHI'
ORDER BY date;

Email me this query and a sample cut

What is in the dataset

The full table, a ticker set, a broker, or a date range, delivered as a CSV cut or as a Snowflake or BigQuery share into your own account.

Access

We run the query and send back a report; the first question is free and further questions start at $149. Single S&P 500 and Nasdaq-100 tickers are sold as ready files at $29 each, delivered in a minute. Anything wider is quoted to the job. Every ticker and analyst also has a summary page at data.anachart.store.

Free Apple sample: 100-row preview to download, full file on request


No warehouse account? The custom data reports service delivers the same data as a report: describe the question in plain English, we query the record and send Excel or PDF, usually the same day and within 48 hours. From $149.

Talk to us: [email protected] · Calendly

Frequently asked questions

What data do these queries run on?

AnaChart’s analyst price target record: 660K+ price targets and 750K+ ratings across 7K+ analysts and 9K+ companies, past and present, from 2008. Every target carries its outcome columns (direction, met, date met, days to hit) and every analyst carries a reached share computed from them.

Can I get these as a Snowflake or BigQuery share?

Yes. The full dataset ships as a native Snowflake or BigQuery share, or as a one-time report if you do not run a warehouse. Single S&P 500 and Nasdaq-100 tickers are $29 files.

How do I try the data before buying?

Start with the free Apple file: a 100-row preview to download with no account, and the full file with every analyst on AAPL and the outcome columns sent to a work email address on request. Then read the analyst price target data overview for the scoring method.