US Analyst Activity — Ratings, Price Targets & Monthly Consensus (Top 3K, 5y)
Five years of sell-side analyst activity for the top 3,000 US-listed issuers, delivered as three complementary files: 85,777 individual upgrade/downgrade events, 73,147 individual price target changes, and 144,410 monthly aggregate strong-buy / buy / hold / sell / strong-sell counts. Each event row carries the analyst firm, previous and new grade or target, the stock price at the time of the call, and a link back to the originating news item. Read with pandas.read_csv(path, compression='gzip', parse_dates=['publishedDate']). Useful for: analyst-momentum factors, upgrade/downgrade event studies, calibrating analyst accuracy by firm, building target-change feature stacks, and reconstructing consensus drift around earnings.
Use Cases
- Analyst-momentum and upgrade/downgrade event studies
- Per-firm analyst accuracy backtests (compare priceWhenPosted to forward returns)
- Price-target drift signals around earnings windows
- Consensus-evolution time series (monthly file)
- Building feature stacks for ML models trained on analyst signals
Methodology
Universe: top 3,000 US-listed issuers by market cap (NASDAQ/NYSE/AMEX). Three FMP endpoints per ticker: /stable/grades-news (event-level upgrades/downgrades with news linkage), /stable/price-target-news (individual price target changes, paginated to exhaustion), /stable/grades-historical (monthly aggregate buy/hold/sell counts). All rows filtered to publishedDate (or date) >= 2021-05-17.
Update Schedule
Static snapshot as of build date. Re-run weekly or monthly for continued coverage.
Attribution
Source: aggregated sell-side analyst events via Financial Modeling Prep.
Schema
| name | type |
|---|---|
| symbol | string |
| publishedDate | datetime |
| gradingCompany | string |
| previousGrade | string |
| newGrade | string |
| action | string |
| priceWhenPosted | string |
| newsTitle | string |
| newsPublisher | string |
| newsBaseURL | string |
| newsURL | string |
Sample Data
| action | symbol | newsURL | newGrade | newsTitle | newsBaseURL | newsPublisher | previousGrade | publishedDate | gradingCompany | priceWhenPosted |
|---|---|---|---|---|---|---|---|---|---|---|
| hold | BIDU | https://pulse2.com/baidu-nasdaq-bidu-stock-370-target-by-benchmark/ | Buy | Baidu (BIDU) Stock: $370 Target By Benchmark | pulse2.com | Pulse 2.0 | Buy | 2021-05-20T00:00:00.000Z | Benchmark | 193.31 |
| hold | PLUG | https://pulse2.com/plug-power-nasdaq-plug-stock-42-target-by-piper-sandler/ | Neutral | Plug Power (PLUG) Stock: $42 Target By Piper Sandler | pulse2.com | Pulse 2.0 | Neutral | 2021-05-20T00:00:00.000Z | Piper Sandler | 27.47 |
| hold | DQ | https://pulse2.com/daqo-new-energy-nyse-dq-stock-70-target-by-roth-capital/ | Neutral | Daqo New Energy (DQ) Stock: $70 Target By Roth Capital | pulse2.com | Pulse 2.0 | Neutral | 2021-05-20T00:00:00.000Z | Roth Capital | 78.41 |
Get this via API
# 1. Add dAgentBase once, in any MCP client. No install, no vendor keys.
# Claude.ai / Claude Desktop: Settings -> Connectors -> Add custom connector
# Cursor / Claude Code / others: mcp.json
{
"mcpServers": {
"dagentbase": {
"url": "https://dagentbase.com/api/mcp",
"headers": { "Authorization": "Bearer dm_live_YOUR_KEY" }
}
}
}
# 2. Then ask your agent, in plain language:
# "Preview 'US Analyst Activity — Ratings, Price Targets & Monthly Consensus (Top 3K, 5y)' and, if it fits, claim it and download the files."
# Tools it will use: search_listings -> preview_listing -> purchase_listing -> get_download_urls
# 1. Add dAgentBase once, in any MCP client. No install, no vendor keys.
# Claude.ai / Claude Desktop: Settings -> Connectors -> Add custom connector
# Cursor / Claude Code / others: mcp.json
{
"mcpServers": {
"dagentbase": {
"url": "https://dagentbase.com/api/mcp",
"headers": { "Authorization": "Bearer dm_live_YOUR_KEY" }
}
}
}
# 2. Then ask your agent, in plain language:
# "Preview 'US Analyst Activity — Ratings, Price Targets & Monthly Consensus (Top 3K, 5y)' and, if it fits, claim it and download the files."
# Tools it will use: search_listings -> preview_listing -> purchase_listing -> get_download_urlsone time · open license
Details
Available formats