Skip to content

Add news & filings sentiment brief skill to equity-research vertical - #288

Open
HumphreySun98 wants to merge 1 commit into
anthropics:mainfrom
HumphreySun98:add-news-sentiment-skill
Open

Add news & filings sentiment brief skill to equity-research vertical#288
HumphreySun98 wants to merge 1 commit into
anthropics:mainfrom
HumphreySun98:add-news-sentiment-skill

Conversation

@HumphreySun98

Copy link
Copy Markdown

What

Adds a news-sentiment skill to the equity-research vertical: it turns a corpus of unstructured financial text — news headlines, press releases, and filing excerpts (8-K / 10-Q / 10-K) — into a structured, fully source-cited sentiment brief for a ticker or watchlist.

Each item gets a sentiment label from a fixed set (positive / neutral / negative / mixed), a verbatim source quote, entity/relation extraction, and an event tag; the skill then aggregates the distribution, logs notable events, and surfaces a human-review queue.

Why

equity-research covers earnings analysis, initiating coverage, thesis tracking, and morning notes — but nothing systematically labels a corpus of news/filings item-by-item with per-item sentiment and citations. earnings-analysis is a single-quarter deep report; morning-note and thesis-tracker consume conclusions. This is a clean, non-overlapping gap, and it plays to Claude's core strength: reading unstructured text and producing auditable structure.

The design is inspired by the financial-NLP task decomposition popularized by open-source finance LLM work (sentiment scoring / entity-relation extraction / event tagging) — recast here as inference-time instructions, not model training, and kept strictly inside the repo's guardrails: no price target, no forecast, no buy/sell call; every label is quote-backed and staged for human sign-off.

What's inside (mirrors the dcf-model gold-standard file pattern)

  • SKILL.md — MCP-first data sourcing; a "no forecast / no recommendation" boundary; the requirement that every label carry a verbatim quote; the labeling workflow; the output schema; correct patterns / common mistakes; and guardrails.
  • references/labeling-guide.md — the label set with a single shared score boundary (±0.15, disjoint and exhaustive), the confidence scale, the entity/relation schema, the event taxonomy, edge cases (negation, forward-looking vs realized, company vs analyst voice, filing boilerplate, headline/body divergence, hindsight leakage), worked examples, and the aggregation rule.
  • scripts/validate_sentiment.py — an openpyxl validator (mirrors the dcf-model validator) that checks the required columns, the sentiment enum, a non-empty source_quote on every item, sentiment_score in [-1, 1] (error) and consistent with its label (warning), and — crucially — that low-confidence and mixed items are flagged needs_review = yes.
  • TROUBLESHOOTING.md and requirements.txt (openpyxl only).

Validation

  • python3 scripts/check.pyOK — 80 file(s) checked, 0 issues.
  • scripts/validate_sentiment.py tested against clean and deliberately broken workbooks — the broken cases correctly flag an invalid label, an empty source quote, an out-of-range and label-inconsistent score, an over-magnitude mixed score, and unflagged low-confidence/mixed items.
  • The pre-commit hook auto-bumped equity-research plugin.json 0.1.2 → 0.1.3. The new skill is not bundled into any agent, so there is no sync drift.

Frontmatter is name + description only, matching the existing vertical skills. This PR is self-contained and touches only the new skill directory plus the automatic version bump.

Adds an equity-research skill that turns a corpus of news headlines,
press releases, and filing excerpts into a structured, source-cited
sentiment brief: per-item sentiment label (fixed set) with a verbatim
quote, entity/relation extraction, event tagging, aggregation, and a
human-review queue. Inspired by financial-NLP task decomposition
(sentiment / entity / event) recast as inference-time instructions —
no forecasts, no recommendations, staged for human sign-off. Ships a
labeling-guide reference, a tested openpyxl schema validator, and a
troubleshooting guide.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant