Quantitative analysis of 856,609 insider transactions · 139,170 buys, 717,439 sells · across 3 retail horizons (T+30 · T+90 · T+365).
Drag the sliders. Every change re-runs the backtest on 5+ years of real declarations. No login required.
Every figure on this page describes an observed historical behaviour, not a promise. Here is what each metric measures, what it does not say, and how it is computed.
This page describes the raw universe of insider filings, it does NOT show the strategy's performance. A return shown here is a descriptive statistic over a group of trades, never what a portfolio would have earned. The active strategy's results are published separately, window by window, on the performance page.
Arithmetic mean of the individual trade returns in the group, 90 calendar days after entry.
What it does not say: This is not a portfolio return, and it is not annualised. A mean is pulled up by its right tail: a handful of exceptional trades is enough to lift it while most trades did less. That is exactly why the median sits next to it: when the two diverge, believe the median.
The middle trade's return: half the trades in the group did worse, half did better.
What it does not say: Insensitive to extremes, so more robust than the mean, but just as unrepresentative of a portfolio: it describes one typical isolated trade, not a sequence of positions held together.
Share of trades in the group whose price is strictly up at the horizon. Read it against the market's base rate: over the long run the CAC 40 closes up in roughly 55 to 60 % of rolling 90-day windows. Above 65 %, the gap can no longer be explained by the market drifting up on its own.
What it does not say: A win rate says nothing about the SIZE of the gains and losses. A group can win 8 times out of 10 and still lose money overall if the 2 losses are large. Always read it alongside the mean and the median.
Mean T+90 return divided by the standard deviation of the individual returns, measured cross-sectionally across all trades. It measures the signal's CONSISTENCY: above 0.5 the signal is consistent, above 1.0 it is excellent, below zero it is erratic.
What it does not say: This is NOT an annualised portfolio Sharpe ratio in the academic sense: no risk-free rate, no time dimension, no correction for the number of hypotheses tested. It is high by construction, because the dispersion of a single trade has nothing to do with that of a portfolio pooling those trades. Do not compare it to a fund's Sharpe.
Exit horizons in CALENDAR days after entry. T+90 is the hold horizon the strategy uses.
What it does not say: T+365 is not an annualised return: it is the absolute return of a trade held for a year. The three horizons do not cover the same sample, a recent trade has no T+365 yet.
The group's sample size. A group is displayed from 5 trades upward.
What it does not say: A small n is noise. Across a few dozen trades, a spectacular average return is usually a sampling accident, not a signal. Look at the n before you look at the figure.
The point that changes everything: we measure what a reader could actually have captured, not what the insider captured.
The return is NOT counted from the date the insider bought. It is counted from the closing price the day after the regulatory filing, the first moment a reader could have placed the order. The gap between the two (the move already gone before the information was public) is a leak measured filing by filing, and it stays with the insider, not with you. Measuring from the transaction date would inflate every figure on this page.
Sell at the closing price at the horizon, in calendar days. No stop, no profit target, no market timing: the rule is mechanical so the figure measures the signal and nothing else.
Every price series comes from Yahoo Finance, split-adjusted. A filing with no usable price enters no aggregate: the coverage rate is shown at the top of the page so the missing share stays visible.
Multi-market amounts are converted to euros at ingest, at the transaction date's rate. Returns themselves are computed in the security's quoting currency: they measure the price move, not a currency effect.
Excluded from the aggregates: filings with no reference price, and amounts above €1bn, which are materially impossible for an insider on these markets and therefore almost always a parsing or FX error. Excluded rows stay in the database, only the computations set them aside.
The returns on this page are GROSS of fees and slippage. That is deliberate: this page describes a signal, it does not simulate a portfolio. The strategy's published figures, by contrast, are net of their cost assumptions.
Survivorship bias. A delisted company loses its price history, so its insider buys (often the worst ones) silently disappear from every average and every win rate. This page's aggregates are biased upward, and the size of that bias is quantified in the point-in-time audit.
Multiple testing. The signal ranking compares a large number of filter combinations. Across that many trials, the row at the top of the ranking owes part of its rank to luck: it is a hypothesis to test, not a settled fact. Any displayed performance should be read as an upper bound, with an out-of-sample result expected below it.
Market regime. These measurements cover a given historical period. The same signal can be positive on one window and negative on the next: that is precisely what the point-in-time audit shows, window by window. Past performance does not predict future results.
A score is not a strategy. A score above 65 is visually highlighted, but the threshold the strategy actually uses and backtests is 40. A high score flags a notable filing, it is not a recommendation.
313,675 BUY signals · 24 markets · recompute 5/18/2026. Raw universe (no Sigma selection).
| Market | n | Avg T+90 | Win% | Sharpe | OOS avg | OOS Sharpe |
|---|---|---|---|---|---|---|
| KR | 6,143 | +17.04% | 57.9% | 0.67 | +17.04% | 0.67 |
| IN | 5,244 | +11.52% | 67.7% | 0.45 | · | · |
| CH | 714 | +3.87% | 54.2% | 0.35 | · | · |
| JP | 7,875 | +4.73% | 55.8% | 0.32 | · | · |
| CN | 3,809 | +4.67% | 52.1% | 0.31 | +6.10% | 0.45 |
| AT | 2,023 | +2.87% | 60.1% | 0.25 | +17.47% | 1.32 |
| DE | 228 | +3.51% | 49.0% | 0.25 | +6.57% | 0.53 |
| NO | 417 | +9.85% | 49.2% | 0.24 | +9.85% | 0.24 |
| DK | 4,645 | +3.43% | 53.0% | 0.23 | +4.08% | 0.54 |
| NL | 5,008 | +2.60% | 55.0% | 0.16 | +0.49% | -0.06 |
| IT | 1,907 | +1.81% | 47.9% | 0.07 | -0.81% | -0.24 |
| FI | 12,321 | +1.67% | 49.7% | 0.06 | -0.42% | -0.11 |
| ES | 4,811 | +59.11% | 61.6% | 0.04 | +2.30% | 0.27 |
| BE | 906 | +1.23% | 50.0% | 0.03 | -3.72% | -0.66 |
| US | 191,244 | +12.57% | 40.3% | 0.01 | +0.74% | -0.02 |
| BR | 45,987 | +0.45% | 45.9% | -0.06 | +1.94% | 0.10 |
| FR | 17,013 | -0.24% | 43.7% | -0.08 | +4.53% | 0.25 |