CHANGELOG — Révision scientifique complète (editorial board, 2026-10-17)
Papier : WP 7 — The Options-Implied Information Content for Cross-Asset Return and Volatility
Prediction (finance/options-implied-cross-asset, dépôt wp7_uqo.git).
État de départ figé : tag pre-revision-20261017, PDF docs/main_pre-revision-20261017.pdf (29 pages, v1.1).
État d'arrivée : paper/main.pdf (53 pages, v1.2, October 2026), paper/main_anon.pdf.
Rapport scientifique : docs/REVIEW-REPORT.md. Les CSV de résultats remplacés sont conservés dans
results/_pre-revision-20261017/ (41 fichiers, copie exacte du tag).
Convention : C = correction (erreur démontrée), A = ajout/renforcement, E = éditorial.
1. Corrections majeures (avant → après, preuve)
C1 — Cibles multi-jours mal alignées (erreur de code, affecte toute la partie « weekly » du papier)
- Où :
scripts/01_extract_data.py::compute_weekly_rv(et06_rq5_ml_rv_forecast.pypour SPX).ret_5d = daily_return.shift(-1).rolling(5).sum(): la fenêtrerollingest rétrospective, doncret_5d(t) = r_{t-3} + r_{t-2} + r_{t-1} + r_t + r_{t+1}— quatre termes passés/contemporains sur cinq. Idem pourrv_fwd_5detrv_fwd_22d(RQ5). - Preuve :
data/processed/realized_vol.parquet— 100 % des valeurs deret_5dcoïncident avec la définition fautive, 0,005 % avec la vraie somme forward ; corr(ret_5d,daily_return_t) = 0,42 (contrôle exécuté le 2026-10-17, voir REVIEW-REPORT §4.1).ret_1detrv_fwd_1détaient corrects. - Correction :
src/wp7/data_io.py::forward_sum/fix_forward_targets(somme strictement forwardsum_{j=1..5} x_{t+j}, 5 observations exigées) appliquée par défaut dansload_merged(); colonnesret_5d_legacy,rv_fwd_5d_legacyconservées ;WP7_LEGACY_TARGETS=1reproduit v1.1. Parquets livrés inchangés. - Conséquences chiffrées (v1.1 → v1.2) :
| Résultat | v1.1 | v1.2 |
|---|---|---|
| R² rendement 5 j, actions / ETF / indices / tous | 4,76 % / 12,4 % / 19,3 % / 5,29 % | 0,29 % / 0,61 % / 1,01 % / 0,31 % |
| Tri quintile kurtosis implicite, L/S 5 j | +44,0 %/an, Sharpe 2,33, t = 19,84 | −6,1 %/an, Sharpe −0,33, t_NW = −1,66 |
| Tri PC volume ratio | −30,3 %, Sharpe −2,48, t = −21,8 | +5,1 %, Sharpe 0,42, t_NW = 2,64 |
| Tri skew 25δ | −37,5 %, Sharpe −1,87 | +5,9 %, Sharpe 0,31, t_NW = 1,54 |
| Double tri IV × skew, cellule High IV/High skew | −47,8 bps/sem. (t = −6,17) | +34,0 bps (t = 2,59) ; différences H−L skew non significatives |
| R² HAR-RV, cible RV 5 j | 0,888 | 0,421 (échantillon commun) |
| R² HAR+IV, cible RV 5 j | 0,896 | 0,515 |
| RQ5 R²_OOS HAR-RV 5 j / 22 j | 0,948 / 0,994 | retirés (non recalculables, données brutes absentes) |
| Sous-périodes, R² 5 j | 3,1 %–14,4 % | 0,13 %–4,2 % |
| Régimes VIX, R² 5 j | 2,7 %–19,8 % | 0,11 %–3,0 % |
| Leave-one-year-out, R² 5 j | [4,7 %, 5,7 %] | [0,26 %, 0,53 %] |
| Placebo | 0,0008 vs 0,0529 | 0,0004 vs 0,0031 |
| IC Spearman 5 j kurtosis / PC vol | +0,098 (t 16,8) / −0,059 (t −13,8) | −0,019 (t −3,2) / +0,016 (t 3,9) |
| Winsorisation : t kurtosis sans winsorisation | 13,8 | −0,47 |
| Robustesse SE 5 j : # prédicteurs sig. HC1 / NW(5) / DC | 10 / 9 / 8 | 7 / 4 / 1 |
C2 — Inférence des tris et doubles tris
- Où :
src/wp7/portfolio.py. v1.1 : t = moyenne/(σ/√N) sur la série quotidienne de rendements 5 j chevauchants ; double tri : t calculé en empilant tous les titre-jours d'une cellule (ignore la dépendance transversale et le chevauchement). - Après : t Newey–West (h−1 = 4 retards) sur la série de portefeuille ; cellules du double tri = portefeuilles
quotidiens, t NW sur la série, différences H−L sur séries de différences. L'ancien t est conservé (
t_statistic_iid). Facteur d'inflation mesuré : 1,4–1,8.
C3 — Analyse de coûts de transaction
- v1.1 : coûts appliqués au seul tri sur l'implied skewness avec un turnover supposé de 2/5 par jour.
- v1.2 : implémentation calendar-time (Jegadeesh–Titman) de chaque stratégie (h = 1 et 5) : série
quotidienne non chevauchante, turnover mesuré Σ|W_t − W_{t−1}|, coût de rentabilité nul, Sharpe net à
5/10/25/50 bps (
portfolio.calendar_time_long_short,results/calendar_time_strategies.csv,transaction_cost_analysis.csv, Table 8). Seule la stratégie IV ATM garde un Sharpe net positif à 10 bps (0,34, t brut 2,19).
C4 — Comparaison de modèles RQ2 sur des échantillons différents + colinéarité exacte
- v1.1 : HAR-RV R² = 0,359 sur 264 345 obs. vs HAR+IV R² = 0,442 sur 119 093 obs. (« +23,3 % ») ;
« IV only » contenait
iv_atm_30d,iv_atm_90detiv_term_slope = iv_atm_90d − iv_atm_30d(dépendance linéaire exacte) → prévisions OOS explosives (R²_OOS médian −539, QLIKE 73 606 dansrq2_oos_results.csvv1.1, jamais rapportées) ; composante journalière HAR = RV_{t−1} au lieu de RV_t ; plancher QLIKE à 1e-10. - v1.2 : échantillon commun (119 093), RV_t comme composante journalière (éq. HAR du papier), blocs IV sans la pente, prévisions plancher = 1er centile de la cible d'entraînement, DM avec variance NW(h) pour les 30 titres (et non 4 titres choisis parmi 10). Résultat : HAR 0,415 → 0,457 (+9,9 %) à 1 j ; 0,421 → 0,515 (+22,3 %) à 5 j ; OOS : MSE ratio médian 0,967, DM > 1,96 pour 14/30, < −1,96 pour 0 ; QLIKE ratio 1,17, pire pour 15/30.
- Omission réparée : v1.1 citait AAPL, AMD, CAT, COST (DM positifs) et taisait BA (−39 %, DM −6,4) et CSCO (−34 %, DM −3,8).
C5 — RQ3 : design singulier
- v1.1 régressait sur
corr_divergence,corr_ratio,implied_corr,realized_corrensemble ;corr_divergence = implied_corr − realized_corr⇒ X'X singulier, t « 0,00 » de la divergence = artefact (déjà signalé dans AUDIT.md §7). Erreurs-types HC1 sur un indicateur forward chevauchant. - v1.2 : trois spécifications séparées (ratio ; divergence ; composantes) + VIX + IV SPX, NW(h). Ratio : t = 3,27/4,13/2,33 (v1.1 : 4,07/8,30/3,91) ; divergence : 2,14/1,89/1,38. Période explicitée : fév. 2016–déc. 2025 (la corrélation réalisée n'existe qu'à partir de 2016-02-02 ; N = 2 486).
C6 — FEVD non orthogonalisée
- v1.1 : « parts » calculées à partir des IRF réduites à chocs unitaires (sans Σ) : 73,8 % à 20 j.
- v1.2 :
econometrics.orthogonalized_irf_fevd(Cholesky, deux ordres). Part de la variance de RV due aux chocs IV à 20 j : 20,2 % (RV d'abord) / 28,5 % (IV d'abord) ; corrélation résiduelle moyenne 0,20 ; part de IV due à RV < 6 %.
C7 — Bibliographie
ni2009does(« Does option trading convey stock price information?, JF 60(3) 2009 ») : titre, revue, volume, pages erronés → remplacé par Ni, Pearson & Poteshman (2005), JFE 78(1), 49–87, DOI 10.1016/j.jfineco.2004.08.005.barbon2022option(« JFE 143(1) 316–348 ») : aucune publication trouvée (Crossref) → @unpublished SSRN 3725454.- DOI ajoutés aux 45 entrées existantes ; titres complétés (Blair et al. 2001, Busch et al. 2011, Driessen et al. 2009, Easley et al. 1998, Patton & Sheppard 2015).
C8 — Chiffres du texte non reproductibles (signalés dans AUDIT/CHANGES v1.1, désormais régénérés)
- Colonne HC1 de l'ancienne Table « robust_se » (kurtosis 25,87) et distribution R² par titre (5,9 % / 4,7 %)
ne correspondaient à aucun CSV → toutes les tables sont désormais générées par
scripts/14_make_paper_tables.py.
2. Éditorial et structure (E)
- Toutes les tables du papier (27 fragments
paper/tables/*.tex) sont générées depuisresults/; plus aucun nombre tapé à la main (sauf la table d'inventaire des données brutes, figée). - Introduction réécrite (contribution, résultats, paragraphe « Relation to the previous version ») ; revue de littérature restructurée (5 sous-sections, 52 références ajoutées, discussion des résultats contradictoires) ; données (univers fixe, biais de survie, proxys ≠ moments BKM, équation des cibles + note de bas de page sur l'erreur) ; méthodologie (équations FM, calendar-time, pertes MSE/QLIKE, DM, corrélation implicite dérivée, VAR/FEVD) ; résultats, robustesse, discussion, conclusion réécrits sur les nouveaux chiffres ; appendice (univers, crises, DM par titre, features SPX, importance RF).
- Résumé, mots-clés,
\WPversion1.2,\WPdateOctober 2026 ;main_anon.texrégénéré. - Vocabulaire : « GARCH proxy » → « ARCH-type benchmark » ; « implied skewness/kurtosis » qualifiés de proxys.
3. Références ajoutées (52, toutes vérifiées Crossref — docs/verify/crossref/*.json|log)
Bakshi–Kapadia–Madan 2003 (10.1093/rfs/16.1.0101) ; Bakshi–Madan 2000 (10.1016/S0304-405X(99)00050-1) ;
Britten-Jones–Neuberger 2000 (10.1111/0022-1082.00228) ; Jiang–Tian 2005 (10.1093/rfs/hhi027) ;
Dennis–Mayhew 2002 (10.2307/3594989) ; Bali–Hovakimian 2009 (10.1287/mnsc.1090.1063) ; Rehman–Vilkov 2012 (SSRN 1301648) ;
Conrad–Dittmar–Ghysels 2013 (10.1111/j.1540-6261.2012.01795.x) ; Bali–Murray 2013 (10.1017/S0022109013000410) ;
Mixon 2007 (10.1016/j.jempfin.2006.06.003) ; Vasquez 2017 (10.1017/S002210901700076X) ; Borochin–Chang–Wu 2020
(10.1016/j.jempfin.2020.06.003) ; Martin 2017 (10.1093/qje/qjw034) ; Martin–Wagner 2019 (10.1111/jofi.12778) ;
Christoffersen–Jacobs–Chang 2013 (10.1016/B978-0-444-53683-9.00010-4) ; Chakravarty–Gulen–Mayhew 2004
(10.1111/j.1540-6261.2004.00661.x) ; Muravyev–Pearson–Broussard 2013 (10.1016/j.jfineco.2012.09.003) ;
Muravyev–Pearson–Pollet 2025 (10.1016/j.jfineco.2025.104153) ; Ni–Pan–Poteshman 2008 (10.1111/j.1540-6261.2008.01352.x) ;
Ni–Pearson–Poteshman–White 2021 (10.1093/rfs/hhaa082) ; Golez–Jackwerth 2012 (10.1016/j.jfineco.2012.06.010) ;
Baltussen–Da–Lammers–Martens 2021 (10.1016/j.jfineco.2021.04.029) ; Andersen–Bollerslev 1998 (10.2307/2527343) ;
Andersen–Bollerslev–Diebold–Ebens 2001 (10.1016/S0304-405X(01)00055-1) ; Liu–Patton–Sheppard 2015
(10.1016/j.jeconom.2015.02.008) ; Taylor–Yadav–Zhang 2010 (10.1016/j.jbankfin.2009.09.015) ; Prokopczuk–Wese Simen 2014
(10.1016/j.jbankfin.2013.12.002) ; Kourtis–Markellos–Symeonidis 2016 (10.1002/fut.21792) ; Bollerslev–Patton–Quaedvlieg 2016
(10.1016/j.jeconom.2015.10.007) ; Bollerslev 1986 (10.1016/0304-4076(86)90063-1) ; Hansen–Lunde 2005 (10.1002/jae.800) ;
Patton 2011 (10.1016/j.jeconom.2010.03.034) ; Giacomini–White 2006 (10.1111/j.1468-0262.2006.00718.x) ; Clark–West 2007
(10.1016/j.jeconom.2006.05.023) ; Hansen–Lunde–Nason 2011 (10.3982/ECTA5771) ; Poon–Granger 2003 (10.1257/jel.41.2.478) ;
Skintzi–Refenes 2005 (10.1002/fut.20137) ; Pollet–Wilson 2010 (10.1016/j.jfineco.2010.02.011) ; Buraschi–Trojani–Vedolin 2014
(10.1111/jofi.12095) ; Faria–Kosowski–Wang 2022 (10.1016/j.jbankfin.2021.106399) ; Bollerslev–Todorov 2011
(10.1111/j.1540-6261.2011.01695.x) ; Granger 1969 (10.2307/1912791) ; Sims 1980 (10.2307/1912017) ; Kilian–Lütkepohl 2017
(10.1017/9781108164818) ; Hansen–Hodrick 1980 (10.1086/260910) ; Jegadeesh–Titman 1993 (10.1111/j.1540-6261.1993.tb04702.x) ;
Lo 2002 (10.2469/faj.v58.n4.2453) ; Novy-Marx–Velikov 2016 (10.1093/rfs/hhv063) ; Hou–Xue–Zhang 2020 (10.1093/rfs/hhy131) ;
McLean–Pontiff 2016 (10.1111/jofi.12365) ; Chordia–Goyal–Saretto 2020 (10.1093/rfs/hhaa018) ; Ang–Hodrick–Xing–Zhang 2006
(10.1111/j.1540-6261.2006.00836.x).
Références retirées : ni2009does (remplacée). Total : 45 → 97 entrées, toutes citées, toutes vérifiées.
4. Réanalyses exécutées (laptop, Python 3.14 / pandas 3.0.2 / numpy 2.4.4 ; logs docs/verify/logs-revision/)
| Script | Durée | Sorties (results/) |
|---|---|---|
02_rq1_return_predictability.py (cibles corrigées, FM NW(4), coefficients bps, p exactes, Bonferroni) |
6 s | rq1_regression_results.csv, rq1_meta.csv |
03_rq2_rv_forecasting.py (échantillon commun, modèles non colinéaires, plancher OOS, DM NW 30 titres) |
2 s | rq2_insample.csv, rq2_oos_results.csv, rq2_diebold_mariano.csv |
04_rq3_correlation_divergence.py stage 2 (3 spécifications, NW(h)) |
1 s | rq3_stress_prediction.csv, rq3_crisis_analysis.csv |
05_rq4_greeks_decay_magnets.py partie B (parquet) |
<1 s | rq4_price_magnet.csv (inchangé) |
07_descriptive_stats.py (+ panel F via VIX du parquet RQ3) |
1 s | descriptive_*.csv (A–G) |
08_subperiod_regime.py (RV : échantillon commun + winsorisation par titre ; régimes VIX recalculés) |
19 s | subperiod_results.csv, regime_results.csv, rolling_r2.csv, pre_post_covid.csv |
09_portfolio_sorts.py (t NW, double tri par portefeuilles, calendar-time + coûts) |
37 s | portfolio_sort_results.csv, double_sort_iv_skew.csv, calendar_time_strategies.csv, transaction_cost_analysis.csv |
10_robustness.py (+ HC1 et NW(22) dans la table ; VIX<30 recalculé) |
17 s | robustness_*.csv |
11_granger_var.py (FEVD Cholesky, deux ordres, corrélation résiduelle) |
3 s | granger_causality.csv, var_results.csv, irf_results.csv, fevd_results.csv |
13_extended_robustness.py (cibles corrigées ; LOYO avec HAR et Δ) |
15 s | extended_*.csv |
14_make_paper_tables.py (nouveau) |
1 s | paper/tables/*.tex (27 fragments) |
12_make_figures.py |
2 s | figures/fig_*.{png,pdf} (supplémentaires) |
Durée totale < 2 min. Les sorties v1.1 remplacées sont dans results/_pre-revision-20261017/.
5. Non modifié faute de données (données brutes DuckDB absentes)
rq4_greeks_decay.csv(RQ4 partie A) : conservé tel quel ; cibles 1 j correctes ; le papier ne rapporte plus que R² et t(IV) (les t des autres grecques, ±150, traduisent une colinéarité).rq5_model_comparison.csv,rq5_feature_importance.csv: seules les lignes 1 j (VIX, HAR, RF, GBM) sont rapportées ; lignes OLS surface (MSE 1e60, colinéarité exacte) et cibles 5/22 j (erreur C1) retirées du papier. Le code de06est corrigé (cibles forward, RV_t) mais n'a pas pu être relancé.descriptive_options_quality.csv(panel H) : inchangé.- Table d'inventaire des données brutes (
tab:data) : chiffres figés de l'extraction originale.
6. Fichiers dépôt
- Nouveaux :
scripts/14_make_paper_tables.py,paper/tables/,results/calendar_time_strategies.csv,results/_pre-revision-20261017/,docs/REVIEW-REPORT.md,docs/CHANGELOG-REVISION.md,docs/verify/logs-revision/,docs/verify/crossref/. - Modifiés :
src/wp7/{config,data_io,econometrics,forecasting,portfolio}.py,scripts/02,03,04,06,08,09,10,11,13, toutes les sections LaTeX,references.bib,main.tex,main_anon.tex,preamble.tex,README.md. - Inchangés :
data/processed/*.parquet,paper/sections/titlepage*.tex,docs/AUDIT.md,docs/CHANGES.md,docs/verify/{logs,results}(v1.1).