InsiderEdge
HomeSignal ScannerWatchlistAlertsBacktesterOutcomesEducation
Live
Scan Signals
DEV
InsiderEdge

SEC Form 4 filings, scored by a 15-factor engine — with every outcome tracked and published.

Product

  • Backtesting
  • Alerts
  • API Access
  • Watchlist

Resources

  • Best Practices
  • Form 4 Glossary
  • Blog
  • Documentation

Legal

  • Methodology
  • Privacy Policy
  • Terms of Service
  • Disclaimer

© 2026 InsiderEdge. Not financial advice. All insider data sourced from SEC EDGAR. Past performance does not guarantee future results.

Built for traders who demand the edge.

← Back to Home

Methodology

How we measure performance, what we control for, and the discipline that keeps every number on this page honest. The figures below are generated directly from our gated backtest — they cannot drift from what the engine actually produced.

Pre-Registered Headline Claims

Gate: PASS · no edge claimed

These are the only eight numbers we treat as headline claims: four score tiers × two horizons (T+90, T+180), each measured as sector alpha with a block-bootstrap 95% confidence interval and sample size. Claims are measured on buy signals only; sell signals are described, never claimed. A claim whose interval crosses zero is shown as insufficient data, never as a number; a claim whose interval clears zero is printed as the number it is — including a negative one. There is no cherry-picking and the downside is always visible. Everything else in the product is exploratory. Our own pre-registered edge hunt on the earlier corpus (2026) returned a negative result; that record is kept.

Backtested on the Historical Corpus, Scoring Version 1.7.0+pc:v2.0-pcc-alltime, pre-registered cells, as-of guarded, over 2021–2026.

TierT+90 (sector alpha · win rate)T+180 (sector alpha · win rate)
Elite
insufficient data
49.1% win rate · [45.9%, 52.2%] · n=958 (~30 indep)
-5.4% alpha · [-9.2%, -1.8%] · n=870 (~28 indep)
40.3% win rate · [37.1%, 43.6%] · n=870 (~28 indep)
Strong
insufficient data
46.3% win rate · [45.1%, 47.6%] · n=6262 (~40 indep)
-5.0% alpha · [-7.0%, -2.9%] · n=5913 (~38 indep)
41.9% win rate · [40.7%, 43.2%] · n=5913 (~38 indep)
Moderate
-1.9% alpha · [-3.5%, -0.3%] · n=17892 (~52 indep)
42.4% win rate · [41.7%, 43.1%] · n=17892 (~52 indep)
-5.6% alpha · [-7.4%, -3.9%] · n=17072 (~50 indep)
39.8% win rate · [39.0%, 40.5%] · n=17072 (~50 indep)
Weak
-3.0% alpha · [-5.2%, -0.9%] · n=3012 (~49 indep)
41.5% win rate · [39.7%, 43.2%] · n=3012 (~49 indep)
-7.3% alpha · [-10.7%, -3.8%] · n=2921 (~47 indep)
38.4% win rate · [36.7%, 40.2%] · n=2921 (~47 indep)

Engine version 1.7.0+pc:v2.0-pcc-alltime · credible-core window 2021–2026 · generated 10/9/2026, 8:29:30 AM.

How returns are measured

Every signal is measured from its filing date over horizons T+30, T+60, T+90, and T+180. Entry is the open of the first trading session after the filing is public — the earliest fill a real follower could achieve, since Form 4s are typically filed after market hours. Exit is the close at the horizon. Returns use a split- and dividend-adjusted price series on both legs, so a corporate action never fakes a win or a loss.

The official performance number is sector alpha: the signal's return minus its sector ETF's return over the identical window. SPY/QQQ comparisons are shown elsewhere as context, but sector alpha is what we stand behind — it isolates the insider's edge from the market and the sector.

Survivorship

Delisted and bankrupt companies are included, not quietly dropped. A position whose shares stopped trading before the horizon closed — acquired, bankrupt or delisted — is valued at its last available close, against the sector over the same period. Pricing rides a survivorship-free backbone (Sharadar ACTIONS/TICKERS), and every backtest carries a per-year price-match coverage check. We separate a credible-core window (recent years with dense coverage) from a best-effort older window, and only the credible core feeds the headline claims above.

No look-ahead

Fundamentals, institutional (13F) positions, and technicals are enriched point-in-time: a fact can only score a signal if it was public on or before the filing date. A runtime as-of guard enforces this on every score, and a full-corpus validator runs in CI. An insider's own track record is computed only from maturedprior trades, never from outcomes that hadn't happened yet.

Backtest vs. live

Backtest and live results are kept strictly separated by Scoring Version and are never blended into one statistic. A Historical score is a frozen fact stamped with the engine that produced it. The record that can support a claim is the Historical BUY record on the current public Scoring Version: pre-registered cells, every rigor gate including the two-sided negative control, as-of guarded. The corpus behind that record was certified against the Signal definition, not tuned to a result. Live signals are not part of that record and are never used to measure it: a live signal joins the record only when the whole live window moves into the Historical Corpus at the year-end checkpoint, once its 90-day outcomes are in and it has been rescored.

Backtester equity path — changed 2026-08-14

Until 2026-08-14 the Backtester drew its dollar path by compounding each matched signal into the next, as if the whole account were reallocated into every one of them in turn. That construction multiplied a per-trade average into an endpoint no portfolio could have held, and it is gone. The path now splits the starting $10,000 evenly across every matched signal and never reinvests, so the endpoint is exactly the average per-trade return shown beside it.

Any Backtester figure or screenshot captured before 2026-08-14 is not reproducible — the same filters now return a dollar endpoint roughly four orders of magnitude smaller. No stored data changed and no per-trade statistic moved: win rate, average return, worst trade and dispersion are the same numbers they were. Only the path and its endpoint moved.

Backtester equity path — changed again 2026-08-14 (benchmark-parked simulation)

Later on 2026-08-14 the dollar path changed a second time, by operator decision. The equal-weight ledger above kept ~96% of capital modelled as idle cash, so its endpoint was not comparable to a fully-invested SPY hold. The path is now a simulation in which the $10,000 stays fully invested for the whole window: capital sits in the benchmark, each signal takes at most 1% of current equity (per position and per ticker) for its hold period, and the money returns to the benchmark afterwards — compounding included.

Backtester dollar figures captured earlier on 2026-08-14, under the equal-weight ledger, are not reproducible against the new chart. Per-trade statistics did not move. The curve is one simulated path: it carries no confidence interval, and a companion endpoint with every trade capped at ±100% is shown beside it so a handful of outlier wins cannot carry the whole picture unseen.

Backtester statistics — changed 2026-08-15 (the full matched set, not the first 10,000 rows)

Until 2026-08-15 the Backtester answered every query with at most 10,000 signals, taken oldest-first, and computed the win rate, the mean return, the best and worst trade, the standard deviation and every confidence interval on that slice. On a broad configuration that was not a sample of your query — it was the oldest fraction of it. A SELL run at score 0 over the full range matches 224,321 signals and reported on 10,000 of them — about 4%, covering a few months of a sixteen-year window.

Those numbers now describe every signal your filters match. The intervals are computed over the same full set, so the interval that used to be withheld on a large query is simply shown. The trade table below the chart still pages through a capped window — that is a browsing limit, not the sample the statistics describe, and the page says so when the two differ.

Backtester statistics captured before 2026-08-15 on a query matching more than 10,000 signals are not reproducible against the current page. Queries matching fewer than 10,000 signals were never truncated and are unchanged. The dollar path is still drawn on the served window, and is labelled accordingly.

The honesty contract

No win-rate or return is ever shown on a performance surface without its confidence interval and sample size. Marketing language and the urgency rating are data-only: they never change a signal's score, tier, or alert priority. That firewall is recorded as a durable decision and locked by automated tests — see our disclaimer for the full risk warning.

Filings we withhold

SEC transaction code P means “open market or private purchase” — one code for two unrelated events. A purchase at a price fixed in an agreement is not a market signal, so where the reported price cannot be reconciled with what the stock actually traded at, we withhold the filing from scoring and record why.

See what has been withheld — with the observation behind each one and a link to the filing. It is a data-quality record, not an accusation about any filer.

Second Glance bundles

The Scanner and the Backtester offer two locked filter bundles — Contrarian and Quality — built from the published research on which insider purchases carry information. They narrow what you see; they never touch the score, the tier, or alert priority.

What each bundle selects, and the studies behind it

Limitations

  • Older years carry thinner price-match coverage; that is why headline claims use the credible-core window only.
  • Fundamental fields may reflect later restatements even when the as-of date is respected.
  • A backtest is a simulation; transaction costs, slippage, and liquidity are not fully modeled. Live results are the real proof.
  • Confidence intervals quantify sampling uncertainty, not model risk — the future may not resemble the measured window.

Past performance — including backtested results — does not guarantee future returns. Nothing here is investment advice. Public/free views show aggregate summaries only; signal-level drill-down lives behind the paywall.