npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

uncle-watch

v0.3.0

Published

Who is selling your stock at the top, and how often they've done it before. Insider exit patterns from public SEC filings.

Readme

🐀 uncle-watch

Who is selling your stock at the top — and how often they've done it before.

A former NYSE Vice Chairman joined a quantum-computing company's board in 2021. In September 2025 he sold 15%, then 41%, then 60%, then 75% of his stake — in four consecutive days, inside a 12% price band, five days before the stock rolled over.

Every number in that sentence is from public SEC filings. Nobody reads them. This tool does.

Not investment advice. Not an accusation — everything here is legal and disclosed. All data is public SEC filings. We just read them. Someone should.

quick start

npx uncle-watch rate QUBT

or from source:

git clone https://github.com/PeachMo16/uncle-watch && cd uncle-watch
node uncle.mjs rate QUBT

No dependencies. No API keys. Node 18+ and the SEC's public EDGAR API. A weekly leaderboard of the tickers in WATCHLIST is rebuilt by GitHub Actions every Monday — send a PR to add a ticker.

The parser, amendment handling, rolling-window clustering, and score dimensions are covered by synthetic fixtures, so the tests never need the network:

npm test

the four commands

uncle rate <TICKER> — how uncle is this boat?

Downloads the most recent Form 4s (EDGAR's recent list, capped at 200 — the complete history for most small caps), classifies each sell's plan status three ways — 10b5-1 indicated / no 10b5-1 indication / unknown (the SEC's mandatory checkbox only applies to filings from April 2023; before that, a missing flag proves nothing) — then scores six risk dimensions, each 0–100 with the evidence attached:

| dimension | what it smells for | |---|---| | No 10b5-1 indication | sells filed without the pre-scheduled-plan checkbox | | Cluster density | different insiders reaching for the exit in the same week | | Ladder acceleration | escalating %-of-stake sells day after day (whole run worth ≥ $25k — shape alone is not a signal) | | Exit discipline | one insider unloading inside a tight price band | | Dilution engine | shelf registrations and offering supplements | | Shell history | name changes, fresh 10-12G registrations (reverse-merger tell) |

Open-market insider buying is reported as an independent counter-signal — shown in green, never scored. Real buying is positive information when present, but the literature gives no exchange rate against sell-side risk, and a token buy must not launder a boat. Absence of buying is not evidence of danger.

Composite = weighted average = the uncle rate. It also derives the uncle exit zone: the price band where insiders historically pulled the ripcord.

🐀 $QUBT · UNCLE RATE 83/100

  No 10b5-1 indication  87   20 of 23 status-known sells filed with no 10b5-1 indication
  Cluster density      100   4 strict 10-day windows with ≥2 insiders selling
  Ladder acceleration  100   one insider escalated 53% → 100% of stake (~$573k) in 3 days
  Exit discipline       74   5 sells inside $15.02–$16.88 (12% band)
  Dilution engine      100   27 offering/shelf filings
  Shell history         30   fresh 12(g) registration (a common reverse-merger route)

  · Open-market insider buying: none observed (not scored)

  uncle exit zone: $11.70–$15.62 (median $15.02) · last close $8.46

For calibration, the same rubric on a boring mega cap:

🐀 $GOOG · UNCLE RATE 17/100

  No 10b5-1 indication   0   0 of 306 status-known sells filed with no 10b5-1 indication
  Cluster density        0   no multi-insider sell clusters
  Ladder acceleration    0   no escalating multi-day sell ladders worth ≥ $25,000
  Exit discipline        0   no insider with ≥3 sells lacking a 10b5-1 indication
  Dilution engine      100   30 offering/shelf filings (mostly bond 424B2s — see limitations)
  Shell history          0   no name changes or fresh registrations on file

  · Open-market insider buying: none observed (not scored)

Three hundred and six insider sells at Alphabet. Every single one under an indicated 10b5-1 plan. That's what a boring boat looks like.

uncle who <name|CIK> — one uncle's entire career

Every reporting owner has a personal CIK. Feed it in and get every company they've ever filed ownership forms on — their whole career of boats:

🐀 UNCLE WHO · FAGENSON ROBERT B (CIK 1215183) · 7 boats

  RWY    RENT WAY INC               2003 → 2006    6 filings
  DSS    DOCUMENT SECURITY SYSTEMS  2004 → 2018   27 filings
  TQ     CASH TECHNOLOGIES          2007           1 filing
  NHLD   NATIONAL HOLDINGS          2012 → 2021   16 filings
  QUBT   Quantum Computing Inc.     2021 → 2026    7 filings   sells: 5 tx ~$1,556,005

Five boats, all micro caps, one career. The only boat he ever cashed out on is the one that 40x'd during a hype wave. That list is a fingerprint.

uncle actions <TICKER> — the raw feed

Every insider transaction, newest first — plan sells labeled, no-indication sells flagged, pre-2023 sells marked plan status ? instead of pretending to know.

uncle tickets — the leaderboard

Every ticker you've rated, sorted by uncle rate, with each boat's loudest dimension.

honest limitations

  • The classic insider-trading literature (Lakonishok & Lee 2001; Finnerty 1976) found pooled insider sales carry little predictive signal — the informativeness was in purchases — and mimicking profits in small/OTC stocks were eaten by trading costs (Rozeff & Zaman 1988; Lin & Howe 1990). uncle-watch's sell-based dimensions are not independently validated as return predictors. The uncle rate is a reading aid that ranks which filings deserve your attention; it is not, and must never be read as, a tradeable signal.
  • The 10b5-1 checkbox is only mandatory on filings from April 2023, so plan status is three-valued; pre-2023 sells are unknown and excluded from every scored dimension rather than counted as unscheduled — each dimension prints how many it left out. The unscored exit zone still includes them and prints its basis. A micro cap whose whole story is pre-2023 will therefore score low on clusters, ladders, and discipline: that is the tool refusing to guess, not a clean bill of health. Read uncle actions.
  • "No 10b5-1 indication" means exactly that — the filing didn't claim the affirmative defense. It is not Cohen/Malloy/Pomorski's behavioral routine/opportunistic classification (theirs is built from multi-year calendar regularity), and their results don't validate this filter.
  • Foreign private issuers (Canadian shells on NASDAQ) are exempt from Form 4 entirely — their uncles are behind the curtain. A SEDI adapter would fix this.
  • A Form 4/A supersedes only the original it names (via dateOfOriginalSubmission), so a sibling Form 4 for the same period survives; an amendment that names no original date falls back to superseding its whole (issuer, owners, period) group. Multi-owner joint filings are still attributed to each owner (slight double-count).
  • The dilution dimension counts all offering paperwork — a mega cap's bond 424B2s score the same as a shell's equity ATM. Read the evidence line, not just the number.
  • Submissions and prices are cached for 24h; Form 4 XMLs are immutable and cached forever.
  • The weights and the $25k ladder floor are hand-tuned on a handful of anchors, not backtested. This is a reading tool, not a trading system.

scoring changelog

v0.3 (2026-09-01) — three fixes from a second code read, each with a test:

  • Form 4/A dedupe dropped innocent siblings: within one (issuer, owners, period) group, any amendment used to erase every original — a grant filed a week before a corrected sale went missing. Amendments now replace only the original whose filing date they name; an undated amendment keeps the old conservative behaviour.
  • v0.2's "refuse to guess" about pre-2023 plan status only reached the ratio dimension; cluster density, ladder acceleration, and exit discipline still treated every unknown-status sell as unscheduled. All six scored dimensions now use only sells that affirmatively lack a 10b5-1 indication, and print the excluded count. The exit zone (unscored) keeps them, labeled.
  • Ladder acceleration had no value floor: a 50% → 100% exit of a hundred-dollar stake scored 100, same as a seven-figure one. A run must now be worth ≥ $25k to count.

On the two README anchors nothing moved (QUBT 83, GOOG 17); the fixes bite on tickers with pre-2023 histories, corrected filings, or token-sized insiders.

Also in v0.3: the SEC User-Agent lost its parenthesised URL — sec.gov started answering 403 to it, which broke every fresh clone — and a failed EDGAR/Yahoo fetch now falls back to a stale local cache with a loud warning instead of crashing.

v0.2 (2026-08-30) — scoring semantics audited against the 1974–2003 insider-trading literature by gold-digger, a sibling project that digs up old research and points it at live systems. The audit found a mislabeled citation and two semantic overclaims; this release fixes them:

  • Renamed "Opportunistic ratio" → "No 10b5-1 indication" and removed the CMP 2012 citation from the filter: their routine/opportunistic split is behavioral (calendar regularity across years), not plan-checkbox status, and never validated this filter.
  • Plan status became three-valued around the April 2023 checkbox rule; pre-2023 "opportunistic counts skew high" is fixed by refusing to guess.
  • Removed "Net insider flow" from the composite (an all-sell/zero-buy mega cap scored 100 on it — absence of buying is not evidence of danger). Open-market buying is now an unscored counter-signal. Remaining six weights renormalized.

Deferred until the full texts are read: a Kahle (2000)–style event feature (abnormal insider selling before an equity/convertible issue) and a real behavioral routine/opportunistic classifier worthy of the CMP name.

vibecoded

This project was built conversationally with an AI agent (Claude) from one person's observation that the same names kept selling the same stock at the same heights. Zero dependencies, plain Node, every score traceable to a filing. Fork it, point it at your ticker.

license

MIT