Methodology
This page explains what sits behind the figures on the site: how we classify a filing, how the three scores come about, and where the data falls short. In plain language first, precisely after that.
InsiderRadar draws on one public source: the AFM register — transactions by managers (MAR art. 19), published by the AFM under its own Dutch name, “Transacties leidinggevenden, MAR art. 19”. Every filing is stored untouched, then normalized, classified and given a fixed calculation. The full definitions with their version history are in the project documentation.
The four terms
These four come back everywhere on the site. This is what they mean; the rest of the page is the precise version.
- Open-market buy
- A director or supervisory board member bought shares in their own company with their own money, on the exchange. That is something other than receiving shares as compensation or exercising an option — those are here too, but kept apart.
- Percentile
- A rank from 0 to 100. If it says 90, this measurement came out above 90% of the other measurements in the same group. It says nothing about the share price and it is not a forecast.
- Coverage
- How much of a measurement actually succeeded, from 0 to 1. The lower the coverage, the closer the published percentile moves to the middle (50) — that way a half-measured company does not pass for a fully measured one.
- Cluster
- Three or more independent buyers at the same company within 90 days. A count of what happened, not a recommendation.
How we classify filings
A filing does not say by itself whether something was bought, granted or transferred. A fixed set of rules classifies every row; borderline cases go into a queue for human review and do not appear on the site as fact. The categories:
- Open-market buy — A purchase on the exchange with the insider's own money — the signal this site is built around.
- Open-market sell — A sale on the exchange. It can mean all sorts of things (tax, a house, diversification) and therefore says far less.
- Option exercise — Exercising options or rights. Usually compensation, not conviction.
- Award — Shares or options granted as compensation. Nothing is bought, so there is no buy signal.
- Administrative — An administrative change, for example a transfer within the insider's own holding company.
- Other (no signal) — Other filings that say nothing about buying or selling.
- Pledge — Shares given as collateral. Ownership does not change.
An amount of 0 is not an error. On an award or an administrative change the register reports a price of 0: nothing was paid. The Amount column then says “nothing paid” and the Quantity column shows how many shares were involved. We never top such an amount up with an estimated market value.
The insider score
The score (0–100) is a fixed calculation: the same input always gives exactly the same result — no network, no randomness, no AI. It weighs five factual components:
- What kind of transaction, and by whom — a purchase on the exchange weighs more than a sale; a CEO or CFO more than a supervisory board member or a holding company.
- Size — how large the transaction is relative to the position, as far as the source allows. The AFM detail page gives no total position, so this component is usually reweighted away.
- Cluster — several independent buyers within a rolling 90-day window, after counting the same person and their own holding companies as one buyer.
- How recent — a fresh filing weighs more than an old one.
- What came before it — for example a purchase shortly after a sharp price drop.
Every stored score carries the version of the model it was calculated with (currently 0.6.0). Old scores are never recalculated: that would change the track record after the fact.
What the score is not. Our own backtest shows the score is usable as an ordering within a period, and not as an absolute number or a threshold (“above 70 is worth buying”). We therefore publish it as context, never as advice. The real test runs forward and lives in the track record.
The twelve-month rank
The score level drifts over the years. That is why we also express a score as a rank: where does this buy sit relative to all scored open-market buys of the preceding twelve months? A rank of 90 means the buy came out above 90% of them. Orderings and any later thresholds are defined on that number, never on the score itself again. If there are too few observations in the window, we show no rank. The underlying score remains the source — the rank is derived from it, not a recalculation.
The quant score
Alongside the insider score we calculate a company score (0–100): how the business is doing by its own numbers, entirely apart from who is buying or selling. This too is a fixed calculation with its own version number. The three scores (insider, quant, timing) stay side by side: we deliberately do not add them into one total, because then nobody could see where the figure came from.
The score weighs four components, and deliberately uses one metric per component. Two metrics measuring the same thing would reward that effect twice.
- Quality (35%) — gross profit relative to total assets.
- Valuation (30%) — operating profit relative to the value of the whole business.
- Momentum (22%) — the price return over twelve months, excluding the most recent month.
- What goes to shareholders (13%) — dividends and the company’s own share buybacks, relative to market value.
If a component is missing, we spread its weight over the components that are there, and show alongside the stock how much could be measured. We compare in three steps: first within the company’s own sector, and if that group is too small (fewer than 8 stocks) against all measured companies together. Only if that fails too do we fall back on fixed absolute thresholds.
What that means in practice. That second step is not an exception here but the main route: roughly half of all sub-scores rest on the comparison with all companies, because only a handful of sectors reach eight comparable stocks. The fixed thresholds — the last fallback — have so far not been used for a single sub-score. A “sector comparison” here is therefore more often a comparison with the whole universe than the name suggests. We say so, because it changes what such a sub-score means.
Honest about the data source. The free source provides no real history of annual figures: no publication date, and no figures-as-they-were-known-then. The quant series therefore starts at the first measurement and grows forward; we do not reconstruct company scores for earlier years. Momentum and timing come from the price series and are real history.
Which companies take part, and how often they count
The four components assume a company with an income statement and a balance sheet. For a listed investment fund or a pure investment holding, three of the four do not exist in any meaningful form: the “revenue” is price appreciation and the “assets” are the portfolio itself. Such funds therefore get no quant score. That judgment is recorded per row in our reviewed ticker table — assessed per instrument, not applied automatically from a sector label: a holding company that consolidates operating subsidiaries does report ordinary annual figures and simply takes part. Excluded funds stay in the database and are counted and named on every run.
One company can appear in the registers with two ISINs — after moving to another country, or with an old listing next to a new one. Both keep their own company page with the same score, but in the ranking and the sector comparison such a company counts once. Otherwise one administrative duplicate would shift the position of every other stock.
What happens when we don’t know something
The percentile is a rank transformation: it says how a stock compares with the rest on that date. Until recently it said nothing about how much sat underneath that score — a stock with one measured component got a percentile that looked just as confident as a fully measured stock. Since the latest model version the published percentile moves toward the middle, in proportion to the coverage:
percentile* = 50 + (percentile − 50) × coverage
At full coverage nothing changes by definition; at half coverage half the distance to the middle remains. The underlying score is unchanged — the percentile is derived, not recalculated, exactly as with the insider score. We deliberately do not apply a hard floor: pulling a stock out of the list entirely because one component is missing is a heavier intervention than is warranted, and it would hide almost a third of the list.
Unknown is not zero. If the source provides no line at all about dividends or buybacks, we treat that component as not measured and reweight to the rest — we do not book a zero. If the source explicitly states that nothing went to shareholders, that does count as zero. That distinction is a measurement choice and not a statement about the company, and it visibly lowers the coverage.
Risk labels and timing
Risk labels are flags, not plus points and not penalty points: market value, tradability, debt load, dilution, how much could be measured and how old the data is. A label never subtracts anything from the score — it stands next to it.
The timing score (0–100) is a deliberately simple, technical measure: is the price above its 200-day average, where does it sit in the past year’s range, what did it do recently, and was that confirmed by trading volume. It says something about the entry moment only, and must never push a fundamentally strong stock aside.
The track record
The track record logs two things, and only for filings the pipeline sees arrive live: (1) a purchase on the exchange of at least €10,000, and (2) a new cluster of three or more independent buyers within 90 days. The score and the rank are shown as context; they are not a threshold. Every logged signal gets a reference price and follow-up measurements after 20, 60 and 120 trading days — the negative ones just as much as the positive.
What this data cannot do
- Not everything can be matched to a price. Missing ISINs, bonds and unlisted entities fall outside the price series. Those cases are counted and logged, never quietly dropped.
- Vanished companies stay in. Companies taken off the exchange remain in the database; they do not disappear from the history, because then the past would look rosier than it was.
- Old filings lack a filing date. For those cases we conservatively assume the latest permitted moment: the transaction date plus three business days. For filings that arrive live we measure the real delay, and so test that assumption.
- Visitors see everything 48 hours later. That applies to transactions, clusters and company pages, and it is enforced in the database — not in the layout. The track record is current.
Questions about the exact weights, thresholds or version history? They are in the project documentation. Feel free to get in touch.