Seventeen regulators (AMF, SEC, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin), one schema. Every filing is FX-normalised (historical rate), enriched (ISIN/CIK bridge, market cap, sector), and scored through an open composite formula (size, conviction, role, cap, sector momentum). In-sample backtests 2015–2025 and out-of-sample 2026, with documented selection bias. All formulas are open and reproducible through the API or MCP server.
Seventeen official regulators (FRAMF, USSEC, DEBaFin, CHSIX SER, GBRNS, CASEDI, ITConsob, ESCNMV, NLAFM, BEFSMA, NOOslo, FIHelsinki, SEStockholm, DKCopenhagen, AUASX, ATFMA, IEDublin) plus Yahoo Finance for prices. No fabricated data, no aggressive scraping. Everything is timestamped and traceable. 53k+ 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 in the APAC pipeline. Each filing is FX-normalised to EUR (historical rate on transaction date) and exposed through the same schema.
Prices, fundamentals, analyst consensus. Three dedicated endpoints.
v8/chart · historical price 20yfundamentals-timeseriesquoteSummary · 30+ fieldsEach insider filing, from 28 regulators (AMF, SEC, BaFin, SIX, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin), goes through 6 deterministic steps before appearing on the site.
Polling 28 regulators (AMF, SEC Form 4, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo Børs, Nasdaq Helsinki, Nasdaq Stockholm, Nasdaq Copenhagen, ASX, FMA, Euronext Dublin) several times a day. ~53k filings aggregated. Each notice gets a unique ID and its document is downloaded.
Text extraction + regex: date, nature, volume, price, ISIN, executive name and role.
Role normalised against FR/EN table: CEO/MD, CFO, Board, Director…
Ticker resolution (ISIN → search), then 30+ Yahoo fields: cap, price, fundamentals, analysts.
Compute pctOfMarketCap, isCluster (30-day window), then composite signalScore [0;100].
Fetch historical prices T+30 to T+730 from pubDate+1. Returns stored without look-ahead bias.
signalScore computed by signals.ts from the transaction + Yahoo fundamentals. Recalculated on every data update.
Composite score formula: Score = w_signal * Signal_PIT + w_winRate * Bayes(winRate_60d_shrunk) + w_return * ExpReturn_T+30 + w_recency * exp(-dt / tau). Subject to: DSR-adjusted, walk-forward, no PIT leak.
v3: total cap reduced to +10 pts (public info, already priced in). near-52w-low flag is GATED, only activates if cluster ≥2 OR CEO/CFO.
Buy near 52-week low, classic contrarian setup. v3: only activates if cluster ≥ 2 OR CEO/CFO.
Price above its 200-day MA: underlying uptrend reinforced by the insider buy.
Price ≥ 15% below MA200. Only activates if cluster OR CEO/CFO.
Average analyst target more than 25% above current price. Quantified bullish consensus.
P/E < 15, P/B < 2, positive free cash flow.
ROE ≥ 15%, net margin ≥ 10%, D/E < 80.
Executives already own a significant share. Buy reinforces an existing alignment.
High short ratio + insider buy = contrarian setup with possible short-covering catalyst.
recoScore = signalScore + historical performance of similar profiles in our backtest.
Raw signal intensity: signalScore / 100 × 30.
v3 · % winning T+90 trades for the bucket (role + size). Bayesian shrinkage with size-adaptive prior (k=30 if n<20, k=15 if 20≤n<200, k=5 if n≥200).
v3 · Bucket average T+90 return. Cap +13% → 20pts.
v3 · Exponential decay since filing. Half-life 45 days.
Cluster bonus (5), % mcap ≥ 0.5% (3), amount ≥ €500k (2).
Adjust weights to see how rankings shift in real time.
Two conventions: insider view (transactionDate) and retail view (pubDate+1). Only the retail view is shown publicly.
(a) Sample size. Track record over n = 173 qualified signals, 4 years (2022–2025). Win rate 77%, Wilson 95% CI [70.1%, 82.5%]. Avg return 13.2%/yr, bootstrap 95% CI [-5.8%, 35.3%].
(b) Data-snooping bias. 583,200 filter combinations evaluated. The cross-sectional Sharpe (1.87) is NOT the portfolio Sharpe; the annualized Sharpe (T=4 years, rf=3%) is ≈ 0.40, bootstrap 95% CI [-3.69, 1.56], and the deflated Sharpe (Bailey–López de Prado) is negative. Read any quoted performance as an upper bound, out-of-sample expected to be lower.
(c) Out-of-sample V14e EU. V14e_tuned_light bake-off on the EU_strict universe (Paris, Amsterdam, Vienna, Brussels, Helsinki, Oslo, Stockholm, Frankfurt) on the strict window 2025-01-01 to 2026-05-21 (T=14 monthly buckets): annualized Sharpe 1.36, Bailey-Lopez de Prado deflated +0.43, NET CAGR +38.5%, max drawdown -10.6%, hit rate 55.0%. Short OOS window (14 months), wide bootstrap CI95 [-0.46, +4.20]. A positive deflated Sharpe clears the luck threshold but does not equate to repeated forward validation.
(c.1) Per-market breakdown. On the expanded 293k-row cohort (BUY + SELL sign-flipped, full history, audit 94), the V14e pre-ship stack shows wide per-venue dispersion. Vienna (XWBO) Sharpe 1.85, CAGR +49%, Amsterdam (XAMS) Sharpe 1.63, CAGR +33%, Brazil (BVMF) 0.86, Paris (XPAR) 0.77. At the opposite end, US Nasdaq (XNAS) collapses to Sharpe 0.01, CAGR -5%: picker signals invert on the US tape (CEO buys net negative, clusters net negative, audit 101). The shipped V14e is therefore restricted to the EU_strict universe (Paris, Amsterdam, Vienna, Brussels, Helsinki, Oslo, Stockholm, Frankfurt) where the score signs match training data.
| Venue | N OOS | Sharpe | CAGR | Win% |
|---|---|---|---|---|
| Vienne · XWBO | 211 | 1.85 | +49.1% | 57.4 |
| Amsterdam · XAMS | 957 | 1.63 | +32.7% | 60.7 |
| Brésil · BVMF | 11,319 | 0.86 | +21.6% | 55.7 |
| Paris · XPAR | 5,143 | 0.77 | +29.0% | 56.4 |
| Oslo · XOSL | 81 | 0.34 | +9.9% | 53.6 |
| Stockholm · XSTO | 4,279 | 0.24 | +6.1% | 53.3 |
| Nasdaq US · XNAS | 3,357 | 0.01 | -5.0% | 56.0 |
Source: audit doc 94 (expanded 293k cohort) + audit doc 101 (XNAS diagnostic). XNAS excluded from V14e ship.
(d) Walk-forward. Every Sigma signal since January 2026 is tracked in strict walk-forward. Results published quarterly. Configuration frozen, no re-optimisation.
The headline figures (77% win rate, +13.2% T+90, 1.87 Sharpe) are measured on a filtered subset (n=196) that represents 0.9% of the full universe (20,688 insider buys, 2015-2026). What follows explains why we publish these figures anyway, and with which caveats.
| Metric | Filtered subset | Full universe | Δ |
|---|---|---|---|
| n | 196 | 20,688 | ×88 |
| Win rate | 77.0 % | 46.8 % | +30.2 pts |
| Avg return T+90 | +13.2 % | 0.78 % | +12.4 pts |
| Sharpe | 1.87* / 0.40 / n/a | n/a | n/a |
Full statement: internal reference docs/method-review/29-disclosure-statement.md. Past performance does not predict future returns.
After 583,200 backtests (2021–2026), one combination delivers positive alpha 3 of 4 years (2022–2025): +13.2% average return, Sharpe 1.87* (cross-sectional).
transactionNature = Acquisition. Excludes option exercises, in-kind contributions, conversions, subscriptions.Position management
Insider signals carry a strong but time-limited informational edge. Respecting that window maximises returns and limits exogenous risk.
Practical rule
Target an exit between T+60 and T+90 days after the filing publication date. If a new active signal on the same stock appears before T+90, reassess before selling.
The 4 key reasons
When an insider buys, they act on a private edge (earnings, contract, acquisition…). That information gets published within 30–90 days, the edge disappears after that.
Beyond T+365, macro, sector, and global market factors progressively overwhelm the insider signal. Measured alpha drops sharply after 180 days.
Staying invested too long ties up capital that stops working. Every week on hold is a week you can't deploy on the next strong signal.
Public filings from our 28 regulators (AMF, SEC, BaFin, SIX, RNS, ASX, EDINET, SEBI, CVM and 19 others) show insiders are often tactical traders, short entry window, selling 6 to 18 months later for tax or personal reasons.
Until the live OOS sample reaches n ≥ 100 realized trades, all metrics shown elsewhere are in-sample. Every day at 3 a.m. UTC the system freezes the top 10 BUY and top 10 SELL and tags the market regime (CAC 40: bull / bear / range). Realized T+90 performance accumulates publicly 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 |
This information is provided for educational purposes and does not constitute investment advice. Investing involves a risk of capital loss.