Méthode
Tant que ce n'est pas bon
La boucle Ralph étend le « tant que » de l'informatique à des conditions qu'aucune machine ne sait tester. Elle tient à quatre conditions, et la troisième se chiffre.
La Ralph Eyeball Loop, chez sprezzature.ai ↗
« Tant que le compteur est plus petit que dix, recommence. » C'est la plus vieille phrase de l'informatique, et elle fonctionne pour une raison qu'on ne remarque plus : la machine sait répondre à la question qu'on lui pose. Comparer un compteur à dix coûte un cycle d'horloge et la réponse est exacte. Toute la force de la boucle tient dans cette condition d'arrêt à bas prix.
Les questions qui décident vraiment de la qualité d'un travail n'ont pas cette obligeance. Ce graphique est-il lisible ? Ce paragraphe s'enchaîne-t-il avec celui d'avant ? Ce modèle de prévision mérite-t-il qu'on le mette en production ? Aucune ne se tranche en un cycle d'horloge. Alors on les a sorties des boucles, et reléguées à la fin, dans une relecture unique, faite à la main, une seule fois, par quelqu'un qui a déjà beaucoup travaillé.
La boucle Ralph les y remet. Elle garde le squelette du « tant que » et met un jugement là où se trouvait le test : un œil humain, un modèle de vision, un jeu de données mis de côté. Ce déplacement paraît modeste. Il change ce qu'on peut automatiser, et il ouvre une faille précise, que la suite chiffre.
La boucle en une ligne
Le nom vient de l'ingénieur australien Geoffrey Huntley, qui a décrit en juillet 2025 ce qu'il appelle la technique Ralph1, d'après Ralph Wiggum, l'écolier des Simpson dont les réponses tombent à côté avec une constance admirable. Elle tient en une ligne d'interpréteur de commandes :
while :; do cat PROMPT.md | claude-code ; done
On écrit dans un fichier ce qu'on veut obtenir, on le donne en boucle à un agent de codage, c'est-à-dire à un modèle de langage autorisé à lire et écrire des fichiers et à lancer des commandes, et on ne le laisse pas sortir. La surprise est que cela produise du logiciel, et la raison n'est pas celle qu'on suppose d'abord.
Un modèle de langage travaille dans une fenêtre de contexte, la quantité de texte qu'il garde sous les yeux pendant un échange. Cette fenêtre est courte, et sa qualité se dégrade à mesure qu'on la remplit : en fin de longue conversation, le modèle perd le fil de ses propres décisions. Le dépôt de code, lui, ne se dégrade pas. À chaque tour de la boucle de Huntley, l'agent repart de zéro, relit l'état réel des fichiers, fait une chose, l'écrit. La progression s'accumule sur le disque et dans l'historique de version, jamais dans la mémoire du modèle. C'est l'oubli qui est la fonctionnalité.
Huntley ne vend pas sa technique comme une solution : il écrit qu'elle est « mauvaise de façon déterministe dans un monde indéterministe », qu'elle ne vaut que pour un projet neuf, qu'elle exige un ingénieur expérimenté à la barre, et que son résultat sort « sous-cuit, cuit, ou cuit avec des comportements latents non spécifiés ». Il rapporte un contrat facturé 50 000 dollars livré pour 297 dollars de calcul ; c'est son chiffre, avancé par l'auteur de la méthode, et rien dans cet article ne le vérifie.
Reste le point que sa ligne de commande
laisse ouvert, et qui est tout le sujet de cet article. while :, en
shell, signifie « tant que vrai ». La condition est vide. La boucle originelle n'a pas de test
du tout : elle tourne jusqu'à ce qu'un humain l'arrête. Tout ce qui devient intéressant commence
quand on remet quelque chose dans cette condition.
Ce qui remplace le test
Quatre gestes suffisent à décrire toutes les variantes qu'on rencontre. Agir : produire une modification, une seule, pour qu'on sache plus tard à quoi attribuer le résultat. Rendre : transformer cette modification en un artefact qu'on peut effectivement examiner, une image, un texte imprimé, un tableau de mesures. Juger : examiner l'artefact. Décider : garder ou jeter, en écrivant la raison.
Le squelette commun. Les quatre boucles décrites plus bas ne diffèrent que par la nature de l'artefact rendu et par l'identité du juge.
Le geste le plus souvent escamoté est le deuxième. Sans rendu, le jugement porte sur une intention plutôt que sur un résultat, et l'on tourne sans rien apprendre. Le quatrième est celui qu'on regrette de ne pas avoir fait : sans raison écrite, on ne saura pas, trois semaines plus tard, combien d'idées ont été essayées avant celle qui a survécu. La dernière section montre que ce compte n'est pas de la bureaucratie ; c'est une grandeur statistique dont dépend la validité de tout le reste.
Regarder ce qu'on vient de faire
On relit une phrase en la relisant. On ne relit pas un graphique. Le code qui dessine une figure peut être entièrement juste et la figure fausse quand même : une étiquette qui glisse hors du cadre, une légende posée sur les données, deux points exactement superposés, une palette rouge et verte qui s'effondre en une seule teinte boueuse pour qui ne les distingue pas. Rien de tout cela n'apparaît à la lecture de la source. Cela n'apparaît qu'en regardant le résultat.
C'est la discipline que formalise la Ralph Eyeball Loop2, chez sprezzature.ai : rendre, regarder, corriger la source, recommencer, jusqu'à ce qu'il n'y ait plus rien à repérer. L'outil accepte quatre sortes de sources, une page web, une figure TikZ, un diagramme Mermaid, un SVG écrit à la main, et les convertit en image avec un moteur déterministe, sans modèle et sans hasard : la même source donne toujours la même image. Il ouvre ensuite un fichier de critique nommé d'après une empreinte du chemin de la source, et y ajoute une section numérotée par passage, si bien que le fichier garde l'histoire de ce qui a été vu et corrigé au lieu de l'écraser.
Cette critique suit huit rubriques imposées : composition, contraste, hiérarchie du regard, espacements, accessibilité, couleurs, lisibilité effective des étiquettes à la taille où elles sortent, et verdict d'ensemble. Une page web en reçoit deux de plus, ce qui est visible sans défiler et ce que devient la mise en page à cette largeur. Deux modes coexistent : par défaut, c'est l'agent qui vient d'écrire le code qui regarde sa propre sortie ; avec une option, un modèle de vision tournant hors ligne remplit d'abord le formulaire, que l'on relit. La galerie de sprezzature compte cent vingt-sept sortes de graphiques, tous écrits directement en SVG et tous passés par cette boucle, ce qui donne à la méthode son échantillon.
Un cas concret vaut mieux, et il est pris sur cette page. Les articles de ce blog descendent d'un export d'outil de mise en page. Le conteneur d'article y déclare un espacement de vingt-huit pixels entre paragraphes, mais le style de texte courant le remet à zéro sur chaque paragraphe. Résultat : sur les huit articles publiés, les blocs se touchaient. La feuille de style était valide, le balisage était valide, aucun test ne tombait, aucun audit automatique ne s'en plaignait. Il a fallu photographier la page rendue et la regarder. Le même passage a levé deux autres défauts du même genre : une règle de liste qui écrasait le retrait, d'où des numéros de bibliographie posés sur la première lettre de la note, et un conteneur qui préservait les espaces, si bien que chaque saut de ligne écrit entre deux éléments de liste devenait une ligne blanche à l'écran. Trois défauts visibles en une seconde d'observation, invisibles à la lecture du code.
Des yeux qu'on n'a pas
La boucle prend toute sa valeur là où le juge voit ce que celui qui agit ne peut pas voir. L'accessibilité en donne le cas le plus net. Une personne dont la vision des couleurs est ordinaire ne peut pas voir sa propre figure comme la voit un lecteur daltonien, et aucun soin n'y changera rien, parce que l'information n'est pas dans son œil. Un simulateur redessine l'image telle que ces lecteurs la perçoivent, et en niveaux de gris. Une relecture physiquement impossible devient une étape ordinaire.
Le gris est d'ailleurs le test le plus sévère à lui seul. L'achromatopsie complète est rare, mais une figure qui se lit sans aucune couleur se lit sous toutes les déficiences plus légères. Si le propos survit au gris, il survit à tout le monde. Ce critère a une vertu supplémentaire : il est binaire et se vérifie en une seconde, ce qui en fait une condition d'arrêt presque aussi bon marché que la comparaison d'un compteur à dix.
Relire par coutures
Le même squelette s'applique à la prose, et la charte d'écriture dont relève cet article en fait une règle3. On ne relit pas un texte paragraphe par paragraphe, mais par paires de paragraphes consécutifs, parce que la fluidité ne se joue pas à l'intérieur d'un bloc, elle se joue à la couture. On lit à voix haute le paragraphe n suivi du paragraphe n+1, d'un trait ; on examine le passage de l'un à l'autre ; on corrige le texte lui-même, l'ordre des phrases, la dernière ligne du premier, la première du second, au lieu de noter en marge que « ça coince » ; puis on glisse d'un cran, sur la paire suivante.
Le glissement d'un cran fait le travail. Les fenêtres se chevauchent, donc chaque paragraphe est éprouvé deux fois, une fois comme arrivée et une fois comme départ, et ce sont deux épreuves différentes : un bloc peut recevoir parfaitement ce qui précède et ne rien appeler de ce qui suit. La lecture à voix haute est ici l'équivalent du rendu : elle transforme un texte, objet qu'on croit connaître parce qu'on l'a écrit, en un signal qu'on reçoit au lieu de l'émettre. Cet article a été relu ainsi.
Le juge finit par se laisser acheter
Une boucle optimise ce qu'elle mesure. Mettez un juge dans la condition d'arrêt, et la boucle se met à optimiser le juge. Charles Goodhart l'a observé en 1975 sur les agrégats monétaires : une régularité statistique s'effondre dès qu'on s'en sert comme cible de politique publique4. C'est l'anthropologue Marilyn Strathern qui en a donné en 1997 la formulation devenue courante, en étudiant l'évaluation des universités britanniques : quand une mesure devient une cible, elle cesse d'être une bonne mesure5.
Dans une boucle Ralph, la corruption du juge prend une forme particulière, qui se chiffre. Prenons le cas d'un modèle de prévision qu'on améliore par itérations. À chaque tour, l'agent propose une modification. On la mesure sur un jeu de validation, un ensemble de données mis de côté qui ne sert jamais à entraîner et seulement à départager. Cette mesure est bruitée, comme toute mesure faite sur un échantillon fini : appelons \(\sigma\) son écart type. Les idées, elles, ont un effet réel, tantôt bon tantôt mauvais : supposons ces effets répartis autour de zéro avec une dispersion \(\tau\). On essaie \(K\) idées et l'on garde celle qui mesure le mieux.
Deux cent mille tirages simulés, avec un bruit de mesure trois fois et demie plus grand que la dispersion des vrais effets. La courbe haute est ce qu'annonce la validation ; la courbe basse est ce qui reste une fois mesuré ailleurs.
La simulation ci-dessus prend \(\sigma = 1\) et \(\tau = 0{,}3\), soit un bruit de mesure trois fois et demie plus grand que l'écart entre une bonne et une mauvaise idée, ce qui n'a rien d'extravagant sur quelques centaines de dates. Après huit cents idées essayées, la modification retenue affiche sur la validation un gain de 3,32 écarts types. Son gain véritable est de 0,27. L'écart entre les deux courbes est exactement ce qu'un jeu de test frais reprendrait, et ce que la mise en production reprend toujours.
Ce n'est pas un accident de simulation, et la loi qui le gouverne s'écrit en une ligne. Connaissant une mesure \(m\), la meilleure estimation de l'effet réel \(\theta\) qui la sous-tend n'est pas \(m\) mais une version rétrécie vers zéro, d'autant plus rétrécie que la mesure est bruitée par rapport à la dispersion des effets :
Ce rétrécissement est le phénomène que Bradley Efron et Carl Morris ont popularisé sous le nom de paradoxe de Stein6 : une moyenne d'échantillon, prise isolément, surestime systématiquement ce qu'elle mesure dès qu'on l'a choisie parce qu'elle était la plus grande. Avec les valeurs de la simulation, le facteur vaut \(1 + \sigma^2/\tau^2 = 12{,}1\), et c'est précisément le rapport observé entre les deux courbes, à chaque valeur de \(K\), du premier essai au huit-centième. Le nombre d'idées essayées ne change pas ce facteur.
Il change autre chose : l'écart absolu. Le maximum de \(K\) mesures bruitées croît à peu près comme \(\sigma\sqrt{2\ln K}\), lentement mais sans jamais s'arrêter. Une boucle qu'on laisse tourner finit donc par annoncer un gain arbitrairement grand sur son juge, sans avoir rien amélioré. Le même mécanisme explique pourquoi tant de résultats publiés ne se reproduisent pas, ce que John Ioannidis a rendu quantitatif en 2005 en montrant que la probabilité qu'un résultat soit faux croît avec le nombre d'hypothèses explorées avant celle qu'on rapporte7. Les économistes du pétrole avaient nommé la chose plus tôt encore, en 1971, en observant que le vainqueur d'une enchère sur un gisement est celui qui l'a le plus surestimé : la malédiction du vainqueur8.
De quoi on tire une règle utilisable. Le gain honnête est le gain lu divisé par \(1 + \sigma^2/\tau^2\), et les deux grandeurs s'estiment : la dispersion observée de vos mesures vaut \(\tau^2 + \sigma^2\), et \(\sigma\) se déduit de la taille du jeu de validation. Surtout, cette règle donne au budget de la boucle un statut qu'on ne lui accorde jamais. Limiter le nombre de tours n'est pas une économie de calcul : c'est la condition pour que le chiffre final veuille dire quelque chose. Une boucle Ralph sans budget finit par rapporter ce qu'on espérait entendre.
Une limite à poser franchement : ce calcul est une simulation, pas la mesure d'une boucle réelle. Il suppose des idées indépendantes dont les effets se répartissent autour de zéro. L'hypothèse est pessimiste pour un ingénieur compétent, dont les propositions ne sont pas tirées au sort, et optimiste pour un agent qui produit vingt variantes d'une même idée, car ces variantes sont corrélées et le maximum monte alors moins vite que la formule ne le dit. C'est un modèle du mécanisme, pas un verdict sur une boucle particulière.
La grille ou la boucle
Le réflexe, pour choisir un modèle, reste la grille : on énumère les combinaisons de réglages, on les évalue toutes, on garde la meilleure. James Bergstra et Yoshua Bengio ont montré en 2012 qu'à budget égal, tirer les combinaisons au hasard fait mieux qu'une grille régulière9, parce que peu de réglages comptent vraiment et qu'une grille dépense ses points sur ceux qui ne comptent pas.
Grille et tirage au hasard partagent une propriété : la liste des candidats est arrêtée avant d'avoir vu le moindre résultat. Une boucle Ralph fait l'inverse, puisque sa prochaine proposition dépend de ce que la mesure précédente a dit. On parle alors d'analyse adaptative, et les statisticiens s'en méfient à bon droit : un jeu de validation supporte un grand nombre de questions posées d'avance, et se dégrade beaucoup plus vite sous des questions qui dépendent des réponses déjà obtenues. Cynthia Dwork et ses coauteurs ont construit pour ce cas des mécanismes de réutilisation qui rendent au jeu de validation une garantie chiffrée10. On s'attend donc à ce que la boucle soit la moins bonne des deux. La simulation dit le contraire.
Même juge, même budget d'évaluations, deux façons de chercher. La grille tire chaque candidat de zéro ; la boucle repart à chaque fois du gagnant précédent.
À budget égal de huit cents évaluations, la grille obtient un gain réel de 0,27 écart type et la boucle de 1,64, soit six fois plus. La raison tient en une phrase : un point de grille est une configuration complète tirée de zéro, alors qu'un pas accepté de la boucle repart du gagnant précédent. Les améliorations s'accumulent dans la boucle, et ne s'accumulent pas dans la grille.
Reste la question du gonflement. La grille annonce 3,32 quand elle vaut 0,27 ; la boucle annonce 4,72 quand elle vaut 1,64. Les deux écarts valent 3,05 et 3,09, c'est-à-dire le même, et l'égalité tient sur toute la plage, pas seulement à cette valeur de \(K\). Le gonflement ne dépend donc pas de la façon dont on cherche, mais du nombre de fois qu'on a consulté le juge. C'est une propriété du juge, pas de la recherche, et cela simplifie la comparaison : on corrige les deux chiffres de la même quantité, puis on les compare.
De là vient une règle de budget utilisable telle quelle. Puisque l'écart croît comme \(\sigma\sqrt{2\ln K}\), exiger qu'il reste sous \(\delta\) écarts types revient à borner le nombre d'essais :
Un écart type de tolérance n'autorise guère que deux essais ; deux écarts types en autorisent sept ; trois en autorisent quatre-vingt-dix. Au-delà, citer le chiffre de validation sans le corriger n'a plus de sens. La formule a le mérite de donner au mot budget un contenu, au lieu d'un vague appel à la modération.
Ce qui fait vraiment pencher pour la boucle n'est d'ailleurs pas ce facteur six. C'est qu'une grille suppose un espace énumérable, et que les modifications qui comptent ne le sont pas : ajouter une variable dérivée, changer la fonction de coût, réécrire l'étape de nettoyage, corriger une fuite de données. On ne met pas cela dans une grille, faute de pouvoir en écrire les axes. La boucle cherche là où il n'y a pas de grille à tracer, et c'est son avantage irremplaçable. Le reste se paie.
Le juge, c'est la validation croisée
Tout ce qui précède repose sur \(\sigma\), le bruit du juge, traité jusqu'ici comme une donnée du problème. Dans un projet réel, c'est une quantité qu'on fixe sans s'en apercevoir, au moment où l'on choisit la façon de découper les données.
La validation croisée partage le jeu en \(k\) parts, entraîne sur \(k-1\) d'entre elles, mesure sur la dernière, et recommence \(k\) fois. On cite d'ordinaire la moyenne des \(k\) scores et une barre d'erreur :
Cette barre n'est pas l'incertitude cherchée, et la raison est simple : diviser par \(\sqrt{k}\) suppose les \(s_j\) indépendants, alors que deux plis partagent la quasi-totalité de leurs données d'entraînement. Gaël Varoquaux a documenté l'ampleur du problème sur les petits échantillons, où les barres publiées sont couramment trop étroites de moitié11.
Une mesure vaut mieux qu'un avertissement. Sur quatre cents images de chiffres manuscrits et une régression logistique, trois grandeurs qu'on confond couramment : la barre citée vaut 0,0105 ; la variabilité due au seul tirage des plis, à données fixées, vaut 0,0067 ; et la variabilité d'un échantillon de quatre cents lignes à l'autre vaut 0,0120. C'est la dernière qui limite ce qu'une sélection transfère ailleurs, et elle vaut 1,8 fois la dispersion entre plis. Avec des plis stratifiés, qui forcent chaque part à respecter les proportions de classes, le rapport monte à 1,95 et la barre citée devient 1,37 fois trop petite : la stratification resserre la dispersion entre plis par construction, donc flatte la boucle.
La conséquence se chiffre sur la formule de correction. Sous-estimer \(\sigma\) d'un facteur deux, c'est sous-estimer le terme \(\sigma^{2}/\tau^{2}\) d'un facteur quatre, donc croire à quatre fois plus de progrès qu'il n'y en a. Le découpage n'est pas un détail d'intendance : il fixe le taux de change entre ce qu'on lit et ce qu'on obtient.
C'est exactement ce que codifie la suite d'outils publiée par probabl autour de scikit-learn, skrub et skore12 : un découpage par groupes quand plusieurs lignes viennent du même sujet, un découpage chronologique avec zone tampon quand l'ordre du temps compte, et une mise en garde explicite contre la stratification comme contre le retrait d'une seule ligne à la fois, deux habitudes qui produisent des barres d'erreur trop confiantes.
Cette suite mérite surtout d'être lue comme une boucle Ralph écrite en entier. Elle enchaîne l'exploration des données, la déclaration de la chaîne de traitement, un test de fumée, l'évaluation, l'audit du rapport produit, puis une boucle extérieure qui tire la prochaine expérience soit des diagnostics de ce rapport, soit de l'utilisateur. Les quatre conditions y sont réunies : l'état vit dans un journal de bord et dans une note de conception par expérience, approuvée avant que le code existe ; le juge est le rapport, distinct de celui qui a écrit la chaîne ; chaque proposition arrive avec la référence documentaire qui la motive, c'est-à-dire la raison écrite ; et plusieurs étapes s'arrêtent net plutôt que de continuer sur une dépendance manquante ou un nom d'outil deviné de mémoire.
Un détail y mérite d'être copié partout. Le test de fumée n'est pas un jugement, c'est une assertion exacte : le nombre de prédictions doit égaler le nombre de lignes à prédire. Elle attrape une faute précise, celle d'une chaîne qui calcule ses variables avant de découper et perd silencieusement ses premières lignes, faute de passé à leur donner. Voilà un jugement redevenu test bon marché. Toute boucle Ralph gagne à en fabriquer autant qu'elle peut : ce que la machine sait trancher n'a rien à faire dans la condition coûteuse.
Ce que cela donne sur de vraies données
Une simulation reste une simulation. Voici la même expérience menée sur des données réelles, et elle est plus brutale que le modèle.
Huit cents images de chiffres manuscrits, coupées en deux. Quatre cents forment le bassin sur lequel le juge, une validation croisée à cinq plis, rend ses verdicts ; les quatre cents autres constituent un test gelé que la boucle ne voit jamais. Le modèle est une régression logistique. À chaque tour, la boucle propose une modification simple et plausible, activer ou désactiver trois pixels d'entrée, puis accepte si le score de validation monte et rejette sinon. Deux cents propositions examinées, dix acceptées.
Chaque palier de la courbe haute est une modification acceptée parce qu'elle avait fait monter la validation. La courbe basse dit ce que ces dix décisions valaient réellement.
La validation passe de 0,9350 à 0,9650, trois points gagnés en dix paliers, chacun justifié par une hausse mesurée. Le test gelé passe de 0,9275 à 0,9225 : un demi-point perdu. La totalité du progrès annoncé, trois points et demi en comptant la perte, était du bruit que la boucle a poursuivi.
Le point important n'est pas que la boucle ait échoué ici. C'est qu'elle a échoué exactement comme elle aurait réussi. Comparez la courbe de validation de cette figure à celle de la simulation précédente, où les propositions portaient un effet réel et où la boucle gagnait vraiment : elles montent de la même façon, par paliers, sans que rien ne signale la différence. Depuis l'intérieur de la boucle, les deux situations sont indiscernables. Seul un jeu gelé les sépare, et il ne se consulte qu'une fois.
Prévoir sans tricher
Cette section décrit un projet qui commence, proposé à deux élèves de troisième année du mastère spécialisé en intelligence artificielle de CentraleSupélec par Marianne Clausel, de l'Université de Lorraine, Georges Oppenheim et moi-même. Il porte sur la prévision de séries financières, et son protocole d'évaluation s'appelle LookForward.
La règle est courte : à chaque origine \(t\), le modèle n'utilise que l'information disponible à cette date, prévoit les \(H\) pas suivants, puis l'origine avance d'un cran. Une prévision évaluée sur des données qu'elle a déjà vues n'est pas une prévision, c'est une interpolation. La difficulté n'est pas dans le modèle, elle est dans le calendrier : un indicateur macroéconomique publié le quinze ne peut pas servir à une prévision faite le dix, même si les deux dates tombent dans le même mois, et une place de marché fermée un jour férié décale tout ce qui suit.
LookForward. Le juge n'est pas un jeu de données tiré au hasard mais une discipline de calendrier : aucune ligne ne lit à droite de son origine.
La finance connaît ce mécanisme sous un autre nom et l'a chiffré : David Bailey, Jonathan Borwein, Marcos López de Prado et Qiji Zhu ont montré qu'avec assez d'essais on obtient un historique simulé flatteur pour n'importe quelle stratégie, y compris dépourvue du moindre pouvoir prédictif16. D'où la forme que prend le protocole ici. La fiche du projet prévoit une boucle Ralph sous budget : elle propose une modification, la teste en validation glissante, puis l'accepte ou la rejette en consignant la raison. Les trois mots comptent. Le budget borne le \(K\) de la section précédente. La raison consignée rend ce \(K\) auditable après coup, alors qu'il est d'ordinaire perdu. Et la validation glissante reste séparée d'un test chronologique final, gelé avec sa politique de mise à jour et ouvert une seule fois, qui donne le chiffre qu'on publiera. Rapportée à la formule, cette séparation est ce qui empêche le facteur douze de passer inaperçu.
Le projet compare des méthodes statistiques classiques, des méthodes d'apprentissage automatique et des modèles de fondation préentraînés pour les séries temporelles, en suivant le protocole de comparaison ouvert TFB13 sur des dates identiques, avec Chronos et TimesFM parmi les candidats14, 15, sans présumer qu'un modèle récent fasse mieux qu'une persistance. Il prévoit enfin une sortie que peu de systèmes de prévision s'autorisent : l'abstention. Le contrôle conforme du risque17 fournit des intervalles dont le taux d'erreur est garanti, sous une hypothèse d'échangeabilité des données que les séries financières, dépendantes et sujettes aux changements de régime, mettent en difficulté. La fiche le dit elle-même et ne revendique aucune garantie universelle prévision par prévision. C'est la même retenue qu'un autre outil de ce blog, elbow-helper, applique aux coudes de courbes : mieux vaut se taire que d'affirmer sans preuve.
Un détail des livrables mérite d'être relevé, parce qu'il est la morale de tout ce qui précède. La fiche demande d'auditer le rendu et la lisibilité des figures selon l'approche Eyeball, et précise : séparément de la validation numérique des prévisions. Deux questions différentes, deux juges différents. Confondre les deux, c'est demander à un score de vous dire si un graphique est lisible, ou à un œil de vous dire si un intervalle couvre.
Les quatre boucles
| Boucle | Ce qu'on rend | Qui juge | Par où le juge se laisse acheter | La garde |
|---|---|---|---|---|
| Code | Le dépôt après un tour | La suite de tests, puis un humain | Les tests deviennent la cible, le code passe sans être juste | Des tests écrits avant, par quelqu'un d'autre |
| Figures | Une image, toujours la même pour une source donnée | Un œil, ou un modèle de vision | On s'habitue à sa propre figure et on cesse de la voir | Le gris, la simulation de daltonisme, un regard neuf |
| Prose | Le texte lu à voix haute | L'oreille, sur une paire de paragraphes | Les coutures disparaissent et le texte s'aplatit | Relire pour le fond après avoir relié la forme |
| Prévision | Des erreurs datées, horizon par horizon | Une validation glissante | La validation s'épuise à mesure qu'on la consulte | Un budget, une raison écrite, un test gelé |
Le même geste sur quatre matières. La quatrième colonne est la même phrase à chaque fois, dite dans quatre langues.
Ce qui fait qu'une boucle tient
Quatre conditions se dégagent, et elles se vérifient avant de lancer quoi que ce soit.
L'état vit hors du modèle, dans les fichiers et l'historique de version, jamais dans une conversation. Le juge est indépendant de celui qui agit, c'est-à-dire que l'œil qui évalue n'est pas la main qui a dessiné, et que le jeu de validation n'est pas le jeu d'entraînement. Un budget borne le nombre de tours, et chaque tour laisse une raison écrite, sans quoi le \(K\) de la formule est perdu et le gain final invérifiable. L'abstention est une sortie légale, au même titre que la réussite : une boucle qui n'a pas le droit de conclure qu'elle n'a rien trouvé trouvera toujours quelque chose.
Reste à dire où le rapprochement avec le « tant que » cesse de tenir, car il finit par céder. Une boucle classique qui ne s'arrête pas se remarque tout de suite : la machine chauffe et rien ne sort. Une boucle Ralph qui ne s'arrête pas produit à chaque tour un travail plausible, une figure un peu différente, un paragraphe un peu remanié, un score un peu meilleur. Elle ne ressemble pas à une panne. Elle ressemble à du progrès, et c'est exactement ce qui la rend dangereuse.
La recette tient en une phrase : rendez ce que vous venez de faire, regardez-le vraiment, corrigez la source et non l'image, comptez vos tours. Les trois premiers gestes coûtent quelques secondes. Le quatrième est celui qu'on oublie, et c'est le seul dont dépend la valeur des trois autres.
Bibliographie
Les références ci-dessous sont celles que cet article mobilise réellement, dans l'ordre où il les appelle. Chaque notice dit ce que la source établit et à quel endroit elle sert ici.
- Huntley, G. (2025). Ralph Wiggum as a « software engineer ». ghuntley.com/ralph La page qui nomme la technique et en donne la ligne de shell. L'auteur y pose aussi les réserves reprises ici : projet neuf seulement, ingénieur expérimenté indispensable, résultat dont la cuisson n'est pas garantie. Le chiffre de coût cité est le sien.
- Harchaoui, W. The Ralph Eyeball Loop, Sprezzature. sprezzature.ai/ralph-eyeball-loop.html Applique la boucle aux artefacts visuels et sépare trois passes complémentaires : fabriquer depuis du code, auditer la source, regarder le rendu. C'est la source des quatre étapes, des huit rubriques de critique et du raisonnement sur le gris comme test le plus sévère.
- Harchaoui, W. ECRITURE.md, charte d'écriture en français. gist.github.com Sa section 10 transpose la boucle à la prose : relecture par paires de paragraphes consécutifs, fenêtres glissantes qui se chevauchent, correction du texte plutôt que de l'impression. C'est la charte que cet article s'applique à lui-même.
- Goodhart, C. A. E. (1975). « Problems of Monetary Management: The U.K. Experience », Papers in Monetary Economics, Reserve Bank of Australia. L'observation d'origine, faite sur les agrégats monétaires britanniques : une régularité statistique cesse de tenir dès qu'on s'en sert comme cible de politique. Elle fonde la section sur la corruption du juge.
- Strathern, M. (1997). « "Improving ratings": audit in the British University system », European Review, 5(3), 305-321. Donne la formulation courte devenue proverbiale, à partir d'une enquête ethnographique sur l'évaluation des universités. La source est citée pour la formulation exacte, non pour une reprise de seconde main.
- Efron, B. et Morris, C. (1977). « Stein's Paradox in Statistics », Scientific American, 236(5), 119-127. Exposé accessible du rétrécissement vers la moyenne : une valeur choisie parce qu'elle était la plus grande surestime ce qu'elle mesure, et la correction dépend du rapport entre bruit et dispersion réelle. C'est la formule encadrée de cet article.
- Ioannidis, J. P. A. (2005). « Why Most Published Research Findings Are False », PLoS Medicine, 2(8), e124. 10.1371/journal.pmed.0020124 Rend quantitative la dépendance entre le nombre d'hypothèses explorées et la probabilité qu'un résultat rapporté soit faux. C'est le même mécanisme que celui simulé ici, appliqué à la littérature scientifique.
- Capen, E. C., Clapp, R. V. et Campbell, W. M. (1971). « Competitive Bidding in High-Risk Situations », Journal of Petroleum Technology, 23(6), 641-653. Origine de l'expression « malédiction du vainqueur », sur les enchères de concessions pétrolières : le gagnant est celui dont l'estimation était la plus haute, donc la plus fausse. Même structure que la sélection sur un jeu de validation.
- Bergstra, J. et Bengio, Y. (2012). « Random Search for Hyper-Parameter Optimization », Journal of Machine Learning Research, 13, 281-305. jmlr.org/papers/v13/bergstra12a Montre qu'à budget égal, tirer les réglages au hasard bat une grille régulière, parce que la performance ne dépend fortement que de quelques réglages et qu'une grille répète ses essais sur les autres. C'est la référence de comparaison de la section sur la sélection de modèle.
- Dwork, C., Feldman, V., Hardt, M., Pitassi, T., Reingold, O. et Roth, A. (2015). « The reusable holdout: Preserving validity in adaptive data analysis », Science, 349(6248), 636-638. 10.1126/science.aaa9375 Établit la différence entre questions posées d'avance et questions qui dépendent des réponses déjà obtenues, et construit un mécanisme qui rend au jeu mis de côté une validité chiffrée sous interrogation adaptative. C'est le cadre théorique de la distinction entre grille et boucle.
- Varoquaux, G. (2018). « Cross-validation failure: Small sample sizes lead to large error bars », NeuroImage, 180, 68-77. 10.1016/j.neuroimage.2017.06.061 Mesure l'incertitude réelle d'une estimation par validation croisée et montre qu'elle dépasse largement ce que suggère la dispersion entre plis, au point de rendre douteuses des comparaisons publiées. C'est la justification de la décomposition mesurée dans cet article.
- probabl (2026). skills, compétences d'agent pour scikit-learn, skrub et skore, licence BSD à trois clauses. github.com/probabl-ai/skills Suite de compétences qui enchaîne exploration, construction, test de fumée, évaluation et audit, avec une boucle extérieure de proposition d'expérience. Elle sert ici d'exemple de boucle Ralph dont le juge et les conditions d'arrêt sont écrits, notamment son arbre de décision sur le choix du découpage.
- Qiu, X. et al. (2024). TFB: Towards Comprehensive and Fair Benchmarking of Time Series Forecasting Methods. arxiv.org/abs/2403.20150 Protocole de comparaison ouvert pour la prévision de séries temporelles, construit pour éviter les comparaisons faussées par des réglages inégaux. C'est le cadre d'évaluation retenu par le projet décrit ici.
- Ansari, A. F. et al. (2024). Chronos: Learning the Language of Time Series. arxiv.org/abs/2403.07815 Modèle de fondation qui traite une série numérique comme une suite de symboles, à la manière d'un modèle de langage. Candidat du comparatif, sans présomption de supériorité.
- Das, A. et al. (2024). A decoder-only foundation model for time-series forecasting. arxiv.org/abs/2310.10688 L'autre famille de modèles préentraînés du comparatif, entraînée sur un vaste corpus de séries pour prévoir sans réapprentissage. Sa taille en fait le test de faisabilité sur processeur du projet.
- Bailey, D. H., Borwein, J. M., López de Prado, M. et Zhu, Q. J. (2014). « Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance », Notices of the American Mathematical Society, 61(5), 458-471. Chiffre le surajustement de rétrotest en finance : avec assez d'essais, on obtient un historique simulé flatteur pour n'importe quelle stratégie, y compris sans aucun pouvoir prédictif. C'est la version financière du mécanisme simulé plus haut, et la raison du test gelé.
- Angelopoulos, A. N., Bates, S., Fisch, A., Lei, L. et Schuster, T. (2022, révisé 2025). Conformal Risk Control. arxiv.org/abs/2208.02814 Étend la prédiction conforme à des notions de risque plus générales que le taux de couverture, avec une garantie valable en moyenne sous hypothèse d'échangeabilité. C'est l'hypothèse que la dépendance des séries financières met en difficulté, comme le reconnaît la fiche du projet.
Pour prolonger, deux lectures plus larges que le sujet de cet article : mes livres préférés en IA pour le panorama commenté, et la galerie de sprezzature pour voir à quoi ressemble un corpus de figures entièrement passé par la boucle.