Data, aggregation & signals
We collect the filings insiders must publish in 37 markets (AMF, SEC, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin and more) and put them in one format. Amounts are converted to euros, and filings are enriched when the company can be identified. Each eligible purchase is scored and compared only with purchases in its own market. No market passes our test on its own data yet. Only the venues of the backtested strategy universe get a suggested size, taken from the portfolio backtest. We give the ranking's measured return below, next to the index on the same dates.
How to read our numbers
Each month, the simulated portfolio buys the 10 highest-scored insider BUY signals (EU markets) in equal weights, then sells each position 90 days later. One company often files several times, so these 10 signals cover 5.0 distinct companies on average. Result is net of 0.6% round-trip fees.
What this figure is not:
- It is not the performance of every stock on the site: only the 10 highest-scored signals each month.
- It is not buy-and-hold: every position is sold about 90 days after purchase.
- It is not a promise: it is a simulation on past data, published with its limits (wide confidence interval, negative deflated Sharpe for this archived V14e strategy; the active composite selection publishes its own proof block on /performance).
Where the data
37 markets, official sources (FRAMF, USSEC, DEBaFin, CHSIX SER, GBRNS, CASEDI, ITConsob, ESCNMV, NLAFM, BEFSMA, NOOslo, FIHelsinki, SEStockholm, DKCopenhagen, AUASX, ATFMA, IEDublin, among others) plus Yahoo Finance for prices. No fabricated data, no aggressive scraping. Everything is timestamped and traceable. 1.6M+ filings aggregated.
Every mandatory insider filing in scope: SEC Section 16 / Form 4 in the US (dominant by volume), MAR 596/2014 Art. 19 across Europe, ASX Listing Rule 3.19A and FSA EDINET across APAC (live). Each filing is FX-normalised to EUR (historical rate on transaction date) and exposed through the same schema.
- Europe (14) · FRDECHGBITESNLBENOFISEDKATIE
- Americas (3) · USCABR
- APAC (6) · AUJPKRHKSGIN
- Format: official PDF, SEC EDGAR XML, RNS feeds
- Sync: several times/day · legal deadline T+2 to T+10 by jurisdiction
+5 M€
Prices, fundamentals, analyst consensus. Three dedicated endpoints.
v8/chart· historical price 20yfundamentals-timeseriesquoteSummary· 30+ fields
From PDF to signal
Each insider filing, from 37 markets (SEC (Form 4), AMF, BaFin, SIX SER, RNS (LSE), SEDI, Consob, CNMV, AFM, FSMA, Oslo Børs, Finansinspektionen, Nasdaq Helsinki, Finanstilsynet DK, ASX, FMA (OeKB OAM), Euronext Dublin and more), goes through 6 deterministic steps before appearing on the site.
Collection
Polling 37 markets (SEC (Form 4), AMF, BaFin, SIX SER, RNS (LSE), SEDI, Consob, CNMV, AFM, FSMA, Oslo Børs, Finansinspektionen, Nasdaq Helsinki, Finanstilsynet DK, ASX, FMA (OeKB OAM), Euronext Dublin and more) several times a day. 1.6M+ filings aggregated in total. Each notice gets a unique ID and its document is downloaded.
PDF Parsing
Text extraction + regex: date, nature, volume, price, ISIN, executive name and role.
Normalisation
Role normalised against FR/EN table: CEO/MD, CFO, Board, Director…
Enrichment
Ticker resolution (ISIN → search), then 30+ Yahoo fields: cap, price, fundamentals, analysts.
Scoring
Compute pctOfMarketCap, isCluster (30-day window), then composite signalScore [0;100].
Backtest
Fetch historical prices T+30, T+90 and T+365 from pubDate+1. Returns stored without look-ahead bias.
The 100 points dissected
signalScore computed by signals.ts from the transaction + Yahoo fundamentals. Recalculated on every data update. This is the per-filing signal score (0-100); the monthly Top 10 selection is made by the separate 6-signal equal-weight composite ranking (see the Strategy chapter).
Recommendation score formula (0-100): Score = w_signal * Signal_PIT + w_winRate * Bayes(winRate_60d_shrunk) + w_return * ExpReturn_T+30 + w_recency * exp(-dt / tau). Weights frozen by grid search; DSR penalty disclosed. Distinct from the 6-signal composite ranking that selects the monthly picks.
Seven Yahoo signals that combine
Total capped at +10 pts (public info, already priced in). The near-52w-low and oversold flags are GATED: they only activate on a cluster or a CEO/CFO trade.
Near 52-week low (gated)
+2 ptsBuy near the 52-week low, classic contrarian setup. Only activates on a cluster or a CEO/CFO trade.
Long-term momentum
+1 ptPrice above its 200-day MA: underlying uptrend reinforced by the insider buy.
Oversold (gated)
+1 ptPrice at least 15% below MA200. Only activates on a cluster or a CEO/CFO trade.
Upside ≥ 25%
+2 ptsAverage analyst target at least 25% above the current price (+1 pt from 15%), with 3+ analysts.
Value combo
+1 ptP/E < 15, P/B < 2, positive free cash flow.
Quality combo
+2 ptsROE ≥ 15%, net margin ≥ 10%, D/E < 80 (+1 pt without the debt test).
Potential short squeeze
+1 ptHigh short ratio + insider buy = contrarian setup with possible short-covering catalyst.
From observation to action
recoScore = signalScore + historical performance of similar profiles in our backtest. The score rates each filing; the composite ranking selects the monthly picks.
Raw signal intensity: signalScore / 100 × 30.
Share of winning trades for the bucket (role + size), blended across T+30 / T+90 / T+365. Bayesian shrinkage with a size-adaptive prior.
Z-score of the shrunk bucket T+90 mean against the side average: 12.5 pts at the average, 6.25 pts per standard deviation, clamped to 0 to 25.
Exponential decay since filing, half-life 21 days, minus a staleness penalty as the filing ages.
Adjust weights to see how rankings shift in real time.
The method served today
What the site ranks, how, and the rule its backtest measures (audit 260, measured on October 13, 2026).
Universe
Insider purchases from 37 markets are ranked. A position size is suggested only on the 8 European venues of the backtest: Paris, Amsterdam, Vienna, Brussels, Helsinki, Oslo, Stockholm, Frankfurt.
Size screen
Companies below €300M of market cap are left out, and so are purchases worth 1% of the market cap or more.
Composite ranking
Each purchase is compared with the purchases published in the same month. Its rank is the equal-weight mean of its ranks on criteria known on the filing day: the executive's role, the number of executives buying, the amount, the insider's track record (lagged by 91 days) and the distance to earnings.
Measured rule
In the backtest each position is bought the day after publication and sold 91 days later, with 0.6% of costs per round trip, and the capital is split across the baskets still open.
Earlier versions of the method, Sigma v1.0 included, are dated in the version history.
How we measure returns
Two conventions: insider view (transactionDate) and retail view (pubDate+1). Only the retail view is shown publicly.
Our earlier backtest figures (annual return, capital growth curve, per-year table) came from 91-day baskets bought every month and compounded as if each one held the whole capital for a month. Three baskets are open at any time, so the result was heavily overstated. They also used the month-end ranking, which is unknown on the filing day. We have retracted them. The corrected backtest below splits capital across the open baskets and sets the index next to it.
Read audit 231What the ranking returned, next to the index
Average gap with the index: +2.7 points a year, 95% confidence interval -3.0 to +8.5 points. Without the ranking, all eligible insider purchases returned 0.1%/yr.
Simulation over 2022-2026Q1, each purchase made the day after the filing and sold 90 days later (the simulation ties up the capital for 91 days), dividends included for the ranking and the index alike, 0.6% round-trip cost, capital split across overlapping baskets. A monthly basket holds 5.0 distinct companies on average.
The ranking served on the site has been frozen every night since May 27, 2026 and measured afterwards against the index of each company's region, at 30 and 90 days, on /performance. Results are updated every day, month by month.
What the backtest overstates
Three limits recorded by audit 231. All three push the published figures in the favourable direction.
What the system cannot do
- Past performance ≠ future performance. A historically winning signal can stop working when market conditions change.
- Market noise. Prices from T+30, T+90 and T+365 reflect everything, not just the signal's effect. The backtest measures a correlation, not a causation.
- Fundamental coverage. For recently listed companies or very small caps, Yahoo data is sometimes incomplete. Unavailable composite signals do not penalise the score (abstention rule).
- Transactions outside regulatory scope. Purchases made via derivatives (options, CFDs), undisclosed third-party vehicles, or on markets outside our perimeter (AMF, SEC, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin and more) are not captured.
- Non-public information. Capital restructurings, stock-option plans, and other corporate events can explain a buy, the raw signal won't always know that.
Since May 27, 2026, the BUY ranking served on the site is frozen every night with the last known price. Each company counts once per holding window and is compared with the index of its region over the same dates. Positions measured at 30 and 90 days, with their coverage and confidence intervals, are published on /performance , no revision, no cherry-picking.
Some Yahoo Finance fields (marketCap, analystScore, analyst targets, PE, D/E) are current snapshots, not historical values. On backtests covering 2022-2025, these fields may introduce look-ahead bias.
| Field | Use in score | PIT Status | Risk |
|---|---|---|---|
| marketCap | F1 pctMcap (16 pts) | Current snapshot | HIGH |
| analystScore | F2 fundamentals + F7 contrarian | Current snapshot | HIGH |
| targetMean / targetHigh | Composite upside bonus | Current snapshot | HIGH |
| currentPrice / 52w MA | near-52w-low, oversold | Current snapshot | MEDIUM |
| trailingPE / D/E / ROE | Composite value/quality | Current snapshot | MEDIUM |
| analystReco | Display only | Snapshot, SAFE | SAFE |
Live signals, versioned backtests.
This information is provided for educational purposes and does not constitute investment advice. Investing involves a risk of capital loss.
How each market enters the ranking
Recommendations span multiple markets. Each purchase competes with purchases from the same market, so one venue's scale or reporting pattern cannot dominate the ranking.
- A position size is suggested only on the venues of the backtested strategy universe; elsewhere, signals stay on watch. The evidence label shows which markets need more validation.
- Markets with insufficient evidence still appear as watch items, including US names when they rank well locally. Watch items receive no allocation until the evidence threshold is met.
The labels describe research evidence, not an expected return or investment advice.
From the buy to the score
One buy, scored factor by factor
Example: a 1.6 M EUR buy by the CEO of a 380 M EUR mid-cap, inside a 3-insider cluster. Each factor adds its points to the score, capped at 100. This is the per-filing signal score; the monthly Top 10 picks come from a separate ranking of 6 equal-weighted signals.
- Directional cluster+15 / 183 insiders, same directionSeveral insiders buying the same name, same way, within 30 days.
- Insider seniority+22 / 22CEO / Managing DirectorWho is buying. A CEO or CFO carries more signal than a board member.
- Size vs market cap+10 / 160.42% of market capHow big the buy is relative to the whole company (log-scaled).
- Insider track record+11 / 14+6% avg 90d (n=4)How this insider's past buys actually performed (shrunk, look-ahead free).
- Share of insider flow+6 / 860% of own flowHow concentrated this trade is within the insider's own activity on the name.
- Market context+6 / 104 signalsMomentum, valuation, quality and analyst upside around the trade.
- Repeat accumulation+4 / 62 prior buys (12m)The same insider has added to the position over the last 12 months.
- Analyst-contrarian+6 / 6consensus 3.6 / 5Insider buys while sell-side consensus is lukewarm have run hotter.
Backtest of the served method, audit 260
Version history
Earlier versions of the method
Figures we published before and have since replaced. They stay here, dated and tied to their audit, so anyone can check what changed. None of them describes the method served today.
- ArchivedAudit 169 is internal and not published
Point-in-time correction of the former top 10 (audit 169)
The former monthly top 10, sold after 90 days, measured again without two pieces of future information: the cluster window limited to the 30 days before publication, and the insider's track record lagged by 91 days.
- 2022: annualized Sharpe +0.05 (95% CI -2.94 to 1.76), deflated Sharpe -2.05.
- 2023-2024: annualized Sharpe -1.99 (95% CI -3.29 to -0.76), deflated Sharpe -3.47.
- 2025-2026Q1: annualized Sharpe +0.53 (95% CI -1.28 to 2.46), deflated Sharpe -1.34.
- Rows left out for lack of prices: 456 never priced and 1,349 published after the last known price. Effect on the top 10: 0 picks.
- These figures compounded 90-day baskets every month, an accounting retired by audit 231.
Replaced by the portfolio-accounting backtest shown in the Backtest chapter, on a total-return basis since audit 251. Replaced by audit 231 of September 30, 2026
- ArchivedAudit 168 is internal and not published
Ranking power of the score (audit 168)
Return of the top decile of the score once size, sector and market are neutralized, on two out-of-sample windows.
- Windows 2023-2024 / 2025-2026Q1: t = 5.70 then 2.84, information ratio 4.0 then 2.5.
- The edge, spread over about 636 names, was smaller than transaction costs.
Replaced by the comparison of the ranking with every eligible insider purchase, in the same accounting (Backtest chapter). Replaced by audit 231 of September 30, 2026
- ArchivedRead audit 158
Sigma v1.0 strategy and its in-sample cohort (audit 158)
Former rule: open-market purchases only, at least 2 buying executives, board members excluded, filed within 7 days, market cap from €200M to €1bn, v3 score of at least 40, sold after 90 days, rebalanced every 3 months.
- Cohort 2022-2025: 3,864 signals, win rate 51.5% (Wilson 95% CI 49.9% to 53.1%), mean return +2.6% per position at 90 days, not annualized.
- Cross-sectional Sharpe 0.10: a per-position statistic, not a portfolio Sharpe. 583,200 filter combinations were tested and the deflated Sharpe is negative.
- Every insider purchase, no selection: 391,106 trades, win rate 46.3%, winsorized mean -0.41% at 90 days.
- Calendar years against the CAC 40, monthly compounding since retired: ahead in 2 years out of 4.
Sigma v1.0 by calendar year, retired accounting
Year Sigma v1.0 CAC 40 2022 +23.6% -9.5% 2023 -26.5% +16.5% 2024 -17.0% -2.2% 2025 +26.1% +10.4% Every insider purchase by venue, per-position statistics
Venue Trades Mean at 90 days Win rate Cross-sectional Sharpe XNAS 252,376 -1.73% 44.2% -0.075 XPAR 16,208 -0.83% 44.2% -0.043 XAMS 4,118 +2.05% 53.8% +0.125 XSTO 4,209 +2.20% 48.6% +0.087 XHEL 4,304 +0.76% 48.4% +0.050 XMAD 4,639 +3.95% 61.5% +0.330 Replaced by the composite ranking described in the Served method chapter. Its figures were retired by audit 231. Replaced by audit 231 of September 30, 2026