Back to home

Methodology

How the GLP-1 Score works.

The GLP-1 Score is a 0–100 number that summarizes the recent observable activity around a company in the GLP-1 sector. It's an educational metric — a starting point for your own research. It is not a buy recommendation, a sell recommendation, or a price target. We are not registered investment advisers. Always consult a licensed financial professional before making investment decisions.

The math

Every company starts the day at 50. We add or subtract points based on five categories of observable signal, all sourced from public data. The final score is rounded and capped to [0, 100].

  1. FDA activity (last 30 days) · up to ±15

    • FDA approval: +10
    • Breakthrough designation: +8
    • Drug shortage resolved: +5
    • Drug shortage declared: −5
    • Recall or enforcement action: −8
    • Label change (warning): −10
  2. Stock momentum (last 30 days) · up to ±10

    • +10% / +20% / +30%+ → +5 / +8 / +10
    • −10% / −20% / −30%+ → −5 / −8 / −10
  3. Catalyst frequency (last 90 days) · up to ±10

    • 5 or more catalysts: +10
    • 3 or 4 catalysts: +5
    • 1 or 2 catalysts: +2
    • Zero catalysts: −3
  4. Trial activity (last 60 days) · up to ±8

    • Phase 3 completed: +8
    • Phase 2 completed: +5
    • Trial halt (terminated, suspended, or withdrawn): −8
  5. Policy mentions (last 60 days) · up to ±7

    Federal and state bills that mention the company's drugs or sector, after editorial review. Each favorable bill contributes +3, each unfavorable bill contributes −3, capped at ±7.

Where the data comes from

Public sources: FDA's openFDA API (shortages, approvals, recalls, label changes), ClinicalTrials.gov (trial status), Congress.gov and OpenStates (legislation), Finnhub (stock prices). Editorial review applies before a policy bill counts toward the score. The GLP-1 Score recalculates nightly at 3:00 UTC. The "Updated [time ago]" stamp under each ring tells you when the company's score last refreshed.

Data sources and update frequency

Six public-data pipelines plus one model provider. Stock prices and most data flow into the platform automatically; GLP-1 Scores recalculate nightly at 3:00 UTC. Source links point to canonical primary sources, not aggregators.

SourceAuthorityWhat we pullUpdate frequencyHistorical depth
ClinicalTrials.govNIHTrial registrations, status changes, phase, milestone datesDailyRegistry from 2000; GLP-1 backfill in progress
openFDAFDALabel changes, approvals, recalls, shortage notices, enforcement actionsDailyEndpoint coverage from the 1990s; full GLP-1 backfill in progress
Congress.govUS Congress (LoC)Federal bills referred to Energy & Commerce, Ways & Means, HELP, or Finance and matched against the GLP-1 / obesity / drug-pricing / compounding keyword listTwice dailyCongress 103 (1993) onward; 17-Congress backfill in progress
OpenStatesPlural PolicyState bills matched against the GLP-1 / compounding / PBM / Medicare keyword list. The fetch loop polls 56 jurisdictions round-robin (50 states, DC, five territories); a jurisdiction only lands in the table once one of its bills matches. Stored coverage is 10 states, not 56DailyPer-jurisdiction; varies by when each legislature first published structured data
GNewsNews aggregatorEnglish-language news on GLP-1 industry companies and topicsDailyTrailing 12 months on free tier
FinnhubFinancial data providerStock quotes, company news, earnings reports for the tracked GLP-1 companiesQuotes every 15 min during US market hours; news every 4 hours; earnings weeklyTrailing 12 months on free tier
Anthropic ClaudeModel providerPlain-English headline, TLDR, key details, and narrative paragraphs assembled from the day's catalystsOnce daily at 13:30 UTC (before US market open) for the daily brief; on-demand for admin reruns—

News dedup

GLP-1 wire stories get republished by dozens of regional papers verbatim. To keep the brief readable, news passes through a two-pass dedup before reaching the daily brief. Pass A groups articles with byte-identical headlines after lowercase, trim, and trailing-punctuation normalization. Pass B groups remaining articles whose headlines score ≥ 0.85 normalized Levenshtein similarity. In each duplicate group the survivor is chosen by a five-tier source priority: Tier 1 wires (Reuters, AP, Bloomberg, WSJ, NYT, FT) outrank Tier 2 industry trades (STAT News, Endpoints, FierceBiotech, BioPharma Dive, MarketWatch, BioSpace, Pink Sheet, Healthcare Dive), which outrank Tier 3 mainstream broadcast (CNN, CNBC, NBC, CBS, ABC, WaPo, USA Today, NPR, BBC), then Tier 4 business/finance trade (Fortune, Forbes, Business Insider, Yahoo Finance, Seeking Alpha, Barron's), with everything else at Tier 5. Ties on tier resolve to the earliest publication time. The full deduplicated catalog stays in the database — only the brief surfaces a curated subset.

Auto-publish architecture

As of May 2026 the daily brief publishes the moment the assembler finishes — no editorial queue, no manual approval step. The 13:30 UTC cron (before US market open) runs the assembler against the trailing 24-hour catalyst window, and the resulting brief is live the moment the row writes. The pipeline runs on automation and public APIs end to end; a published row may occasionally receive a manual edit, and the edit history stays on the row.

Clinical-trial date mapping

ClinicalTrials.gov rows carry several date fields: study start, primary completion, completion, last update, and first posted. Picking the wrong field would anchor a "first human dose" event to its 2028 projected completion. The promotion to a catalyst event_date follows the trial's status: RECRUITING and ACTIVE_NOT_RECRUITING use start_date (the date dosing began); COMPLETED uses primary_completion_date (the date the primary endpoint was measured); everything else (TERMINATED, SUSPENDED, WITHDRAWN, UNKNOWN) uses last_update_date.

Forward-looking language is rejected at the database level

Two Postgres CHECK constraints reject any row whose generated text contains forward-looking or advisory vocabulary before it can be saved. The banned-vocabulary list includes expected, may, could, bullish, bearish, opportunity, tailwind, headwind, and dozens of related forms — plus advisory phrases like "buy rating", "price target", and "investors should". The model and any manual edit both run against the same constraints; nothing forward-looking ships even when the underlying language model tries to write it.

What the score is not

  • · Not a buy or sell recommendation.
  • · Not a price target.
  • · Not a forecast of future stock performance.
  • · Not personalized financial advice.
  • · Not a substitute for your own research or for talking to a licensed financial professional.

GLP1Stocks is a service of GLP-1 Studio LLC. We do not sell user data. Editorial decisions stay independent of any commercial arrangement. The methodology may evolve as we add more public-data sources; we'll note material changes here.