Skip to content
Reference

Methodology

How paidpromotracker collects, deduplicates, and grades paid stock-promotion disclosures, dataset by dataset, with the caveats stated up front.

Where the data comes from

When someone is paid to promote a stock, U.S. securities law requires them to say so. Section 17(b) of the Securities Act makes it unlawful to publish a description of a security for compensation without fully disclosing that compensation and its amount. paidpromotracker parses those disclosures (who paid whom, for which ticker, over which window) from a tracked list of promotional newsletters and stock-promotion websites, and cross-checks each one against public market price data.

The disclosure is the data source, not an accusation. A promotion that discloses its compensation under §17(b) is operating within the law. The regulators, however, are blunt that the disclosure itself is a reason for caution. The SEC’s own investor alerts note that “even if a promoter makes specific disclosures about being compensated… the disclosures may not reveal that the underlying source of the compensation is a company insider.” We simply collect what the disclosures already say and measure what happened to the price next:

What is captured, and what is not

Disclosed promotions only. Undisclosed promotions are not captured; the totals on this site are a floor, not a census. A campaign that never filed a §17(b) disclosure, or that was promoted through channels we do not track, will not appear here at all.

Concretely, the honest gaps are:

  • Partial disclosures. Some disclosures omit the ticker, the dollar amount, or the funder. Those are real states, not errors. A missing field renders as an em dash (—), never a guessed value.
  • Source coverage. We only see the newsletters and promotion sites on our tracked list. A promotion carried only elsewhere is invisible to us.
  • Price granularity. Bar resolution follows the length of the promotion window. Windows of up to three days are measured from one-minute bars including pre-market and after-hours prints, because promotions are often dropped the evening before so subscribers can buy the extended session, and regular-hours-only data would score exactly those campaigns blind. Windows up to about two months use hourly bars; longer or still-open windows use daily bars. Where a ticker has no intraday history deep enough to cover its window, the measurement steps down (five-minute, then daily) rather than being dropped. Density is the only thing resolution is allowed to change, never the entry or peak price.
  • Candles, not fills. Every figure is derived from price bars, not from executed trades. A bar records what the tape printed; it does not mean that price was available in the size you wanted, and no figure here accounts for spread, slippage, borrow, or halts.

One deal, many newsletters: the dedupe model

One promo is disseminated across many newsletters; those rows collapse to ticker+window before any stat is computed.

The same paid campaign is typically emailed by several newsletters at once. The disclosure feed therefore returns one row per newsletter for a single underlying deal. For example, a $15,000 promotion of AEC beginning 2026-06-30 can arrive as four separate newsletter rows, one for each list it was sent to, but it is one deal, counted once. We collapse those rows to a single deal keyed by ticker + promotion window before computing anything. The funder is resolved beneath that key, not part of it, because the same promotion is often disclosed with the funder named on some rows and blank on others.

The consequence is deliberate: deal counts, win rates, and dollar totals are per deal, never per newsletter row. That is why our counts are lower than the raw number of newsletter mentions: we are counting unique campaigns, not how many mailing lists carried the same one. See the FAQ: “Why don’t deal counts match newsletter counts?”

PnL and backtest definitions

Every performance figure is a backtest: a historical measurement computed after the fact from past prices around a disclosed promotion window. It is not a prediction. The building blocks:

  • Anchor (called price). The first available price at or after the moment the promotion became knowable: the disclosed announcement instant where we have it, otherwise the start of the promotion window. All gains are measured from here. Anchoring on the bare window date instead would enter at a session that ran before the promotion existed.
  • Window. From the promotion-window start to its end, or through the present while the promotion is still open.
  • Peak. The maximum intraday high over that deal’s own window. The same ticker’s separate deals are measured independently.
  • Fade. The move from the peak to the window-end close. It is ≤ 0 by construction, the short-side read of how much of the run gave back.
  • Time to peak. How long the peak took to arrive from the anchor. Reported in trading days and, where the deal resolved at intraday resolution, down to hours and minutes within the peak session. A deal with no intraday history stays at day granularity, and a promotion that never traded above its anchor has no peak to time, so it renders as an em dash (—) rather than a “0m” that would read as an instant top.
  • Still elevated. Whether the window-end close is still above the anchor (i.e. the promotion’s gain had not fully unwound by the window end).

A deal with no usable price series (halted, delisted, thinly traded, or simply no candles available) is counted but left unrated. It renders as an em dash (—), never a fabricated value.

Operator grades

An operator grade is our opinion, derived from the outcomes of that operator’s disclosed deals, the same outcomes recited next to the grade. It is not a verdict, and it is not a prediction. Grades are computed from the following inputs; we publish the inputs and their direction, but not the exact weights or thresholds:

  • Win rate across the operator’s rated, deduped deals. Higher is better.
  • Median peak gain across those deals. Higher is better.
  • Median fade: more fades → lower grade. A picks-that-reliably-fade-to-zero pattern demotes an operator even when the raw win rate looks strong.
  • Sample size: how many deduped, rated deals the grade rests on.

The floor. An operator needs at least 3 deduped, rated deals before a letter grade is shown. Below the floor the grade renders as “Provisional (n deals tracked)”, never a letter. A grade computed from one or two deals would be noise. Grades are recomputed as deals resolve, so a grade is a living statistic, not a permanent label.

Update cadence

Sources are polled continuously as new disclosures are published; each tracked source carries its own “last checked” time. Price and PnL snapshots refresh nightly, with additional intraday refreshes for deals that are still active, so price-based figures can lag the live market by a short interval.

Because of this, the honest framing everywhere on the site is “data current as of” the relevant source or snapshot time rather than “live.” Per-surface freshness stamps make that time explicit next to each figure.

Anomalies and corrections

When a disclosure looks wrong, we re-check it against the underlying document before changing anything. What qualifies as a correctable error (versus a disagreement with a grade), how to dispute a data point, and our review commitment all live on the corrections policy page. Every correction we make is logged publicly on the changelog.

Methodology: how promo data is collected & scored