Sorties brutes du moteur d'audit, exécutées sur données publiques réelles — reproductibles.
Ce que vous lisez. Ces trois rapports n'ont pas été rédigés : ils sont la sortie brute du moteur VERIFICATOR, lancé sur des données publiques (FRED) que chacun peut retélécharger. Chaque audit s'exécute en moins d'une seconde.
Trois principes, inscrits dans le code et non dans un slogan. (1) Le verdict est ternaire : maîtrisé, sous-estimé, ou non concluant — ce dernier est un verdict de plein droit, rendu quand les données ne permettent pas de trancher, plutôt qu'un chiffre rassurant. (2) Chaque verdict cite sa preuve : une étude pré-enregistrée dont la prédiction chiffrée a été scellée par empreinte SHA256 avant tout calcul, résultats négatifs publiés au même rang. (3) Le rapport porte l'empreinte des données auditées : il est re-vérifiable.
Un audit qui alerterait sur tout n'aurait aucune valeur. Vous verrez ci-dessous des verdicts verts francs à côté des alertes — c'est ce qui rend les alertes crédibles.
Ce que nous ne pouvons PAS vérifier — et que nous préférons écrire. L'audit ne voit que la période qu'on lui soumet. Nous avons mesuré ce que cela coûte plutôt que de le taire (étude P243, 9 séries publiques) : en choisissant la période, 56 % des verdicts défavorables se retournent en moins de dix essais. L'exposition dépend de l'axe — le risque de queue y résiste (aucune période favorable trouvée sur 9 séries), la mémoire de la volatilité cède en 1,5 essai. Et aucune parade automatique n'existe (étude P244) : ce choix ne laisse pas de trace détectable dans les données reçues. La seule défense est donc une déclaration signée du client, exigée par le moteur avant tout calcul — pas un contrôle de notre part.
| Axe audité | Verdict | Constat |
|---|---|---|
| Risque de queue | SOUS-ESTIMÉ | queue lourde (α≈3.16) — un modèle gaussien sous-estime les chocs à 5σ d'un facteur ×5105 (41 dépassements observés pour 0.0 attendus, p=6.9e-41) — cause : queue RÉELLE, elle survit au retrait du régime (facteur encore ×3860 après standardisation par ère) — à l'échelle de CETTE série : plus forte variation observée 13.25%, centile 99 à 4.43% |
| Taille d'échantillon effective | MAÎTRISÉ | observations quasi indépendantes (ρ=+0.010) — n effectif ≈ n |
| Couverture réelle des intervalles | MAÎTRISÉ | un IC à 95 % couvre réellement 95.5% (calibré) sur des sous-échantillons de 30 |
| Stabilité de régime | SOUS-ESTIMÉ | régime NON stationnaire : la volatilité varie ×2.4 entre ères (Levene p=5.1e-277) — un paramètre unique ne décrit aucune ère |
| Mémoire de la volatilité | SOUS-ESTIMÉ | volatilité à MÉMOIRE (autocorr |r| 0.328 vs rendements +0.003) — le risque arrive groupé, un modèle i.i.d. le rate |
Queue lourde (α≈3.16) — un modèle gaussien sous-estime les chocs à 5σ d'un facteur ×5105 (41 dépassements observés pour 0.0 attendus, p=6.9e-41) — cause : queue RÉELLE, elle survit au retrait du régime (facteur encore ×3860 après standardisation par ère) — à l'échelle de CETTE série : plus forte variation observée 13.25%, centile 99 à 4.43%.
| alpha Hill | 3.156 |
|---|---|
| variations nulles | 0.1% |
| alpha Hill IC95 | 3.05 à 3.26 (± 0.10, sur 3502 valeurs extrêmes) |
| amplitude variation max | 13.25% |
| amplitude centile 99 | 4.43% |
| alpha Hill lecture | biaisé vers le BAS (estimateur de Hill) : la vraie queue est plus légère que ce chiffre ne le suggère — ordre de grandeur réel ~4 |
| n | 14010 |
| seuil de decision | 5σ (41 dépassements) |
| facteur sous estimation 3sigma | 6.2 (234 obs · IC95 5.3 à 7.2) |
| facteur sous estimation 4sigma | 105.9 (94 obs · IC95 83.5 à 132.1) |
| facteur sous estimation 5sigma | 5104.6 (41 obs · IC95 3566.3 à 7047.3) |
| queue vs votre passe | ⚠ pertes extrêmes PLUS FRÉQUENTES que votre passé ne le prévoyait (367 dépassements du seuil 99 % contre 70 attendus) — mais cela vient d'un changement de VOLATILITÉ, non de la forme de la queue : à volatilité standardisée, la queue est stable ⚠ DIAGNOSTIC SENSIBLE AU DÉCOUPAGE : refait en coupant la série à 40, 45, 55 et 60 % au lieu du milieu, il ne donne pas toujours la même réponse. Lisez-le comme une indication, non comme un fait établi. |
| depassements seuil99 | 367 observés / 70 attendus (p=4.09e-140) |
| a volatilite standardisee | 72 observés / 70 attendus (p=0.423) |
| facteur apres retrait du regime | 3859.57 |
| variation de volatilite entre eres | ×2.4 |
| cause de la queue | VRAIE queue (survit au retrait du régime) |
Recommandation — dimensionner la VaR/le capital sur la queue EMPIRIQUE, pas sur σ ; tester les scénarios au-delà de 4σ
Observations quasi indépendantes (ρ=+0.010) — n effectif ≈ n.
| variations nulles | 0.1% |
|---|---|
| n brut | 14010 |
| rho lag1 | 0.0101 |
| n effectif | 13730 |
| gonflement variance | 1.02 |
| sous estimation erreur type | 1.01 |
Recommandation — utiliser n_eff, ou des erreurs-types robustes (HAC/Newey-West, blocs) ; re-tester tout résultat « significatif » avec le bon n
Un IC à 95 % couvre réellement 95.5% (calibré) sur des sous-échantillons de 30.
| variations nulles | 0.1% |
|---|---|
| n sous echantillon | 30 |
| couverture reelle | 0.955 |
| rate par le haut | 0.0143 |
| rate par le bas | 0.0307 |
| asymetrie des rates | 0.5 |
| skewness | -0.324 |
Recommandation — sur petits échantillons asymétriques : IC log-transformés, BCa ou bornes asymétriques ; ne pas supposer la couverture nominale
Régime NON stationnaire : la volatilité varie ×2.4 entre ères (Levene p=5.1e-277) — un paramètre unique ne décrit aucune ère.
| variations nulles | 0.1% |
|---|---|
| n eras | 4 |
| vol par ere | [0.00766, 0.00971, 0.01822, 0.01287] |
| moyenne par ere | [0.000248, 0.000564, 0.000168, 0.000609] |
| ratio vol max min | 2.38 |
| levene p | 5.1e-277 |
Recommandation — mesurer la performance PAR ÉRA (fenêtre glissante), jamais en agrégé — l'agrégat dilue et masque le décrochage
Volatilité à MÉMOIRE (autocorr |r| 0.328 vs rendements +0.003) — le risque arrive groupé, un modèle i.i.d. le rate.
| variations nulles | 0.1% |
|---|---|
| acf rendements moy | 0.003 |
| acf abs rendements moy | 0.3283 |
| acf abs lag1 | 0.3243 |
| acf abs apres retrait du regime | 0.2411 |
| cause de la memoire | mémoire RÉELLE (survit au retrait du régime) |
| effet de levier | -0.1164 |
| puissance a cette taille | suffisante |
Recommandation — modéliser la volatilité conditionnelle (GARCH/EWMA) ; ne pas supposer des chocs indépendants dans le temps
| Axe audité | Verdict | Constat |
|---|---|---|
| Calibration vs discrimination | SOUS-ESTIMÉ | le modèle N'APPORTE RIEN sur le prophète constant : résolution 0.00029 (≈0), AUC 0.509, gain de Brier -0.3% — être « bien calibré » (fiabilité 0.00065) ne prouve aucune compétence |
| Exagération de l'effet (Type M/S) | MAÎTRISÉ | puissance 94% — exagération négligeable (×1.03), réplication attendue 94% |
| Sur-optimisation de backtest | MAÎTRISÉ | Sharpe 0.87 nettement au-dessus du meilleur hasard attendu (0.47) — Sharpe déflaté ≈ 0.40 |
| Bruit dans la matrice de corrélation | MAÎTRISÉ | 2 facteur(s) réel(s) au-dessus du bord MP (1.14), portant 82% de la variance ; les 18 autres directions sont du bruit. ⚠ le premier facteur écrase les autres (82% à lui seul) : des facteurs secondaires RÉELS mais minoritaires seraient ici indiscernables du bruit — sur la courbe des taux US, ce test ne retrouve que le « niveau », pas la pente ni la courbure de Litterman-Scheinkman |
Le modèle N'APPORTE RIEN sur le prophète constant : résolution 0.00029 (≈0), AUC 0.509, gain de Brier -0.3% — être « bien calibré » (fiabilité 0.00065) ne prouve aucune compétence.
| n | 4185 |
|---|---|
| taux de base | 0.5582 |
| brier | 0.24723 |
| brier prophete constant | 0.24661 |
| gain de brier | -0.0025 |
| fiabilite calibration | 0.00065 |
| resolution discrimination | 0.00029 |
| incertitude | 0.24661 |
| auc | 0.5091 |
| nbins adaptatif | 20 |
| fiabilite attendue a ce n | 0.00118 |
| rapport a l attendu | 0.55x (seuil de materialite : 2.0x) |
Recommandation — auditer les DEUX axes ; comparer obligatoirement au prophète constant ; la calibration se répare a posteriori, la discrimination non
Puissance 94% — exagération négligeable (×1.03), réplication attendue 94%.
| effet observe | 0.0004352011943844981 |
|---|---|
| erreur type | 0.00012257112490758525 |
| rapport signal bruit | 3.551 |
| puissance | 0.9442 |
| facteur exageration typeM | 1.03 |
| risque de signe typeS | 0.0 |
| taux de replication attendu | 0.9442 |
Recommandation — corriger la taille d'effet publiée par le facteur d'exagération ; exiger la puissance à côté du p ; la preuve est la RÉPLICATION, pas la significativité
Sharpe 0.87 nettement au-dessus du meilleur hasard attendu (0.47) — Sharpe déflaté ≈ 0.40.
| sharpe observe | 0.871 |
|---|---|
| nb essais declares | 20 |
| duree annees | 16.61 |
| sharpe max attendu sous le nul | 0.466 |
| sharpe deflate | 0.405 |
Recommandation — déclarer le nombre de variantes testées et défalquer ; valider hors échantillon sur une période jamais touchée
2 facteur(s) réel(s) au-dessus du bord MP (1.14), portant 82% de la variance ; les 18 autres directions sont du bruit. ⚠ le premier facteur écrase les autres (82% à lui seul) : des facteurs secondaires RÉELS mais minoritaires seraient ici indiscernables du bruit — sur la courbe des taux US, ce test ne retrouve que le « niveau », pas la pente ni la courbure de Litterman-Scheinkman.
| T | 4185 |
|---|---|
| N | 20 |
| q N sur T | 0.0048 |
| bord MP inferieur | 0.867 |
| bord MP superieur | 1.143 |
| valeurs propres top5 | [14.735, 1.573, 0.909, 0.452, 0.373] |
| nb facteurs reels | 2 |
| part variance reelle | 0.8156 |
| part directions bruit | 0.9 |
Recommandation — nettoyer la matrice (clipping des valeurs propres sous λ₊) AVANT optimisation de portefeuille, modèle à facteurs ou distance de Mahalanobis
| Axe audité | Verdict | Constat |
|---|---|---|
| Transférabilité (rupture hors-groupe) | SOUS-ESTIMÉ | coefficient CONTINGENT (CV=0.404 > 0,18 ; R=1.05) — le modèle SE ROMPRA hors de son groupe d'origine ; groupe le plus atypique : « 2000s » ; recalibration locale obligatoire |
| AutoFrontier (domaine de validité) | SOUS-ESTIMÉ | FRONTIÈRE de type C détectée à x≈0.02302 (ΔBIC=11) — PERTE DE SUPPORT — la dispersion explose, il n'y a plus de loi ; la pente passe de 0.7838 à 0.28 (×0.36). AUCUNE loi au-delà de la frontière (R²=0.04 < 0,50) : N'EXTRAPOLEZ PAS |
Coefficient CONTINGENT (CV=0.404 > 0,18 ; R=1.05) — le modèle SE ROMPRA hors de son groupe d'origine ; groupe le plus atypique : « 2000s » ; recalibration locale obligatoire.
| nb groupes | 6 |
|---|---|
| coefficients par groupe | {'1970s': 0.6088, '1980s': 0.2893, '1990s': 0.635, '2000s': 0.8033, '2010s': 0.4304, '2020s': 0.2949} |
| CV du coefficient | 0.4042 |
| indice R etranger sur local | 1.046 |
| etendue intra groupe min | 0.426 |
Recommandation — si CONTINGENT : livrer la carte des groupes et imposer la recalibration locale ; ne jamais déployer un coefficient contingent hors de son groupe d'origine
FRONTIÈRE de type C détectée à x≈0.02302 (ΔBIC=11) — PERTE DE SUPPORT — la dispersion explose, il n'y a plus de loi ; la pente passe de 0.7838 à 0.28 (×0.36). AUCUNE loi au-delà de la frontière (R²=0.04 < 0,50) : N'EXTRAPOLEZ PAS.
| n | 699 |
|---|---|
| frontiere x | 0.023023 |
| type de frontiere | C — PERTE DE SUPPORT — la dispersion explose, il n'y a plus de loi |
| pente avant | 0.783788 |
| pente apres | 0.279977 |
| ratio de pente | 0.357 |
| R2 au dela extrapolation | 0.044 |
| ratio SSR quad sur morceaux | 1.02 |
| BIC modele unique | -7441.1 |
| BIC deux regimes | -7452.6 |
| delta BIC | 11.5 |
Recommandation — ne pas extrapoler au-delà de la frontière détectée ; documenter le domaine de validité du modèle et recalibrer par régime
| Axe | Verdict | Constat |
|---|---|---|
| Risque de queue | SOUS-ESTIMÉ | queue lourde (α≈3.26) — un modèle gaussien sous-estime les chocs à 5σ d'un facteur ×6076 (32 dépassements observés pour 0.0 attendus, p=1.9e-29) — cause : queue RÉELLE, elle survit au retrait du régime (facteur encore ×2658 après standardisation par ère) — à l'échelle de CETTE série : plus forte variation observée 13.25%, centile 99 à 4.19% |
| Taille d'échantillon effective | MAÎTRISÉ | autocorrélation modérée (ρ=+0.091), n effectif 7656 sur 9186 |
| Couverture réelle des intervalles | MAÎTRISÉ | un IC à 95 % couvre réellement 95.7% (calibré) sur des sous-échantillons de 30 |
| Stabilité de régime | SOUS-ESTIMÉ | régime NON stationnaire : la volatilité varie ×2.6 entre ères (Levene p=1.6e-300) — un paramètre unique ne décrit aucune ère |
| Mémoire de la volatilité | SOUS-ESTIMÉ | volatilité à MÉMOIRE (autocorr |r| 0.351 vs rendements +0.013) — le risque arrive groupé, un modèle i.i.d. le rate |
| Seuil | Le gaussien attendait | L'audit annonçait | Réellement observé |
|---|---|---|---|
| 3σ | 1.71 jour(s) | 10.9 | 53 |
| 4σ | 0.04 jour(s) | 4.6 | 23 |
| 5σ | 0.00 jour(s) | 2.2 | 11 |
Verdict, et l'aveu qui compte. Le modèle gaussien s'est trompé d'un facteur ≈575 sur le nombre de séances au-delà de 4σ. L'audit a réduit cette erreur d'environ cent fois. Mais il sous-estimait encore la crise d'un facteur ≈5, et nous l'écrivons plutôt que de le taire : la queue mesurée sur l'historique sous-estime elle-même les crises, car une crise ne réalise pas seulement la queue passée — elle en crée une plus lourde.
Conséquence opérationnelle : dimensionner le capital sur la queue empirique vaut infiniment mieux que sur σ, mais ce n'est pas encore assez — il faut y ajouter une marge de régime. Un audit qui prétendrait avoir « vu venir 2008 » mentirait ; celui-ci dit de combien chaque modèle s'est trompé, y compris lui-même.
| Mesure | 2005-2019 (régime de calibration) | 2020-2026 (après décrochage) |
|---|---|---|
| Verdict du moteur | ● SOUS-ESTIMÉ | ▲ SOUS-ESTIMÉ |
| AUC (pouvoir de tri) | 0.9433 | 0.5303 |
| Gain de Brier vs prophète constant | +40.1% | -1241.6% |
| Erreur de calibration | 0.00498 | 0.35263 |
| Résolution (discrimination) | 0.04719 | 0.00307 |
1. Le moteur valide un bon modèle. Sur 2005-2019 il rend un vert franc — AUC 0,94, calibration excellente, +40 % de gain sur le prophète constant. Un outil qui alerterait aussi ici n'aurait aucune valeur : c'est ce vert qui rend les alertes crédibles.
2. Le même modèle est démasqué sur l'autre régime. Son pouvoir de tri tombe au niveau du hasard et son gain de Brier devient négatif de plus de 1 200 % : le modèle est environ treize fois pire que d'annoncer simplement le taux de base. Un modèle muet aurait mieux servi.
3. Le risque de modèle dans sa forme la plus coûteuse. Un modèle authentiquement excellent devient nuisible sans qu'une ligne de son code ne change — sa validation initiale était justifiée, c'est le monde qui a changé. Aucune validation interne classique ne le voit, parce qu'elle re-mesure la performance sur la période de calibration. Il faut mesurer par régime et comparer au prophète constant : les deux gestes que ce moteur fait automatiquement.
| n montants | 457807 |
|---|---|
| etendue ordres de grandeur | 3.27 |
| MAD vs Benford | 0.028 |
| MAD attendu sous Benford a ce n | 0.0003 |
| ratio MAD observe sur attendu | 80.6 |
| part du chiffre 1 | 19.3% (Benford : 30.1%) |
| KS log uniforme | 0.1165 |
| MAD par periode | {'2010': 0.0263, '2011': 0.0286, '2012': 0.029} |
| CV du MAD inter periodes | 0.043 |
| causes structurelles detectees | 1 |
Verdict rendu : « écart à Benford RÉEL mais expliqué par une cause STRUCTURELLE : écart stable sur les 3 périodes (coefficient de variation du MAD = 0,04), signature d'un barème permanent — pas d'une fraude. Conclure à la fraude ici serait un faux positif. »
Pourquoi c'est le raisonnement qui compte. Une fraude apparaît, s'aggrave ou cesse ; un barème, lui, produit exactement le même biais chaque année. Ces aides sont proportionnelles à des surfaces : leur distribution n'a aucune raison de suivre Benford, et n'en suit pas. Envoyer un client enquêter là-dessus lui coûterait cher pour rien.
Ce que nous ne prétendons pas. Ce détecteur est validé sur ce qu'il évite (le faux positif) et sur son domaine de validité — pas sur un cas de fraude réelle avérée. Nous ne dirons donc pas qu'il « détecte la fraude » : il écarte une famille d'anomalies et refuse d'accuser à tort.
| Barrière | Quand | Ce que le moteur répond (message réel) |
|---|---|---|
| 1. Fiche invalide → audit NON LANCÉ | fichier introuvable, colonne inexistante, JSON malformé | ⛔ AUDIT NON LANCÉ — colonne « PRIX_CLOTURE » absente. Colonnes disponibles : observation_date, NASDAQCOM. Aucun rapport n'a été écrit. |
| 2. Données compromises → audit REFUSÉ | duplication, valeurs manquantes en masse, série constante, prix négatifs | ⛔ COMPROMIS — 88 % des valeurs sont identiques à la précédente : forte suspicion de duplication par blocs. Données inexploitables en l'état. |
| 3. Données insuffisantes → NON CONCLUANT | l'axe ne peut pas être tranché avec ce que l'on a | ⚪ NON CONCLUANT — un exposant de queue n'est pas estimable en dessous de ~500 observations ; fournir l'historique en fréquence quotidienne. |
Pourquoi ce n'est pas un détail. En testant nos propres entrées dégradées, nous avons découvert que le moteur écrivait un rapport « 3 axes · 1 alerte » lorsque le fichier de données était introuvable — un rapport d'apparence sérieuse, avec une alerte donc crédible, sur des données jamais lues. C'est précisément la faute que ce produit dénonce chez les autres outils. Elle est corrigée, et la barrière est désormais publiée ici.
Le verdict « non concluant » obéit à la même règle : quand les données ne permettent pas de trancher, l'audit le dit — et la raison est écrite dans le rapport, avec ce qu'il faudrait fournir pour lever le doute.
| Détecteur | Fausse alerte | Sensibilité | Banc |
|---|---|---|---|
| Risque de queue | 0% | 100% | 40 réplications |
| Taille effective | 0% | 100% | 40 réplications |
| Couverture des IC | 0% | 100% | 20 réplications |
| Stabilité de régime | 0% | 100% | 40 réplications |
| Mémoire de volatilité | 0% | 100% | 30 réplications |
| Calibration/discrimination | 0% | 100% | 30 réplications |
| Exagération Type M/S | 0% | 100% | 20 réplications |
| Sur-optimisation backtest | 0% | 100% | 10 réplications |
| Bruit de matrice (MP) | 0% | 95% | 20 réplications |
| Transférabilité | 0% | 100% | 20 réplications |
| AutoFrontier | 0% | 100% | 20 réplications |
| Fraude — Benford domain-safe | 5% | 100% | 20 réplications |
| Variables de régime | 0% | 92% | 40 réplications |
Un incident, conservé volontairement. À sa première exécution, le banc a donné 0 % de sensibilité au détecteur de mémoire de volatilité. Enquête faite, le coupable n'était pas le détecteur mais notre propre générateur de test, qui produisait une volatilité quasi constante (autocorrélation 0,06 — rien à détecter). Corrigé en vrai GARCH(1,1), le détecteur passe à 100 %. Nous laissons la trace : un banc d'essai sert d'abord à se méfier de soi.
Et ce banc, que vaut-il ? Un tableau de verdicts conformes ne prouve rien s'il ne sait pas repérer une panne. Nous l'avons donc mesuré par la méthode consacrée (mutation : saboter délibérément son propre code et compter les sabotages détectés) : 7 sur 9. Le banc voit qu'un instrument est cassé ; il ne voit pas un seuil qui dérive quand un autre calcul couvre le cas. Nous préférons afficher cette limite plutôt que le seul chiffre flatteur — et une suite distincte, dont chaque test a été prouvé capable d'échouer, protège les sept fautes déjà corrigées.