Skip to content
Back to skills

Analyst Tracker

ASecurity

Track sell-side analyst positioning on a name via Benzinga Analyst Ratings. Pulls every rating event over the lookback window, classifies each as upgrade / downgrade / initiation / reiteration / drop-coverage / PT-change, aggregates the latest rating and price target per firm, and reports the current consensus (median PT across firms plus buy/hold/sell distribution). Uses Massive's built-in Benzinga integration. Requires Stocks Basic + Benzinga Analyst Ratings entitlement.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
developmentreactapi

Works with

  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add rgourley/quant-garage --skill analyst-tracker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Analyst Tracker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Analyst Tracker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rgourley-analyst-tracker/badge)](https://www.skillsdirectory.com/skills/rgourley-analyst-tracker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: analyst-tracker
description: Track sell-side analyst positioning on a name via Benzinga Analyst Ratings. Pulls every rating event over the lookback window, classifies each as upgrade / downgrade / initiation / reiteration / drop-coverage / PT-change, aggregates the latest rating and price target per firm, and reports the current consensus (median PT across firms plus buy/hold/sell distribution). Uses Massive's built-in Benzinga integration. Requires Stocks Basic + Benzinga Analyst Ratings entitlement.
---

# analyst-tracker

You hand over a ticker. The skill pulls every analyst rating event
Benzinga has on record over the lookback window, buckets each firm's
raw rating string to a standard scale (buy / hold / sell), classifies
the event (upgrade / downgrade / initiation / reiteration / PT-change /
drop-coverage), aggregates the latest per firm, and reports the
consensus median price target plus buy/hold/sell distribution.

This is the sell-side lens the repo was missing. Pairs cleanly with
`insider-flow` (internal vs external sentiment on the same name)
and `guidance-tracker` (analyst reaction vs management's own
projections).

## When to invoke

- A PM asks "how is sell-side positioning shifting on NVDA?"
- Fundamental analyst wants to see who's changed their view and by
  how much
- Screening for consensus PT vs current price gap as a mean-reversion
  cue
- The user says "analyst ratings", "sell-side", "upgrades",
  "downgrades", "price target", "consensus"

Not for: analyst quality or track record (Benzinga returns the ratings,
not the historical accuracy). Not for real-time (Benzinga updates
within minutes but this is not a tick feed).

## What you need

- A ticker (`--ticker`, required)
- `MASSIVE_API_KEY` exported
- Stocks Basic plan + **Benzinga Analyst Ratings** entitlement.
  The endpoint returns NOT_AUTHORIZED without it; skill emits a
  clean tier caveat rather than a raw error.

Optional:

- `--lookback-days` (default 180): calendar-day window back from today.

## What you get back

Two output layers from one run.

**Layer 1: canonical JSON** matching [`output-schema.json`](./output-schema.json).
Per-event: `date`, `firm`, `analyst`, `rating_raw`, `rating_bucket`
(buy / hold / sell / other / unknown), `previous_rating_raw`,
`event_label` (upgrade / downgrade / initiation / reiteration /
price_target_change_only / drop_coverage / other), `price_target`,
`previous_price_target`, `pt_direction`, `pt_delta_pct`. Top-level
`summary` with event counts, per-firm latest rating distribution,
and consensus median / low / high price target.

**Layer 2: rendered note**. Header + summary line + rating
distribution + consensus PT, timeline of the last 25 events, one-line
Take. See [`references/rendering.md`](./references/rendering.md).

## How it works

1. **Pull ratings** via
   `GET /benzinga/v1/ratings?ticker={T}&date.gte={D}&limit=1000&sort=date.desc`.
2. **Bucket rating strings** using standard synonym sets. Buy set:
   buy, strong buy, outperform, overweight, positive, add,
   accumulate, top pick. Hold set: hold, neutral, market perform,
   equal-weight, in-line. Sell set: sell, underperform, underweight,
   reduce, negative. Anything else lands in "other".
3. **Classify each event.** Rating actions like initiates_coverage_on,
   upgrade, downgrade, maintains, reiterates map directly. When
   Benzinga omits the action but the bucket changed, infer
   upgrade/downgrade from the bucket transition.
4. **Detect price-target-only changes.** Reiterated rating + changed
   PT gets labeled `price_target_change_only`.
5. **Aggregate latest per firm.** Because ratings come newest-first,
   the first row per firm gives the latest state. Median across
   firms is the consensus PT; buy/hold/sell counts describe the
   distribution.

## Foundations used

- [`massive-api-patterns`](../massive-api-patterns) for REST auth,
  retry, and pagination.

## Output mode: note

Narrative note with a timeline. A single-name analyst history is
typically 20-100 events over 6 months; note format reads better than
a wide table.

## Endpoints used

- `GET /benzinga/v1/ratings?ticker={T}&date.gte={D}` — every rating
  event for the ticker in the window.

## Doesn't handle (yet)

- **Firm track record.** No historical accuracy metric per firm or
  analyst.
- **Consensus rating vs consensus PT reconciliation.** Firms often
  raise PT while keeping a Hold rating (or vice versa); these are
  reported separately, not reconciled.
- **Guidance overlay.** Pair with `guidance-tracker` for a workflow
  composite: "did the analyst move after management guided?"
- **Bulls Bears Say text.** The endpoint returns rating actions and
  PTs; the narrative from Bulls Bears Say is a separate endpoint.
- **Peer comparison.** No "is NVDA's PT delta above peer set median?"
  Queued as a composite.

These are clean PR extensions. Output schema is forward-compatible.

Files in this skill

  • README.md1.3 KB
  • SKILL.md4.8 KB
  • output-schema.json871 B
  • references/rendering.md2 KB
  • requires.yml2.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.