La demi-vie d'un signal : pourquoi un "WTI ↑5% sur 14j" ne vaut pas la même chose au jour 1 et au jour 12
Imaginez deux signaux GeoPulse identiques. Même règle, même actif (WTI), même direction (↑5% sur 14 jours), même confiance affichée à la création (75%). Le premier a été émis il y a 1 jour. Le second il y a 12 jours, et le pétrole n'a pratiquement pas bougé depuis. Question simple : est-ce que vous leur faites autant confiance ?
Évidemment non. Et pourtant, jusqu'à la semaine dernière, notre interface vous montrait les deux avec la même étiquette "75%". C'est ce que cet article corrige — en empruntant un concept à la physique nucléaire qu'on aurait dû importer depuis le début.
Le problème : la confiance est traitée comme une constante
Quand une règle GeoPulse détecte un pattern, elle estime trois choses : la direction du mouvement, son amplitude, et la confiance qu'elle a dans cette prédiction. Ces trois valeurs sont gravées dans la base de données au moment où le signal est créé. Elles ne changent jamais jusqu'à la résolution.
C'est défendable pour la direction et l'amplitude prédite — ce sont des engagements pris à T0, qu'on doit pouvoir vérifier en T+horizon. Mais c'est absurde pour la confiance, qui devrait représenter à chaque instant la probabilité que le signal se réalise encore.
Un exemple concret. Le 14 avril, une règle déclenche : "WTI va monter de 5% dans les 14 prochains jours, confiance 75%". Le 15 avril, le pétrole bouge de +1% — on est dans la trajectoire attendue. Le 16, +0.5%. Et puis... rien. Du 17 au 26 avril, le WTI fluctue dans un couloir de ±0.3% autour de son prix d'entrée. Le timeframe expire dans deux jours. Que vaut le signal maintenant ?
Si on regarde la statistique froidement, la fenêtre dans laquelle un mouvement de +5% peut encore se matérialiser s'est rétrécie de 14 à 2 jours. La probabilité que ça arrive encore, sans qu'aucun mouvement préparatoire n'ait eu lieu, est beaucoup plus faible qu'au jour 1. Le signal mérite peut-être encore d'être affiché, mais avec une étiquette honnête. Pas avec son "75%" original.
La métaphore : pourquoi la radioactivité
Les physiciens connaissent bien ce problème. Quand un isotope radioactif émet une particule, on ne peut pas prédire à quel instant exact ça arrivera. Mais on peut mesurer, sur une grande population d'atomes, la fraction qui aura "réagi" à un instant donné. Cette fraction suit une loi exponentielle : à chaque période fixe, appelée demi-vie, la moitié des atomes restants se désintègrent. Au bout d'une demi-vie, il en reste 50%. Au bout de deux, 25%. Au bout de trois, 12.5%.
C'est exactement le bon modèle pour la confiance d'un signal financier.
À T=0, le signal a 100% de sa valeur informationnelle. À chaque période fixe — sa demi-vie — il en perd la moitié. La formule est trivialement simple :
confiance(t) = confiance(0) × 0.5 ^ (t / T_demi-vie)
Pour notre exemple WTI : si la demi-vie est de 7 jours (la moitié du timeframe de 14 jours, valeur que l'on calibre), alors :
- Au jour 1 : confiance = 75% × 0.5^(1/7) = 68%
- Au jour 7 : confiance = 75% × 0.5^(7/7) = 38%
- Au jour 12 : confiance = 75% × 0.5^(12/7) = 23%
Le signal qui s'affichait "75% jour 12" sans bouger affichera désormais "23% — à mi-mort". Beaucoup plus juste.
La demi-vie n'est pas magique : elle se calibre
Une demi-vie de 7 jours n'est pas tombée du ciel. Elle dépend du type de signal. Une règle qui détecte une cassure technique (RSI extrême, breakout sur volume) doit avoir une demi-vie courte : si le mouvement n'arrive pas dans les 24-48h, l'opportunité est probablement déjà passée. Au contraire, une règle structurelle comme la Sahm Rule (recession indicator) joue sur des mois — sa demi-vie naturelle est de plusieurs semaines.
Notre approche : par défaut, demi-vie = timeframe / 2. Concrètement, un signal à 14 jours décroît à 50% à mi-parcours, à 25% à la fin. Ça correspond à l'intuition "j'ai consommé mon timeframe à moitié, j'ai consommé ma confiance à moitié".
Mais cette valeur par défaut est ajustable règle par règle, et auto-ajustée par notre moteur de calibration. Le système observe deux statistiques sur le corpus résolu de chaque règle :
- Le pourcentage de signaux qui finissent en
stale— c'est-à-dire qui meurent sans que le marché ait jamais réagi - Le pourcentage qui finissent en
expired— qui atteignent la fin de leur timeframe sans mouvement significatif
Si une règle produit beaucoup de stale (≥ 30%), c'est qu'elle promet plus de durée que la réalité — sa demi-vie est raccourcie automatiquement de 30%. Si à l'inverse beaucoup d'expired (≥ 50%), c'est que les mouvements arrivent quand même, juste plus tard que prévu — sa demi-vie est allongée de 30%.
Le tout sans intervention humaine. Le système se calibre seul, chaque nuit à 03:00 UTC.
Le statut stale : nouveau dans v1.10.2
Avant ce mois-ci, un signal pouvait avoir trois états : pending (actif), resolved (vérifié à l'expiration), ou expired (timeframe atteint sans mouvement significatif). Ces trois états ne suffisaient pas à décrire ce qu'il fallait gérer.
Considérez à nouveau notre WTI. Au jour 12, le pétrole n'a pas bougé. Le signal n'est pas expired (le timeframe court encore 2 jours). Il n'est pas resolved (rien n'a été observé). Il est pending, mais avec une probabilité de matérialisation réduite à un tiers de l'initiale. Ce n'est plus un signal vivant — c'est un signal en train de mourir.
Le nouveau statut stale capture exactement cette nuance. Un signal devient stale quand :
- Il a consommé plus de 70% de son timeframe
- ET le marché a bougé de moins de 25% de l'amplitude prédite
Quand ces deux conditions sont réunies, le signal est marqué stale automatiquement et sort des stats actives. Il ne pollue plus les calculs d'accuracy (puisque ce n'est ni un succès ni un échec — c'est un non-événement). Mais il reste comptabilisé séparément, et c'est ce comptage qui alimente l'auto-calibration de la demi-vie.
L'impact sur l'allocation : Kelly aussi décroît
Pour les abonnés Premium qui utilisent notre suggestion d'allocation Kelly, la décroissance de confiance a un effet direct. La formule standard du quart-Kelly utilise la probabilité de gain p (issue du Bayesian posterior par règle) et le ratio gain/perte b. La taille de position recommandée :
fraction = (p × b - q) / b × 0.25
Mais cette formule traite le signal comme un événement binaire à T0. Or si la moitié de la fenêtre s'est écoulée sans rien, l'edge a fondu. Multiplier la recommandation par le facteur de décroissance reflète ça honnêtement :
fraction_ajustée = fraction × decay_factor
Concrètement : un signal qui aurait justifié 8% d'allocation au jour 1 ne suggère plus que 4% au jour 7, et 2% au jour 12. Si la demi-vie est bien calibrée, ça correspond exactement à la fraction de votre conviction qui mérite encore d'être engagée.
Le calcul est exposé en transparence dans la carte Kelly du dashboard : vous voyez la fraction brute (ce que le Kelly classique aurait calculé), le decay_factor appliqué, et la recommandation finale. Aucun nombre n'est caché.
Filtre Premium : "min freshness"
Dernier corollaire pratique. Dans /account, les abonnés Premium peuvent désormais configurer un seuil de fraîcheur minimum sur leurs filtres de signaux. Régler "≥ 60%" signifie : ne me montrez que les signaux qui ont encore au moins 60% de leur valeur d'origine.
C'est un filtre actionnable. Si vous tradez en swing court, vous voulez probablement ≥ 75% (signaux récents et chauds). Si vous prenez du recul et acceptez les setups en cours d'évolution, ≥ 30% laisse passer plus de matériel.
L'aperçu en temps réel vous montre combien de signaux des 30 derniers jours auraient passé le seuil — vous calibrez en voyant les conséquences avant d'enregistrer.
Pourquoi c'était urgent
On a livré cette refonte sur trois constats accumulés en un mois de track record live :
Premier constat : trop de signaux pending traînaient dans le scoreboard pendant des jours sans plus rien dire. Le client voyait "WTI ↑5% confiance 75%" depuis huit jours, le marché n'avait pas bougé, et l'étiquette restait identique. C'était mensonger par effet de stagnation — un mensonge passif mais réel.
Deuxième constat : on n'avait aucun moyen de différencier statistiquement les règles qui "fire trop tôt mais finissent par avoir raison" de celles qui "fire et le marché ignore". Les deux finissaient en expired. La granularité du status stale permet désormais de séparer.
Troisième constat : la suggestion Kelly basée sur une probabilité figée à la création conduisait mécaniquement à proposer des allocations excessives sur des signaux mourants. Un cap implicite via la fraîcheur résoud ça en restant cohérent avec la math.
Ce qu'on observe en production
Premier run de calibration automatique au lendemain du déploiement : le système a observé qu'aucune règle n'avait encore assez de signaux résolus pour ajuster la demi-vie au-delà de la valeur par défaut. C'était attendu — il faut quelques semaines de track record live pour que les distributions par règle deviennent statistiquement parlantes.
Mais la décroissance s'applique déjà à tous les signaux pending, et les badges fraîcheur ont commencé à passer du vert au jaune sur les signaux qui ont passé leur mi-vie. Le scoreboard est plus calme — moins de "75%" trompeurs, plus de "32% — à mi-mort" honnêtes.
La méthodologie reste publique
Le code est intégralement accessible dans le service signalFreshnessService.js. Les seuils (70%/25% pour stale, 30%/50% pour l'auto-calibration de la demi-vie) sont documentés. La courbe de décroissance est exposée pour chaque signal via l'API publique /api/signals/live, avec les champs current_confidence, freshness_pct, decay_factor et half_life_hours.
L'objectif : qu'aucune décroissance ne soit invisible. Si votre signal préféré a perdu 60% de sa valeur en 4 jours, vous voulez le voir dans l'interface, pas le découvrir à la résolution finale.
C'est une promesse de transparence radicale qu'on essaie de tenir à chaque sprint. La demi-vie en est la dernière incarnation. La prochaine sera, probablement, l'auto-désactivation des règles dont l'accuracy live a structurellement chuté — autre sujet, mais même esprit.
GeoPulse
Suivez les marchés en temps réel
GeoPulse corrèle événements géopolitiques et marchés financiers avec une analyse IA de chaque événement.
Créer un compte gratuit