| bucket | HR +5d | HR +20d | HR +60d | HR +120d | mean +5d | mean +20d | mean +60d | mean +120d |
|---|---|---|---|---|---|---|---|---|
| [0, 20) | 50.61% n=2930 | 56.67% n=2730 | 61.45% n=2420 | 67.35% n=1746 | +0.34% / med +0.15% | +0.58% / med +1.67% | +0.85% / med +4.65% | +7.68% / med +13.31% |
| [20, 40) | 46.94% n=27778 | 47.16% n=26878 | 51.10% n=23987 | 59.63% n=18616 | -0.52% / med -0.31% | -1.31% / med -0.60% | -0.99% / med +0.48% | +4.19% / med +5.08% |
| [40, 50) | 47.29% n=13656 | 44.29% n=12927 | 48.17% n=11578 | 50.81% n=8772 | -0.17% / med -0.18% | -1.69% / med -1.31% | -4.19% / med -0.58% | -4.98% / med +0.40% |
| [50, 60) | 52.55% n=4485 | 47.11% n=4286 | 55.68% n=3937 | 44.44% n=3047 | +0.16% / med +0.38% | -0.86% / med -0.57% | -1.25% / med +1.10% | -1.81% / med -2.12% |
| [60, 70) | 56.33% n=561 | 62.00% n=550 | 59.72% n=509 | 34.65% n=404 | +1.08% / med +0.73% | +0.87% / med +2.50% | +3.71% / med +4.11% | -5.44% / med -2.95% |
| [70, 100] | 67.72% n=189 | 67.91% n=187 | 70.69% n=174 | 82.73% n=110 | +1.37% / med +1.69% | +2.55% / med +2.92% | +7.35% / med +6.55% | +19.96% / med +15.12% |
| bucket | +5d | +20d | +60d | +120d |
|---|---|---|---|---|
| [0, 20) | 58.85% n=260 | 49.80% n=251 | 55.80% n=224 | 57.43% n=202 |
| [20, 40) | 48.53% n=10465 | 51.05% n=10233 | 53.40% n=9477 | 60.58% n=7787 |
| [40, 50) | 56.85% n=5228 | 54.33% n=5137 | 56.37% n=4726 | 56.21% n=3476 |
| [50, 60) | 57.58% n=1912 | 53.50% n=1873 | 60.07% n=1673 | 57.23% n=1148 |
| [60, 70) | 58.90% n=309 | 73.24% n=299 | 63.22% n=261 | 57.74% n=168 |
| [70, 100] | 67.55% n=188 | 67.74% n=186 | 71.10% n=173 | 82.57% n=109 |
| bucket | +5d | +20d | +60d | +120d |
|---|---|---|---|---|
| [0, 20) | 49.81% n=2670 | 57.36% n=2479 | 62.02% n=2196 | 68.65% n=1544 |
| [20, 40) | 45.98% n=17313 | 44.76% n=16645 | 49.60% n=14510 | 58.94% n=10829 |
| [40, 50) | 41.36% n=8428 | 37.68% n=7790 | 42.51% n=6852 | 47.26% n=5296 |
| [50, 60) | 48.81% n=2573 | 42.15% n=2413 | 52.43% n=2264 | 36.70% n=1899 |
| [60, 70) | 53.17% n=252 | 48.61% n=251 | 56.05% n=248 | 18.22% n=236 |
| [70, 100] | 100.00% n=1 | 100.00% n=1 | 0.00% n=1 | 100.00% n=1 |
Cette vue mesure si le score InsidersWatch discrimine réellement les bons des mauvais signaux — c'est l'arbitre du modèle.
Pour chaque transaction directionnelle (achat ou vente d'insider hors codes mécaniques), on calcule
le retour observé du titre à +5, +20, +60
et +120 jours de bourse après la transaction. On signe ce retour par la direction :
- · achat (
P,X) : retour > 0 = "hit" (le marché a confirmé) - · vente (
S,U,D) : retour < 0 = "hit" (l'insider a vendu avant la baisse)
Le tout est stocké dans la table signal_outcomes. Les grilles ci-dessus
agrègent ces hits par bucket de score InsidersWatch.
Critère de sortie spec § Sprint 4 :
- · Hit rate des signaux à score
≥ 70mesurablement supérieur à celui des signaux à score≤ 40(delta≥ +5points) - · Sur
≥ 100signaux historiques (sinon sample insuffisant)
Si les deux conditions sont remplies sur l'horizon canonique +20d :
PASS. Sinon :
INCONCLUSIVE (sample) ou
FAIL (pas de discrimination).
Chaque ligne = bucket de score [N, M). Pour chaque horizon
(+5d, +20d, +60d, +120d) :
nombre de signaux (n), hit rate, retour moyen, médiane.
Cellules en VERT si hit rate
≥ 55% (signal positif) ;
ROUGE si < 45%
(contre-signal) ; gris ailleurs. Le bucket [70, 100] est notre cible.
- · Les signaux récents n'ont pas le horizon complet (
returns NULL). Filtrés automatiquement par horizon. - · Les hit rates absolus dépendent du marché de la fenêtre (drift haussier 2024-2026 → baseline ~50%). Ce qui importe est le DELTA entre buckets.
- · Le binomial test à
n=100, hit rate70%vs50%donnep < 0.0001(signal fort statistiquement même sur sample modeste).