REVIEW REPORT — editorial board (volatilité réalisée, prévision, économétrie financière, ML), 2026-10-17
Papier : WP 12 — Forecasting Realized Volatility Across Asset Classes: HAR, GARCH, and Machine Learning in a Unified
Multi-Asset Horse Race, 2013–2026 (Simon-Pierre Boucher). Version reçue : 0.1 (brouillon, 9 p., août 2026) — introduction,
résultats, robustesse, valeur économique, conclusion et résumé absents ; pipeline jamais exécuté au-delà des prévisions brutes.
Version rendue : 0.2 (octobre 2026) — pipeline exécuté (version complète pour l'économétrie, le pooled, l'évaluation, la robustesse
légère et la valeur économique ; prévisions ML/deep de l'auteur réutilisées), sections rédigées à partir des sorties réelles.
Journal d'audit : docs/CHANGELOG-REVISION.md. Revues cibles : IJF, J. Econometrics, JFEC, JBF, JEF, Quantitative Finance.
1. Diagnostic par section (v0.1)
Résumé / introduction
- Faiblesse majeure :
\WPabstractprovisoire (« TO BE WRITTEN… ») etintroduction.texvide, contrairement au README (« introduction … written »). - Corrigé : introduction rédigée (motivation, désaccord Christensen et al. 2023 / Zhang et al. 2024 vs Branco et al. 2024, design, aperçu
des résultats produit à partir de
results/reproduced/, contributions, plan) ; résumé de 150 mots écrit à partir des chiffres de la v0.2.
Revue de littérature
- Forces : couverture solide des mesures réalisées (ABDL, BNS, BNHLS, LPS 2015), de HAR et ses extensions, de l'évaluation (Patton 2011, HLN 2011).
- Faiblesses : (i) aucune évidence contradictoire sur ML vs HAR ; (ii) « five HAR variants » alors que six spécifications sont estimées ; (iii) rien sur la qualité des données crypto ni sur la transférabilité en volatilité (Zhang et al. 2024) ; (iv) le DM est cité sans justifier son usage en fenêtre roulante (GW 2006 vs West 1996) ; (v) Rahimikia-Poon 2020 codé comme un article de revue.
- Corrigé : 16 références ajoutées et intégrées à l'argument (pas de « citation dump »), toutes vérifiées (DOI dans le .bib).
Données
- Forces : univers large et liquide, 93,8 M de barres, mesures multiples (RV 1-min, RV 5-min sous-échantillonné, noyau réalisé, BV, TQ, RQ, semivariances), statistiques descriptives réelles (vérifiées : moyennes de vol. 7,9 / 15,9 / 16,8 / 108 %, médiane crypto 68,9 %, jours de sauts 3,7 → 14,8 %).
- Erreurs trouvées : (i) « crypto day = calendar day in UTC » est faux — le client API ne convertit aucun fuseau (
api_client.py), tous les horodatages sont en heure de l'Est ; (ii) « AC(1) 0,70–0,82 » → recalcul : 0,70 (FX), 0,74 (equity), 0,77 (futures), 0,86 (crypto) ; (iii) README « five classes » vs papier « four » ; (iv)config.yaml → min_intraday_bars: 30n'est pas lu par le code (seuils réels 250/700). - Problème de données non résolu : jours de RV implausible dans les flux crypto (BTC 2013-04-10 : 2 530 % annualisé ; XRP 2017-12-13 : 1 996 % ; ADA/XRP 22-23 fév. 2021 : 1 400–1 800 % ; 962 jours-actifs crypto > 300 %, dont la plupart avant 2018). Aucun nettoyage des ticks n'est appliqué. Le papier le reconnaît désormais explicitement et une analyse de sensibilité (exclusion des jours > 500 %) est ajoutée (§3 ci-dessous).
- 2 jours ADA avec RV = 0 (prix plats) : neutralisés par
clip(lower=1e-12)dans les features, sans effet visible.
Méthodologie — verdict point par point (§3 du master prompt)
| Point | Verdict | Détail |
|---|---|---|
| Spécification justifiée | Oui | HAR/HARQ/SHAR/HAR-CJ/log-HAR, GARCH/GJR/EGARCH, Realized GARCH, 12 apprenants tabulaires, LSTM, Transformer, pooled, 2 combinaisons ; couverture au-dessus du standard du domaine. |
| Hypothèses d'estimation explicites | Oui après révision | QML gaussienne, fenêtre 1 000 j / ré-estimation 22 j, projection directe, filtre d'insanité, re-transformation (lognormale pour log-HAR, Duan pour ML) : tout est maintenant écrit en équations. |
| Variables correctement définies | Oui après révision | Cible eq:target ; 15 (et non 14) prédicteurs étendus ; TQ, RQ, RS± sur grille 5-min (offset 0) — précisé ; note : RS⁺+RS⁻ = RV 5-min simple ≠ RV^ss (vérifié : égalité exacte), ce qui est documenté. |
| Dépendance temporelle | Oui | DM à bande de Bartlett h−1 ; MCS par bootstrap stationnaire (bloc moyen 10) ; GR fluctuation ; MZ et encompassing HAC. |
| Erreurs-types | Oui | HAC partout ; inférence par actif puis synthèse cross-section (parts d'actifs). |
| Construction de l'échantillon transparente | Oui après révision | Échantillon d'évaluation commun par (actif, horizon) — v0.1 comparait des pertes sur des dates différentes. |
| Robustesse adressant de vraies menaces | Partiel | Sous-périodes, mesure de RV, outliers crypto, transférabilité, stabilité GR : faits. Fenêtre d'estimation : non exécutée (temps). |
| Interprétation des coefficients | Oui | Ratios QLIKE, parts d'actifs significatifs, parts MCS, β de MZ, b₂ d'encompassing, Sharpe, Δ d'utilité en pb : chacun est défini. |
| Significativité statistique vs économique | Oui | Sections 5 (statistique) et 7 (économique) séparées ; les gains d'utilité et la VaR sont rapportés même lorsque les pertes sont indistinguables. |
| Langage causal | Non applicable | Aucune affirmation causale ; les mécanismes (bruit de mesure, pooling, régimes) sont présentés comme des interprétations plausibles. |
Erreurs de code démontrables corrigées avant exécution (détail dans le CHANGELOG, C1–C4) : (1) prévisions GARCH figées 22 jours et décalées d'un jour — aurait pénalisé la famille GARCH d'une manière artefactuelle ; (2) filtre Realized GARCH décalé d'un jour ; (3) studentisation du T_max du MCS incohérente avec HLN 2011 ; (4) absence d'échantillon commun. Les tests unitaires (18) restent verts.
Vérifications d'équations : eq:rk, eq:bv, eq:bns (θ = π²/4 + π − 5), TQ (μ_{4/3}), eq:cj, eq:semivar, RQ = (n/3)Σr⁴, HARQ (RV·RQ^{1/2}),
QLIKE, DM/NW, récursion multi-pas du Realized GARCH (π = β + γφ, σ²_η = τ₁² + 2τ₂² + σ_u²), Duan, utilité FKO, LR de Kupiec et
Christoffersen : toutes conformes au code (realized_vol.py, models_econ.py, evaluation.py, backtest.py).
2. Littérature — références vérifiées / ajoutées / retirées
Voir CHANGELOG §4 et docs/bib-verification.csv : 57 entrées vérifiées (DOI de revue ajouté sur 53), 16 ajoutées (DOI), 0 retirée.
Quatre entrées n'ont pas de DOI parce qu'il n'en existe pas (chapitre NBER 1969, trois actes NeurIPS).
3. Résultats empiriques (v0.2) — ce qui a été produit et comment le lire
- Échantillon commun : 59 323 jours-actifs à h=1 (59 201 à h=5, 58 776 à h=22), 27 prévisions chacun ; début déc. 2016 (FX, futures), janv.–févr. 2017 (actions/ETF), sept. 2019 (ETH), févr. 2020 (XRP), nov. 2021 (ADA), févr. 2024 (SOL, 894 j) ; fin 29 juill. 2026.
- Classement (ratio QLIKE à HAR, h=1/5/22, moyenne des moyennes par actif —
losses_overall.csv) : Ridge-X 0,70/0,61/0,79 ; ElasticNet-X 0,70/0,61/0,79 ; LASSO-X 0,71/0,61/0,80 ; Comb-InvMSE 0,72/0,61/0,77 ; LogHAR 0,75/0,63/0,79 ; Ridge-H 0,75/0,63/0,80 ; Pooled-LGBM 0,77/0,70/0,95 ; RealGARCH 0,78/0,66/0,88 ; RF-X 0,79/0,72/0,95 ; XGBoost-X 0,80/0,80/1,12 ; LightGBM-X 0,85/0,85/1,16 ; HAR-J/CJ 0,94/0,88/1,01–1,06 ; SHAR 0,99/0,97/1,00 ; GARCH 1,32/1,12/1,18 ; LSTM 1,33/1,05/1,05 ; EGARCH 1,57/1,24/1,23 ; Transformer 1,89/1,48/1,46 ; HARQ 2,01/1,72/1,68. - Lecture principale : l'essentiel du « gain ML » est le passage au log (LogHAR = Ridge-H ≈ 0,75) ; l'ensemble étendu ajoute ≈ 5 points aux horizons courts ; arbres et réseaux < modèles linéaires partout et < HAR à un mois ; pooling sauve les arbres (bat LightGBM-X sur 23/25) sans dépasser LogHAR (9/25). Realized GARCH > GARCH(1,1) sur 25/25.
- Inférence : DM h=1 — Ridge-X/ElasticNet-X/Comb-InvMSE significativement meilleurs que HAR sur 24/25 actifs, pires sur 0 ; LogHAR 21 ; RealGARCH 17 ; Pooled 15 ; LightGBM-X 4 mieux / 8 pire ; GARCH et LSTM pires sur 20. MCS 90 % h=1 : 25/25 pour Comb-InvMSE, ElasticNet-X, LASSO-X, LogHAR, Pooled, RF-X, Ridge-X ; HAR 19 ; GARCH 6, LSTM/Transformer 5. MZ h=1 : Ridge-X pente 1,09, R² 0,46, rejet 20 % ; arbres/deep rejet > 90 %, R² 0,03–0,31. Encompassing : ElasticNet-X ajoute de l'information sur 88 % des actifs, Ridge-X 84 %.
- Par classe (Ridge-X h=1) : crypto 0,62, equity 0,72, futures 0,78, FX 0,85 ; LightGBM-X 0,67/0,95/1,03/1,02 ; GARCH 1,60/1,07/1,17/1,24.
- Robustesse : sous-périodes (jours-actifs poolés) — Ridge-X 0,51 (pré-2020), 0,47 (2020), 0,78 (2021-22), 0,88 (2024-26) ; LightGBM-X 0,65 → 1,00 ; Pooled 0,61/0,48/0,87/0,93. GR (LightGBM-X vs HAR) : ETH sous la borne 52 % du temps, NVDA/GC au-dessus 8/14 %, GBPUSD jamais. Transférabilité h=1 : LOO ETH 0,481 (vs 0,260 en pool, HAR 0,317), NVDA 0,272 (0,157 ; 0,155), GBPUSD 0,123 (0,119 ; 0,128), GC 0,154 (0,130 ; 0,131). Mesure (run auteur) : LogHAR/HAR 0,43 (1-min), 0,72 (5-min ss), 0,86 (noyau). Outliers crypto : classement inchangé, Ridge-X 0,55 → 0,49.
- Valeur économique : Sharpe net 5 pb (moyenne 25 actifs) LSTM 0,38, GARCH 0,35, HAR 0,34, Comb-InvMSE 0,33, Ridge-X 0,30, Pooled 0,29, LightGBM-X 0,26 ; à 0 pb tous 0,385–0,408 (Pooled 0,41) ; gain d'utilité vs HAR (γ=5) LSTM +33 pb, GARCH +17, Ridge-X −47, Pooled −69, LightGBM-X −121 (turnover 0,013 / 0,033 / 0,085 / 0,105 / 0,118 vs HAR 0,054). VaR 5 % : tous calibrés (Ridge-X Kupiec/CC 96/96 %) ; VaR 1 % : violations 1,6–2,2 %, échec général (queue gaussienne).
- SHAP (pooled h=1) : lrv_w 0,73, lrv_d 0,33, lrv_m 0,32, puis jour de semaine 0,09, moyennes de classe 0,05–0,07, RS⁻ et RQ 0,06.
- Figures : 9 PNG régénérés (
scripts/07), tables : 12 fragments (scripts/08) ; PDF 50 p., 0 erreur, 0 référence/citation indéfinie, overfull max 7,8 pt (texte) / 6,1 pt (table).
4. Incohérences trouvées entre texte et chiffres (v0.1)
- AC(1) crypto 0,86 hors de l'intervalle annoncé 0,70–0,82 ; « fourteen » prédicteurs → quinze ; « five HAR variants » → six ; « UTC » → heure de l'Est ; « roughly 94 million » → 93,8 millions (exact) ; README « five classes » → quatre ; README badge « 9 p., draft » → mis à jour.
5. Limites restantes
- Données crypto non nettoyées (jours > 1 000 % annualisé) : traité par analyse de sensibilité, pas par nettoyage ; niveau de toutes les pertes crypto affecté.
- HARQ instable avec RQ sur 78–288 rendements 5-min (prévisions effondrées, QLIKE max 272 sur SPY) : le filtre d'insanité ne suffit pas ; résultat à ne pas lire comme une réfutation de BPQ 2016.
- Prévisions ML tabulaires et deep réutilisées (run auteur du 10 août, code inchangé) ; borne positive du filtre (C11) non appliquée à ces runs (sans conséquence hors ADA/HARQ).
- Deep learners : ré-estimation trimestrielle, un actif à la fois, 1 000 jours — leur contre-performance est propre à ce design.
- Sous-périodes et sensibilité à la mesure poolent les jours-actifs (poids crypto plus élevé) ; les tables principales moyennent par actif.
- Timing : cible de vol sur variance intradaire (stratégies au-dessus de la cible, près du cap sur FX) ; un seul barème de coûts ; Sharpe crypto/FX ≈ 0 pour tous les modèles → moyenne tirée par actions/futures.
- MCS à 27 modèles : faible puissance (HARQ retenu sur 21 actifs malgré sa perte moyenne).
- Jour crypto en heure de l'Est (et non UTC) : convention du fournisseur, documentée.
- Pas de version anonyme, pas de soumission SSRN (demande de l'auteur).
6. Analyses recommandées non exécutées
| Analyse | Pourquoi non exécutée | Commande / durée estimée (Mac M5 Max 18 c ; ou ssh M3U96a 32 c) |
|---|---|---|
| Sensibilité à la fenêtre (500/1 000/2 000 j) pour HAR, LogHAR, LightGBM-X | ≈ 20 min sur 16 cœurs, hors budget | python3 scripts/05_robustness.py --part window --workers 16 (~20 min) ; 08_make_tables.py ajoute automatiquement le bloc |
| Ré-exécution de la sensibilité à la mesure après C10-C11 | code HAR/LightGBM inchangé → résultat identique attendu | python3 scripts/05_robustness.py --part freq --workers 16 (~20 min) |
| Ré-exécution des 12 apprenants tabulaires + LSTM/Transformer avec la borne positive C11 | ≈ 2 h 20 ; effet limité à ADA | python3 scripts/03_run_models.py --family ml --workers 16 (~2 h) ; --family deep --workers 8 (~20 min) |
| Deep learners poolés (LSTM/Transformer entraînés sur le panel) | non implémenté | nouvelle fonction dans models_ml.py ; ~1 h |
Nettoyage des ticks crypto (Brownlees-Gallo 2006) puis 02_build_rv.py + pipeline complet |
non implémenté | ~30 min de code + 3 h de pipeline |
| HARQ avec quarticité robuste (TQ) et filtre plus strict ; HARQ-F, SHARQ | non implémenté | models_econ.py ; econ 3 min |
| Cible close-to-close (RV + overnight) pour le timing ; coûts par classe ; VaR Student-t / FHS | non implémenté | backtest.py, 06 ; < 10 min |
| Intervalles de confiance bootstrap sur les ratios QLIKE agrégés ; DM poolés (panel) | non implémenté | 04 ; < 10 min |
| Test de sauts par seuil (Corsi-Pirino-Renò 2010) | non implémenté | realized_vol.py + 02 (~15 min) |
7. Maturité pour publication
Verdict : brouillon avancé (0.2), résultats complets et traçables, pas encore soumissible. Pour une revue de rang IJF / JFEC / JBF / Journal of Empirical Finance, il manque : (i) le nettoyage des données crypto ou une restriction du panel crypto post-2018 ; (ii) une explication/réparation de HARQ (un arbitre spécialiste de BPQ 2016 s'y arrêtera) ; (iii) la sensibilité à la fenêtre ; (iv) des deep learners poolés ou le retrait de ces modèles ; (v) un exercice de timing avec cible close-to-close et coûts par classe ; (vi) une lecture plus prudente des sous-périodes (composition du panel). Les résultats principaux — domination des modèles log-linéaires, gradient par classe, transférabilité limitée, divergence accuracy/valeur économique — sont solides (DM 24/25, MCS 25/25, robustes aux outliers et à la mesure) et constituent une contribution publiable une fois ces points traités. Risques de rejet : « rien de nouveau » (LogHAR connu) si la contribution n'est pas cadrée comme un résultat sur l'origine des gains ML ; qualité des données crypto ; HARQ. Revue la plus réceptive : International Journal of Forecasting (horse race multi-classes, valeur économique) ; alternative : Journal of Empirical Finance (dialogue direct avec Branco et al. 2024).