Skip to content

NickLeko/FDASignalBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FDASignalBot (Alert-Only)

FDASignalBot monitors FDA/regulatory process signals for binary FDA approval markets (e.g., approval vs CRL by a deadline) and emits alerts when market odds appear mispriced based on public, document-driven signals.

This project is alert-only (no auto-trading). It is designed to:

  • timestamp signals,
  • log evidence,
  • compare against market odds at alert time,
  • and evaluate performance across resolved events.

Not financial advice. Uses only public information. Do not use MNPI.


What This Bot Does (MVP)

  • Tracks a small set of high-signal, low-noise FDA/process indicators.
  • Scores signals using a rule-based model (no ML initially).
  • Emits standardized alerts when score crosses a threshold.
  • Logs alerts + evidence for later review/backtesting.

Target Market Type (Strict)

Only target markets that meet all criteria:

  • Binary FDA outcome (approval vs CRL / no approval)
  • Fixed deadline (e.g., PDUFA date or “by Dec 31, YYYY”)
  • Objective resolution via FDA action (approval letter / CRL)

Avoid:

  • “Eventually approved” markets
  • Pure efficacy/result markets
  • Subjective resolution criteria

Resolution Criteria (Per Market)

YES resolves if:

  • FDA issues an approval letter (full or accelerated) by the stated date.

NO resolves if:

  • FDA issues a Complete Response Letter (CRL), or
  • deadline passes without approval.

Non-resolution events (do NOT treat as resolution):

  • Advisory Committee vote
  • Press releases
  • Analyst notes
  • Rumors

Signals (MVP = 5)

We track exactly 5 signals initially (do not add more until validation is complete).

S1 — FDA Briefing Document Language (weight 3)

  • Parse AdCom briefing docs (1–3 days pre-meeting).
  • Flag repeated negative/concern language and “insufficient” framing.

Trigger: ≥2 red phrases => +3

S2 — Manufacturing / CMC status (weight 3)

  • Prior Form 483 / major findings + no confirmed reinspection = elevated CRL risk.

Trigger: unresolved CMC risk => +3

S3 — Sponsor language drift (weight 2)

  • Earnings/SEC language retreat (“expect approval” disappears, “working with FDA” increases).

Trigger: directional downgrade => +2

S4 — Label scope creep (weight 1)

  • Late label broadening attempts (adjunctive→mono, narrow→broad).

Trigger: late scope expansion => +1

S5 — Procedural irregularities (weight 1)

  • Late-added AdCom, cancellations, PDUFA extensions.

Trigger: irregularity => +1


Scoring & Alert Thresholds

  • 4–5 points: ALERT
  • 6–10 points: STRONG ALERT

Alert text is standardized (no probability claims):

“Approval odds likely overstated due to unresolved regulatory risk (signals: S2, S3).”


Repo Structure

FDASignalBot/ signals/ s1_briefing_docs.py s2_cmc.py s3_sponsor_language.py s4_label_scope.py s5_procedural.py alerts/ notifier.py logs/ alerts.jsonl config/ markets.yaml main.py README.md


Data Policy

  • Use only public sources: FDA calendars, FDA PDFs, EDGAR filings, earnings transcripts, etc.
  • No Twitter rumor scraping in MVP.
  • No paid feeds required.

Logging (Required)

Every alert must log:

  • timestamp (UTC)
  • market identifier
  • Polymarket odds at alert time (manual entry OK for MVP)
  • triggered signals + evidence snippets
  • score
  • later: final resolution

Success Metrics (Before Trading Anything)

We are NOT measuring P&L yet.

Track:

  1. Directional accuracy (YES vs NO)
  2. Timing edge (lead time before repricing/outcome)
  3. False positives (alerts without meaningful movement)

Targets before considering real trades:

  • ≥65% directional accuracy
  • median lead time ≥48h
  • <25% false positives

Quickstart (Local)

  1. Create a venv and install deps:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages