Equity Scanning And Watchlists: Install, Source and Security | FunnelSlayer

Equity Scanning And Watchlists

Published by joogy06 in agent-foundry

No known issues1 installs

What this skill does

Use when building the pre-market routine or intraday universe screening for US equity day trading — universe definition and tradability filters, gapper scans with price/volume/float thresholds and corporate-action-adjusted baselines, earnings and catalyst calendar ingestion, LULD/halt status tracking, float and short-interest/days-to-cover lookup, relative volume (RVOL) computation, and ranked watchlist construction with a scoring template and freshness metadata. Trigger on - stock scanner, gapp

Add Equity Scanning And Watchlists to your agent

Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.

Install with a prompt

Paste this into a compatible coding agent:

add this skill "equity-scanning-and-watchlists" from https://github.com/joogy06/agent-foundry

Install with the CLI

Run this command in a controlled environment after reviewing the repository:

npx skills add https://github.com/joogy06/agent-foundry --skill equity-scanning-and-watchlists

Skill instructions

Equity Scanning and Watchlists

1. Overview + routing

This skill is the workflow ENTRY for equity day trading (screening stages 1 and 2 merged): it builds the tradeable universe and the ranked watchlist. day-trading-patterns CONSUMES the watchlist to work a chosen symbol; this skill selects WHICH symbols.

Routing: chart-pattern recognition on a chosen symbol → day-trading-patterns; social/news sentiment inputs → reddit-signal-mining / gdelt-event-mining / financial-sentiment-analysis; historical validation → trading-strategy-backtester; order handling on a halted/resuming name → equity-broker-execution §6.

2. Universe definition + data sources

What is IN the universe: NMS common stocks (vs OTC), with explicit handling of ETF/ADR/warrant/right, recent-IPO and symbol-change cases; use stable instrument identifiers; and run a broker tradability/shortability check before a name becomes actionable.

Data sources (verify tiers/cadence at use — see research/equity-day-trading-skills/scanning-journaling-research.md):

SourceFieldsCadence
Polygon.ioquotes/trades, reference tickers, shares outstanding, splits/dividendsreal-time (paid) / delayed
Financial Modeling Prepfloat, shares outstanding, earnings calendardaily-ish
Finnhubquotes, basic financials, earningsmixed
Nasdaq Data Linkcurated short-interest datasetsdataset-specific
Broker scanners (IBKR / Schwab)movers + tradability/shortabilitybroker-authoritative

Record, per field, WHICH source it came from and its update cadence.

3. Gapper scan procedure

Pre-market and intraday variants over a threshold template: gap %, price band, minimum dollar-volume, float band, minimum-history requirement, and exchange-calendar / early-close awareness.

CORPORATE-ACTION-ADJUSTED baselines are mandatory. A 10-for-1 split must not read as a −90% gap, nor a reverse split as a +900% gap. Adjust the prior-close baseline by corporate-action factors before computing the gap.

def gap_pct(prev_close: float, premarket_price: float, split_factor: float = 1.0):
    """Corporate-action-adjusted gap. split_factor adjusts the baseline."""
    adjusted_prev = prev_close / split_factor
    if adjusted_prev <= 0:
        raise ValueError("invalid adjusted baseline")
    return (premarket_price - adjusted_prev) / adjusted_prev * 100.0

4. Catalyst calendar ingestion

Ingest earnings, FDA/PDUFA-class binary events, and macro prints; each modifies watchlist rank. Sources: earnings calendars (FMP/Finnhub/Nasdaq/Zacks), biotech (BioPharmaCatalyst / FDA), macro (BLS/BEA/Fed / Trading Economics / Econoday).

5. Float / short-interest / days-to-cover

Lookup with explicit field lineage:

PROHIBITION (binding). FINRA short interest is a twice-monthly POSITION snapshot, published on a lag (settlement mid-month and month-end; take the publication date from FINRA's annual schedule — 2026 dates are generally about seven business days after settlement, not a fixed invariant). Daily short-sale VOLUME (FINRA daily files / exchange Reg SHO daily files) is an ENTIRELY DIFFERENT FACT and must NEVER be substituted for short interest. High daily short volume does NOT mean high short interest.

  • Days-to-cover = short interest ÷ average daily volume; define the ADV denominator window explicitly (e.g. 20-day).
  • Expose the settlement date AND publication date of any short-interest figure in the output so staleness is visible.

6. Relative volume (RVOL)

Standard form: cumulative volume to the current time-of-day ÷ the average cumulative volume at the same time of day over a lookback (e.g. 20 sessions). Time-of-day normalization is essential — 2× at 09:45 differs from 2× at 15:45. Guard new listings / thin history with a minimum-history check.

7. LULD / halt status tracking

Track pre-open halt lists and resumption status. LULD bands and pauses apply during regular hours only (WATCH as of 2026-07-14 — an SEC overnight price-band amendment, SR filing 34-105596, is pending; re-verify before overnight use). For ORDER handling on a halted/resuming name, hand off to equity-broker-execution §6 — this skill tracks status, it does not place orders.

8. Ranked watchlist construction

Combine gap, RVOL, float, and catalyst weight into a scoring template; enforce a max-size discipline (a bounded watchlist). The output artifact carries REQUIRED per-field metadata:

watchlist_item:
  symbol: str
  score: float
  fields:
    gap_pct:        {value, source, as_of, latency_class, adjustment_state}
    rvol:           {value, source, as_of, latency_class}
    float_shares:   {value, source, as_of}
    short_interest: {value, source, settlement_date, publication_date}

Every field carries source, as-of timestamp, latency class, and adjustment state — a number with no provenance is not actionable.

9. Unattended-mode caveat (TW-4) — first-class

Attended mode is the default framing — a human bridges gaps in seconds, so attended failure is SAFE (worst case: no trades).

UNATTENDED mode FAILS CLOSED on more than emptiness. Halt the pipeline and ALERT — never trade off — when the watchlist is:

  • empty (no candidates),
  • stale (as-of older than the freshness threshold),
  • degraded (missing required fields or a required source is down),
  • divergent (sources disagree beyond tolerance), or
  • anomalously large (output far bigger than the historical norm).

A stale watchlist that LOOKS healthy is more dangerous than a silent no-op — it invites trading on yesterday's world. Fail closed and alert; do not proceed on a non-empty-but-unverified list.

Anti-Patterns

Anti-PatternWhy It FailsCorrect Approach
Scanning without RVOL normalizationRaw volume favors large caps and misreads time-of-dayUse time-of-day-normalized RVOL over a lookback window
Passing daily short-sale volume off as short interestThey are different facts; the derived signal is wrongUse the twice-monthly SI snapshot for SI; never substitute daily short volume
Unadjusted gap baselines across splits/dividendsA split reads as a huge phantom gapApply corporate-action-adjusted baselines before computing gaps
Treating stale short interest as currentSI publishes on a lag; the position may have unwoundExpose settlement + publication dates; judge staleness explicitly
Unbounded watchlistsToo many names dilute focus and rankEnforce a max-size discipline in construction
Sentiment-only universesSocial buzz without price/float/volume structure is noiseBuild the universe on price/volume/float; treat sentiment as an input, not the universe
Unattended trust in a non-empty listStale/degraded/divergent lists look healthy but are wrongFail closed on empty/stale/degraded/divergent/anomalous; alert, never trade off it

Files included

  • SKILL.md

More skills