How scoring works

Methodology & Data

How the data set is built, how conviction and social signal scores are constructed, and where the honest limits of this MVP are.

Live data · Jul 30, 2026

No investment advice

Tilo provides research context, social signal analysis, and educational information only. Nothing on this platform is a recommendation to buy or sell any security. All performance figures are virtual, historical, and do not guarantee future results.

Data status

This build runs on data generated from public sources, last updated Jul 30, 2026. Every signal links back to its original source; missing values are shown as n/a — never estimated.

Sources

  • cboeDaily OHLCV via cdn.cboe.com delayed quotes, 1718 tickers, data through 2026-07-29
  • nasdaqCompany profile + summary KPIs via api.nasdaq.com (market cap, sector, industry, 52W, avg volume, dividend)
  • edgar13f13F-HR information tables for 25 funds (CIKs verified against EDGAR on 2026-07-11), last 20 quarters each (~5 years; younger filers honestly show fewer — daten-tranche-1-v1 §B). 13F-HR/A amendments are applied to their quarter (RESTATEMENT replaces, NEW HOLDINGS extends); this run: 62 applied, 0 skipped. Quarters stay dated at the ORIGINAL filing (amendments can arrive after the next quarter's 13F — dating at the amendment would flip the NAV timeline). — Berkshire Hathaway, Scion Asset Management, Pershing Square, Duquesne Family Office, Appaloosa, Bridgewater Associates, Fisher Asset Management, Sands Capital, Coatue Management, Gardner Russo & Quinn, Eagle Capital Management, PRIMECAP Management, Tiger Global, ARK Investment Management, Gotham Asset Management, GAMCO Investors, Soros Fund Management, Saba Capital, Maverick Capital, Caxton Associates, Graham Capital Management, HBK Investments, Woodline Partners, Semper Augustus, Situational Awareness
  • redditArctic Shift archive API; 385 raw posts (top-scored DD sample + author history), 200 verified signals from 31 authors
  • xOfficial X API v2 (pay-per-use), 14 curated handles, originals only (retweets & replies excluded server-side); 1 new posts this run (~$0.01 in reads), 9435 total in the snapshot. 193 verified signals from 11/14 curated handles; signals are dated at the POST time (no disclosure lag).
  • xVisionF45 image ground truth (docs/signal-engine/x-vision-v1.md) over media of HolySmokas, kevinxu: 711 committed vision results (extraction model recorded per result; the 2026-07-27 bootstrap pass was extracted manually by Claude (fable-5) from the cached images — same doctrine as the text extraction — and since 2026-07-29 the throttled claude-sonnet-5 API runner in scripts/ingest/x-vision-extract.ts does every pass. Applied only at confidence >= 0.75). 29 full-portfolio snapshots verified, 28 applied as post-dated rebalances (priced-coverage guard >= 60%: 1 skipped); 25 trade receipts verified, 25 became signals at documented conviction 80 (0 suppressed in favor of an existing verified text signal on the same post). Not applied: 532 irrelevant images, 86 below confidence, 8 partial snapshots, 29 structurally invalid, 0 extraction failures (labelled gaps, not classifications), 8 historical track-record cards (real receipts of long-closed trades — dating them at the post would invent trades that never happened then; documented rule F45, lag cap 45 days). Collision rule: on a snapshot day, 4 same-day text/receipt events were superseded by the snapshot (signals stay visible). Extraction spend so far: 168 Anthropic requests, ~$3.43.
  • housePtrHouse Clerk financial-disclosure index (disclosures-clerk.house.gov, yearly ZIP/XML 2020-2026) + electronic PTR PDFs parsed via pdftotext; 5460 transactions (after amendment dedup) -> 3685 stock + option signals for 8 politicians. Option rule v2: [OP] transactions signal the DIRECTION of the underlying (calls buy = bullish, puts buy = bearish, sales inverted). Signals are dated at the FILING date (STOCK-Act lag up to 45 days, intentional and visible); amounts stay disclosure ranges. Senate eFD is follow-up work (bot-protected, see limitations).
  • quiverTrumpTrump financial disclosures via QuiverQuant bulk/trumpstocktrades (STOCK Act, OGE Form 278-T; transaction-level, modeled like a PTR tracker). bulk/trumpstocktrades, 4790 rows fetched (pre-dedup) across 24 pages. 4790 rows -> 2313 signals after full-row dedup (20 duplicates); skipped per reason: {"no-ticker":176}. History starts with the 2026-05 filing — presidential periodic disclosures are new in the dataset; depth grows with future filings.
  • quiverSenateSenate STOCK-Act disclosures via QuiverQuant bulk/congresstrading V2 (per verified BioGuide id — never a top-N grab: the dataset also contains FEC candidates). bulk/congresstrading V2 per bioguide_id, 6 senators Signal date = 'Filed'; ranges stay ranges; option rule v2 via TickerType/Description; full-row dedup against feed duplicates. Original eFD filings are not linkable from this feed — source links open Quiver's politician dataset pages (documented exception).
  • quiverInsidersInsider Transactions (SEC Form 4) via QuiverQuant live/insiders — one request per insider-universe ticker (deliberately narrower than the fundamentals universe since F56: Quiver is metered), 365-day window anchored at asOf. live/insiders, 352/411 tickers with Form-4 rows in the 365-day window. Roles come strictly from the filing (officerTitle / director / 10%-owner flags), no enrichment; per-row source links are EDGAR full-text-search deep links (filer name + Form 4 + filing date), exact accession links come with the EDGAR-direct migration (design doc §C4).
  • curated7 curated list(s) from data/curated/watchlists.json (curator: Tilo Research); dateAdded tracked in data/curated/first-seen.json
  • edgarFundamentalsXBRL companyfacts via data.sec.gov for 1301/1701 tickers (8 fiscal quarters + Current, priced with CBOE closes); 400 tickers skipped (see skippedTickers, prefix "fundamentals:")
  • logosSelf-hosted PNGs in public/logos (FMP image-stock; source evaluation, ToS + nominative-fair-use rationale: docs/signal-engine/stock-logos-v1.md). 1696/1701 universe tickers covered; missing tickers render the deterministic monogram glyph. Light-glyph scan (M1 2026-07-18): 183 white-on-transparent logos flagged (>92% of visible pixels above 92% luminance) — the UI renders these on a dark neutral disc so they stay visible in both themes. Manifest: src/data/generated/logos.json.
  • counts1701 stocks · 82 influencers · 22687 signals · 13 watchlists · 1301 fundamentals · benchmark: SPY

Known limitations

  • Portfolio saba-capital: skipped event 2022-02-14 (rebalance: no price for PDX on 2022-02-15)
  • Portfolio saba-capital: skipped event 2022-02-14 (rebalance: no price for BTX on 2022-02-15)
  • Portfolio saba-capital: skipped event 2022-05-16 (rebalance: no price for PDX on 2022-05-17)
  • Portfolio saba-capital: skipped event 2022-08-15 (rebalance: no price for PDX on 2022-08-16)
  • Portfolio saba-capital: skipped event 2022-11-14 (rebalance: no price for PDX on 2022-11-15)
  • Portfolio saba-capital: skipped event 2022-11-14 (rebalance: no price for BTX on 2022-11-15)
  • Portfolio saba-capital: skipped event 2023-02-14 (rebalance: no price for PDX on 2023-02-15)
  • Portfolio saba-capital: skipped event 2023-02-14 (rebalance: no price for BTX on 2023-02-15)
  • Portfolio saba-capital: skipped event 2023-05-15 (rebalance: no price for BTX on 2023-05-16)
  • Portfolio saba-capital: skipped event 2023-05-15 (rebalance: no price for PDX on 2023-05-16)
  • Portfolio saba-capital: skipped event 2023-08-14 (rebalance: no price for BTX on 2023-08-15)
  • Portfolio saba-capital: skipped event 2023-08-14 (rebalance: no price for PDX on 2023-08-15)
  • Portfolio saba-capital: skipped event 2023-11-14 (rebalance: no price for PDX on 2023-11-15)
  • Portfolio nancy-pelosi: skipped event 2020-02-11 (buy: no price for FB on 2020-02-12)
  • Portfolio josh-gottheimer: skipped event 2020-02-10 (buy: no price for CRY on 2020-02-11)
  • Portfolio josh-gottheimer: skipped event 2020-05-13 (buy: no price for FB on 2020-05-14)
  • Portfolio josh-gottheimer: skipped event 2020-09-20 (buy: no price for FB on 2020-09-21)
  • Portfolio josh-gottheimer: skipped event 2020-11-05 (buy: no price for CRY on 2020-11-06)
  • Portfolio josh-gottheimer: skipped event 2021-05-07 (buy: no price for FB on 2021-05-10)
  • Portfolio josh-gottheimer: skipped event 2021-06-15 (buy: no price for FB on 2021-06-16)
  • Portfolio josh-gottheimer: skipped event 2022-01-10 (buy: no price for CCXI on 2022-01-11)
  • Portfolio josh-gottheimer: skipped event 2022-05-16 (buy: no price for CCXI on 2022-05-17)
  • Portfolio scott-peters: the virtual portfolio never held a position (only sales or unexecutable events were tracked) — NAV stayed 100% cash, so portfolio returns and alpha vs SPY are intentionally omitted (all-cash state, not a data error).
  • Portfolio tommy-tuberville: skipped event 2021-07-23 (buy: no price for FB on 2021-07-26)
  • Portfolio sheldon-whitehouse: skipped event 2015-04-23 (buy: no price for UA on 2015-04-24)
  • Portfolio sheldon-whitehouse: skipped event 2015-09-24 (buy: no price for FB on 2015-09-25)
  • Portfolio sheldon-whitehouse: skipped event 2016-01-20 (buy: no price for UA on 2016-01-21)
  • Portfolio sheldon-whitehouse: skipped event 2016-02-23 (buy: no price for FB on 2016-02-24)
  • Portfolio sheldon-whitehouse: skipped event 2016-04-04 (buy: no price for FB on 2016-04-05)
  • Portfolio sheldon-whitehouse: skipped event 2016-06-16 (buy: no price for FB on 2016-06-17)
  • Portfolio sheldon-whitehouse: skipped event 2016-08-22 (buy: no price for FB on 2016-08-23)
  • Portfolio sheldon-whitehouse: skipped event 2016-09-09 (buy: no price for FB on 2016-09-12)
  • Portfolio sheldon-whitehouse: skipped event 2016-10-07 (buy: no price for FB on 2016-10-10)
  • Portfolio sheldon-whitehouse: skipped event 2016-12-12 (buy: no price for FB on 2016-12-13)
  • Portfolio sheldon-whitehouse: skipped event 2017-02-14 (buy: no price for IR on 2017-02-15)
  • Portfolio shelley-moore-capito: skipped event 2018-05-14 (buy: no price for PX on 2018-05-15)
  • Portfolio susan-collins: skipped event 2014-01-31 (buy: no price for FB on 2014-02-03)
  • Portfolio susan-collins: skipped event 2014-02-11 (buy: no price for FB on 2014-02-12)
  • Portfolio susan-collins: skipped event 2014-02-25 (buy: no price for FB on 2014-02-26)
  • Portfolio susan-collins: skipped event 2014-03-19 (buy: no price for FB on 2014-03-20)
  • Portfolio susan-collins: skipped event 2014-05-16 (buy: no price for SE on 2014-05-19)
  • Portfolio susan-collins: skipped event 2014-06-27 (buy: no price for PX on 2014-06-30)
  • Portfolio susan-collins: skipped event 2014-08-14 (buy: no price for EMC on 2014-08-15)
  • Portfolio susan-collins: skipped event 2014-12-01 (buy: no price for DD on 2014-12-02)
  • Portfolio susan-collins: skipped event 2016-05-03 (buy: no price for PX on 2016-05-04)
  • Portfolio susan-collins: skipped event 2017-06-06 (buy: no price for FB on 2017-06-07)
  • Portfolio bahtmann: the virtual portfolio never held a position (only sales or unexecutable events were tracked) — NAV stayed 100% cash, so portfolio returns and alpha vs SPY are intentionally omitted (all-cash state, not a data error).
  • Portfolio chungwueggwua: the virtual portfolio never held a position (only sales or unexecutable events were tracked) — NAV stayed 100% cash, so portfolio returns and alpha vs SPY are intentionally omitted (all-cash state, not a data error).
  • Portfolio quixotus: the virtual portfolio never held a position (only sales or unexecutable events were tracked) — NAV stayed 100% cash, so portfolio returns and alpha vs SPY are intentionally omitted (all-cash state, not a data error).
  • Portfolio martinshkreli: the virtual portfolio never held a position (only sales or unexecutable events were tracked) — NAV stayed 100% cash, so portfolio returns and alpha vs SPY are intentionally omitted (all-cash state, not a data error).
  • Portfolio kevinxu: skipped event 2026-07-03 (rebalance: no price for KEVIN on 2026-07-06)
  • WSB Consensus watchlist rule v1: a stock is included once it has >= 2 bullish r/wallstreetbets signals from tracked authors, OR a single bullish WSB signal with conviction >= 75. dateAdded = date of the signal that first satisfied the rule (never back-dated to the first mention). Currently 22 stocks qualify, derived from 88 bullish WSB signals — every membership is backed by clickable signals.
  • Curated watchlists (physical-ai, semis, memory, quantum, rare-earths, nanotechnology-pharma, green-csr-clean-etfs) are human-authored by Tilo Research; stock membership is editorial, not signal-derived. dateAdded per stock = the as-of date of the first ingest run that priced the ticker in that list (data/curated/first-seen.json) — performanceSinceAdded starts at that date and is never back-dated, so fresh additions start at 0%.
  • Congress Buys watchlist rule v1: a stock is included once >= 3 tracked politicians disclosed buys of it within any 180-day window (calibrated 2026-07 against variants; target size 8-20, currently 38). dateAdded = filing date of the disclosure that first completed such a cluster — never back-dated.
  • Politician signals (source 'Congress PTR') come from TWO pipelines: HOUSE trackers are primary-source (Clerk index + electronic PTR PDFs, parsed by us); SENATE trackers (6 curated senators since 2026-07-27) come from the QuiverQuant congress-trading API, because the Senate eFD site blocks non-browser clients (Akamai 403, verified 2026-07-15/26 — spike verdict: docs/signal-engine/senate-spike-v1.md). Senate rows carry the FILING date (bulk V2 'Filed'), disclosure ranges and an option type where eFD provides one; original eFD filing URLs are NOT derivable from the feed, so senate source links open Quiver's per-politician dataset page with a #filed-<date> fragment (documented source-link exception; design + API verification: docs/signal-engine/quiver-integration-v1.md).
  • Quiver senate data quality (verified 2026-07-27): identical duplicate rows occur inside the feed and are conservatively deduplicated on full-row identity (two genuinely identical same-day trades would collapse into one — fewer signals, never invented ones; counts in sources.quiverSenate). Rows with TickerType null (older eFD years) are treated as STOCK transactions with a visible note in the signal summary, per the founder brief. Unclassifiable option rows, bonds, exchanges and unparseable ranges are skipped and counted per reason. Quiver's amendment semantics are undocumented (Status was 'New' on every row in the verified corpus); non-'New' rows would be flagged in limitations.
  • Senate tracker deep history (2014+ for Whitehouse/Collins) carries SURVIVORSHIP in its tradable set: tickers that have since delisted have no current CBOE price series, so their signals are dropped from the priced universe (reported in skippedTickers) — the virtual NAV can only ever hold still-listed names. The House pipeline (2020+) shares this limitation with a shorter window.
  • QuiverQuant licensing (founder decision 2026-07-26): current usage is non-commercial (development/testing behind login) and tier-conformant; a commercial license is a LAUNCH BLOCKER tracked in the backlog before any public availability of Quiver-derived data (senate trackers, Trump tracker, and later tranches).
  • Trump tracker (F40, source 'Financial Disclosure'): built from the President's STOCK-Act periodic transaction reports (OGE Form 278-T) as aggregated by QuiverQuant — TRANSACTION-level data (not holdings), so it is modeled exactly like a PTR tracker with signal date = filing date. Honesty findings (verified 2026-07-27): the dataset starts with the 2026-05-13 filing (shallow history — two filings covering trades 2026-01..2026-05 at integration time, grows with future filings); rows without a ticker (unmapped funds/bonds, ~4% of the verified corpus) are counted and skipped, never guessed; the feed exposes NEITHER asset types NOR option details, so every ticker row is tracked as a plain stock transaction; original filing documents are not linkable from the feed — source links open Quiver's aggregated dataset page. The Qualified rule follows the PTR range logic ($50,001+ lower bound), same disclosure regime, same range buckets.
  • Insider Transactions (SEC Form 4, F41): the per-stock section and the cluster monitor cover the FUNDAMENTALS universe only (politician-only tickers are excluded — same runtime guard as EDGAR fundamentals); 352 tickers carry Form-4 rows in the 365-day window. Quiver's insider feed does NOT mark Form 4/A amendments and ships no accession numbers, so amendments cannot be deduplicated against originals (documented limitation, design doc §C3); identical duplicate rows are conservatively full-row-deduplicated. Rows are capped per ticker (newest 40 + every open-market buy); aggregates are computed over the full window BEFORE the cap. Where the API's ~1000-row cap truncates a heavy ticker's window, agg.windowTruncated is true and the UI must say the counts undercount. Per-row source links are EDGAR full-text-search deep links (name + Form 4 + filing date) — exact accession links come with the EDGAR-direct migration.
  • Insider Cluster Buys Monitor rule v1: a stock joins once >= 3 distinct insiders report open-market purchases (Form 4 transaction code P, acquired) within a 30-day transaction-date window with a combined reported value >= $200,000 (missing prices contribute $0 — a cluster is never formed on guessed value). dateAdded = the FILING date that completed the cluster (look-ahead guard). Currently 20 stocks qualify. Distinctness is by FILER NAME as filed — a person filing alongside their investment vehicles counts as multiple filers (identity resolution would require enrichment beyond the filing, which the compliance frame forbids; every filer name is listed in the member reason). Wording is compliance-bound (memo 2026-07-26): descriptive screen, mechanically generated, not a recommendation.
  • Politician signals are dated at the PTR FILING date, never at the trade date. The STOCK Act allows up to 30 days after the member learns of a trade (max 45 days after execution) — that lag is the real-world information delay a follower would face, and it is intentional and visible (as with 13F).
  • Only ELECTRONIC House PTRs are parseable (text PDFs); paper filings are scans without a text layer, so heavy paper filers (e.g. Ro Khanna, Michael McCaul) cannot be tracked in v1 — the roster was selected among electronic filers by filing activity.
  • Politician OPTION transactions ([OP] with a parseable ticker) become signals since rule v2 (2026-07-26): buying calls / selling puts = Bullish on the underlying, buying puts / selling calls = Bearish; the virtual portfolio tracks the DIRECTION of the underlying stock only — option leverage, strikes and expiries are NOT modeled (an option's payoff is nonlinear; our tracker holds the plain stock). Every option signal names the instrument in its summary and carries a Call/Put Options tag; [OP] rows whose call/put type cannot be determined from the filing text are skipped and counted as OP-unclassified. Bonds, munis, funds and private placements remain skipped, counted per asset-type code in sources.housePtr.
  • Politician transaction amounts are STOCK-Act disclosure RANGES (e.g. $1,000,001-$5,000,000). They are shown only as ranges, never as exact numbers; the conviction score is a documented function of the range's lower bound (docs/signal-engine/politician-trades-v1.md, section 5).
  • Qualified-signal rule (v2, 2026-07-16): a signal is Qualified at conviction >= 60, EXCEPT Congress PTR signals, which are Qualified when the disclosed transaction range's lower bound is >= $50,001 (= conviction >= 50 under the documented PTR conviction function). Rationale: for PTRs the noise Qualified exists to filter is the flood of $1,001-$15,000 micro-trades; a reported $50k+ position is an economically meaningful trade. Single source of truth: src/lib/conviction.ts. Hit rate (90D) is computed over Qualified signals only.
  • Politician partial sales ('S (partial)') close the entire virtual position — the portfolio engine has no partial-close action (v1 limitation). Sales of positions the virtual portfolio never held are no-ops, as for Reddit signals.
  • PTR amendments are deduplicated against their originals (since 2026-07-26): a transaction filed with Filing Status 'Amended' replaces its original in place (amended amount/description win; the signal stays dated at the ORIGINAL filing — the first public disclosure), 'Deleted' removes the original, and amended transactions without a findable original count as first disclosures dated at the amendment. Match key: owner + ticker + transaction type + trade date (amount deliberately excluded — it is what amendments correct). Counts in sources.housePtr.amendments.
  • EDGAR fundamentals cover the WHOLE ticker universe since F56 (30.07.2026, docs/signal-engine/f56-fundamentals-oeffnung.md). The previous runtime guard excluded the 1441 tickers that entered the universe only through political disclosures — for ordinary US filers with complete 10-Q/10-K data, which left their stat tables nearly empty. Coverage went from 298 of 1,701 tickers (17.5 %) to 1301 of 1701. Tickers still without figures carry a specific reason in skippedTickers, which the stock page states in plain language instead of rendering a column of 'n/a'.
  • Insider Transactions (SEC Form 4) coverage is NARROWER than fundamentals coverage on purpose: QuiverQuant is a metered third-party API with one request per ticker, so the insider step keeps the pre-F56 bound (411 of 1701 tickers — everything except the politician-only names). insiders.coveredTickers lists exactly what was fetched; a ticker missing from it was never asked, which is NOT the same as "no insider activity".
  • Fundamentals substance guard (F56): a ticker only counts as covered when at least one trailing-twelve-month figure (revenue or EPS) can be computed from its filings. Filers whose us-gaap quarters exist but never form a full TTM window — retailers on a 52/53-week fiscal calendar filed year-to-date only (Costco, Kroger, PepsiCo, Advance Auto Parts) and commodity trusts without revenue (GLD, IBIT, FBTC, ARKB) — are skipped WITH that reason instead of being published as an entry whose every EDGAR row reads 'n/a' with no explanation.
  • X coverage (F5) uses the OFFICIAL X API only (pay-per-use; compliance memo 2026-07-12): one timeline request per handle per run, original public posts only (retweets and replies excluded server-side — signal threads continued in self-replies are missed in v1). Quote tweets are kept and flagged. Without the X_BEARER_TOKEN secret the step degrades to the committed snapshot without failing the run.
  • X signal extraction was performed manually by an LLM (Claude) at build preparation time and committed to data/raw/x/extracted-signals.json; every signal's evidence quote is verified verbatim against the raw tweet at build time (author + quote match, failures dropped and reported). Unlike Reddit (>= 2 signals for anonymous authors), one verified signal qualifies a curated roster handle.
  • X roster handles without extractable single-stock signals in the fetched window (news aggregation, macro commentary, principles content) get NO influencer profile and NO portfolio — nothing is invented; they appear in meta.sources.x with 0 signals and join automatically once a real signal exists.
  • X deep-backfill coverage (daten-tranche-2 §B, 2026-07-26): every timeline was paginated back to the API's ~3,200-most-recent-tweets cap (replies/retweets count against the cap, so heavy repliers yield short original-post windows — that is the API's hard limit, not a budget choice). Signal extraction over the backfilled corpus was TRIAGED, not exhaustive: candidate posts were pre-filtered for cashtags plus first-person position/conviction language before manual LLM extraction with verbatim verification. Posts outside that filter (notably the cashtag-free macro styles of @RayDalio, @zephyr_z9 and @jukan05's news firehose) were not individually reviewed in this pass — absence of a backfill signal is not evidence of absence.
  • Off-X channels (Substack/YouTube/Podcasts) of the tracked X voices are a compliance-memo requirement (risk diversification + signal source); v1 ships the per-handle offX registry in scripts/ingest/x.ts and meta.sources.x — the actual off-X ingestion (RSS/transcripts through the same verified-extraction pattern) is documented follow-up work (docs/signal-engine/x-ingestion-v1.md §6). No unverified channel URLs are registered.
  • Some X-named tickers are non-US listings without CBOE price data (e.g. SIVE Stockholm, LPKFF OTC); their signals are extracted for completeness but dropped from the priced universe and reported in skippedTickers — never silently mapped to a similarly named US ticker.
  • Kevin Xu tracker (F45): an all-in swing trader's EXIT is only recorded when a disclosure (receipt image, realized-P&L card or explicit text) shows it — an undisclosed exit (e.g. the RCAX position, whose sale is implied by the next all-in buy but never shown) persists in the virtual book until first disclosed. Sells are never invented. Several of his teaser posts redact the ticker of a completed order; those images are counted as unusable, nothing is guessed.
  • X image ground truth (F45, docs/signal-engine/x-vision-v1.md): some voices post their exact portfolio or trades as IMAGES, invisible to text extraction. For the media handles (HolySmokas, kevinxu) image attachments are fetched via the official API, cached, and extracted by a vision-capable LLM (2026-07-27 pass: manual extraction by Claude fable-5 from the cached images, committed and verified at build time — the same doctrine as the Reddit/X text extraction; a throttled claude-sonnet-5 API runner exists for future passes). Rules: (1) results below confidence 0.75 or failing structural validation are NEVER applied; (2) full-portfolio screenshots rebalance the tracker at the POST date (13F-style snapshot calibration; deviations from the previous virtual book materialize as one trade whose source link is the post) — partial screenshots and snapshots with < 60% priceable weight are skipped; unpriceable positions stay cash, never renormalized away; (3) broker trade receipts become signals/trades at documented conviction 80 ('Very High' — a receipt discloses an executed trade, not an opinion); (4) collision rule: image ground truth beats text — on a snapshot day, same-day text/receipt events of that handle are superseded (their signals stay visible), and a receipt duplicating a verified text signal on the same post is not emitted twice. Only committed, verified results feed the build (no live LLM call); videos/GIFs are not extracted in v1.
  • Reddit coverage is a sample: r/wallstreetbets was filtered server-side by DD flair; r/stocks, r/ValueInvesting and r/StockMarket were sampled in ~5-day windows via the Arctic Shift archive API (not exhaustively paginated). Deviation from the original spec note: Reddit raw data was fetched via the Arctic Shift API instead of a browser session.
  • Reddit signal extraction was performed manually by an LLM (Claude) at build preparation time and committed to data/raw/reddit/extracted-signals.json; every signal's evidence quote is verified verbatim against the raw post at build time. A programmatic Anthropic-API extractor can be plugged in via the SignalExtractor interface.
  • Only Reddit authors with >= 2 extracted signals become influencers; single-signal authors were dropped (their posts remain in the raw data).
  • The Nasdaq quote API provides exactly five verified stock facts (market cap, 52W high/low, average volume, dividend yield) plus sector/industry — the 32 further KPI slots the data model used to carry were literal 'n/a' placeholders for all 1,701 tickers and were removed on 30.07.2026 (F56 side finding); every valuation, margin, growth, balance-sheet and cash-flow figure in the UI comes from the self-computed EDGAR engine.
  • Marcel's r/StockMarket post 1ucvxpv is a verbatim crosspost of r/ValueInvesting post 1ucvtuv and was deliberately extracted only once.
  • Duquesne Family Office reports 13F values in thousands of dollars (legacy convention); weights are scale-invariant, and the price sanity check accepts both conventions.
  • 13F depth is 20 quarters per fund (~5 years, daten-tranche-1-v1 §B). 13F-HR/A amendments are applied to their quarter (RESTATEMENT replaces the holdings, NEW HOLDINGS extends them; unsupported/unparseable amendments are skipped and listed in sources.edgar13f). The amended composition stays DATED at the original filing — same honesty rule as PTR amendments: the quarter's book was first public at the original filing, the amendment refines it; dating at the amendment (which can arrive after the NEXT quarter's 13F) would order rebalances backwards.
  • Older 13F quarters reference CUSIPs of long-exited positions that the manual CUSIP->ticker map does not cover; unmapped holdings are dropped from tracker weights (top-15 weights renormalize over mapped positions) and every unmapped CUSIP is listed in skippedTickers — deep-history books are therefore slightly less complete than recent ones, never silently wrong.
  • 13F Split-Guard (docs/signal-engine/split-guard-v1.md, seit 2026-07-27): 13F-Werte und -Stückzahlen stehen NOMINAL zum Quartalsende im Filing, unsere Kurshistorie ist rückwirkend splitbereinigt. Das Verhältnis aus implizertem Preis (valueUsd/shares) und Quartals-Close IST deshalb der kumulierte Kapitalmassnahmen-Faktor — er wird gemessen (SEC + CBOE, zwei unabhängige Quellen), nicht geschätzt, und nur akzeptiert, wenn er auf ein einfaches Split-Verhältnis passt (1 %), über die Zeit nicht steigt, an ein erklärtes Nachbarquartal anschliesst und von mindestens zwei unabhängigen Filings getragen wird. In diesem Lauf: 22 Kapitalmassnahme(n) erkannt (u. a. AMZN, GOOGL, GOOG, CMG, NFLX, BN, SHOP, NVDA). Akzeptierte Faktoren normalisieren die STÜCKZAHLEN auf heutige Basis — die in Signaltexten genannte Stückzahl ist damit das splitbereinigte Äquivalent der Filing-Zahl, nicht deren Wortlaut; valueUsd und alle daraus abgeleiteten Gewichte bleiben unverändert as-filed. Ohne diese Normalisierung erzeugte jeder Split ein Phantom-Signal ('Position um 1.900 % erhöht'), weil die 13F-Diff-Logik Stückzahl-Änderungen auswertet.
  • 13F-Faktoren, die die Prüfkriterien NICHT bestehen, werden ausgelassen statt geschätzt: 10 (Ticker, Quartal)-Kombination(en) und 54 einzelne Filing-Zeile(n) von 165819 fallen weg — jeweils mit Grund und Zahlen in skippedTickers. Verworfen wird in dieser Reihenfolge: einzelne Zeile, dann die CUSIP-Zuordnung (1 in diesem Lauf), und erst wenn ein Ticker keine belastbare CUSIP mehr hat, der Ticker selbst (0 in diesem Lauf). Die betroffenen Fonds-Bücher sind in diesen Quartalen um die jeweilige Position unvollständig; die Gewichte der übrigen Positionen renormieren entsprechend.
  • Bewertungs-Stichtag einzelner 13F-Filings: 1 Filing(s) bewerten ihr Buch erkennbar nicht zum Quartalsende (Median-Abweichung quer durch alle Positionen, z. B. CIK 1697748 2022-06-30: 12 %). Der Offset wird bei der Zeilenprüfung herausgerechnet (der Fehler liegt im gemeldeten WERT, nicht in den Stückzahlen), aber nicht korrigiert: die Gewichte dieser Quartale tragen die Abweichung des Filings.
  • Ticker universe is 1701 names (spec soft cap ~60 was exceeded to keep every verified Reddit influencer's signal set complete).
  • AMC's CBOE price series is not adjusted identically to other vendors around the 2023 reverse split era; window returns for periods crossing corporate actions rely on CBOE's adjustments.
  • CBOE price series are not adjusted for spin-offs and special distributions. Confirmed case: HON shows an unadjusted ~51% price gap on 2026-06-29 from Honeywell's corporate separation (spin-off distribution) — window returns crossing that date (e.g. HON 1M ≈ −48%) reflect the distribution, not a market loss.
  • CBOE price series are per ticker SYMBOL, not per company — a reused symbol carries the previous listing's history in the same series. A continuity guard truncates every series at gaps > 365 days, so window returns are always computed inside the current listing only. Confirmed case: SNDK — SanDisk Corp traded 2004–2016 (acquired by Western Digital), and the symbol re-listed on 2025-02-24 for the spun-off new Sandisk Corp. SNDK's displayed windows (including the extreme 1Y return) lie entirely inside the new listing and are verified free of splice artifacts; the guard exists so this stays true as windows lengthen. This run: ACMR: dropped 1483 bars before a listing gap (2006-01-03…2011-11-18); windows use only the current listing starting 2017-11-03. ADT: dropped 916 bars before a listing gap (2012-10-01…2016-05-23); windows use only the current listing starting 2018-01-19. AGCO: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-05-04. AHL: dropped 3872 bars before a listing gap (2004-01-02…2019-05-20); windows use only the current listing starting 2025-05-08. AL: dropped 864 bars before a listing gap (2006-01-03…2009-06-09); windows use only the current listing starting 2011-04-19. ALC: dropped 1670 bars before a listing gap (2006-11-20…2013-07-11); windows use only the current listing starting 2019-04-09. ALHC: dropped 202 bars before a listing gap (2008-06-12…2010-01-15); windows use only the current listing starting 2021-03-26. AMC: dropped 316 bars before a listing gap (2006-11-01…2008-04-09); windows use only the current listing starting 2013-12-18. AMPH: dropped 1049 bars before a listing gap (2006-01-03…2010-11-30); windows use only the current listing starting 2014-06-25. AMR: dropped 1 bars before a listing gap (2017-08-10…2017-08-10); windows use only the current listing starting 2018-11-09. AMRX: dropped 754 bars before a listing gap (2004-01-02…2006-12-28); windows use only the current listing starting 2009-01-14. AON: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-12-01. APLS: dropped 26 bars before a listing gap (2006-01-03…2010-03-26); windows use only the current listing starting 2017-11-09. APO: dropped 622 bars before a listing gap (2006-10-31…2009-12-30); windows use only the current listing starting 2011-03-30. ASML: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2007-05-10. AVNS: dropped 1463 bars before a listing gap (2006-01-03…2012-10-08); windows use only the current listing starting 2014-11-03. BBVA: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-12-14. BE: dropped 514 bars before a listing gap (2006-11-01…2008-11-14); windows use only the current listing starting 2018-07-25. BEAM: dropped 2095 bars before a listing gap (2006-01-03…2014-04-30); windows use only the current listing starting 2020-02-06. BOOT: dropped 1468 bars before a listing gap (2006-01-03…2012-08-16); windows use only the current listing starting 2014-10-30. BSY: dropped 1103 bars before a listing gap (2006-01-03…2010-05-20); windows use only the current listing starting 2020-09-23. CACI: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-05-04. CART: dropped 2883 bars before a listing gap (2006-10-31…2020-04-03); windows use only the current listing starting 2022-06-22. CCS: dropped 1288 bars before a listing gap (2007-06-13…2012-07-20); windows use only the current listing starting 2014-06-18. CCXI: dropped 2963 bars before a listing gap (2012-02-08…2024-08-23); windows use only the current listing starting 2026-02-09. CEG: dropped 1559 bars before a listing gap (2006-01-03…2012-03-12); windows use only the current listing starting 2022-02-02. CENT: dropped 630 bars before a listing gap (2006-01-03…2012-12-11); windows use only the current listing starting 2015-08-13. CENTA: dropped 316 bars before a listing gap (2007-02-15…2012-12-11); windows use only the current listing starting 2015-03-19. CHRD: dropped 1082 bars before a listing gap (2006-01-03…2010-04-21); windows use only the current listing starting 2022-07-05. CHTR: dropped 1 bars before a listing gap (2009-04-07…2009-04-07); windows use only the current listing starting 2010-09-15. CHWY: dropped 53 bars before a listing gap (2009-10-13…2009-12-28); windows use only the current listing starting 2019-06-14. CHX: dropped 713 bars before a listing gap (2006-01-03…2009-11-13); windows use only the current listing starting 2018-05-09. CLH: dropped 512 bars before a listing gap (2004-01-02…2006-01-12); windows use only the current listing starting 2008-12-15. CNR: dropped 1480 bars before a listing gap (2010-04-21…2016-08-18); windows use only the current listing starting 2017-11-29. CPAY: dropped 475 bars before a listing gap (2006-11-01…2008-10-17); windows use only the current listing starting 2010-12-15. CRWD: dropped 5 bars before a listing gap (2012-12-17…2015-02-20); windows use only the current listing starting 2019-06-12. CRWV: dropped 107 bars before a listing gap (2011-07-28…2012-01-30); windows use only the current listing starting 2025-03-28. CRY: dropped 3 bars before a listing gap (2023-11-06…2024-04-29); windows use only the current listing starting 2026-04-28. CSW: dropped 676 bars before a listing gap (2006-11-01…2012-10-23); windows use only the current listing starting 2015-10-01. CSWI: dropped 676 bars before a listing gap (2006-11-01…2012-10-23); windows use only the current listing starting 2015-10-01. DAVA: dropped 1 bars before a listing gap (2009-06-16…2009-06-16); windows use only the current listing starting 2018-07-27. DBX: dropped 581 bars before a listing gap (2006-01-03…2009-12-29); windows use only the current listing starting 2018-03-23. DD: dropped 3556 bars before a listing gap (2004-01-02…2018-02-16); windows use only the current listing starting 2019-06-03. DKNG: dropped 711 bars before a listing gap (2012-01-05…2016-06-13); windows use only the current listing starting 2019-07-25. DRAM: dropped 2850 bars before a listing gap (2006-01-03…2017-07-03); windows use only the current listing starting 2026-04-02. DT: dropped 1124 bars before a listing gap (2006-01-03…2010-06-21); windows use only the current listing starting 2019-08-01. DWAC: dropped 393 bars before a listing gap (2016-09-21…2018-04-13); windows use only the current listing starting 2021-09-30. EMC: dropped 3194 bars before a listing gap (2004-01-02…2016-09-08); windows use only the current listing starting 2023-05-15. EPC: dropped 200 bars before a listing gap (2009-03-25…2010-04-20); windows use only the current listing starting 2015-07-01. ES: dropped 1340 bars before a listing gap (2007-12-10…2013-05-24); windows use only the current listing starting 2015-02-19. EVTC: dropped 370 bars before a listing gap (2008-06-09…2009-12-03); windows use only the current listing starting 2013-04-12. EYE: dropped 793 bars before a listing gap (2006-01-03…2009-02-26); windows use only the current listing starting 2017-10-26. FB: dropped 154 bars before a listing gap (2022-06-09…2024-04-29); windows use only the current listing starting 2025-06-26. FBTC: dropped 480 bars before a listing gap (2006-11-01…2008-10-21); windows use only the current listing starting 2024-01-11. FEP: dropped 767 bars before a listing gap (2006-01-03…2010-02-24); windows use only the current listing starting 2011-04-26. FIG: dropped 2750 bars before a listing gap (2007-02-21…2018-01-22); windows use only the current listing starting 2022-05-17. FLEX: dropped 1191 bars before a listing gap (2004-01-02…2011-02-18); windows use only the current listing starting 2013-07-26. FLT: dropped 475 bars before a listing gap (2006-11-01…2008-10-17); windows use only the current listing starting 2010-12-15. FLY: dropped 3567 bars before a listing gap (2007-10-09…2022-01-18); windows use only the current listing starting 2025-08-07. FNA: dropped 524 bars before a listing gap (2008-06-09…2010-07-08); windows use only the current listing starting 2021-10-15. FOXA: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2013-07-01. FRPT: dropped 1503 bars before a listing gap (2006-01-03…2011-12-19); windows use only the current listing starting 2014-11-07. FTGC: dropped 130 bars before a listing gap (2011-07-05…2012-09-28); windows use only the current listing starting 2013-10-23. GMS: dropped 858 bars before a listing gap (2006-01-03…2009-06-01); windows use only the current listing starting 2016-05-26. GOLF: dropped 1403 bars before a listing gap (2006-11-01…2012-07-24); windows use only the current listing starting 2016-10-28. GOOGL: dropped 346 bars before a listing gap (2004-08-19…2005-12-30); windows use only the current listing starting 2013-12-18. HCC: dropped 2995 bars before a listing gap (2004-01-02…2015-11-23); windows use only the current listing starting 2017-04-12. IR: dropped 1906 bars before a listing gap (2006-01-03…2013-07-30); windows use only the current listing starting 2017-05-12. LB: dropped 87 bars before a listing gap (2021-08-03…2022-01-18); windows use only the current listing starting 2024-06-28. LBRT: dropped 4 bars before a listing gap (2012-12-27…2013-05-03); windows use only the current listing starting 2018-01-12. MBC: dropped 780 bars before a listing gap (2009-05-22…2016-10-03); windows use only the current listing starting 2022-12-15. MC: dropped 482 bars before a listing gap (2006-11-01…2008-10-17); windows use only the current listing starting 2014-04-16. MD: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-01-02. MICC: dropped 1362 bars before a listing gap (2006-01-03…2011-05-31); windows use only the current listing starting 2025-12-08. MMI: dropped 347 bars before a listing gap (2011-01-05…2012-05-21); windows use only the current listing starting 2013-10-31. MRP: dropped 534 bars before a listing gap (2006-01-03…2008-12-29); windows use only the current listing starting 2025-02-07. MSI: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2011-01-05. NAVI: dropped 1148 bars before a listing gap (2006-01-03…2011-04-20); windows use only the current listing starting 2014-05-01. NEE: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2010-06-24. NEO: dropped 454 bars before a listing gap (2004-03-16…2005-12-30); windows use only the current listing starting 2012-10-02. NVT: dropped 634 bars before a listing gap (2006-01-03…2008-10-17); windows use only the current listing starting 2018-05-01. OSCR: dropped 59 bars before a listing gap (2008-06-13…2008-11-17); windows use only the current listing starting 2021-03-03. OTTR: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-08-13. OUST: dropped 1030 bars before a listing gap (2008-02-11…2017-05-26); windows use only the current listing starting 2020-10-09. OWL: dropped 1452 bars before a listing gap (2006-01-03…2018-08-22); windows use only the current listing starting 2020-12-14. PDD: dropped 142 bars before a listing gap (2008-06-10…2010-08-20); windows use only the current listing starting 2018-07-26. PDX: dropped 755 bars before a listing gap (2006-01-03…2008-12-31); windows use only the current listing starting 2023-11-21. PECO: dropped 1 bars before a listing gap (2008-09-26…2008-09-26); windows use only the current listing starting 2021-07-15. PENG: dropped 183 bars before a listing gap (2008-11-13…2010-01-19); windows use only the current listing starting 2017-05-24. PHR: dropped 1226 bars before a listing gap (2008-07-22…2013-06-12); windows use only the current listing starting 2019-07-18. PINS: dropped 42 bars before a listing gap (2013-02-13…2013-12-23); windows use only the current listing starting 2019-04-18. PJT: dropped 1435 bars before a listing gap (2006-01-03…2011-09-14); windows use only the current listing starting 2015-10-01. PPC: dropped 1028 bars before a listing gap (2004-01-02…2008-12-01); windows use only the current listing starting 2009-12-29. PRE: dropped 3094 bars before a listing gap (2004-01-02…2016-04-18); windows use only the current listing starting 2022-05-18. RACE: dropped 6 bars before a listing gap (2009-06-12…2010-04-01); windows use only the current listing starting 2015-10-21. RAND: dropped 889 bars before a listing gap (2008-06-09…2017-12-27); windows use only the current listing starting 2020-04-01. REAL: dropped 399 bars before a listing gap (2006-01-03…2013-06-20); windows use only the current listing starting 2019-06-28. REX: dropped 448 bars before a listing gap (2006-11-01…2008-09-10); windows use only the current listing starting 2010-06-11. RIO: dropped 1342 bars before a listing gap (2004-01-02…2009-05-01); windows use only the current listing starting 2010-10-13. ROC: dropped 3016 bars before a listing gap (2005-08-17…2024-08-23); windows use only the current listing starting 2026-02-20. RRR: dropped 1238 bars before a listing gap (2007-06-04…2012-04-30); windows use only the current listing starting 2016-04-27. RTX: dropped 225 bars before a listing gap (2007-10-29…2008-10-17); windows use only the current listing starting 2020-04-03. S: dropped 4092 bars before a listing gap (2004-01-02…2020-04-03); windows use only the current listing starting 2021-06-30. SANM: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-09-14. SARO: dropped 353 bars before a listing gap (2006-01-03…2009-04-17); windows use only the current listing starting 2024-10-02. SLVM: dropped 330 bars before a listing gap (2008-06-23…2016-03-08); windows use only the current listing starting 2021-10-01. SMPL: dropped 557 bars before a listing gap (2012-11-13…2015-02-27); windows use only the current listing starting 2017-07-10. SNDK: dropped 3113 bars before a listing gap (2004-01-02…2016-05-13); windows use only the current listing starting 2025-02-24. SNEX: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2010-12-16. SUSA: dropped 124 bars before a listing gap (2012-04-24…2013-11-19); windows use only the current listing starting 2017-07-13. SWTX: dropped 166 bars before a listing gap (2011-03-18…2011-11-28); windows use only the current listing starting 2019-09-13. TE: dropped 534 bars before a listing gap (2006-01-03…2010-04-22); windows use only the current listing starting 2020-01-10. TEAM: dropped 1243 bars before a listing gap (2006-01-03…2010-12-13); windows use only the current listing starting 2015-12-10. THRM: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2012-06-13. TKO: dropped 974 bars before a listing gap (2006-01-03…2009-11-12); windows use only the current listing starting 2023-09-12. TLN: dropped 393 bars before a listing gap (2015-06-02…2016-12-19); windows use only the current listing starting 2024-07-10. TREX: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2009-11-23. TRU: dropped 1775 bars before a listing gap (2006-01-03…2013-01-29); windows use only the current listing starting 2015-06-25. TWLO: dropped 116 bars before a listing gap (2006-01-03…2009-05-08); windows use only the current listing starting 2016-06-23. USAR: dropped 23 bars before a listing gap (2016-02-22…2016-03-23); windows use only the current listing starting 2025-03-14. USIG: dropped 1433 bars before a listing gap (2007-01-23…2012-09-28); windows use only the current listing starting 2014-06-12. UTZ: dropped 2127 bars before a listing gap (2006-01-03…2014-07-24); windows use only the current listing starting 2018-11-26. VITL: dropped 712 bars before a listing gap (2006-01-03…2008-10-29); windows use only the current listing starting 2020-07-31. VR: dropped 2777 bars before a listing gap (2007-08-10…2018-08-20); windows use only the current listing starting 2022-04-28. VYX: dropped 1220 bars before a listing gap (2004-01-02…2008-11-13); windows use only the current listing starting 2011-01-05. WMG: dropped 1396 bars before a listing gap (2006-01-03…2011-07-19); windows use only the current listing starting 2020-06-03. WSC: dropped 1380 bars before a listing gap (2006-01-03…2011-06-24); windows use only the current listing starting 2017-11-30. WT: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2011-07-26. WWD: dropped 504 bars before a listing gap (2004-01-02…2005-12-30); windows use only the current listing starting 2011-02-01.
  • Fundamentals (F21) are self-computed from SEC EDGAR XBRL companyfacts x CBOE closes (rules: docs/signal-engine/fundamentals-v1.md). The field evEbitdaOperating uses OPERATING EBITDA = operating income + D&A and MUST be labeled 'EV/EBITDA (operating)' in the UI — deliberately NOT Yahoo's bottom-up NetIncome+interest+taxes+D&A, which absorbs non-operating swings (decision verified on GOOGL 2026: 56.3B TTM equity gains make Yahoo show 19.7 where the operating ratio is 26.7). Forward P/E and PEG need analyst estimates we do not have — the fields do not exist in the data model. ETFs and IFRS/20-F filers (foreign issuers) have no us-gaap quarterly facts and are skipped with reasons in skippedTickers. Banks/insurers rarely tag OperatingIncomeLoss, so EV/EBITDA (operating) is honestly n/a there. Share counts are sanity-anchored against the Nasdaq market cap; dual-class filers whose dei cover-page count is per-class fall back to weighted-average diluted shares (noted per ticker).

Skipped tickers (9206)

9206 items were skipped during ingestion — mostly unmapped CUSIPs and non-equity 13F lines, plus non-US listings and fetch failures — and are therefore absent from the universe.

Show skipped items (first 200 of 9206)
90297330416119P10806405810037045V10053122960711012210874967X103862121100872590104G8515810658933Y10553122940937959E10257174810282968B103G5480U12068622V106742718109G9001E102609207105949746101G9001E128911312106G7709Q104339750101G6693N10300507V10953122985440434L10592556H20615087010358155Q10357053510402005N10054634710547233W10925243Q20592852X10323331A10962944T10552605730253122978953122981353122972253122974804772630290384S30342280620882993310025754A20173278L10521036P108670346105512816109G0176J10953090930853090910065011110753122975524736170255616P10415670010667011P10074971D10191325V10895810210502000210174915M10025470F10436162J10625056510860871R20921871N10143610610891728620549427410355357310645703010486722A10304010L10398985W10255024110312665010074347B201G9442R12642345210174022D40756854Q200589433101Y2685T131G39637205Y7542C13000810B10525470F30269047Q102G9444H100G9444H11853983010981129220031620R303369550108G0104610412552310065336K103N8240510637940X10284920Y10600780010509215C105978097103552953101830879102G8127610064944510398980L10182575P10795763810962955J10325179M10369526310333616C10044615010430212P30336873610451680620565290C105Y8162K20444952J10420576830245174J509410345102Y1771G10244409710946428658235473P744B3856410846434G822Y7388L10346435U37468389X10500751Y10688878710859268810508930210336870C10485207H10433643310709077B10413508610654866110700846U10144267D10713645T10065410610381221510135671D85769743510514686910200827B10675615P10346120210370756910936960410360770K10748242W10683200N103912008109Y2573F10222266L10668218910557190320264026810868404L20130744W10712526910061945C10368268W10325470M10981730H109G2830210000422510824279D10581728A10853803410974276L10500288U10631188V10053679710314203810875629V10469037010112510Q10083304A10697137810445687V10640171V10087652V109G4701H10968111610979589L106

…and 9006 more — the full list lives in src/data/generated/meta.json.

Core principle

Hype language alone never creates a high score. A short but precise signal from a historically strong voice can score higher than a viral, low-quality post. Engagement is considered but is never the primary factor.

Conviction Score (0–100)

Scored per individual signal

  • Clarity of direction
    Is the directional view unambiguous?
    High
  • Strength of argument
    Quality and specificity of the reasoning.
    High
  • Depth of reasoning
    First- vs second-order analysis and evidence.
    High
  • Historical accuracy of the voice
    Track record of the contributor on similar calls.
    High
  • Repetition over time
    Consistency and reinforcement across posts.
    Medium
  • Source quality
    Primary research vs reposted commentary.
    Medium
  • Position disclosure
    Whether the author discloses a position (if available).
    Medium
  • Confirmation by other credible voices
    Clustering of independent, quality sources.
    Medium
  • Confirmation by earnings or KPIs
    Whether fundamentals corroborate the thesis.
    Medium
  • Engagement
    Considered, but never the primary factor.
    Low
Conviction labels:Low <40Medium 40–59High 60–79Very High 80+

Social Signal Score (0–100)

Aggregated per stock

The stock-level score aggregates the underlying signals, weighting the quality and independence of voices over raw volume.

  • Number of relevant mentions
  • Quality of voices
  • Sentiment
  • Sentiment change
  • Conviction of signals
  • Frequency over time
  • Clustering across multiple voices
  • Watchlist confirmation
  • Earnings or KPI confirmation (if available)

What counts as a Qualified Signal

The platform tracks Qualified Bullish Signals and Qualified Bearish Signals

Counts as qualified

A relevant voice clearly expresses a directional stock thesis with enough conviction and reasoning — a bull case, bear case, thesis change, or position disclosure backed by an argument. Concretely: a signal is Qualified at a conviction score of 60+.

STOCK-Act disclosure exception: trade disclosures (Congress PTRs and executive-branch financial disclosures such as the President's OGE Form 278-T filings) carry no written thesis, so their conviction score is a documented function of the disclosed amount range. Such a signal is Qualified when the reported transaction range starts at $50,001 or more (conviction 50+) — the flood of $1,001–$15,000 micro-trades is exactly the noise the Qualified filter exists to remove, while large disclosed buys and sales stay in.

Does not count
  • Jokes and memes
  • Pure news reposts
  • Vague “interesting” comments
  • Retweets without an own opinion
  • Automated bot posts
  • Unclear or ambiguous mentions

Stock fundamentals: what we compute, and where we stop

Self-computed from SEC filings — no data vendor, no estimates

  • Source
    Every valuation, margin, growth and cash-flow figure on a stock page is computed by us from that company's SEC EDGAR XBRL filings (10-Q/10-K) priced with official market closes. Market cap, the 52-week range and the 1-year return come from quote data and verified closes, which is why they can be present when the filing-based rows are not.
  • Coverage (as of 30 July 2026)
    1,302 of the 1,701 tracked tickers carry EDGAR figures. Until 30 July 2026 it was 298: tickers that entered our universe only through political disclosures were never asked about — a pipeline runtime decision, not a data limit. Opening it filled the gap for over a thousand ordinary US filers.
  • Where we stop
    A ticker only counts as covered when at least one trailing-twelve-month figure can actually be computed from its filings. Retailers on a 52/53-week fiscal calendar and commodity trusts file in a shape our quarterly engine cannot close, so they are left out on purpose instead of being shown as a table full of “n/a”.
  • Gaps are labeled, never filled
    Where we have no figures, the stock page names the specific reason for that ticker — an ETF without company filings, a foreign private issuer reporting annually on Form 20-F, a trust without XBRL data, or share counts that failed our market-cap consistency check. Nothing is estimated, interpolated or carried over from a peer.

Insider Transactions (SEC Form 4)

Per-stock disclosure section and the Cluster Buys Monitor

Legally required disclosures of trades by corporate executives, directors and 10% owners, filed with the SEC (Form 4). These are lawful, reported transactions — not to be confused with illegal insider trading.

  • Per-stock section
    Stock pages show the newest Form-4 rows of the last 12 months with the transaction date AND the filing date side by side (the lag is part of the data), the role exactly as filed, and a source link into SEC EDGAR per row. Values appear only where the filing reports both share count and price — never estimated. “Buy”/“Sale” wording is used only for open-market codes P/S; awards, grants, gifts and option exercises keep their own labels.
  • Cluster Buys Monitor (rule v1)
    A stock joins once open-market purchases (Form 4 code P) by 3+ distinct insiders land within a 30-day window with a combined reported value of $200,000+ (rule calibrated 2026-07 against the real data; variants documented in the pipeline). Membership is dated at the FILING that completed the cluster — never back-dated to the trades; missing prices contribute $0, so a cluster is never formed on guessed value. Distinctness is by filer name as filed — a person filing alongside their investment vehicles counts as multiple filers, and every filer name is shown in the membership reason. Descriptive screen, mechanically generated. Not a recommendation.
  • Coverage
    Form-4 data covers a NARROWER set of tickers than the SEC fundamentals do: the aggregating source is metered per ticker, so names that entered our universe only through political disclosures are left out (the exact fetched list is part of the data status above). A stock page therefore never claims “no insider activity” for a ticker we did not ask about. Where the source feed caps a heavy ticker's history, the section says its counts undercount.
  • Known limitation
    The current feed (aggregated by QuiverQuant) does not mark Form 4/A amendments and ships no accession numbers, so amendments cannot be deduplicated against originals yet — the planned EDGAR-direct migration fixes this and adds exact filing links.

Signal Types

First MentionBull CaseBear CaseThesis ReinforcementThesis ChangePosition DisclosureEarnings ReactionValuation ConcernRisk WarningKPI UpdateSector RotationNarrative Shift

Virtual Portfolios & Signal Performance

The deterministic rules behind every performance number

When a Qualified Signal is created, we record the influencer, ticker, signal date, signal price, direction, conviction, source, and thesis summary. Signal performance is tracked over 7, 30, 90, 180, and 365 days versus a benchmark; windows that have not elapsed yet stay empty — they are never extrapolated.

  • Virtual start capital
    Each voice gets a virtual 100,000 portfolio starting on the day of its first signal.
  • No look-ahead
    Trades execute at the close of the NEXT trading day after a signal — never at prices the signal could not have known.
  • 13F funds
    On each filing date the portfolio rebalances to the filing's top-15 positions by value. The signal date is the filing date — the ~45-day reporting lag stays visible. History covers the last ~6 quarterly filings per fund; each quarter-over-quarter difference is recorded as trades on the filing date.
  • Stock splits in 13F data
    A 13F reports share counts and values as of the quarter end and is never restated afterwards, while our price history is adjusted backwards for splits. We measure the ratio between a filing's implied share price and the adjusted close of that quarter — that ratio IS the cumulative split factor since then, derived from two independent sources rather than a split calendar. It is only accepted when it matches a simple split ratio, never grows over time, connects to an explained neighbouring quarter, and is confirmed by at least two independent filings; accepted factors put every quarter's share counts on today's basis, so a split can never masquerade as a fund buying more. Share counts named in a signal are therefore the split-adjusted equivalent of the filed number, not its literal wording — the position VALUE, and every weight derived from it, stays exactly as filed. Ratios that fail these checks are left out and listed with their numbers, never estimated: we drop the individual filing line first, then the CUSIP mapping, and only a ticker that has no reliable mapping left at all.
  • Theme & engine lists
    Curated theme lists rebalance monthly; engine lists (e.g. Fresh 13F Buys) follow their stated rule, and rule-driven exits appear as list-update trades. Their backfilled history is an honest backtest of the CURRENT list applied to the past 12 months — list-selection decisions are not back-dated, so this history carries survivorship bias and is labeled as such on each portfolio.
  • Voices
    Voice trackers (category “Voices”) rebuild positions from a person's own public posts — X accounts via the official X API, Reddit authors via the public archive. Each tracker names the handle it follows, and every trade links the original post. Their history starts at the first real post we ingested — it is never extended with invented past trades.
  • Image-posted portfolios & trade receipts
    Some voices post their exact portfolio or trades as IMAGES. For those accounts we fetch the attachments via the official X API and extract them with a documented vision pipeline (results below a 0.75 confidence threshold or failing structural checks are never used). A full-portfolio screenshot is snapshot ground truth: the tracker rebalances to the pictured positions at the POST date, 13F-style, and the deviation from the previous virtual book is recorded as one trade linking the original post; pictured weight we cannot price stays in cash — never renormalized away. A broker trade receipt becomes a signal at fixed conviction 80 (“Very High” — it discloses an executed trade, not an opinion). Image ground truth beats text: on a snapshot day, same-day text signals keep appearing in the feed but their portfolio effect is superseded by the snapshot.
  • STOCK-Act trackers
    Politician trackers (House PTRs, Senate disclosures, the President's OGE 278-T financial disclosures) date every signal at the FILING, never the trade — the up-to-45-day disclosure lag is the real information delay a follower faces. Amounts stay disclosure ranges; disclosed sales close the whole virtual position; option rows map to the direction of the underlying only, where the source provides option data at all.
  • Social voices
    A bullish signal buys a target weight of min(25%, conviction/100 × 20%) from cash; a bearish signal on a held position closes it. Cash earns no interest.
  • Returns & alpha
    NAV is computed daily. Window returns (30/90/180/365D) are NAV returns; alpha is the NAV return minus the S&P 500 (SPY) return over the same window.
  • Hit rate (90D)
    Share of QUALIFIED bullish signals with positive 90-day alpha. Only fully elapsed windows count — voices without qualified signals show no hit rate.
  • Trades
    Every composition change of a tracking portfolio is recorded as a virtual trade, dated at the public disclosure (filing or post date) — never the earlier transaction date. Signals without a composition effect never create a trade.
Performance is virtual (no real money) and historical — it does not guarantee future results. Voices below the minimum signal threshold are flagged as small sample to avoid ranking on a single lucky call.