# CHANGELOG — Révision scientifique complète (editorial board, 2026-10-17) Papier : **WP 13 — VQuant: An Agentic Large Language Model Architecture for Automated Quantitative Financial Analysis and Document Generation** (`finance/vquant-llm-quant-platform`, dépôt `wp13_uqo.git`). État de départ figé : tag `pre-revision-20261017`, PDF `docs/main_pre-revision-20261017.pdf` (28 pages, v1.0, June 2026). État d'arrivée : `paper/main.pdf` (41 pages, v1.1, October 2026). Pas de `main_anon.tex` (papier jamais soumis). Rapport scientifique : `docs/REVIEW-REPORT.md`. Le papier ne contient ni données ni code ; la « réanalyse » possible était l'**audit de la description contre le code réel** de la plateforme. Il a été fait sur un clone en lecture seule de `gitsrv:srv/git/vquant.git` (HEAD `e2a148a`, « adopt: état déployé sur M2U64 … », 2026-10-02 ; commits antérieurs `cfe8ef7` et `9215dce`, 2026-08-05). Script versionné : `docs/verify/audit_vquant_code.py` ; sorties : `docs/verify/code_facts.json`, `docs/verify/tool_families.json` ; table générée : `paper/tables/tools.tex`. Convention : **C** = correction (énoncé démontrablement faux), **A** = ajout/renforcement, **E** = éditorial. --- ## 1. Corrections majeures (où, avant → après, preuve) ### C1 — Le papier se présentait comme rapportant des « résultats » et une « robustesse » sans aucune mesure - **Où** : titres de §5 (« Execution Substrate and Document Generation » dans un fichier `results.tex`) et §6 (« Performance, Reliability, and Security », fichier `robustness.tex`), Table 4 (« Operational characteristics » avec latences « indicatives »), résumé (« principal innovations »), conclusion. - **Avant** : Table 4 donnait « sub-second perceived response », « several seconds », « roughly ten seconds » sans aucune mesure ; §6.1 affirmait que le single-call « removes the dominant source of latency ». - **Après** : §5 renommée « Execution Substrate, Document Generation, and an Illustrative Walk-Through » (walk-through = *demonstration* au sens design science, sans chiffre) ; §6 renommée « Design Rationale, Threats to Validity, and a Proposed Evaluation » ; Table 4 → « Design rationale » (mécanisme, constante réelle, propriété visée, mesure qui la testerait) ; toutes les latences chiffrées retirées ; §6.6 « A proposed evaluation protocol (not executed) » (suite de tâches, métriques dont le *unsupported-number rate*, ablations, baselines, contrôles). Le résumé dit explicitement « The paper reports no empirical evaluation ». - **Preuve** : absence totale de script, de données ou de journal de mesure dans le dépôt du papier et dans `vquant.git` (6 suites de tests unitaires seulement). ### C2 — Comptes d'outils et de bibliothèques - **Avant** : « more than two hundred tools », « over 265 market-data endpoints, wrapped by roughly 230 typed functions », « seventeen scientific libraries », « four web-research services », Table 3 avec des « 40+ », « 8+ ». - **Après** : **245** outils définis par schéma (`toolDefinitions.ts`, noms uniques), **249** fonctions exportées sur **233** chemins d'endpoint distincts (`fmpService.ts`), **29** paquets tentés à l'import par le sandbox (`customPythonExecutor.py` ; la doc de la plateforme dit 17), **3** services web exposés en **14** outils (Firecrawl 7, Tavily 5, Exa 2 ; SerpAPI est intégré côté serveur mais sans définition d'outil). Table 3 régénérée par script avec des comptes exacts par famille (17 familles). - **Preuve** : `docs/verify/code_facts.json`, `docs/verify/tool_families.json`. ### C3 — « Exact tokenizer for billing » / le tokenizer piloterait le déclencheur de contexte - **Avant** (§4.7 et §6.2) : « an exact tokenizer for billing » ; §6.2 : « VQuant estimates token counts locally with a tokenizer before each call, which both drives the context-management trigger … ». - **Après** : le comptage local utilise le paquet npm `gpt-tokenizer` (BPE OpenAI), donc une **approximation** dont le signe d'erreur n'est pas fixé ; il ne couvre que le texte de réponse (pas les tokens de raisonnement) ; le déclencheur de contexte utilise l'heuristique chars/4, pas le tokenizer. Barème de coût unique 3 $/15 $ par million pour **tous** les modèles → le grand livre est faux pour tout modèle au prix différent (limite ajoutée). - **Preuve** : `claudeService.ts` l. 2, 44–47, 112–114, 160–175. ### C4 — Outils numériques « exposés au modèle » - **Avant** (§5.2) : « the platform exposes a small set of pre-built numerical tools … a Monte Carlo path simulator, a closed-form European option pricer, a GARCH(1,1) estimator, and a Value-at-Risk calculator ». - **Après** : seul `calculate_options_price` est dans le catalogue ; les handlers `run_monte_carlo_simulation`, `estimate_garch_volatility`, `calculate_var`, `optimize_portfolio`, `analyze_risk_metrics`, `create_plot` existent dans `routes.ts` (l. 764–1019) mais n'ont **aucune définition d'outil** → injoignables ; le prompt système cite encore `run_monte_carlo_simulation` et `create_volatility_surface` (`systemPrompt.ts` l. 67, 80). §5.2 réécrite ; Appendix C précise que ces routines servent de référence pour le protocole d'évaluation. ### C5 — Couche modèle « Claude only » - **Avant** (§3.5, Table 1) : « model-agnostic within the Claude family », modèles non nommés. - **Après** : chemin de référence Anthropic (défaut `claude-fable-5` ; thinking adaptatif pour fable-5, opus-4-8/4-7/4-6, sonnet-4-6 ; haiku-4-5 sans ; `max_tokens` 64 000 ; température 1) **et** un second adaptateur OpenAI-compatible (OpenAI + Google) limité aux **128 premiers outils** ; appel Beamer épinglé à `claude-opus-4-8`. Identifiants Anthropic vérifiés (liste de modèles du fournisseur) ; identifiants OpenAI/Google reproduits sans audit et signalés comme tels. - **Preuve** : `client/src/lib/models.ts`, `claudeService.ts` l. 18–21, 84–96, `openaiService.ts` l. 14–16, 60–63, `beamerSlidesService.ts` l. 236 ; `git show 9215dce` confirme que le multi-fournisseur existait déjà en août 2026. ### C6 — Authentification, limites, BYOK, schéma de persistance - **Avant** (§6.3, Appendix B) : « local accounts and third-party single sign-on », « daily limits that differ for anonymous and authenticated users », « bring-your-own-keys », entité Users avec « optional encrypted custom API keys », entité « Daily usage ». - **Après** : aucune de ces fonctions n'existe dans **aucun** commit (`shared/schema.ts`, `schema-sqlite.ts`, `auth.ts`, grep `daily|apiKey|oauth|google` vide, y compris sur `9215dce`). Réel : comptes locaux e-mail + mot de passe, code à usage unique par courriel, appareils de confiance, limitation des tentatives, journal de sécurité ; 12 entités persistées. §6.2 et Appendix B réécrites ; retrait explicite des trois affirmations. ### C7 — Contexte : troisième étage manquant et constantes - **Avant** : deux étapes (cap 5 000 chars, puis résumé). - **Après** : **trois** étapes : (1) troncature à l'exécution 3 000 chars (15 000 pour les 14 outils d'extraction et le Python) `routes.ts` l. 1860–1885 ; (2) cap de renvoi 5 000 ; (3) résumé si > 10^5 tokens, 5 derniers messages, entrée ≤ 10 000 chars, `max_tokens` 2 000, température 0,5, repli 500 premiers caractères (`tokenManagement.ts` l. 64–105). Algorithme 2 réécrit avec ces constantes ; Algorithme 1 intègre `PrepareContext`, l'événement `status` par lot et la troncature. ### C8 — Boucle : contenu du tour assistant et absence de borne - **Ajouté** : le message assistant ne contient que les blocs `tool_use` (ni texte ni blocs de raisonnement), la récursion n'a pas de profondeur maximale (`routes.ts` l. 420–495). Signalés comme points de durcissement. ### C9 — Référence Kim–Muhn–Nikolaev (2024) - **Avant** : citée comme preuve que « LLMs can analyze financial statements at a level competitive with human analysts ». - **Après** : l'arXiv 2407.17866 a été **retiré par les auteurs le 2025-02-20** (« inconsistencies in the data and analyses ») ; l'affirmation est retirée du texte, la référence conservée en note de bas de page avec le statut de retrait (SSRN 4835311). Preuve : page arXiv consultée le 2026-10-17. ### C10 — Lopez-Lira & Tang : publié - **Avant** : arXiv 2304.07619 (2023). **Après** : *Journal of Financial Economics* 184 (2026) 104335, DOI 10.1016/j.jfineco.2026.104335 (Crossref). Clé `lopezlira2026chatgpt`. ## 2. Ajouts (A) - **A1** Cadrage design science (Hevner et al. 2004 ; Peffers et al. 2007 ; Gregor & Hevner 2013) : §1 « What kind of paper this is », §2.1, conclusion. - **A2** Paragraphe « Terminology » (agentic, tool use, reasoning-capable) en §1. - **A3** Paragraphe « Audit against the code » en §1 + **Appendix E** : table de 33 énoncés → fichier:lignes → énoncé v1.0 (longtable). - **A4** §2.3 « Evaluating LLM agents » (AgentBench, Reflexion, WebGPT, LLM-as-a-judge, FinanceBench, FinBen, survey Chang et al.) ; §2.2 enrichie (PoT, Mialon, Gorilla, ToolLLM, Lost in the Middle, MCP) ; §2.4 enrichie (Loughran–McDonald, Gentzkow–Kelly–Taddy, Li–Mai–Shen–Yan, Chen–Kelly–Xiu, Hansen–Kazinnik, Li et al. ICAIF, Fatouros et al., Korinek, Dell). - **A5** §5.4 « An illustrative walk-through » (flux de contrôle d'une requête, aucun chiffre). - **A6** §6.4 « Threats to validity » (design vs description), §6.5 « Reproducibility » (température 1 / 0,5, pas de graine, code écrit par le modèle, dépendance CDN KaTeX et TeX local), §6.6 protocole d'évaluation. - **A7** Équations numérotées en Appendix C (GBM, d1/d2, GARCH) ; demi-vie explicitée. - **A8** Figures : compteurs mis à jour (architecture : « 2 providers · 233 endpoints », « 29 packages », « 3 services · 14 tools » ; sandbox : « 29 pkgs »). ## 3. Éditorial (E) - Résumé réécrit (« design-science description », « reports no empirical evaluation ») ; mots-clés et JEL (+O33). - Suppression du vocabulaire promotionnel (« production-grade », « remarkable », « unusually broad », « strategically engineered », « innovations ») ; « agentic financial intelligence » retiré de la conclusion. - Orthographe britannique uniformisée (summarise, visualisation…) ; `\path` pour les chemins de fichiers ; tables en `\footnotesize` avec colonnes `p{}` (0 Overfull > 10 pt ; un Overfull résiduel de 5,8 pt dans l'Appendix B). - Métadonnées : `\WPversion` 1.0 → 1.1, `\WPdate` June 2026 → October 2026 ; page titre canonique inchangée. ## 4. Références Avant : 20 entrées, aucune avec DOI. Après : **46 entrées**, DOI ou identifiant arXiv/SSRN pour toutes celles qui en ont. Vérification le 2026-10-17 : Crossref `api.crossref.org/works?query.bibliographic=` (30 requêtes), API arXiv `export.arxiv.org/api/query?id_list=` (22 identifiants), OpenAlex, pages PMLR / ICLR / TMLR (mlanthology, proceedings.iclr.cc), page docs Anthropic, spécification MCP, registre npm (gpt-tokenizer). | Référence ajoutée | Vérification | |---|---| | Hevner, March, Park, Ram 2004 MISQ 28(1) 75–105 | Crossref 10.2307/25148625 | | Peffers et al. 2007 JMIS 24(3) 45–77 | Crossref 10.2753/MIS0742-1222240302 | | Gregor & Hevner 2013 MISQ 37(2) 337–355 | Crossref 10.25300/MISQ/2013/37.2.01 | | Liu et al. 2024 TACL 12 157–173 (Lost in the Middle) | Crossref 10.1162/tacl_a_00638 | | Ji et al. 2023 ACM CSUR 55(12) | Crossref 10.1145/3571730 | | Chen, Ma, Wang, Cohen 2023 TMLR (Program of Thoughts) | arXiv 2211.12588 + mlanthology TMLR 2023 | | Mialon et al. 2023 TMLR (Augmented LMs survey) | arXiv 2302.07842 + mlanthology TMLR 2023 | | Patil et al. 2024 NeurIPS 37 (Gorilla) | Crossref 10.52202/079017-4020 | | Qin et al. 2024 ICLR (ToolLLM) | arXiv 2307.16789 + proceedings.iclr.cc 2024 | | Liu et al. 2024 ICLR (AgentBench) | arXiv 2308.03688 + proceedings.iclr.cc 2024 | | Shinn et al. 2023 NeurIPS 36 (Reflexion) | Crossref 10.52202/075280-0377 | | Nakano et al. 2021 arXiv (WebGPT) | arXiv 2112.09332 | | Wang et al. 2024 Frontiers of Computer Science 18(6) | Crossref 10.1007/s11704-024-40231-1 | | Anthropic 2026, « Tool use with Claude » (docs) | page consultée (platform.claude.com) | | Model Context Protocol, spécification 2025-06-18 | page consultée (modelcontextprotocol.io) | | Zheng et al. 2023 NeurIPS 36 (LLM-as-a-judge) | Crossref 10.52202/075280-2020 | | Chang et al. 2024 ACM TIST 15(3) | Crossref 10.1145/3641289 | | Islam et al. 2023 arXiv (FinanceBench) | arXiv 2311.11944 | | Xie et al. 2024 NeurIPS 37 (FinBen) | OpenAlex / Crossref 10.52202/079017-3033 | | Loughran & McDonald 2016 JAR 54(4) 1187–1230 | Crossref 10.1111/1475-679X.12123 | | Gentzkow, Kelly, Taddy 2019 JEL 57(3) 535–574 | Crossref 10.1257/jel.20181020 | | Li, Mai, Shen, Yan 2021 RFS 34(7) 3265–3315 | Crossref 10.1093/rfs/hhaa079 | | Li, Wang, Ding, Chen 2023 ICAIF 374–382 | Crossref 10.1145/3604237.3626869 | | Chen, Kelly, Xiu 2023 (working paper) | titre/auteurs confirmés par la présentation Wharton Jacobs Levy (sept. 2024) et listes de séminaires ; page SSRN inaccessible (403) → pas de numéro SSRN cité | | Hansen & Kazinnik 2023 SSRN 4399406 | Crossref 10.2139/ssrn.4399406 | | Fatouros et al. 2025 Neural Computing and Applications 37(30) 24893–24918 | Crossref 10.1007/s00521-024-10613-4 (print 2025-10) | | Korinek 2023 JEL 61(4) 1281–1317 | Crossref 10.1257/jel.20231736 | | Dell 2025 JEL 63(1) 5–58 | Crossref 10.1257/jel.20241733 | Références existantes corrigées : Vaswani (pages 5998–6008), Wei (DOI), Toolformer (pages 68539–68551, DOI), PAL (PMLR 202), Lopez-Lira & Tang (JFE 2026, C10), Kim et al. (statut retiré, C9), Black–Scholes, Merton, Engle, Bollerslev, Glasserman (DOI ajoutés), Anthropic doc (titre/URL actuels). Aucune référence retirée ; aucune non vérifiée. ## 5. Réanalyses exécutées | Analyse | Script / commande | Durée | Sortie | |---|---|---|---| | Audit du code (comptes, constantes, handlers injoignables, familles d'outils) | `docs/verify/audit_vquant_code.py /tmp/vquant` | < 5 s | `code_facts.json`, `tool_families.json`, `paper/tables/tools.tex` | | Vérification de l'historique git de `vquant.git` (3 commits ; multi-fournisseur et EODHD présents dès `9215dce`) | `git log`, `git show 9215dce --stat`, `git show 9215dce:client/src/lib/models.ts` | — | consigné ici | ## 6. Non modifié / non exécuté (faute de données ou hors périmètre) - **Protocole d'évaluation de §6.6** : non exécuté (nécessite des clés API, un instantané de données figé, deux évaluateurs humains). Décrit comme pré-enregistrement. - **Corrections du code** (borne de récursion, barème de prix par modèle, réintégration des outils numériques dans le catalogue, cohérence prompt/catalogue, conteneurisation du sandbox) : relèvent de `vquant.git` (remote-first, nœud M2U64), **non faites** dans le cadre de la révision du papier ; listées en §7 et en conclusion. - Identifiants de modèles OpenAI/Google du sélecteur : non audités (hors connaissance vérifiable), signalés comme tels. - Pas de version anonyme (`main_anon.tex`) : le papier n'a jamais été soumis ; à créer avant soumission selon `HARMONISATION.md` §7.