Repository navigation
Séances qui n'ont pas eu lieu : l'accueil ne tombe plus à zéro, l'archive en est purgée - #16
Merged
Merged
Conversation
…hive en est purgée « Actualiser » avant l'ouverture remplaçait la dernière séance par la page de brvm.org, déjà datée du jour mais sans aucun échange : l'accueil affichait 0 hausse, 0 baisse, tout stable, 0 FCFA (04/11/2026, 9 h 30). En cherchant la cause, l'archive s'est révélée porter 102 séances recopiées — un jour de fermeture, sikafinance republie la veille, cours et quantités au titre près : 1er janvier, Pâques, 1er mai, 7 et 15 août, Noël, Korité, Tabaski… — et une séance sans aucun échange (07/11/2025), toutes entrées par l'historique, qu'aucun contrôle ne filtrait. Elles ajoutaient une dizaine de jours immobiles par an à la volatilité, à la liquidité et aux horizons de prévision. - `qualite.seances_republiees` : au moins 75 % des valeurs échangées reprennent volume ET cours de leur séance précédente, ou aucune valeur échangée. Seuil lu sur l'archive : les vraies séances plafonnent à 56 %, les copies vont de 76 à 100 %. - `brvm qualite` les signale (code 1) et `--retirer` les efface ; 3 924 lignes retirées, plus la séance fantôme ONTBF du 24/12/2015 que la copie du 25 masquait. L'archive ne porte plus aucune anomalie connue. - L'app écarte une page lue en direct qui n'est pas une vraie séance, garde la dernière séance close et dit pourquoi. - `ingerer_jour` refuse une telle page ; `versement.yml` met en quarantaine la séance sans échange et passe au seuil de 75 % (Noël 2017 et 2018, recopiés à 81-87 %, passaient sous l'ancien 90 %). Tests : 381 passés, dont le scénario de l'accueil avant l'ouverture et un jour de fermeture ; le script de versement rejoué sur une copie de l'archive verse la vraie séance et écarte la vide et la recopiée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014G9XrQEMSrJM6BXHKtfken
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Le problème signalé
Le 04/11/2026 vers 9 h 30, « 🔄 Actualiser » mettait l'onglet Aujourd'hui à zéro : 0 hausse, 0 baisse, 48 valeurs stables, 0 FCFA échangé. Avant les premiers échanges, brvm.org porte déjà la date du jour, avec les cours de la veille et des volumes nuls, et l'app prenait cette page pour la séance du jour. Reproduit à l'identique ; ce n'est pas lié au fractionnement.
Ce que la recherche de la cause a révélé
L'archive portait 103 séances qui n'ont pas eu lieu, toutes entrées par l'historique sikafinance (rapatriement du 19/09), qu'aucun contrôle ne filtrait :
Comptées comme des séances, elles ajoutaient une dizaine de jours immobiles par an : volatilité écrasée, liquidité dupliquée, horizons de prévision décalés.
Ce qui change
qualite.seances_republieesretient une séance si au moins 75 % de ses valeurs échangées reprennent le volume et le cours de leur séance précédente, ou si aucune valeur n'est échangée. Le seuil se lit sur l'archive, coupée en deux sans ambiguïté : les vraies séances plafonnent à 56 % (la source répète parfois la ligne d'un titre non échangé), les copies vont de 76 à 100 %.brvm qualiteles signale (code de sortie 1, ce qui met au rouge un rapatriement qui les réintroduirait) ;--retirerles efface, comme les séances fantômes.data/cours.csv: 3 925 lignes retirées, soit les 103 séances plus la séance fantôme ONTBF du 24/12/2015, que sa copie du 25 masquait au contrôle existant. L'archive passe de 3 067 à 2 964 séances et ne porte plus aucune anomalie connue.ingerer_jourrefuse une telle page.versement.ymlmet en quarantaine la séance sans aucun échange, et passe de 90 % à 75 % pour les séances recopiées : Noël 2017 et 2018, recopiés à 81-87 %, passaient sous l'ancien seuil.Vérifications
pytest: 381 passés, dont l'accueil avant l'ouverture et un jour de fermeture (test de l'app), le refus à l'ingestion, et un test qui échoue si l'archive versionnée porte de nouveau une telle séance.Les chiffres cités dans
docs/technique.md(IC, backtests) ont été calculés avant ce nettoyage et n'ont pas été recalculés.Generated by Claude Code